<?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>cdevroe.com &#187; programming</title>
	<atom:link href="http://cdevroe.com/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://cdevroe.com</link>
	<description>by Colin Devroe</description>
	<lastBuildDate>Thu, 09 Feb 2012 13:49:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>	<atom:link rel='hub' href='http://cdevroe.com/?pushpress=hub'/>
<cloud domain='cdevroe.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>PHP 5.4 to have a built-in web server</title>
		<link>http://cdevroe.com/links/php54-server/</link>
		<comments>http://cdevroe.com/links/php54-server/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 15:10:29 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php 5.4]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web server]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=5569</guid>
		<description><![CDATA[I&#8217;ll leave the comparisons to other languages and frameworks out of this and just say that I&#8217;m happy to see that PHP 5.4 will have a built-in web server for doing things like local development without the need for installing Apache. Excellent.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll leave the comparisons to other languages and frameworks out of this and just say that I&#8217;m happy to see that <a href="http://digitizor.com/2011/12/22/php-54-built-in-erver/">PHP 5.4 will have a built-in web server</a> for doing things like local development without the need for installing Apache. Excellent.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/php54-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Path clock scroll thingy</title>
		<link>http://cdevroe.com/links/path-clock-ios/</link>
		<comments>http://cdevroe.com/links/path-clock-ios/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 21:31:03 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[florian mielke]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=5517</guid>
		<description><![CDATA[Hot on the heels of the Path app&#8217;s menu being reverse engineered into CSS3 and CoreAnimation is the Path app&#8217;s clock face that appears when you&#8217;re scrolling down through your timeline being reverse engineered by Florian Mielke.]]></description>
			<content:encoded><![CDATA[<p>Hot on the heels of <a href="http://cdevroe.com/links/path-menu-css3-coreanimation/">the Path app&#8217;s menu being reverse engineered into CSS3 and CoreAnimation</a> is <a href="http://blog.madefm.com/post/13817640556/ios-devcorner-attaching-an-info-panel-to-a">the Path app&#8217;s clock face</a> that appears when you&#8217;re scrolling down through your timeline being reverse engineered by <a href="http://florianmielke.me/">Florian Mielke</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/path-clock-ios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An even better Spotify Alfred extension</title>
		<link>http://cdevroe.com/links/johns-alfred-spotify/</link>
		<comments>http://cdevroe.com/links/johns-alfred-spotify/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 14:23:15 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[alfred]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[jeff johns]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[spotify]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=5505</guid>
		<description><![CDATA[Jeff Johns has released an update to his Spotify Alfred extension. The man&#8217;s an addict. He has Alfred extensions for Skype, Bluetooth, Caffeine, and Screen Sharing.]]></description>
			<content:encoded><![CDATA[<p>Jeff Johns has <a href="https://github.com/phpfunk/alfred-spotify-controls">released an update to his Spotify Alfred extension</a>. The man&#8217;s an addict. He has <a href="http://phpfunk.me/#alfred">Alfred extensions for Skype, Bluetooth, Caffeine, and Screen Sharing</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/johns-alfred-spotify/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Path menu in pure CSS3 and using CoreAnimation</title>
		<link>http://cdevroe.com/links/path-menu-css3-coreanimation/</link>
		<comments>http://cdevroe.com/links/path-menu-css3-coreanimation/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 15:23:58 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[coreanimation]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[levy]]></category>
		<category><![CDATA[mike-rundle]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[victor coulon]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=5461</guid>
		<description><![CDATA[As I mentioned last week the new Path application for iPhone is arguably the best designed application on the iPhone currently. And when there is a great design, there are going to be those that begin to pick it apart and do neat things with it. The Path app is no different. People have begun [...]]]></description>
			<content:encoded><![CDATA[<p>As <a title="Path 2.0" href="http://cdevroe.com/links/path-2/">I mentioned last week</a> the new Path application for iPhone is arguably the best designed application on the iPhone currently. And when there is a great design, there are going to be those that begin to pick it apart and do neat things with it. The Path app is no different. People have begun breaking it down in various ways.</p>
<p>One of the distinct features in the Path app is the fly-out menu that allows you to share photos, comments, location, etc. Two developers took it upon themselves to build out that menu both in CSS3 and using CoreAnimation. Both open sourced their work and gave credit.</p>
<ul>
<li><a href="http://lab.victorcoulon.fr/css/path-menu/">Path menu in pure CSS 3</a> by Victor Coulon.</li>
<li><a href="https://github.com/levey/QuadCurveMenu">Path menu using CoreAnimation</a> by ??? (Levy)</li>
</ul>
<p>/via <a href="https://twitter.com/flyosity">Mike Rundle on Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/path-menu-css3-coreanimation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codify &#8211; Build games for iPad on iPad</title>
		<link>http://cdevroe.com/links/codify/</link>
		<comments>http://cdevroe.com/links/codify/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 12:12:09 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[codify]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=5332</guid>
		<description><![CDATA[How in the world is Codify only $7.99? Watch the video demo. Trés impressive. /via John Gruber.]]></description>
			<content:encoded><![CDATA[<p>How in the world is <a href="http://twolivesleft.com/Codify/">Codify</a> only $7.99? Watch the video demo. Trés impressive.</p>
<p>/via <a href="http://daringfireball.net/linked/2011/10/26/codify">John Gruber</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/codify/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>1 million on Github</title>
		<link>http://cdevroe.com/links/1m-github/</link>
		<comments>http://cdevroe.com/links/1m-github/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 15:06:12 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[growth]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[source control]]></category>
		<category><![CDATA[users]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=5221</guid>
		<description><![CDATA[Congratulations to all of my friends at Github for reaching the 1 million user milestone. Github is easily one of the very best services for developers on the web. If you don&#8217;t yet have an account and you are a developer; stop waiting.]]></description>
			<content:encoded><![CDATA[<p>Congratulations to all of my friends at <a href="http://github.com/">Github</a> for <a href="http://www.readwriteweb.com/archives/github_hits_1_million_users.php">reaching the 1 million user milestone</a>. Github is easily one of the very best services for developers on the web. If you don&#8217;t yet have an account and you are a developer; stop waiting.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/1m-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ifttt</title>
		<link>http://cdevroe.com/links/ifttt/</link>
		<comments>http://cdevroe.com/links/ifttt/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 14:47:58 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[actions]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[hooks]]></category>
		<category><![CDATA[if this then that]]></category>
		<category><![CDATA[ifttt]]></category>
		<category><![CDATA[kyle-neath]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[triggers]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=5178</guid>
		<description><![CDATA[If This Then That is a web service that allows you to plug into a few other web services and trigger actions based on certain criteria. Example: If I take a photo using Instagram store it in Dropbox as well. /via Kyle Neath on Twitter.]]></description>
			<content:encoded><![CDATA[<p><a href="http://ifttt.com/">If This Then That</a> is a web service that allows you to plug into a few other web services and trigger actions based on certain criteria. Example: If I take a photo using Instagram store it in Dropbox as well.</p>
<p>/via <a href="https://twitter.com/kneath/statuses/112593350426763264">Kyle Neath on Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/ifttt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeIgniter, now on Github</title>
		<link>http://cdevroe.com/links/ci-github/</link>
		<comments>http://cdevroe.com/links/ci-github/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 13:25:06 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=5068</guid>
		<description><![CDATA[I don&#8217;t use PHP often but when I do I use CodeIgniter. And now it is on Github.]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t use PHP often but when I do I use <a href="http://codeigniter.com/">CodeIgniter</a>. And now <a href="https://github.com/EllisLab/CodeIgniter">it is on Github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/ci-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quality is contagious</title>
		<link>http://cdevroe.com/links/neath-quality/</link>
		<comments>http://cdevroe.com/links/neath-quality/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 11:50:06 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[dedication]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[kyle-neath]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[quote]]></category>
		<category><![CDATA[quotes]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=5061</guid>
		<description><![CDATA[Kyle Neath on Relentless Quality: &#8220;Broken windows are the reason most large software projects suck to work on. A little technical debt here, a few shortcuts there, and pretty soon you’ve got a codebase so full of broken windows that no one even cares if they throw another pile of broken glass on the heap. [...]]]></description>
			<content:encoded><![CDATA[<p>Kyle Neath on <a href="http://warpspire.com/posts/relentless-quality/"><em>Relentless Quality</em></a>:</p>
<blockquote><p>
  &#8220;Broken windows are the reason most large software projects suck to work on. A little technical debt here, a few shortcuts there, and pretty soon you’ve got a codebase so full of broken windows that no one even cares if they throw another pile of broken glass on the heap.</p>
<p>  But just as broken windows are contagious, so is a dedication to quality. Carve out a little piece of a messy codebase and clean it up. Sharpen the edges, polish the surface and make it shine.&#8221;
</p></blockquote>
<p>This bubbles all the way up to the top of the product too. The code of a not-so-great feature can be gorgeous but it is still a feature that isn&#8217;t quite right. Focusing on the quality of the product from the engineering to the coding to the marketing is also contagious.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/neath-quality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ludum Dare</title>
		<link>http://cdevroe.com/links/ludum-dare/</link>
		<comments>http://cdevroe.com/links/ludum-dare/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 16:44:04 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[data entry sentry]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ludum dare]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[shaun-inman]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=5029</guid>
		<description><![CDATA[A 48-hour solo hackathon for game developers to create a game. Pretty fun. Shaun Inman, who just released The Last Rocket for iOS, put together a quick game called Data Entry Sentry that works on an iPad (or any Webkit browser). Fun to play. I don&#8217;t know where he gets the energy.]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://www.ludumdare.com/compo/rules/">48-hour solo hackathon for game developers</a> to create a game. Pretty fun.</p>
<p><a href="http://shauninman.com/">Shaun Inman</a>, who just released <a href="http://shauninman.com/lastrocket/">The Last Rocket</a> for iOS, put together a quick game called <a href="http://www.ludumdare.com/compo/ludum-dare-21/?action=preview&#038;uid=4017">Data Entry Sentry</a> that works on an iPad (or any Webkit browser). Fun to play. I don&#8217;t know where he gets the energy.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/ludum-dare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An unofficial RunKeeper API</title>
		<link>http://cdevroe.com/links/unofficial-runkeeper-api/</link>
		<comments>http://cdevroe.com/links/unofficial-runkeeper-api/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 12:30:10 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[jeff johns]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[runkeeper]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4846</guid>
		<description><![CDATA[My friend and Viddler teammate Jeff Johns is working on an unofficial RunKeeper API.]]></description>
			<content:encoded><![CDATA[<p>My friend and Viddler teammate <a href="http://phpfunk.me/">Jeff Johns</a> is working on <a href="https://github.com/phpfunk/Unofficial-Runkeeper-API">an unofficial RunKeeper API</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/unofficial-runkeeper-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My words in Hacker Monthly</title>
		<link>http://cdevroe.com/links/may-hacker-monthly/</link>
		<comments>http://cdevroe.com/links/may-hacker-monthly/#comments</comments>
		<pubDate>Mon, 16 May 2011 15:39:53 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[hacker monthly]]></category>
		<category><![CDATA[may]]></category>
		<category><![CDATA[permission]]></category>
		<category><![CDATA[print]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[published]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4797</guid>
		<description><![CDATA[My words have been in print before (and several other times that I&#8217;ve never taken the time to jot down on my blog, sorry). Well, it has happened again. In the May issue of Hacker Monthly my piece Why you should never ask permission to clean up code (which has received over a quarter-of-a-million views to-date) [...]]]></description>
			<content:encoded><![CDATA[<p>My words have been <a href="http://cdevroe.com/notes/published/">in print before</a> (and several other times that I&#8217;ve never taken the time to jot down on my blog, sorry). Well, it has happened again.</p>
<p><a href="http://hackermonthly.com/issue-12.html"><img class="alignnone size-full wp-image-4798" title="Hacker Monthly - May Issue - Page 40" src="http://cdevroe.com/wp-content/mobile/photos/2011/05/hackermonthly-issue12.pdf-page-40-of-42.jpg" alt="" width="640" /></a></p>
<p>In <a href="http://hackermonthly.com/issue-12.html">the May issue</a> of <a href="http://hackermonthly.com/">Hacker Monthly</a> my piece <em><a href="http://cdevroe.com/notes/code-maintenance-dont-ask/">Why you should never ask permission to clean up code</a></em> (which has received over a quarter-of-a-million views to-date) was published and I&#8217;m extremely grateful to the Hacker Monthly team for their consideration.</p>
<p>I highly recommend picking up a subscription to Hacker Monthly (if you don&#8217;t already have one shame on you).</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/may-hacker-monthly/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The truth is, we don&#8217;t know how long it takes.</title>
		<link>http://cdevroe.com/notes/time-estimate-fail/</link>
		<comments>http://cdevroe.com/notes/time-estimate-fail/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 12:20:15 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[estimation]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[thoughts]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4750</guid>
		<description><![CDATA[This can be applied to just about anything; none of us know how long it will take us to get something done. This is especially true with writing software but lets think about an everyday task, shall we? What about washing the dishes? How long is it going to take you to wash the dishes [...]]]></description>
			<content:encoded><![CDATA[<p>This can be applied to just about anything; none of us know how long it will take us to get something done.</p>
<p>This is especially true with writing software but lets think about an everyday task, shall we? What about washing the dishes? How long is it going to take you to wash the dishes the next time you decide to do that oft procrastinated task? Five minutes? Ten? Two hours? The truth is, you don&#8217;t know. You might count the number dishes, say 10 dishes, and think it will take you about 5 minutes (or 30 seconds per dish) to wash, dry, and put them all away. But, how dirty are these dishes? Is one a burnt pan? Do you have the right soap or tool to do the job? What if you find that, while you&#8217;re washing a pot, that the pot&#8217;s handle is loose? Do you fix it right then or wait till next time? If you fix it right then how long will <em>that</em> take?</p>
<p>You see where I&#8217;m going? Estimating the amount of time it will take to complete a task is &#8211; well, I&#8217;ll just say it &#8211; impossible. But we try. We try to calculate all of the possibilities, rule in error, and even give ourselves some padding in the estimate to lower expectations and over deliver. But we almost always fail. Sometimes miserably. The difficult part is coming to grips with that and embracing it.</p>
<p>In my entire life I&#8217;ve never been 100% accurate on estimating time. I&#8217;m forever an optimist and because of that I&#8217;m almost always late at getting something done because I always think it will take less time to finish something than it really will. I think in rose pedals and rainbows.</p>
<p>One quick example to beat this horse until bloody. Recently I was playing around with a pet project of mine and I wanted to add Twitter&#8217;s authentication tools to it. In short, this allows people to use their Twitter credentials to log into my application. Should be relatively straight forward, right? Well, ever the optimist and being smart and efficient I grabbed an open source library that claimed to do exactly what I needed. I thought, foolishly, that I&#8217;d simply plug the library into my application, follow the setup instructions and I&#8217;d move on in less than 30 minutes. It works this way sometimes but not very often. Suffice to say it didn&#8217;t work like this for me. In fact, I still haven&#8217;t finished hours later. <em>Hours</em>. Something I thought would take me less than 20 minutes and I have now spent hours trying to get it to work properly. And guess what? I&#8217;ve decided to scrap it. Hours and hours wasted only to figure out that I&#8217;d have been better off building this myself. And now it will take me a few hours to do just that (or much longer).</p>
<p>I&#8217;ll never learn. I&#8217;m freely admitting that right now. I&#8217;d rather be an optimist than be the person that thinks that everything they ever want to do will take too long, be too hard, and will ultimately not be possible to achieve and thus; never try. I&#8217;m going to continue to try and continue to fail but &#8211; every once and while &#8211; I&#8217;ll succeed (although later than I would have thought) and be happy.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/time-estimate-fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pow</title>
		<link>http://cdevroe.com/links/pow/</link>
		<comments>http://cdevroe.com/links/pow/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 20:00:48 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[37signals]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mac-os-x]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[pow]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rack]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4744</guid>
		<description><![CDATA[Pow is an open source, zero-configuration Rack server for Mac OS X. If you do web development on the Mac you will want to give this a gander.]]></description>
			<content:encoded><![CDATA[<p><a href="http://pow.cx/">Pow</a> is an open source, zero-configuration <a href="http://rack.rubyforge.org/">Rack</a> server for Mac OS X. If you do web development on the Mac you will want to give this a gander.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/pow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why you should never ask permission to clean up code</title>
		<link>http://cdevroe.com/notes/code-maintenance-dont-ask/</link>
		<comments>http://cdevroe.com/notes/code-maintenance-dont-ask/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 12:35:48 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[questions]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4672</guid>
		<description><![CDATA[&#8220;Can I take some time to clean up this code? It is horrendous.&#8221; The answer should always be yes to this question. However, often times we find ourselves up against walls in the form of budgets, time, due dates and expectation and so the typical &#8220;powers that be&#8221; at companies often veto the request. My [...]]]></description>
			<content:encoded><![CDATA[<p></p>
<p><img class="alignnone size-full wp-image-4675" title="Table at Panera" src="http://cdevroe.com/wp-content/mobile/photos/2011/03/2202482306_14aff0ea6a_z.jpg" alt="" width="640" height="480" /></p>
<p>&#8220;Can I take some time to clean up this code? It is horrendous.&#8221; The answer should always be yes to this question. However, often times we find ourselves up against walls in the form of budgets, time, due dates and expectation and so the typical &#8220;powers that be&#8221; at companies often veto the request. My advice to you, dear developer, is to never ask for permission for things you know are vital to your work.</p>
<p>You know your work environment better than I do so perhaps you can ask this question and immediately have the full support of your team. Sad to say that many aren&#8217;t so fortunate. They&#8217;ll ask their boss if they can take some time to clean up their code, make it efficient and extensible and, while the boss may recognize the need for such tasks, ultimately the boss will simply say &#8220;maybe we can do that later&#8221;.</p>
<p>Why is this the typical reaction? Because bosses don&#8217;t have to read, edit and support the code.</p>
<p>This is folly and every developer knows it. Bosses, (if you&#8217;re reading this) putting off a few hours worth of code clean-up now will only turn into many hours or days in the future. So by allowing your developers time to do this much needed code maintenance you&#8217;re actually saving your company money. But don&#8217;t worry &#8211; they&#8217;re not going to ask you for permission anymore. They&#8217;re just going to do it.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/code-maintenance-dont-ask/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I&#8217;m heading to Florida for MagicRuby</title>
		<link>http://cdevroe.com/notes/magicruby/</link>
		<comments>http://cdevroe.com/notes/magicruby/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 04:10:10 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[florida]]></category>
		<category><![CDATA[magic kingdom]]></category>
		<category><![CDATA[magicruby]]></category>
		<category><![CDATA[orlando]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[viddler]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4557</guid>
		<description><![CDATA[Not many people know how well suited Viddler&#8216;s platform is for developing on top of. Kyle Slattery and I are heading to Florida in a few weeks to attend Magic Ruby to let some talented Ruby developers know just that. We&#8217;ve set up a special page on Viddler just for Magic Ruby to help let [...]]]></description>
			<content:encoded><![CDATA[<p>Not many people know how well suited <a href="http://viddler.com/">Viddler</a>&#8216;s platform is for developing on top of. <a href="http://kyleslattery.com">Kyle Slattery</a> and I are heading to Florida in a few weeks to attend <a href="http://magic-ruby.com/">Magic Ruby</a> to let some talented Ruby developers know just that.</p>
<p>We&#8217;ve set up <a href="http://viddler.com/magicruby">a special page on Viddler just for Magic Ruby</a> to help let people know some of the things we&#8217;re already doing with the Ruby community. We hope to learn a little about Ruby, to let attendees know about Viddler, and to enjoy the weather.</p>
<p>Viddler&#8217;s offerings to developers aren&#8217;t limited to only Ruby. We&#8217;ve got <a href="http://developers.viddler.com/documentation/api-v2/">a fantastic API</a> that has been recently overhauled and <a href="http://developers.viddler.com/projects/api-wrappers/">wrappers for just about every language</a>. We power some of the biggest brands online and our platform has been used to power web sites, applications, iPhone and iPad applications and much more. I personally hope to help Viddler grow in this area in 2011.</p>
<p>If you&#8217;re a developer and ever have any video needs &#8211; consider using Viddler for your next project.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/magicruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apostrophe 1.5 &#8211; Now with Viddler support</title>
		<link>http://cdevroe.com/links/apostrophe-viddler/</link>
		<comments>http://cdevroe.com/links/apostrophe-viddler/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 04:24:49 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[apostrophe]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[philadelphia]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[punk avenue]]></category>
		<category><![CDATA[symphony]]></category>
		<category><![CDATA[viddler]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4555</guid>
		<description><![CDATA[As I just announced on the Viddler blog, Apostrophe &#8211; the amazing CMS built by my friends at Punk Avenue, now includes deep support for Viddler. Huzzah!]]></description>
			<content:encoded><![CDATA[<p>As <a href="http://blog.viddler.com/cdevroe/apostrophe-viddler/">I just announced on the Viddler blog</a>, <a href="http://apostrophenow.com/">Apostrophe</a> &#8211; the amazing CMS built by my friends at <a href="http://punkave.com/">Punk Avenue</a>, now includes deep support for Viddler. Huzzah!</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/apostrophe-viddler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSS to Twitter using PHP now supports OAuth</title>
		<link>http://cdevroe.com/links/rss2twitter-oauth/</link>
		<comments>http://cdevroe.com/links/rss2twitter-oauth/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 19:48:14 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[parse]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4511</guid>
		<description><![CDATA[My handy dandy little script that makes it easy to parse an RSS feed and send links to Twitter using PHP just got a nice little update. It now supports OAuth and has been cleaned up quite a bit. Oh, version 1.0 is still available.]]></description>
			<content:encoded><![CDATA[<p></p>
<p>My handy dandy little script that makes it easy to <a href="https://github.com/cdevroe/rss2twitter-PHP5">parse an RSS feed and send links to Twitter using PHP</a> just got a nice little update. It now supports OAuth and has been cleaned up quite a bit.</p>
<p>Oh, <a href="https://github.com/cdevroe/rss2twitter-PHP5/tree/v1.0">version 1.0</a> is still available.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/rss2twitter-oauth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to test a WordPress Dashboard Widget</title>
		<link>http://cdevroe.com/notes/howto-test-wp-dash-widget/</link>
		<comments>http://cdevroe.com/notes/howto-test-wp-dash-widget/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 05:23:48 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[dashboard widget]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[viddler]]></category>
		<category><![CDATA[viddler wordpress plugin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4509</guid>
		<description><![CDATA[I&#8217;m working on a relatively big update to Viddler&#8217;s WordPress plugin and something that doesn&#8217;t seem to be documented anywhere is how to test a Dashboard Widget if your plugin supports one. It is fairly easy to add just a bit of code to make it pretty simple to test your widget. First, rather than [...]]]></description>
			<content:encoded><![CDATA[<p></p>
<p>I&#8217;m working on a relatively big update to <a href="http://wordpress.org/extend/plugins/the-viddler-wordpress-plugin/">Viddler&#8217;s WordPress plugin</a> and something that doesn&#8217;t seem to be documented anywhere is how to test a Dashboard Widget if your plugin supports one.</p>
<p>It is fairly easy to add just a bit of code to make it pretty simple to test your widget. First, rather than only loading your WordPress Admin URL (ie. yoursite.com/wp-admin) you simply prepend the appropriate information to the end of the URL. Like this: yousite.com/wp-admin/index.php?page=viddler&#038;noheader.</p>
<p>Then, somewhere within your plugin&#8217;s code, you add something like the following:<br />
<code>function viddler_page() {<br />
	if ( isset( $_GET['noheader'] ) )<br />
		return viddler_dashboard_content();<br />
}</code></p>
<p>Obviously viddler_dashboard_content() is the function that I use to build the HTML for the Dashboard Widget. This will return the HTML you&#8217;re creating for your WordPress Admin Dashboard Widget sans JavaScript and CSS. But at least you&#8217;re able to test your output.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/howto-test-wp-dash-widget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upload video to Viddler using C#</title>
		<link>http://cdevroe.com/links/viddler-upload-csharp/</link>
		<comments>http://cdevroe.com/links/viddler-upload-csharp/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 02:36:15 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ejveal]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[upload video]]></category>
		<category><![CDATA[viddler]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4502</guid>
		<description><![CDATA[ejveal on Viddler graciously shared a snippet of C# to upload video to Viddler. Thanks for that Eric. /via the Viddler Developers Group.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.viddler.com/explore/ejveal/">ejveal on Viddler</a> graciously shared <a href="http://codepaste.net/hin1kr">a snippet of C# to upload video to Viddler</a>. Thanks for that Eric.</p>
<p>/via <a href="http://www.viddler.com/groups/developers/discuss/1877/">the Viddler Developers Group</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/viddler-upload-csharp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing PHPViddler 2 for the Viddler API</title>
		<link>http://cdevroe.com/links/phpviddler2/</link>
		<comments>http://cdevroe.com/links/phpviddler2/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 15:03:06 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpviddler]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[viddler]]></category>
		<category><![CDATA[video api]]></category>
		<category><![CDATA[wrapper]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4437</guid>
		<description><![CDATA[A little something for the developers out there. Over on the Viddler blog I announced that we&#8217;ve just released PHPViddler 2 (which is also on the great Github) which is a brand new PHP class for our brand new API version 2. Its all brand new baby.]]></description>
			<content:encoded><![CDATA[<p>A little something for the developers out there. Over on <a href="http://blog.viddler.com/">the Viddler blog</a> I <a href="http://blog.viddler.com/cdevroe/phpviddler2/">announced that we&#8217;ve just released PHPViddler 2</a> (which is also <a href="https://github.com/viddler/phpviddler">on the great Github</a>) which is a brand new PHP class for <a href="http://cdevroe.com/links/viddler-api-v2/">our brand new API version 2</a>. Its all brand new baby.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/phpviddler2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>37signals&#8217; Chalk dissected</title>
		<link>http://cdevroe.com/links/37signals-chalk-dissected/</link>
		<comments>http://cdevroe.com/links/37signals-chalk-dissected/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 14:36:26 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[37signals]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sam samhuri]]></category>
		<category><![CDATA[web app]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4360</guid>
		<description><![CDATA[Remember my link to Chalk? Sam Samhuri took the time to dissect exactly how it was built. Impressive. Both the app and the write up.]]></description>
			<content:encoded><![CDATA[<p>Remember <a href="http://cdevroe.com/links/chalk-37s/">my link to Chalk</a>? Sam Samhuri took the time to <a href="http://samisamhuri.blogspot.com/2010/11/37signals-chalk-dissected.html">dissect exactly how it was built</a>. Impressive. Both the app and the write up.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/37signals-chalk-dissected/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zepto.js &#8211; Mobile JavaScript framework</title>
		<link>http://cdevroe.com/links/zepto/</link>
		<comments>http://cdevroe.com/links/zepto/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 13:07:25 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[zepto]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=4352</guid>
		<description><![CDATA[Doing JavaScript for mobile platforms? Maybe you should check out Zepto.js. Update: Via Kyle Slattery on Twitter: Sencha. I haven&#8217;t yet had any experience using jQuery mobile (I simply do not do too much JavaScript anymore) but I wanted to make sure that any &#8220;competitors&#8221; to such a popular framework gets some attention. Does that [...]]]></description>
			<content:encoded><![CDATA[<p></p>
<p>Doing JavaScript for mobile platforms? Maybe you should <a href="http://zeptojs.com/">check out Zepto.js</a>.</p>
<p><strong>Update:</strong> Via <a href="http://twitter.com/kyleslattery/status/1325769041125376">Kyle Slattery on Twitter</a>: <a href="http://www.sencha.com/products/touch/">Sencha</a>.</p>
<p>I haven&#8217;t yet had any experience using <a href="http://jquerymobile.com/">jQuery mobile</a> (I simply do not do too much JavaScript anymore) but I wanted to make sure that any &#8220;competitors&#8221; to such a popular framework gets some attention. Does that make sense?</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/zepto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The time waster is every developer&#8217;s bane</title>
		<link>http://cdevroe.com/notes/development-bane-time-waster/</link>
		<comments>http://cdevroe.com/notes/development-bane-time-waster/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 12:31:38 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[bane]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[time waster]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=3838</guid>
		<description><![CDATA[Every developer&#8217;s bane is a problem that seemingly has no cause or solution. Most times, after wasting hours and hours and hours trying to solve the issue, I will discover that there was a cause and there is a solution &#8211; but it is the time wasted, the sweat, the tears and the fist pounding [...]]]></description>
			<content:encoded><![CDATA[<p>Every developer&#8217;s bane is a problem that seemingly has no cause or solution. Most times, after wasting hours and hours and hours trying to solve the issue, I will discover that there was a cause and there is a solution &#8211; but it is the time wasted, the sweat, the tears and the fist pounding that really gets to me.</p>
<p>Last night I ran into such a problem wherein, so far at least, I&#8217;ve been unable to find the cause. It is very frustrating. Trial, error, trial, error, hunt, poke, literally cause my app to crash on purpose hoping I can find the problem, comment out line after line after line, change settings, etc. Usually during this process I will end up breaking my application even more and forget how to change it back (thank goodness for <a href="http://git-scm.com/">Git</a>).</p>
<p>The problem I&#8217;m currently having seems to be environmental. The problem doesn&#8217;t exist in one environment but does on another. This actually causes even more fist-pounding because I know my code works.</p>
<p>The part about this process that is most frustrating is that the time spent solving one of these minor problems (that have a major impact on the app) could be time spent making a great application. It is my least favorite part about programming. Nowadays it is possible to accomplish an incredible amount of work in a short period of time yet, still, you run into these little time wasting seemingly no cause no solution problems that take a very long time to work out. <strong>Grrr!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/development-bane-time-waster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Style guides make code collaboration easier.</title>
		<link>http://cdevroe.com/links/code-style-guides/</link>
		<comments>http://cdevroe.com/links/code-style-guides/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 13:46:06 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[jonathan christopher]]></category>
		<category><![CDATA[monday by noon]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[style guide]]></category>
		<category><![CDATA[web-design]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=3810</guid>
		<description><![CDATA[In this week&#8217;s Monday By Noon article Jonathan Christopher covers establishing style guides in code to make collaboration between multiple developers easier. Although it may seem like an anal attempt at control style guides can go along way in making a lot things easier in the project workflow. Reading through and fixing bugs in someone [...]]]></description>
			<content:encoded><![CDATA[<p>In this week&#8217;s <a href="http://mondaybynoon.com/">Monday By Noon</a> article Jonathan Christopher covers <a href="http://mondaybynoon.com/2010/03/29/establishing-style-guides/">establishing style guides in code</a> to make collaboration between multiple developers easier.</p>
<p>Although it may seem like an anal attempt at control style guides can go along way in making a lot things easier in the project workflow. Reading through and fixing bugs in someone else&#8217;s code, less conflicts will occur when merging branches and the speed at which new features can be added are all fringe benefits.</p>
<p>As Jon said: &#8220;It helps with everything from readability to quality control and especially helps a team become that much more cohesive.&#8221; So, do it.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/code-style-guides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview with GitHub team member Scott Chacon</title>
		<link>http://cdevroe.com/links/interview-github-chacon/</link>
		<comments>http://cdevroe.com/links/interview-github-chacon/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 15:56:25 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[scott chacon]]></category>
		<category><![CDATA[source control]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=3723</guid>
		<description><![CDATA[I was digging through this interview of GitHub developer Scott Chacon trying to find the most quoatable portion to paste here in hopes that you&#8217;d follow the link to the interview to read it. The fact is, though, the entire interview is dripping with awesome. Read it. /via Simon Willison.]]></description>
			<content:encoded><![CDATA[<p>I was digging through <a href="http://thegeektalk.com/interviews/scott-chacon">this interview of GitHub developer Scott Chacon</a> trying to find the most quoatable portion to paste here in hopes that you&#8217;d follow the link to the interview to read it. The fact is, though, the entire interview is dripping with awesome. Read it.</p>
<p>/via <a href="http://simonwillison.net/2010/Feb/22/rcorg/">Simon Willison</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/interview-github-chacon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSS to Twitter using PHP 5 now on GitHub</title>
		<link>http://cdevroe.com/links/rss2twitter-github/</link>
		<comments>http://cdevroe.com/links/rss2twitter-github/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 04:40:31 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[feeds]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[rss2twitter]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=3564</guid>
		<description><![CDATA[The PHP5 script that I use to send my mobile photos to Twitter that was bounced back and forth a few times back in December has now been officially moved to GitHub. After searching on GitHub for scripts that did the same thing I didn&#8217;t come up with much. Hopefully this both fills that void [...]]]></description>
			<content:encoded><![CDATA[<p>The PHP5 script that I use to send my mobile photos to Twitter that was bounced back and forth a few times <a href="http://cdevroe.com/notes/rss-php-twitter/">back in December</a> has now been officially <a href="http://github.com/cdevroe/rss2twitter-PHP5">moved to GitHub</a>.</p>
<p>After searching on GitHub for scripts that did the same thing I didn&#8217;t come up with much. Hopefully this both fills that void and gets better because it is now out in the open.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/rss2twitter-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tumblr&#8217;s Twitter API</title>
		<link>http://cdevroe.com/links/tumblrs-twitter-api/</link>
		<comments>http://cdevroe.com/links/tumblrs-twitter-api/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 14:49:00 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tumblr]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=3358</guid>
		<description><![CDATA[Hot on the heels of WordPress&#8217; Twitter API Tumblr has announced their own Twitter-like API for reading and writing to Tumblogs. I love that they came right out and said that they were inspired by WordPress&#8217; move.]]></description>
			<content:encoded><![CDATA[<p>Hot on the heels of <a href="http://cdevroe.com/links/wordpress-twitter-api/">WordPress&#8217; Twitter API</a> Tumblr has <a href="http://staff.tumblr.com/post/287703110/api">announced their own Twitter-like API</a> for reading and writing to Tumblogs.</p>
<p>I love that they came right out and said that they were inspired by WordPress&#8217; move.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/tumblrs-twitter-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress&#8217; Twitter API</title>
		<link>http://cdevroe.com/links/wordpress-twitter-api/</link>
		<comments>http://cdevroe.com/links/wordpress-twitter-api/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 14:43:51 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress.com]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=3356</guid>
		<description><![CDATA[WordPress.com, to be specific, now has an API that mirrors the Twitter API. This effectively allows any Twitter client, such as Tweetie or Hahlo, to read and write to WordPress.com powered blogs only by changing their API endpoint. Hopefully this feature will be available via a plugin sometime in the near future? /via Tony Schneider.]]></description>
			<content:encoded><![CDATA[<p><a href="http://wordpress.com/">WordPress.com</a>, to be specific, now has <a href="http://en.blog.wordpress.com/2009/12/12/twitter-api/">an API that mirrors the Twitter API</a>. This effectively allows any Twitter client, such as <a href="http://www.atebits.com/">Tweetie</a> or <a href="http://blog.hahlo.com/">Hahlo</a>, to read and write to WordPress.com powered blogs only by changing their API endpoint.</p>
<p>Hopefully this feature will be available via a plugin sometime in the near future?</p>
<p>/via <a href="http://toni.org/2009/12/12/wordpress-com-supports-the-twitter-api/">Tony Schneider</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/wordpress-twitter-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSS to Twitter using PHP</title>
		<link>http://cdevroe.com/notes/rss-php-twitter/</link>
		<comments>http://cdevroe.com/notes/rss-php-twitter/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 20:08:10 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[gist]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[tweet]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=3310</guid>
		<description><![CDATA[Update January 19, 2010: This script is now available on GitHub. Go forth and fork. Today I noticed that my now ancient PHP script to update Twitter automatically using PHP/cron needed to be updated. It turns out that Twitter stopped recognizing URLs with ? in them as clickable links. Here is an example tweet where [...]]]></description>
			<content:encoded><![CDATA[<p></p>
<p><strong>Update January 19, 2010:</strong> This script is <strong><a href="http://github.com/cdevroe/rss2twitter-PHP5">now available on GitHub</a></strong>. Go forth and fork.</p>
<p>Today I noticed that my now ancient PHP script to update Twitter automatically using PHP/cron needed to be updated. It turns out that Twitter stopped recognizing URLs with ? in them as clickable links. Here is <a href="http://twitter.com/cdevroe/status/6404356720">an example tweet</a> where you&#8217;ll notice this happening.</p>
<p>I could have told Twitter and asked that they update the way they handle URLs but in reality my script was old, slow, too long, and shouldn&#8217;t include ? anyway so I figured I&#8217;d write a new one from scratch that included my short URL scheme.</p>
<p>So, here is <a href="http://gist.github.com/250382">the PHP script to parse an RSS feed and send the posts to Twitter</a>. It includes a caching mechanism so that you won&#8217;t have duplicate URLs posted to Twitter. If you want it, take it. However, if you are better than I am at PHP (most 6yr. olds are better than I am at programming) then I ask that you fork the script on Gist and try to improve it.</p>
<p><strong>Update Dec. 6 @ 5:34p:</strong> <a href="http://kyleslattery.com/">Kyle Slattery</a>, follow Viddler team member, loves him some Ruby on Rails. As such he&#8217;s offered up <a href="http://gist.github.com/250434">this version of the script rewritten in Ruby</a>.</p>
<p>Next up we have <a href="http://twitter.com/AnthonySterling">Anthony Sterling</a>, self-proclaimed &#8220;PHP addict&#8221;, who has <a href="http://pastie.org/730900">rewritten the script to make the configuration a bit easier</a>. He also changed the way the cache is saved. He&#8217;s using a hashed version of the title for each post as his key. I do not believe this to be the best way to go, since post titles can easily change after publishing &#8211; but I do like that the script is about 20 lines shorter and the code is arguably cleaner.</p>
<p>Thanks to both Kyle and Anthony for their versions. Lets keep this going and see if we can get this script much more succinct, stable, faster, and usable by others?</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/rss-php-twitter/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Pie Guy, a free web game for iPhone</title>
		<link>http://cdevroe.com/links/pie-guy/</link>
		<comments>http://cdevroe.com/links/pie-guy/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 15:55:12 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[neven mrgan]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[pie guy]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web app]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=3265</guid>
		<description><![CDATA[Pie Guy is a fun game for your iPhone that is free, is installed via the Web (it is a fancy Web page), works offline, and is actually a lot of fun (works sorta like Pac-Man). Neven Mrgan, the developer of Pie Guy, built the game &#8211; not only so people can enjoy the game [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://media.tumblr.com/tumblr_ktn1zxjK1U1qz50x3.png" width="460" alt="Pie Guy, for iPhone." /></p>
<p><a href="http://mrgan.tumblr.com/post/257187093/pie-guy">Pie Guy</a> is a fun game for your iPhone that is free, is installed via the Web (it is a fancy Web page), works offline, and is actually a lot of fun (works sorta like Pac-Man).</p>
<p><a href="http://mrgan.tumblr.com/">Neven Mrgan</a>, the developer of Pie Guy, built the game &#8211; not only so people can enjoy the game &#8211; but to help show what is possible via HTML, JavaScript, and CSS for building games or applications on the iPhone using the Web browser rather than native cocoa technologies.</p>
<blockquote><p>&#8220;If you find Pie Guy a fun game to play, well thatâ€™s grand.</p>
<p>But, I hope Pie Guy will also be an opportunity for the code-savvy among you to learn a trick or two about making serious web apps for the iPhone. Just grab my source code and tweak it. Iâ€™m not talking about just a fancied-up webpage here; this is a fullscreen game, with fast gameplay and responsive touch controls. I canâ€™t wait to see what a better programmer does with this stuff (itâ€™s not hard to program better than me!)&#8221;</p></blockquote>
<p>A very notable thing to do and I hope a ton of talented developers take him up on it. I&#8217;d love to see stuff like <a href="http://jquery.com/">jQuery</a> for iPhone games/apps (which I&#8217;m sure exists in some form or another).</p>
<p>Also of note: As Neven pointed out in his announcement post &#8211; don&#8217;t try this on your first generation iPhones. This game only performs well on an iPhone 3GS.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/pie-guy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wrap text around an image with jQSlickWrap</title>
		<link>http://cdevroe.com/links/jqslickwrap/</link>
		<comments>http://cdevroe.com/links/jqslickwrap/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 13:55:24 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jqslickwrap]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=3213</guid>
		<description><![CDATA[Neat jQuery plugin that makes it dead simple to wrap text around an image. The key point here is that it will actually wrap the text around the contents of the image, not just the bounding box of an image. /via Simon Willison.]]></description>
			<content:encoded><![CDATA[<p>Neat <a href="http://jquery.com/">jQuery</a> plugin that makes it dead simple to <a href="http://jwf.us/projects/jQSlickWrap/">wrap text around an image</a>. The key point here is that it will actually wrap the text around the contents of the image, not just the bounding box of an image.</p>
<p>/via <a href="http://simonwillison.net/2009/Nov/23/jqslickwrap/">Simon Willison</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/jqslickwrap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Chrome&#8217;s view source &#8220;oddity&#8221;</title>
		<link>http://cdevroe.com/notes/chrome-viewsource-oddity/</link>
		<comments>http://cdevroe.com/notes/chrome-viewsource-oddity/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 21:02:53 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[view source]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=3118</guid>
		<description><![CDATA[Viewing the source of a page on Google Chrome is, for the most part, a terrific experience. Chrome supports syntax highlighting of the underlying code of a page making it much more readable for us geeks while we look under the hood. However, something I&#8217;ve run into of late is that it doesn&#8217;t work very [...]]]></description>
			<content:encoded><![CDATA[<p></p>
<p><a href="http://img.skitch.com/20091117-cms4nqd3eugq2m7ms72x2877bh.jpg"><img alt="" src="http://img.skitch.com/20091117-cms4nqd3eugq2m7ms72x2877bh.jpg" title="The source of cdevroe.com/about/ in Google Chrome for Mac." class="alignnone" width="480" /></a></p>
<p>Viewing the source of a page on <a href="http://google.com/chrome/">Google Chrome</a> is, for the most part, a terrific experience. Chrome supports syntax highlighting of the underlying code of a page making it much more readable for us geeks while we look under the hood.</p>
<p>However, something I&#8217;ve run into of late is that it doesn&#8217;t work very well for dynamically generated pages. The issue seems to be that since Google Chrome opens a new tab to view the source of the current URL that you&#8217;re on, it actually &#8220;reloads&#8221; that page with new session data, as well as ditching all of the POST variables you may have sent to it. This causes some confusion and may lead to head scratching (as it did for me).</p>
<p>I don&#8217;t know of a work around currently but knowing this may save you some time.</p>
<p>Side note: I&#8217;m loving <a href="http://google.com/chrome/">Google Chrome for Mac</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/chrome-viewsource-oddity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeIgniter is fast</title>
		<link>http://cdevroe.com/links/codeigniter-fast/</link>
		<comments>http://cdevroe.com/links/codeigniter-fast/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 14:02:25 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mike-rundle]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[viddler]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=3077</guid>
		<description><![CDATA[CodeIgniter is faster than its competitors by quite a margin. Glad we at Viddler chose it for our PHP-based solutions. /via Mike Rundle on Twitter.]]></description>
			<content:encoded><![CDATA[<p><a href="http://codeigniter.com/">CodeIgniter</a> is <a href="http://avnetlabs.com/php/php-framework-comparison-benchmarks">faster than its competitors</a> by quite a margin. Glad we at <a href="http://viddler.com/">Viddler</a> chose it for our PHP-based solutions.</p>
<p>/via <a href="http://twitter.com/mike9r/statuses/5612178870">Mike Rundle on Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/codeigniter-fast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A few tips to good API design</title>
		<link>http://cdevroe.com/notes/api-tips/</link>
		<comments>http://cdevroe.com/notes/api-tips/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 14:51:30 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[api design]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[viddler]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=2943</guid>
		<description><![CDATA[Good API design is essential to an API being used. The design of an API can be extremely daunting when you are just starting out with a new service so here are a few tips that can help you along the way to build a good, usable API. Use your own API. The very best [...]]]></description>
			<content:encoded><![CDATA[<p>Good API design is essential to an API being used. The design of an API can be extremely daunting when you are just starting out with a new service so here are a few tips that can help you along the way to build a good, usable API.</p>
<div class="postImage-right"><img src="http://cdevroe.com/wp-content/mobile/photos/2009/10/IMG_3505.jpg" alt="Fire hydrant" title="Fire hydrant" width="160" /></div>
<ul>
<li><strong>Use your own API.</strong> The very best way to make sure your API is equipped with everything one would need to build something of value is to use it yourself. You will find that by using your own API to build your product you will work out a lot of kinks that would otherwise frustrate third-party developers.</li>
<li><strong>Remove as many learning curves as possible.</strong> An example of this is to provide <em>more</em> documentation than you really need to by writing tutorials and not just flat documents. Code examples go a long way too. Provide &#8220;wrappers&#8221; or frameworks in common languages that help third party developers to &#8220;plug and play&#8221; with your API.</li>
<li><strong>Follow standard conventions.</strong> This is related to removing learning curves, but you do not go against the grain. Try to utilize as many standards as possible. Chances are any third party developers that use your API will already be familiar with much of what you&#8217;re doing.</li>
<li><strong>Support multiple response types.</strong> Do not assume that third party developers will only use the response type that you prefer. Supporting XML, JSON, PHP, and others is not too much more work and yet has a measurable impact on your APIs adoption.</li>
<li><strong>Create and keep your own conventions.</strong> If you have one way to do things try to stick with it all the way through your API. An example of this would be how Twitter recently added a Lists API to their API and used the very same convention of interacting with that API as they do with accounts. This makes integration of new features dead simple and <a href="http://www.scripting.com/stories/2009/10/25/goodApiDesignAtTwitter.html">it will be appreciated</a>.</li>
<li><strong>Add some brains!</strong> If there are common actions that must be taken by all third party developers to interact with your API try to build those actions into the API. A good example of this is <a href="http://code.flickr.com/blog/2009/07/06/extraextraextra/">Flickr&#8217;s support for machine tags</a>. Although a third party developer could do all of the work on their end to work with namespaces, predicates, and ultimately the values they are looking for &#8211; Flickr makes it easy by doing all of that work on the server-side. Taking the most common actions and rolling them back into the API will slowly build tremendous value in your API.</li>
<li><strong>Open source as much code as you can.</strong> If you build any tools, frameworks, testing applications, products, or anything that uses your API &#8211; try to release that stuff as open source. This will help any new third parties to be able to see real examples of products that use your API. It would also be a good idea to promote open source projects to use your API as well so that the entire development community that you build can benefit.</li>
<li><strong>Communicate with those using your API.</strong> Give the developers a clear path to communicate with you about your API, their applications, or anything they may need to get their jobs done. You will learn a lot about what you are lacking that you may have never thought of.</li>
<li><strong>Drink a lot of caffeine.</strong></li>
</ul>
<p>These are just a few tips that I&#8217;ve learned in working with <a href="http://viddler.com/">Viddler</a>&#8216;s development team to build <a href="http://developers.viddler.com/">our API</a>. We&#8217;re currently working on the next version of our API, dubbed version 2, and we&#8217;ll be making massive improvements to the way that the API works, is documented, and how we use it internally. We&#8217;ve learned a lot over the last few years and we&#8217;re taking all of the tips above and everything we&#8217;ve learned from our development community to build what we think is a much more solid offering.</p>
<p>I hope that if you are building an API you can learn from our experience, our failures, and our successes (and I&#8217;ll try to share more of them here).  If you have anything you&#8217;d like to add about good API design please do so in the comments.</p>
<p><small>The photo of the fire hydrant has nothing to do with this post but I liked it. It is one from <a href="http://cdevroe.com/photos/lincolnton-nc/">my Lincolnton, North Carolina photo set</a>.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/api-tips/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The perfect Git workflow by Kyle Slattery</title>
		<link>http://cdevroe.com/links/git-workflow-slattery/</link>
		<comments>http://cdevroe.com/links/git-workflow-slattery/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 12:50:06 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[kyle slattery]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[source control]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=2927</guid>
		<description><![CDATA[The way Kyle talks about Git is much the same as I talk about cookies. Sort of makes me want to grab a tall glass of milk and dive into Git. Here is his perfect Git workflow for a one person project.]]></description>
			<content:encoded><![CDATA[<p>The way Kyle talks about Git is much the same as I talk about cookies. Sort of makes me want to grab a tall glass of milk and dive into Git. Here is <a href="http://kyleslattery.com/notebook/entries/the-perfect-git-workflow-for-a-one-person-project">his perfect Git workflow for a one person project</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/git-workflow-slattery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WPAPI.org &#8211; A stats API for WordPress.org hosted plugins and themes</title>
		<link>http://cdevroe.com/links/wpapi-org/</link>
		<comments>http://cdevroe.com/links/wpapi-org/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 01:01:55 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[dean robinson]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[stats]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress.org]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=2907</guid>
		<description><![CDATA[WPAPI.org, the brain-child of Dean Robinson (who has been mentioned a few times here on First Initial, Last Name), is an easy to use stats API for plugins and themes hosted on WordPress.org. Simple idea, perfectly executed.]]></description>
			<content:encoded><![CDATA[<p><a href="http://wpapi.org/">WPAPI.org</a>, the brain-child of <a href="http://deanjrobinson.com/">Dean Robinson</a> (who has been <a href="http://cdevroe.com/?s=dean+robinson">mentioned a few times here on First Initial, Last Name</a>), is an easy to use stats API for plugins and themes hosted on WordPress.org. Simple idea, perfectly executed.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/wpapi-org/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dive Into HTML5 &#8211; Video on the Web</title>
		<link>http://cdevroe.com/links/html5-video/</link>
		<comments>http://cdevroe.com/links/html5-video/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 00:30:17 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[dive into html5]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[mark pilgrim]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=2901</guid>
		<description><![CDATA[The much talked about &#60;video&#62; tag in the HTML5 spec is, obviously, of interest to me. I mean, I work at Viddler after all. However, even if I didn&#8217;t &#8211; I&#8217;d still tell all of you &#8211; especially those of you that are Web developers &#8211; to take a look at Mark Pilgrim&#8216;s amazingly awesome [...]]]></description>
			<content:encoded><![CDATA[<p>The much talked about <code>&lt;video&gt;</code> tag in <a href="http://dev.w3.org/html5/spec/Overview.html">the HTML5 spec</a> is, obviously, of interest to me. I mean, I work at <a href="http://viddler.com/">Viddler</a> after all. However, even if I didn&#8217;t &#8211; I&#8217;d still tell all of you &#8211; especially those of you that are Web developers &#8211; to take a look at <a href="http://diveintomark.org/">Mark Pilgrim</a>&#8216;s <a href="http://diveintohtml5.org/video.html">amazingly awesome chapter about it</a> from his upcoming book; <a href="http://diveintohtml5.org/">Dive Into HTML5</a>.</p>
<p>Even though he&#8217;s publishing all of these &#8220;drafts&#8221; on the site for free, I will be getting the paper version when it is published.</p>
<p>Via <a href="http://daringfireball.net/linked/2009/10/16/pilgrim-video-html5">John Gruber</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/html5-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zen-coding, snippets for the rest of us</title>
		<link>http://cdevroe.com/links/zencoding/</link>
		<comments>http://cdevroe.com/links/zencoding/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 13:50:52 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[coda]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[jonathan christopher]]></category>
		<category><![CDATA[monday by noon]]></category>
		<category><![CDATA[panic]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[snippets]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[zen-coding]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=2725</guid>
		<description><![CDATA[Jonathan Christopher of Monday By Noon talks about snippets and zen-coding, a &#8220;Set of plugins for HTML and CSS hi-speed coding&#8221;, in a nice piece about his experience with same. I&#8217;ve been dabbling with zen-coding plugins with Coda for about a week. Loving it.]]></description>
			<content:encoded><![CDATA[<p>Jonathan Christopher of <a href="http://mondaybynoon.com/">Monday By Noon</a> <a href="http://mondaybynoon.com/2009/08/17/the-art-of-zen-coding-bringing-snippets-to-a-new-level/">talks about snippets and zen-coding</a>, a &#8220;Set of plugins for HTML and CSS hi-speed coding&#8221;, in a nice piece about his experience with same.</p>
<p>I&#8217;ve been dabbling with <a href="http://code.google.com/p/zen-coding/">zen-coding plugins</a> with <a href="http://panic.com/coda/">Coda</a> for about a week. Loving it.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/zencoding/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>These aren&#8217;t the droids you&#8217;re looking for URLs</title>
		<link>http://cdevroe.com/notes/no-droids-here/</link>
		<comments>http://cdevroe.com/notes/no-droids-here/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 14:45:29 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[best-practices]]></category>
		<category><![CDATA[error pages]]></category>
		<category><![CDATA[kyle slattery]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[urls]]></category>
		<category><![CDATA[web site]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=2668</guid>
		<description><![CDATA[Page not found. Error 404. Those of us that build Web sites for a living have all had to deal with creating these pages. Planning for people to stumble across a URL that we don&#8217;t plan on is fairly important to the user&#8217;s experience on your site. However, many 404 pages could be done better. [...]]]></description>
			<content:encoded><![CDATA[<p>Page not found. Error 404. Those of us that build Web sites for a living have all had to deal with creating these pages. Planning for people to stumble across a URL that we don&#8217;t plan on is fairly important to the user&#8217;s experience on your site. However, many 404 pages could be done better. Today we&#8217;re going to focus on one use case &#8211; the uses when you know what the user is actually looking for Â you just know you don&#8217;t have it.</p>
<p>Fellow Viddler and friend <a href="http://kyleslattery.com">Kyle Slattery</a> is reworking his tag search pages. He&#8217;s created a really nice way to filter through the various types of content on his site based on tag search results. For instance, going to <a href="http://kyleslattery.com/notebook/tags/colindevroe">a tag search for my name</a> will result in a few photos and a few links that he tagged with my name. You can then filter those results to <a href="http://kyleslattery.com/notebook/photos/tags/colindevroe">only show you the photos</a> or <a href="http://kyleslattery.com/notebook/links/tags/colindevroe">only the links</a>.</p>
<p>But what if you hack the URL and <a href="http://kyleslattery.com/notebook/links/tags/asdf">search for a tag that shows no results</a>? At current Kyle shows an error page. However, there was no error. His Web site should never link you to a page that doesn&#8217;t return any results (<a href="http://kyleslattery.com/notebook/entries/tags/colindevroe">though it does right now</a>). So how did the person end up here? They may have done a search, they may have hacked the URL, or someone else linked them to this page. Which ever way they ended up on that URL &#8211; there is still no reason to show an error.</p>
<p>This brings me to why I call these types of URLs &#8220;These aren&#8217;t the droids you&#8217;re looking for URLs&#8221;. These are URLs where you know what the person is looking for (droids) you just don&#8217;t have any. In the example URL I use above, a tag search for my name filtered by entries, Kyle does a good job of stating that there are no entries tagged with my name. This is much better than showing an error. In the other example, of a tag search that ultimately returns no results, he should do something very similar. This isn&#8217;t an error. There is just no content on his site that is tagged with &#8216;asdf&#8217;.</p>
<p>One of the suggestions I gave to him was to do a search through his own tags and try to see if, perhaps, they&#8217;ve mistyped the tag. I&#8217;m not sure what &#8216;asdf&#8217; could have been, maybe sad? Or, what if someone spells my name with two Ls? This isn&#8217;t easy to program against &#8211; but there is an easier option that he could set up. Offer a search box with the tag that they entered already filled in and show a message of &#8220;Sorry, but I have nothing tagged with &#8216;asdf&#8217;. Maybe you misspelled what you&#8217;re looking for?&#8221;</p>
<p>My site isn&#8217;t a good example of best practices here. It used to be. But I had to hack WordPress to bits to get it to work last time and I&#8217;ve since upgraded WordPress too many times for those old hacks to work. However, if you&#8217;re looking for good examples &#8211; I&#8217;m sure Kyle&#8217;s site will end up being a pretty good example soon enough.</p>
<p>Have you seen any really good examples of this?</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/no-droids-here/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to: Use the Viddler API with CodeIgniter</title>
		<link>http://cdevroe.com/links/how-to-use-the-viddler-api-with-codeigniter/</link>
		<comments>http://cdevroe.com/links/how-to-use-the-viddler-api-with-codeigniter/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 01:39:33 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpviddler]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[viddler]]></category>
		<category><![CDATA[viddler api]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=2642</guid>
		<description><![CDATA[Me, on The Viddler Developers Blog: &#8220;The Viddler team is using CodeIgniter more and more for our internal PHP projects. Obviously we need to use CodeIgniter with the Viddler API quite a bit so we figured weâ€™d share with you how easy it is to include PHPViddler, the open source PHP API wrapper class for [...]]]></description>
			<content:encoded><![CDATA[<p>Me, on <a href="http://developers.viddler.com/blog/">The Viddler Developers Blog</a>:</p>
<blockquote><p>&#8220;The Viddler team is using <a href="http://codeigniter.com/">CodeIgniter</a> more and more for our internal PHP projects. Obviously we need to use CodeIgniter with <a href="http://developers.viddler.com/documentation/api/">the Viddler API</a> quite a bit so we figured weâ€™d share with you how easy it is to include <a href="http://developers.viddler.com/projects/api-wrappers/phpviddler/">PHPViddler</a>, the open source PHP API wrapper class for the Viddler API, in your CodeIgniter application.&#8221;</p></blockquote>
<p>Read more in the blog post titled <a href="http://developers.viddler.com/2009/08/04/codeigniter-phpviddler/">How to: Use the Viddler API with CodeIgniter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/how-to-use-the-viddler-api-with-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Igniter vs. CakePHP &#8211; An overview by Jonathan Snook</title>
		<link>http://cdevroe.com/links/cakephp-codeigniter/</link>
		<comments>http://cdevroe.com/links/cakephp-codeigniter/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 04:18:07 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[jonathan snook]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=2601</guid>
		<description><![CDATA[Speaking of Code Igniter, Jonathan Snook (way back in March 2007) compared it to CakePHP. Although both frameworks have matured slightly since then, this overview still holds up ok &#8211; although he is a fan of CakePHP where I&#8217;d choose Code Igniter. Thank goodness for choices.]]></description>
			<content:encoded><![CDATA[<p></p>
<p>Speaking of <a href="http://codeigniter.com/">Code Igniter</a>, <a href="http://snook.ca/">Jonathan Snook</a> (way back in March 2007) <a href="http://snook.ca/archives/php/codeigniter_vs_cakephp/">compared it to CakePHP</a>. Although both frameworks have matured slightly since then, this overview still holds up ok &#8211; although he is a fan of <a href="http://cakephp.org/">CakePHP</a> where I&#8217;d choose Code Igniter. Thank goodness for choices.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/cakephp-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A PHP Wrapper for Freewheel.tv&#8217;s API</title>
		<link>http://cdevroe.com/links/freewheelphp/</link>
		<comments>http://cdevroe.com/links/freewheelphp/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 19:36:23 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[jeff johns]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[viddler]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=2448</guid>
		<description><![CDATA[Jeff Johns, fellow Viddler team member and jogger (although he&#8217;s much more accomplished than I in that area), recently wrote and released an open source PHP wrapper for Freewheel&#8217;s API. Much needed by the Viddler team, open for the world.]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/phpfunk/">Jeff Johns</a>, fellow <a href="http://viddler.com/">Viddler</a> team member and jogger (although he&#8217;s <em>much more</em> accomplished than I in that area), recently wrote and released an open source <a href="http://code.google.com/p/freewheelphp/">PHP wrapper for Freewheel&#8217;s API</a>. Much needed by the Viddler team, open for the world.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/freewheelphp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Add a progress bar to your Viddler uploads</title>
		<link>http://cdevroe.com/links/phpviddleruploadify/</link>
		<comments>http://cdevroe.com/links/phpviddleruploadify/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 12:38:23 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpviddler]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[progress]]></category>
		<category><![CDATA[swfobject]]></category>
		<category><![CDATA[uploadify]]></category>
		<category><![CDATA[uploading]]></category>
		<category><![CDATA[viddler]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=2378</guid>
		<description><![CDATA[We get this question a lot at Viddler: How can I add a progress bar to my uploads using the Viddler API? We&#8217;re always asked if this is something included in our API wrappers. Until now, it hasn&#8217;t been. That&#8217;s where phpViddlerUploadify comes in. This extension to phpViddler, our PHP wrapper for our API, makes [...]]]></description>
			<content:encoded><![CDATA[<p>We get this question a lot at <a href="http://viddler.com/">Viddler</a>: How can I add a progress bar to my uploads using the Viddler API? We&#8217;re always asked if this is something included in <a href="http://developers.viddler.com/projects/api-wrappers/">our API wrappers</a>. Until now, it hasn&#8217;t been. That&#8217;s where <a href="http://developers.viddler.com/projects/api-wrappers/phpviddler/uploadify/">phpViddlerUploadify</a> comes in. This extension to <a href="http://developers.viddler.com/projects/api-wrappers/phpviddler/">phpViddler</a>, our PHP wrapper for <a href="http://developers.viddler.com/documentation/api/">our API</a>, makes it pretty easy to use the open source JavaScript library <a href="http://jquery.com/">jQuery</a> and the extension <a href="http://uploadify.com/">Uploadify</a> to add progress indicators to your Viddler uploads.</p>
<p>Go forth, and hack!  Oh, and <a href="http://code.google.com/p/phpviddleruploadify/">its completely open source too</a>. (More on this later.)</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/phpviddleruploadify/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recording live video on the iPhone with Qik and Viddler</title>
		<link>http://cdevroe.com/notes/iphone-qik-viddler/</link>
		<comments>http://cdevroe.com/notes/iphone-qik-viddler/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 05:49:45 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[jailbreak]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[qik]]></category>
		<category><![CDATA[recorded]]></category>
		<category><![CDATA[viddler]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=1354</guid>
		<description><![CDATA[I hacked together a quick solution to record videos with my iPhone using Qik and automatically import them to Viddler.]]></description>
			<content:encoded><![CDATA[<p>Sometimes I just can&#8217;t help myself. I&#8217;m a hacker. Not the type of hacker that wants to break into a bank&#8217;s records and steal your personal information or anything &#8211; the type of hacker that just likes to make up fun solutions to interesting problems.</p>
<p><a href="http://viddler.com/">Viddler&#8217;s</a> current lack of any way to record video on a mobile phone, for instance. More specifically the iPhone. I take a lot of <a href="http://cdevroe.com/category/mobile-photos/">mobile photos</a> (<a href="http://flickr.com/photos/cdevroe/">more here</a>) on my iPhone. I&#8217;ve wanted to shoot videos on my iPhone too. Now I can.</p>
<p>The first step I had to take was to <a href="http://cdevroe.com/notes/out-of-prison/">jailbreak my iPhone</a>. <a href="http://qik.com/video/100699">Qik&#8217;s iPhone application</a>, while not perfect, allows me to shoot video on my iPhone and have it be recorded, live, on Qik&#8217;s servers. In fact, if the connection is good enough you can <a href="http://qik.com/cdevroe/">watch me</a> recording the video only a few seconds delayed.</p>
<div class="postImage-right"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="280" height="248" id="viddler_3e2e6ff0"><param name="movie" value="http://www.viddler.com/player/3e2e6ff0/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://www.viddler.com/player/3e2e6ff0/" width="280" height="248" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler_3e2e6ff0" ></embed></object>
<p><a href="http://www.viddler.com/explore/cdevroe/videos/498/">Viddler bagels!</a> Recorded with iPhone.</p>
</div>
<p>But I wanted my video on Viddler. It is <a href="http://viddler.com/cdevroe/">my player of choice</a>. Qik&#8217;s player is great, especially since it allows you to watch the video as it is being recorded. It also has some interesting interactive features like chat. But, like MTV &#8211; I want my Viddler.</p>
<p>So my second step was to build a bridge from Qik to the Viddler. Once the live session has been saved as an FLV Qik creates <a href="http://qik.com/cdevroe/latest-videos">an RSS feed</a> with a link to the video file. I&#8217;ve built <a href="http://cdevroe.com/qik/qik.zip">a dead simple PHP script</a> that reads that RSS feed, downloads the FLVs, and then transfers them to Viddler. I then took the liberty of creating a quick bit of code that then <a href="http://twitter.com/cdevroe/">Twitters the link</a> to the video on Viddler. I do this for my mobile photos posted to Flickr so I thought why not do that for mobile videos as well.</p>
<p>After talking with Qik about this bridge we&#8217;ve both decided to do something a little bit better than what I have hacked together using nothing more than what I had access to. So stay tuned. Â Until then, you may <a href="http://cdevroe.com/qik/qik.zip">have my script</a> that I wrote in an hour to play with.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/iphone-qik-viddler/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Not so random after all</title>
		<link>http://cdevroe.com/notes/not-so-random/</link>
		<comments>http://cdevroe.com/notes/not-so-random/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 20:16:35 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[cdevroe.com]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[headers]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[updates]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=1342</guid>
		<description><![CDATA[Another update about how my headers work on this site.]]></description>
			<content:encoded><![CDATA[<div>
<p>When I switched to this themeÂ <a href="http://cdevroe.com/notes/cdevroe-tumblr/">in April of this year</a>Â I had created two header images that would display at random on each page refresh. I had aspirations &#8220;to some day find the time to have as many as ten random header images&#8221;.Â <a href="http://cdevroe.com/notes/new-random-header/">Later that month</a>Â I had 10 total header images. As of today I have created about 40 header images for this site, 24 of which are active.</p>
<p>InÂ <a href="http://cdevroe.com/notes/something-new-fun/">August of this year</a>, after visiting aÂ <a href="http://www.peterlik.com/">Peter Lik</a>Â gallery in Las Vegas, I had decided to spruce up the random header images on this site by also changing the color of the background, or frame, of the site based on the image being displayed. This added a lot of fun to creating the images for me and I hope that as people found this site they too enjoyed the display of them.</p>
<p>As of today, however, we&#8217;re kicking it up a notch.</p>
<p>The first update that I made is that now the link color also changes when the header image and background color do. This small adjustment makes it feel just a little bit more refined then just changing the background color.Â Some of the background colors I had originally chosen were a little too light to read on white. So I had to make a few small adjustments to the color choices I made. This has two interesting side effects the first being that I now have 4 or 5 brand new &#8220;looks&#8221; for this site. Just by making a new color choice for each. The other side effect is that I now have to choose colors that are readable on white. For better or worse, I&#8217;m not sure yet.</p>
<p>The second update is one I&#8217;m really excited to talk about because I have yet to see how it will effect the site overall. The headers are no longer totally random. The way it worked prior to today was that when the page loaded I allowed PHP ((The programming language this site is written in.)) to choose a random number between 1 and 24 &#8211; and I&#8217;d use that number to determine the header image to show. It was incredibly simple, worked well, and made for each refresh to be a surprise!</p>
<p>In an effort to make the selection of which header image to show a smarter process I&#8217;ve added two layers of complexity to how a header image is chosen in addition to the random selection. This might get confusing, if it does, sorry.</p>
<p>If you visitÂ <a href="http://cdevroe.com/">the home page</a>Â of the site, or any sub-page like theÂ <a href="http://cdevroe.com/about/">about page</a>, it will figure out what time of day it is ((Here in the eastern United States.)) and display one of many images I&#8217;ve designated for that time of day. I have images categorized as morning, day, evening, and night. I&#8217;ve split up the hours using the 24-hour clock this way; 6am-12pm = morning, 12pm-5pm = day, 5pm-9pm = evening, 9pm-6am = night. Â I may adjust those time slots but that is where they are now. I have several images for each time of day. So on these pages you will still be getting a randomly selected header, but it will be randomly selected based on the current time of day, rather than from the entire pool.</p>
<p>If you visit a note, photo, mobile photo, etc. on this site you will be shown an image contextually. What I mean is that for each header image I have associated a tag to it. The tag may describe what is in the image, where the image was taken, or something the image has to do with. I then compare the tags that are associated to the post you&#8217;re currently reading and create a list of matching headers. Â If there are one or more matches the site randomly displays one of those matches. Â If there are no matches the site reverts to the time of day method.</p>
<p>So what does this all mean? Well, I&#8217;m not sure yet as the system still has some randomness to it. But generally speaking, if you are reading a post about my trip to Hawai&#8217;i,Â <a href="http://cdevroe.com/notes/origamido/">like this one</a>, orÂ <a href="http://cdevroe.com/notes/wyland-waikiki/">this one</a>, you should see a header related to Hawai&#8217;i. If you are reading a post about animals, you&#8217;ll see a header that probably has animals in it. If you are watchingÂ <a href="http://cdevroe.com/videos/making-soup/">a video about food</a>, then a header relating to food will most likely be displayed. And, again, if you are reading aboutÂ <a href="http://cdevroe.com/tag/new-york-city/">New York City</a>Â orÂ <a href="http://cdevroe.com/tag/philadelphia/">Philadelphia</a>Â - those headers will show up.</p>
<p>I&#8217;m still fine tuning the way that the site decides which header best fits the current post being shown but so far in my testing it has done a pretty good job.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/not-so-random/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Coda + Versions + Beanstalk = Drool</title>
		<link>http://cdevroe.com/links/code-versions-beanstalk/</link>
		<comments>http://cdevroe.com/links/code-versions-beanstalk/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 04:59:59 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[beanstalk]]></category>
		<category><![CDATA[coda]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[macintosh]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[robert palmer]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tuaw]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[versions]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=1299</guid>
		<description><![CDATA[Quite possibly the easiest way to use version control on the Macintosh.]]></description>
			<content:encoded><![CDATA[<p>Robert Palmer, writing for <a href="http://tuaw.com/">TUAW</a>, writes &#8220;<a href="http://www.panic.com/coda/">Coda</a>Â is $99,Â <a href="http://versionsapp.com/">Versions</a>Â is free (while it&#8217;s in beta), andÂ <a href="http://beanstalkapp.com/">Beanstalk</a>Â starts at $15 per month (which is the plan I have). Put together, though, it&#8217;s a million-dollar solution.&#8221;</p>
<p>I couldn&#8217;t agree more. I&#8217;ve been using this solution for some time now &#8211; in fact, many of the <a href="http://viddler.com/">Viddler</a> team members have. It strikes an excellent balance between simplicity, ease of use, and efficiency to help us get our work done.</p>
<p>Source:Â <a href="http://www.tuaw.com/2008/10/24/friday-favorite-coda-versions-beanstalk/">Friday Favorite: Coda + Versions + Beanstalk</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/code-versions-beanstalk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Figuring out the proper dimensions to embed the Viddler player using JavaScript or PHP</title>
		<link>http://cdevroe.com/notes/viddler-embed/</link>
		<comments>http://cdevroe.com/notes/viddler-embed/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 04:33:43 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[oembed]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[viddler]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=1263</guid>
		<description><![CDATA[A few simple functions in both JavaScript and PHP to figure out the appropriate height for Viddler's video player.]]></description>
			<content:encoded><![CDATA[<div class="postImage"><img title="Pickles programming" src="http://cdevroe.com/wp-content/mobile/photos/2008/10/photo-338.jpg" alt="" width="540" />
<p>Pickles helps out. Circa January 2007.</p>
</div>
<p>Viddler&#8217;s player is, in my incredibly biased opinion, the best Flash video player available. Especially if you&#8217;re of the sort that likes to engage in conversation or put an incredible amount of metadata <em>in</em> your videos.</p>
<p>Using <a href="http://wiki.developers.viddler.com/">Viddler&#8217;s API</a> for various projects has always resulted in some sort of learning experience for me. Not only in using APIs in general, but in how to best utilize Viddler&#8217;s platform, player, API, etc. etc. to get the best results. This helps to improve Viddler&#8217;s services, but also the Web at large.</p>
<p>One of the things I, and the entire team at <a href="http://viddler.com/">Viddler</a>, have learned is that most people want their player to perfectly wrap their video. That is, they&#8217;d like their video to be as chromeless as possible while retaining the conversational quality of the enhanced timeline that Viddler affords.</p>
<p>Knowing this we were excited when <a href="http://oembed.com/">oEmbed</a>, and its underlying methodology, allowed for this to happen programmatically. Â This made it rather easy for developers, such as the team at Pownce, to use this service on Viddler to embed videos knowing only the URL assigned to it, in a way that shows off the quality of the player, and keeping the aspect ratio of the video that the publisher created. Perfect.</p>
<p>That one underlying and undocumented feature of oEmbed, that is, that the response from oEmbed was an embed code with the dimensions perfectly suited for your video based on a maximum width &#8211; is what I think will make the following JavaScript useful to developers using Viddler&#8217;s API.</p>
<p>The response from the API method of <a href="http://wiki.developers.viddler.com/index.php/Viddler.videos.setDetails">viddler.videos.getDetails</a> includes the dimensions of the original video uploaded. Â It does not, however, include the embed code of the proper dimensions given a specific width. You have to either figure that out own your own, use oEmbed (which is yet another call),Â or do the math yourself.</p>
<p>Included in <a href="http://cdevroe.com/wp-content/mobile/photos/2008/10/viddler-embed.zip">this simple ZIP file</a> is both the JavaScript and PHP functions you would need to determine the appropriate height for a video given a specific maximum width. Â These files do not include the ability to use the oEmbed service. For that, you will need phpViddler or your own homegrown way to call that service.</p>
<p>Happy embedding!</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/notes/viddler-embed/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pagination in Facebook applications with PHP</title>
		<link>http://cdevroe.com/links/php-facebook-pagination/</link>
		<comments>http://cdevroe.com/links/php-facebook-pagination/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 13:56:03 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[f8]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[kyle slattery]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[viddler]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=851</guid>
		<description><![CDATA[A snippet from Kyle Slattery.]]></description>
			<content:encoded><![CDATA[<p></p>
<p><a href="http://kyleslattery.com/">Kyle Slattery</a>, Viddler&#8217;s Lead Social Developer, recently released <a href="http://blog.kyleslattery.com/2008/07/08/php-facebook-paginator/">a nice little PHP-snippet for Facebook application developers</a>:</p>
<blockquote><p>&#8220;While building theÂ <a href="http://apps.facebook.com/viddler/">Viddler Facebook application</a>, I needed to create a pagination tool that worked just like Facebookâ€™s. After looking at their HTML and their logic of what pages to display, I came up with one, which Iâ€™m releasing for anyone to use.&#8221;</p></blockquote>
<p>Simple. Straight forward.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/php-facebook-pagination/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Timeframe, a better calendar</title>
		<link>http://cdevroe.com/links/timeframe-js/</link>
		<comments>http://cdevroe.com/links/timeframe-js/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 13:26:30 +0000</pubDate>
		<dc:creator>Colin Devroe</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[timeframe]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://cdevroe.com/?p=638</guid>
		<description><![CDATA[An open source Javascript calendar widget that is simply head and shoulders above the rest.]]></description>
			<content:encoded><![CDATA[<p>Timeframe is &#8220;Click-draggable. Range-makeable. A better calendar.&#8221;, and is open-source. Â It is thoroughly impressive, a great implementation, and works best in Safari!</p>
<div class="postImage-right"><img src="http://img.skitch.com/20080425-x49j418i7hq5csrftfhd3hnbba.jpg" alt="" width="240" />
<p>Timeframe demo</p>
</div>
<p>The demonstration (pictured) is by far the best calendar &#8220;widget&#8221; I&#8217;ve seen in a browser. Â One of my favorite things is the date range tools which is where Timeframe strived to excel and succeeded. Â Not only can you enter in a date range by typing it in, which will then result in the same range being selected in the calendar view above, but you can also click, drag, and select the range within the calendar view itself.</p>
<p>There are some desktop application calendars that pale in comparison to Timeframe. Â iPhoto is the first example that comes to my mind &#8211; you can&#8217;t even select a date range in iPhoto! Â Anyways. Â Give Timeframe a spin and if you&#8217;re a developer, start putting this into your applications pronto.</p>
<p>Source:Â <a href="http://stephencelis.com/projects/timeframe">Timeframe</a>.<br />
Via: <a href="http://daringfireball.net/linked/2008/april#wed-23-timeframe">John Gruber&#8217;s linked list</a>.Â </p>
]]></content:encoded>
			<wfw:commentRss>http://cdevroe.com/links/timeframe-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

