<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Chris Monnat</title>
	
	<link>http://www.christophermonnat.com</link>
	<description>Programmer Extraordinaire</description>
	<lastBuildDate>Sat, 31 Oct 2009 00:00:00 PDT</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/ChrisMonnat" type="application/rss+xml" /><feedburner:emailServiceId>ChrisMonnat</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Links for 2009-10-30 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ChrisMonnat/~3/d5jZ9nPZtRQ/mrtopher</link><pubDate>Sat, 31 Oct 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mrtopher#2009-10-30</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://eeinsider.com/blog/expressionengine-2-week-addon-development/"&gt;ExpressionEngine 2 Week: Add-on Development&lt;/a&gt;&lt;br/&gt;
EE 2.0 comes out in December!! This post give a brief glimpse of how-to build add-ons.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/d5jZ9nPZtRQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mrtopher#2009-10-30</feedburner:origLink></item><item><title>Links for 2009-10-26 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ChrisMonnat/~3/q2J3XY_-pbU/mrtopher</link><pubDate>Tue, 27 Oct 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mrtopher#2009-10-26</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.techcrunch.com/2009/10/26/constant-contact-enters-the-online-event-registration-and-marketing-arena/"&gt;Constant Contact Enters The Online Event Registration And Marketing Arena&lt;/a&gt;&lt;br/&gt;
Well, this kinda stinks!&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sitepoint.com/blogs/2009/10/26/brainstorming-guide/"&gt;Brainstorming: A Guide to Breaking Through Your Barriers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/q2J3XY_-pbU" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mrtopher#2009-10-26</feedburner:origLink></item><item><title>Links for 2009-10-23 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ChrisMonnat/~3/FqTK9oQoYyo/mrtopher</link><pubDate>Sat, 24 Oct 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mrtopher#2009-10-23</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.sitepoint.com/blogs/2009/10/23/how-to-deal-with-stress/"&gt;4 Steps to Dealing with Everyday Stress&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/FqTK9oQoYyo" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mrtopher#2009-10-23</feedburner:origLink></item><item><title>Links for 2009-10-21 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ChrisMonnat/~3/2aMXCl_ILj8/mrtopher</link><pubDate>Thu, 22 Oct 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mrtopher#2009-10-21</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://wildbit.com/blog/2009/10/21/announcing-postmark-email-delivery-in-the-cloud/"&gt;Announcing Postmark: Email delivery in the cloud&lt;/a&gt;&lt;br/&gt;
This sounds like an answer to a prayer!! Looking forward to it.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://haystack.com/"&gt;Haystack : Designers get listed&lt;/a&gt;&lt;br/&gt;
37signals launched their new project today. Sounds interesting.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/2aMXCl_ILj8" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mrtopher#2009-10-21</feedburner:origLink></item><item><title>Links for 2009-10-20 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ChrisMonnat/~3/3mud3By9ZgI/mrtopher</link><pubDate>Wed, 21 Oct 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mrtopher#2009-10-20</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.lifehack.org/articles/productivity/getting-things-re-started-dealing-with-mental-blocks.html"&gt;Getting Things (Re-)Started: Dealing with Mental Blocks&lt;/a&gt;&lt;br/&gt;
Good tips.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://royal.pingdom.com/2009/10/20/adobe%e2%80%99s-bloodless-coup/"&gt;Adobe&amp;rsquo;s bloodless coup&lt;/a&gt;&lt;br/&gt;
Interesting post on Adobe and the fact that they own all web dev tools.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/3mud3By9ZgI" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mrtopher#2009-10-20</feedburner:origLink></item><item><title>Links for 2009-10-19 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ChrisMonnat/~3/dC6uRWdycmw/mrtopher</link><pubDate>Tue, 20 Oct 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mrtopher#2009-10-19</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.sitepoint.com/blogs/2009/10/16/is-work-life-balance-achievable/"&gt;Balancing Act: Is Work-Personal Life Balance Achievable?&lt;/a&gt;&lt;br/&gt;
Hhhmmm... I haven&amp;#039;t been able to achieve this yet.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/dC6uRWdycmw" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mrtopher#2009-10-19</feedburner:origLink></item><item><title>Links for 2009-10-15 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ChrisMonnat/~3/YUM1C6LZX0M/mrtopher</link><pubDate>Fri, 16 Oct 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mrtopher#2009-10-15</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://codeutopia.net/blog/2009/10/15/is-commenting-your-code-useless/"&gt;Is commenting your code useless?&lt;/a&gt;&lt;br/&gt;
This programmer says &amp;quot;HELL NO!&amp;quot;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/YUM1C6LZX0M" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mrtopher#2009-10-15</feedburner:origLink></item><item>
		<title>Update</title>
		<link>http://feedproxy.google.com/~r/ChrisMonnat/~3/-C0E1o3zF4o/</link>
		<comments>http://www.christophermonnat.com/2009/08/update/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 20:10:01 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Misc.]]></category>

		<guid isPermaLink="false">http://www.christophermonnat.com/?p=880</guid>
		<description><![CDATA[It&#8217;s been about a month since I posted anything worth while and I wanted to write a quick update to let everyone know I&#8217;m still here. Things are pretty hectic right now because I&#8217;m trying to get BadgeTracker ready for it&#8217;s next major release next month. That&#8217;s monopolizing most of my time at the moment [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been about a month since I posted anything worth while and I wanted to write a quick update to let everyone know I&#8217;m still here. Things are pretty hectic right now because I&#8217;m trying to get <a href="http://www.badgetracker.com">BadgeTracker</a> ready for it&#8217;s next major release next month. That&#8217;s monopolizing most of my time at the moment so of course the blog takes a back seat. I know I left you all hanging in the middle of a <a href="http://www.christophermonnat.com/guides/">post series on Spreedly</a> which I do intend on revisiting once things get back to abnormal but just hold tight for the time being. Better yet check out my <a href="http://delicious.com/mrtopher">Delicious</a> account, which is also syndicated in the sidebar under Side Notes. I usually post new links there once or twice a day about the exciting things going on on-line.</p>
<p>More soon!</p>


<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/AvxdEMtXnL4wvqe2ZpMr4-f3e4A/0/da"><img src="http://feedads.g.doubleclick.net/~a/AvxdEMtXnL4wvqe2ZpMr4-f3e4A/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AvxdEMtXnL4wvqe2ZpMr4-f3e4A/1/da"><img src="http://feedads.g.doubleclick.net/~a/AvxdEMtXnL4wvqe2ZpMr4-f3e4A/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=-C0E1o3zF4o:fcdt8MvVwfc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=-C0E1o3zF4o:fcdt8MvVwfc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=-C0E1o3zF4o:fcdt8MvVwfc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?i=-C0E1o3zF4o:fcdt8MvVwfc:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/-C0E1o3zF4o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.christophermonnat.com/2009/08/update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.christophermonnat.com/2009/08/update/</feedburner:origLink></item>
		<item>
		<title>ScoutMailer Case Study</title>
		<link>http://feedproxy.google.com/~r/ChrisMonnat/~3/NL2lECziNNY/</link>
		<comments>http://www.christophermonnat.com/2009/07/scoutmailer-case-study/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 13:23:47 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Misc.]]></category>

		<guid isPermaLink="false">http://www.christophermonnat.com/?p=626</guid>
		<description><![CDATA[I&#8217;m a big fan of the e-mail marketing app Campaign Monitor (CM). A couple of months back I wrote a post about how I resell CM to a niche market as ScoutMailer. Today the folks over at Campaign Monitor have posted a case study of ScoutMailer with some insights on how to resell CM to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a big fan of the e-mail marketing app <a href="http://www.campaignmonitor.com">Campaign Monitor</a> (CM). A couple of months back I wrote a post about how I <a href="http://www.christophermonnat.com/2009/01/selling-campaign-monitor-to-your-customers/">resell CM to a niche market</a> as <a href="http://www.scoutmailer.com">ScoutMailer</a>. Today the folks over at Campaign Monitor have <a href="http://www.campaignmonitor.com/casestudies/scoutmailer/">posted a case study</a> of ScoutMailer with some insights on how to resell CM to other niche markets. Check it out!</p>


<p>Related posts:<ol><li><a href='http://www.christophermonnat.com/2009/01/selling-campaign-monitor-to-your-customers/' rel='bookmark' title='Permanent Link: Selling Campaign Monitor to Your Customers'>Selling Campaign Monitor to Your Customers</a></li><li><a href='http://www.christophermonnat.com/2009/01/10-reasons-why-campaign-monitor-rocks/' rel='bookmark' title='Permanent Link: 10 Reasons Why Campaign Monitor Rocks'>10 Reasons Why Campaign Monitor Rocks</a></li><li><a href='http://www.christophermonnat.com/2008/07/turn-your-rss-feed-into-an-e-mail-newsletter/' rel='bookmark' title='Permanent Link: Turn your RSS feed into an e-mail newsletter!'>Turn your RSS feed into an e-mail newsletter!</a></li></ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/-KqHfrxUK8RyPaSugXeUh4YdXi0/0/da"><img src="http://feedads.g.doubleclick.net/~a/-KqHfrxUK8RyPaSugXeUh4YdXi0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-KqHfrxUK8RyPaSugXeUh4YdXi0/1/da"><img src="http://feedads.g.doubleclick.net/~a/-KqHfrxUK8RyPaSugXeUh4YdXi0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=NL2lECziNNY:Ywu38fixxBI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=NL2lECziNNY:Ywu38fixxBI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=NL2lECziNNY:Ywu38fixxBI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?i=NL2lECziNNY:Ywu38fixxBI:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/NL2lECziNNY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.christophermonnat.com/2009/07/scoutmailer-case-study/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.christophermonnat.com/2009/07/scoutmailer-case-study/</feedburner:origLink></item>
		<item>
		<title>Your thoughts: why so negative?</title>
		<link>http://feedproxy.google.com/~r/ChrisMonnat/~3/9d7E4U_el6A/</link>
		<comments>http://www.christophermonnat.com/2009/06/your-thoughts-why-so-negative/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 10:00:12 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Misc.]]></category>

		<guid isPermaLink="false">http://www.christophermonnat.com/?p=873</guid>
		<description><![CDATA[I came across this post on TechCrunch yesterday about SitePoints new project Flippa. I&#8217;m a fan of SitePoint, have been for many years, but I have not used any of their auction or design services. The thing that struck me the most about this situation is how negative the feedback and responses have been in [...]]]></description>
			<content:encoded><![CDATA[<p>I came across <a href="http://www.techcrunch.com/2009/06/23/sitepoint-spins-off-website-marketplace-as-flippa-upsets-users/">this post</a> on TechCrunch yesterday about <a href="http://www.sitepoint.com">SitePoints</a> new project <a href="http://www.flippa.com">Flippa</a>. I&#8217;m a fan of SitePoint, have been for many years, but I have not used any of their auction or design services. The thing that struck me the most about this situation is how negative the feedback and responses have been in regards to the new change to SitePoints website marketplace. I read it a couple of times and I kept coming back to a more general question: why is it that we typically respond to things we disagree with or don&#8217;t understand in anger?</p>
<p>I&#8217;m just as guilty of this as the next guy&#8230; your number 23 on hold for phone support or your routine has been disrupted by product changes or something you have no control over and you fly off the handle at anyone or anything without thinking. Like SitePoint I recently made some modifications in one of my programs that users didn&#8217;t quite understand and instead of engaging me in open and civil dialog I received a number of very pissed and clearly unhappy e-mails. Why is it that when these sort of things happen we rush to anger instead of calmly and collectively reaching out to the person or companies involved to see if there is anything that can be done to correct what we see as a problem?</p>
<p>Your thoughts?</p>


<p>Related posts:<ol><li><a href='http://www.christophermonnat.com/2009/05/your-thoughts-do-web-apps-need-offline-components/' rel='bookmark' title='Permanent Link: Your thoughts: Do web apps need offline components?'>Your thoughts: Do web apps need offline components?</a></li></ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/bsLVFvBMxdqk_HsRucUngdCZAhs/0/da"><img src="http://feedads.g.doubleclick.net/~a/bsLVFvBMxdqk_HsRucUngdCZAhs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bsLVFvBMxdqk_HsRucUngdCZAhs/1/da"><img src="http://feedads.g.doubleclick.net/~a/bsLVFvBMxdqk_HsRucUngdCZAhs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=9d7E4U_el6A:56TlCAPu4NM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=9d7E4U_el6A:56TlCAPu4NM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=9d7E4U_el6A:56TlCAPu4NM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?i=9d7E4U_el6A:56TlCAPu4NM:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/9d7E4U_el6A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.christophermonnat.com/2009/06/your-thoughts-why-so-negative/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.christophermonnat.com/2009/06/your-thoughts-why-so-negative/</feedburner:origLink></item>
		<item>
		<title>Simplified Compatibility Checking</title>
		<link>http://feedproxy.google.com/~r/ChrisMonnat/~3/EUW3maZzNGY/</link>
		<comments>http://www.christophermonnat.com/2009/06/simplify-compatibility-checking/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 15:45:01 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.christophermonnat.com/?p=851</guid>
		<description><![CDATA[Fever, a new RSS feed reading application, just launched recently. Many of you might be familiar with the developer Shaun Inman from his popular stats tracking app Mint. I haven&#8217;t personally used Mint but I&#8217;m a huge fan of RSS feeds so when I heard about Fever I had to give it a shot. I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.christophermonnat.com/wp-content/uploads/2009/06/fever-logo.png"><img class="alignright size-full wp-image-853" title="fever-logo" src="http://www.christophermonnat.com/wp-content/uploads/2009/06/fever-logo.png" alt="fever-logo" width="110" height="58" /></a><a href="http://feedafever.com">Fever</a>, a new RSS feed reading application, just launched recently. Many of you might be familiar with the developer <a href="http://www.shauninman.com">Shaun Inman</a> from his popular stats tracking app <a href="http://haveamint.com">Mint</a>. I haven&#8217;t personally used Mint but I&#8217;m a huge fan of RSS feeds so when I heard about Fever I had to give it a shot. I will probably talk about the application a little later after I&#8217;ve had a chance to play with it. But, in this post I wanted to talk briefly about the unique checkout process Shaun uses to help make sure his users are installing the program on a compatable system before they even enter their credit card number.</p>
<p><span id="more-851"></span></p>
<p>One of the difficulties when selling software that needs to be installed is making sure the software is compatible with the users computer/system. I know this is <em>supposed</em> to be a responsibility of the user, but if they make a mistake they will be contacting you for support. Fever takes a unique approach to confirming users are installing the software on compatible machines. Shaun has created a process that links a compatibility check with his checkout/licensing process so that users can only purchase a license if they are installing the program on a compatible machine.</p>
<p style="text-align: center;"><a href="http://www.christophermonnat.com/wp-content/uploads/2009/06/fever-compatability.png"><img class="size-full wp-image-852 aligncenter" title="fever-computability" src="http://www.christophermonnat.com/wp-content/uploads/2009/06/fever-compatability.png" alt="fever-compatibility" width="381" height="537" /></a></p>
<p style="text-align: left;">Before you can purchase a license you first download a small package that you upload to the location where you intend on installing the program. From there the package checks your systems compatibility and asks for database information (shown in the image above). Once entered, and after privileges have been checked, you are provided with a link back to the Fever site that populates the purchase form with a unique ID. This ID, I assume, matches your site with the compatibility check performed and then you continue with purchasing the license.</p>
<p>This process is genius! It allows the developer to prove the user is going to be installing the software on a compatible machine before selling them a license. I can image this process greatly reduces, if not eliminates, the support requests having to do with system compatibility and installation issues. Very cool idea!</p>


<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/b6onbvzKvpDcJe2iCKPy-_KgfRQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/b6onbvzKvpDcJe2iCKPy-_KgfRQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/b6onbvzKvpDcJe2iCKPy-_KgfRQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/b6onbvzKvpDcJe2iCKPy-_KgfRQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=EUW3maZzNGY:RA9k-916Nh4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=EUW3maZzNGY:RA9k-916Nh4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=EUW3maZzNGY:RA9k-916Nh4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?i=EUW3maZzNGY:RA9k-916Nh4:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/EUW3maZzNGY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.christophermonnat.com/2009/06/simplify-compatibility-checking/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.christophermonnat.com/2009/06/simplify-compatibility-checking/</feedburner:origLink></item>
		<item>
		<title>Speedy Subscriptions Using Spreedly (Part 2) – Account Configuration</title>
		<link>http://feedproxy.google.com/~r/ChrisMonnat/~3/Qfxso5zvP6I/</link>
		<comments>http://www.christophermonnat.com/2009/06/speedy-subscriptions-using-spreedly-part-2-account-configuration/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 10:00:52 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.christophermonnat.com/?p=750</guid>
		<description><![CDATA[If you&#8217;ve ever accepted payments with PayPal you&#8217;ll know all the magic is in the settings/configuration. There are tons of configuration options that you can modify to make PayPal work just the way you like. The same holds true for Spreedly. The developers have paid attention to detail and provided us with the ability to [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve ever accepted payments with PayPal you&#8217;ll know all the magic is in the settings/configuration. There are tons of configuration options that you can modify to make PayPal work just the way you like. The same holds true for Spreedly. The developers have paid attention to detail and provided us with the ability to tweak how the service interacts with your chosen payment gateway so you can get just the functionality you&#8217;re looking for. In the last post I gave you a brief introduction to Spreedly and walked you through creating your own free test account. Today we&#8217;re going to jump in head first and look at the account configuration options.</p>
<p><span id="more-750"></span></p>
<p>For those viewers following along at home, if you look at the configuration page, I&#8217;m going to cover each section in reverse order wrapping up with setting up your subscription plans.</p>
<p><a href="http://www.christophermonnat.com/wp-content/uploads/2009/05/spreedly-config.gif"><img class="aligncenter size-full wp-image-792" title="spreedly-config" src="http://www.christophermonnat.com/wp-content/uploads/2009/05/spreedly-config.gif" alt="spreedly-config" width="595" height="328" /></a></p>
<h2>Site Details</h2>
<p>The site details section is where, you guess it, you enter the details of the site you are going to be integrating with Spreedly. The information requested on this form is pretty straight forward so I&#8217;m just going to touch on 2 parts.</p>
<p><center><a href="http://www.christophermonnat.com/wp-content/uploads/2009/06/spreedly-site-details.gif"><img class="aligncenter size-full wp-image-795" title="spreedly-site-details" src="http://www.christophermonnat.com/wp-content/uploads/2009/06/spreedly-site-details.gif" alt="spreedly-site-details" width="490" height="371" /></a></center></p>
<p><strong>URLs</strong></p>
<p>About half way through the form they ask for 3 URLs:</p>
<ol>
<li>Subscriber Changed Notification URL
<p>Since you are using a system that is external to your application to handle payment processing you will have to work out some way to sync the two so your sure people have only those accounts they have paid for. That&#8217;s where the subscribers changed notification URL comes into play. When subscriber data within Spreedly changes, the service will POST a comma separated value list of subscriber IDs to the address you specify here. It then becomes your responsibility to process those changes and sync them with your application.</li>
<li>Individual user URL on your site
<p>This is the address that users visit to view their specific information in your program. Spreedly uses this address to redirect users back to your program from their update screen.</li>
<li>Subscription selection URL on your site
<p>This is that place in your program where users can upgrade/downgrade their account. Again, Spreedly uses this address to redirect users back to your program from their system.</li>
</ol>
<p>I will come back to these URLs later in the series so go ahead and leave them blank for now.</p>
<p><strong>API Authentication Token</strong></p>
<p>At the bottom of the site details form you will find your sites API Authentication Token. This is the token you will use when interacting with the Spreedly API. Be sure to handle with care and keep it a secret&#8230; you can always generate a new one if you need to. Make note of this because we will be using it in the posts to come.</p>
<h2>Manage Site Users</h2>
<p>One of the really nice things about Spreedly is that you can add as many users to your account as you wish without hitting any limits. So, if your organization has a 10 person support/accounting team (wishful thinking perhaps) you can add them all with their own access information from the Manage Site Users section.</p>
<h2>Payment Gateway</h2>
<p>The Payment Gateway section is where you will go when you&#8217;re ready to take your site out of testing and into production. You will have to upgrade your Spreedly account from a test site to a production site and either sign-up for the monthly pricing option or bite the bullet and get a <a href="https://spreedly.com/info/kickstart/">Kickstart package</a>. For the time being, the page just displays some example CC numbers you can use to generate different errors.</p>
<h2>Subscription Plans</h2>
<p>Now to the important stuff! The Subscription Plans section is where you setup your applications different subscription plans and pricing. By default, Spreedly has setup one example plan to give you an idea how things work. I will issue one word of caution here, you CANNOT delete subscription plans. I hope this is coming soon, because I have made a mess out of my other account, but for right now it can&#8217;t be done. Just keep this in mind as you enter your plans.</p>
<p>I want to draw your attention to 2 pieces on this form:</p>
<p><center><a href="http://www.christophermonnat.com/wp-content/uploads/2009/06/spreedly-subscription-plans.gif"><img class="aligncenter size-full wp-image-796" title="spreedly-subscription-plans" src="http://www.christophermonnat.com/wp-content/uploads/2009/06/spreedly-subscription-plans.gif" alt="spreedly-subscription-plans" width="490" height="383" /></a></center></p>
<p><strong>Feature Level</strong></p>
<p>The feature level is the name with which you will refer to the subscription plan through the API. You want to keep this simple yet specific so you can easily match it up with a subscription type. I typically just repeat the plan name as one word lowercase just to keep it easy.</p>
<p><strong>Plan Type</strong></p>
<p>The type of plan is where you can specify if this is a regular subscription, gift subscription or free trial. This really gives you a lot of options when setting up your applications pricing structure. You can set the amount of time each plan is valid for before charging the user again (number of days or months). You can also specify if you want to require auto-recurring purchases (you only accept auto-recurring payments) or not. The sky&#8217;s the limit!</p>
<h2>That&#8217;s it!</h2>
<p>After you play around with your settings and subscription types a little bit you will have a configured Spreedly test account ready to accept subscribers. In the next post I&#8217;m going to take a break from the Spreedly specific stuff for a little while and talk about planning your sign-up/checkout process and determining how that&#8217;s going to work with your newly configured Spreedly account.</p>


<p>Related posts:<ol><li><a href='http://www.christophermonnat.com/2009/06/speedy-subscriptions-using-spreedly-part-1-service-overview-introduction/' rel='bookmark' title='Permanent Link: Speedy Subscriptions Using Spreedly (Part 1) &#8211; Overview &#038; Account Setup'>Speedy Subscriptions Using Spreedly (Part 1) &#8211; Overview &#038; Account Setup</a></li><li><a href='http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-2-configuration/' rel='bookmark' title='Permanent Link: Building Applications using CodeIgniter (Part 2) &#8211; Configuration'>Building Applications using CodeIgniter (Part 2) &#8211; Configuration</a></li></ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/CqeZSLJY45pv8r_wHcubZ-iNZkQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/CqeZSLJY45pv8r_wHcubZ-iNZkQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/CqeZSLJY45pv8r_wHcubZ-iNZkQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/CqeZSLJY45pv8r_wHcubZ-iNZkQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=Qfxso5zvP6I:w_3NOQzzwy4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=Qfxso5zvP6I:w_3NOQzzwy4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=Qfxso5zvP6I:w_3NOQzzwy4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?i=Qfxso5zvP6I:w_3NOQzzwy4:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/Qfxso5zvP6I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.christophermonnat.com/2009/06/speedy-subscriptions-using-spreedly-part-2-account-configuration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.christophermonnat.com/2009/06/speedy-subscriptions-using-spreedly-part-2-account-configuration/</feedburner:origLink></item>
		<item>
		<title>Speedy Subscriptions Using Spreedly (Part 1) – Overview &amp; Account Setup</title>
		<link>http://feedproxy.google.com/~r/ChrisMonnat/~3/yUzaKqn7j5w/</link>
		<comments>http://www.christophermonnat.com/2009/06/speedy-subscriptions-using-spreedly-part-1-service-overview-introduction/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 10:00:12 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.christophermonnat.com/?p=747</guid>
		<description><![CDATA[I developed Sign-Up-Sheet.com four years ago first as a sandbox project for learning Ruby on Rails (RoR). After becoming disillusioned with RoR, I redeveloped the app in PHP using CodeIgniter (CI) and that&#8217;s where it&#8217;s been ever since. Every once and a while I try to add a new feature here or there but find [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.christophermonnat.com/wp-content/uploads/2009/06/spreedly-logo.gif"><img class="alignright size-full wp-image-776" title="spreedly-logo" src="http://www.christophermonnat.com/wp-content/uploads/2009/06/spreedly-logo.gif" alt="spreedly-logo" width="160" height="90" /></a>I developed <a href="http://www.sign-up-sheet.com">Sign-Up-Sheet.com</a> four years ago first as a sandbox project for learning Ruby on Rails (RoR). After becoming disillusioned with RoR, I redeveloped the app in PHP using <a href="http://www.codeigniter.com">CodeIgniter</a> (CI) and that&#8217;s where it&#8217;s been ever since. Every once and a while I try to add a new feature here or there but find it very difficult to focus any time/energy on a product that doesn&#8217;t generate any revenue. The solution to this problem, of course, is to start charging for the service. But every time I researched what was involved with accepting credit cards the complicated pricing schemes and high costs always turned me away. That was until I found <a href="http://www.spreedly.com">Spreedly</a>! This post kicks off a new series that will take a detailed look at Spreedly. Over the next couple of weeks, I will introduce you to the service, walk you through how their system works and give you a real world example so you can see it in action.<br />
<span id="more-747"></span></p>
<h2>What is Spreedly?</h2>
<p>Aside from the best thing since sliced bread&#8230; Spreedly is a service that takes the hassle out of collecting subscription fees for web based services/applications. Developing applications that use 3rd party payment gateways and that sell recurring subscriptions is a difficult and often expensive undertaking. Spreedly simplifies the process by handling the complex task of subscription management and payment processing for you so you can focus your time and money on your product.</p>
<p>After configuring your Spreedly account and entering your subscription types and pricing scheme, the service will handle all the payment gateway interaction and user subscription management for you&#8230; no muss no fuss. Accepting payments literally becomes as easy as redirecting your user to a Spreedly URL and having them enter their credit card information. That&#8217;s it!!</p>
<h2>Supported Gateways</h2>
<p>It&#8217;s important to understand that <strong>Spreedly is not a payment gateway</strong>. Spreedly simply acts as the middle man between your application and your selected gateway using APIs. This means you will still need to find a payment gateway and merchant account (if necessary). The simplest, and cheapest, option is probably <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_wp-pro-overview-outside">PayPal</a> because it&#8217;s a gateway and merchant account all-in-one. But if that doesn&#8217;t work for you, Spreedly currently supports the following gateways:</p>
<ul>
<li><a href="http://www.authorize.net/">Authorize.net</a> (Only US dollars)</li>
<li><a href="http://www.beanstream.com/">Beanstream</a> (Only Canadian dollars)</li>
<li><a href="http://www.eway.com.au/">eWAY</a> (Only Australian dollars)</li>
<li><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_wp-pro-overview-outside">PayPal Website Payments Pro</a> (also <a href="https://www.paypal.com/uk/cgi-bin/webscr?cmd=_wp-pro-overview-outside">UK</a>)</li>
<li><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_additional-payment-overview-outside">PayPal Express Checkout</a> (also <a href="https://www.paypal.com/uk/cgi-bin/webscr?cmd=_additional-payment-overview-outside">UK</a>)<br />
(does not currently support automatically recurring subscriptions)</li>
<li><a href="http://www.sagepay.com/">Sage Pay</a> (formerly Protx)</li>
<li><a href="http://usaepay.com/">USA ePay</a> (Only US dollars)</li>
</ul>
<p>They are constantly adding new gateways to the service so be sure to visit <a href="http://www.spreedly.com/info/payment-gateways/">their site</a> for the most updated list. If you don&#8217;t see your gateway listed above the odds are good that they can add it for you. Just contact their support team and they will research what&#8217;s involved.</p>
<h2>Pricing</h2>
<p>Accepting credit cards online is an expensive proposition&#8230; that&#8217;s why I have avoided it up until now. There are bank fees for merchant accounts, fees for each transaction, monthly fees for the payment gateway, etc&#8230; not to mention the percentage of each transaction that certain parities take just because they can. It&#8217;s enough to make you dizzy!</p>
<p>The pricing for Spreedly is pretty straight forward:</p>
<p><strong>$19 per month + transaction fees</strong></p>
<ul>
<li>3% on the first 50 transactions per month</li>
<li>2% on transactions 51 through 5000</li>
<li>1% on all transactions after 5000</li>
</ul>
<p>The thing to point out here is that the Spreedly fees will be on top of whatever your payment gateway charges. In the end you are still probably looking at a decent sum of money&#8230; but odds are it&#8217;s still cheaper (programming included) than if you went it alone or with another service.</p>
<p>If there are too many monthly fees for you to handle, Spreedly also has another pricing option called the <a href="http://www.spreedly.com/info/kickstart/">Kickstart package</a>. For one single payment of $699.00 you can get a Spreedly account <strong>for life</strong> with:</p>
<ul>
<li>a frozen per-transaction fee of 1%</li>
<li>no monthly fees</li>
<li>and it never expires!!</li>
</ul>
<p>It pays to keep an eye on the Spreedly site (and maybe follow their <a href="http://twitter.com/spreedly">Twitter account</a>) for special offers because when they first launched Kickstart the price was $499.00 for a limited time. So there are opportunities for picking up deals if you pay attention.</p>
<h2>Account Setup</h2>
<p>Now that you have a basic understanding of what Spreedly is, let&#8217;s go ahead and create a test account. Spreedly makes it super easy to get your bearings and see how the system works without spending any money. You can sign-up for a free test account (which gives you access to everything you need) and see if it will work for you. To create your account, visit <a href="https://www.spreedly.com/signup">https://www.spreedly.com/signup</a> and fill out the form.</p>
<p><a href="http://www.christophermonnat.com/wp-content/uploads/2009/06/spreedly-overview.gif"><img class="aligncenter size-full wp-image-789" title="spreedly-overview" src="http://www.christophermonnat.com/wp-content/uploads/2009/06/spreedly-overview.gif" alt="spreedly-overview" width="595" height="351" /></a></p>
<p>After signing-up you will be directed to your test site overview page (shown above). The overview page gives you a summary of your account in terms of transactions and subscribers. You can click around the interface if you like but it&#8217;s going to be pretty empty until we start submitting transactions (which we&#8217;ll get to later in this series).</p>
<h2>That&#8217;s a wrap</h2>
<p>That does it for the Spreedly intro. In the next post I will review how to configure your account and setup your subscription plans/pricing scheme.</p>
<p>I&#8217;m just getting started with Spreedly so stay tuned!</p>


<p>Related posts:<ol><li><a href='http://www.christophermonnat.com/2009/06/speedy-subscriptions-using-spreedly-part-2-account-configuration/' rel='bookmark' title='Permanent Link: Speedy Subscriptions Using Spreedly (Part 2) &#8211; Account Configuration'>Speedy Subscriptions Using Spreedly (Part 2) &#8211; Account Configuration</a></li></ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/lLLBWsi8U98c0jgDh-Plpw05lwA/0/da"><img src="http://feedads.g.doubleclick.net/~a/lLLBWsi8U98c0jgDh-Plpw05lwA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/lLLBWsi8U98c0jgDh-Plpw05lwA/1/da"><img src="http://feedads.g.doubleclick.net/~a/lLLBWsi8U98c0jgDh-Plpw05lwA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=yUzaKqn7j5w:umGD7uu5x24:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=yUzaKqn7j5w:umGD7uu5x24:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=yUzaKqn7j5w:umGD7uu5x24:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?i=yUzaKqn7j5w:umGD7uu5x24:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/yUzaKqn7j5w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.christophermonnat.com/2009/06/speedy-subscriptions-using-spreedly-part-1-service-overview-introduction/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.christophermonnat.com/2009/06/speedy-subscriptions-using-spreedly-part-1-service-overview-introduction/</feedburner:origLink></item>
		<item>
		<title>Facebook Connect Library for CodeIgniter</title>
		<link>http://feedproxy.google.com/~r/ChrisMonnat/~3/DSODQH_M--g/</link>
		<comments>http://www.christophermonnat.com/2009/05/facebook-connect-library-for-codeigniter/#comments</comments>
		<pubDate>Mon, 18 May 2009 22:00:52 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.christophermonnat.com/?p=762</guid>
		<description><![CDATA[Just a brief follow-up to the post series I did a while back on Implementing Facebook Connect with CI. Today, Elliot Haughin continued his tradition of releasing helpful CI libraries and published a new library for implementing Facebook Connect using CodeIgniter. Haven&#8217;t had a chance to review it personally yet but I would imagine it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Just a brief follow-up to the post series I did a while back on <a href="http://www.christophermonnat.com/guides">Implementing Facebook Connect with CI</a>. Today, Elliot Haughin continued his tradition of releasing helpful CI libraries and published a <a href="http://www.haughin.com/2009/05/18/new-codeigniter-library-facebook-connect/">new library for implementing Facebook Connect using CodeIgniter</a>. Haven&#8217;t had a chance to review it personally yet but I would imagine it&#8217;s just the thing to make implementing Facebook Connect on your CI site easier. Check it out!</p>


<p>Related posts:<ol><li><a href='http://www.christophermonnat.com/2009/01/implementing-facebook-connect-part-1/' rel='bookmark' title='Permanent Link: Implementing Facebook Connect (Part 1) &#8211; What is Facebook Connect?'>Implementing Facebook Connect (Part 1) &#8211; What is Facebook Connect?</a></li><li><a href='http://www.christophermonnat.com/2009/02/implementing-facebook-connect-part-3-accessing-data-from-facebook/' rel='bookmark' title='Permanent Link: Implementing Facebook Connect (Part 3) &#8211; Accessing Data from Facebook'>Implementing Facebook Connect (Part 3) &#8211; Accessing Data from Facebook</a></li><li><a href='http://www.christophermonnat.com/2008/08/ci-inferno/' rel='bookmark' title='Permanent Link: CI Inferno'>CI Inferno</a></li></ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/m3L-06y9N313P4vpJy-AOJcc0Fo/0/da"><img src="http://feedads.g.doubleclick.net/~a/m3L-06y9N313P4vpJy-AOJcc0Fo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/m3L-06y9N313P4vpJy-AOJcc0Fo/1/da"><img src="http://feedads.g.doubleclick.net/~a/m3L-06y9N313P4vpJy-AOJcc0Fo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=DSODQH_M--g:nxOo2NYO7iQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=DSODQH_M--g:nxOo2NYO7iQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=DSODQH_M--g:nxOo2NYO7iQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?i=DSODQH_M--g:nxOo2NYO7iQ:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/DSODQH_M--g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.christophermonnat.com/2009/05/facebook-connect-library-for-codeigniter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.christophermonnat.com/2009/05/facebook-connect-library-for-codeigniter/</feedburner:origLink></item>
		<item>
		<title>Support the National Center for Missing and Exploited Children</title>
		<link>http://feedproxy.google.com/~r/ChrisMonnat/~3/qSuCcf37r_E/</link>
		<comments>http://www.christophermonnat.com/2009/05/support-the-national-center-for-missing-and-exploited-children/#comments</comments>
		<pubDate>Thu, 14 May 2009 10:00:14 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Misc.]]></category>

		<guid isPermaLink="false">http://www.christophermonnat.com/?p=727</guid>
		<description><![CDATA[&#8220;The U.S. Department of Justice reports that in a one-year period of time 797,000 children were reported missing. That is an average of 2,100 children reported missing each day. 1,682,900 children ran away or were thrown away. 203,900 children were abducted by family members. 198,300 children were involuntarily missing, lost or injured. 58,200 children were [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<em>The U.S. Department of Justice reports that in a one-year period of time <strong>797,000 children</strong> were reported missing. That is an average of <strong>2,100 children</strong> reported missing each day. <strong>1,682,900 children</strong> ran away or were thrown away. <strong>203,900 children</strong> were abducted by family members. <strong>198,300 children</strong> were involuntarily missing, lost or injured. <strong>58,200 children</strong> were abducted by nonfamily members.</em>&#8221;</p>
<p>&#8220;<em>The National Center for Missing &amp; Exploited Children (NCMEC) has been instrumental in improving the recovery rate from <strong>62% to 96%</strong>.</em>&#8221; &#8211; <a href="http://www.missingkids.com/missingkids/servlet/PageServlet?LanguageCountry=en_US&amp;PageId=261">NCMEC Timeline</a></p>
<p>The <a href="http://www.missingkids.com">NCMEC</a> is the nations resource for child protection and is celebrating 25 years of service in 2009. In this day in age when kids can log onto the Internet and befriend anyone with a screen name it&#8217;s more important than ever that we have organizations like the NCMEC to aid in the recovery of lost children and prevention of child exploitation. That&#8217;s why I&#8217;ve chosen the NCMEC as by <a href="http://www.zemanta.com/bloggingforacause/">cause to blog for</a>. You can learn more about the NCMEC by viewing this <a href="http://mfile.akamai.com/11327/wmv/ncmec.download.akamai.com/11327/media/23_years_of_progress.asx">promotional video</a> available on their website.</p>
<p>This blog post is part of Zemanta&#8217;s &#8220;<a href="http://www.zemanta.com/bloggingforacause/">Blogging For a Cause</a>&#8221; campaign to raise awareness and funds for worthy causes that bloggers care about.</p>


<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/wc9IQtk-SChcCkefDPjuZhB9kzU/0/da"><img src="http://feedads.g.doubleclick.net/~a/wc9IQtk-SChcCkefDPjuZhB9kzU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/wc9IQtk-SChcCkefDPjuZhB9kzU/1/da"><img src="http://feedads.g.doubleclick.net/~a/wc9IQtk-SChcCkefDPjuZhB9kzU/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=qSuCcf37r_E:U6URfk8tRII:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=qSuCcf37r_E:U6URfk8tRII:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=qSuCcf37r_E:U6URfk8tRII:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?i=qSuCcf37r_E:U6URfk8tRII:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/qSuCcf37r_E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.christophermonnat.com/2009/05/support-the-national-center-for-missing-and-exploited-children/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://mfile.akamai.com/11327/wmv/ncmec.download.akamai.com/11327/media/23_years_of_progress.asx" length="194" type="video/x-ms-asf" />
		<feedburner:origLink>http://www.christophermonnat.com/2009/05/support-the-national-center-for-missing-and-exploited-children/</feedburner:origLink></item>
		<item>
		<title>Building Applications using CodeIgniter (Part 4) – Code Templates</title>
		<link>http://feedproxy.google.com/~r/ChrisMonnat/~3/gmGnhH7g_aY/</link>
		<comments>http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-4-code-templates/#comments</comments>
		<pubDate>Wed, 13 May 2009 10:00:00 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>

		<guid isPermaLink="false">http://www.christophermonnat.com/?p=601</guid>
		<description><![CDATA[Last July I wrote a post entitled &#8220;What does your code say about you?&#8221; In that post I discuss the importance of writing clean well formatted code. It&#8217;s vitally important, even if you are the only programmer working on a project, that you document and format your code because you may be the only programmer [...]]]></description>
			<content:encoded><![CDATA[<p>Last July I wrote a post entitled &#8220;<a href="http://www.christophermonnat.com/2008/07/what-does-you-code-say-about-you/">What does your code say about you?</a>&#8221; In that post I discuss the importance of writing clean well formatted code. It&#8217;s vitally important, even if you are the only programmer working on a project, that you document and format your code because you may be the only programmer now but who knows about 6 months or a year from now. Plus, as a programmer, the code you write is a direct reflection on you as a professional.</p>
<p>So far in this series I&#8217;ve discussed my typical <a href="http://www.christophermonnat.com/2009/04/building-applications-using-codeigniter-part-1-file-structure/">application structure</a>, <a href="http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-2-configuration/">configuration</a> and <a href="http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-3-helpers/">helper files</a> when developing apps using CodeIgniter (CI). In this final post I&#8217;ll review creating code templates for quick consistent development.<br />
<span id="more-601"></span></p>
<p>There is nothing really functional/technical about code templates. Templates are a set of simple files that have the basic document structure for the specified file (controller, model, library, etc.) that you use as a common starting point when creating any new file for your app. Your template should contain common elements to all files like the header comment block, class declaration, constructor, etc. There is no need to come up with your own standard when creating your templates because CI has a very nice style guide you should follow.</p>
<h2>CI Style Guide</h2>
<p>A few versions ago, CI added a page to their users guide entitled <a href="http://codeigniter.com/user_guide/general/styleguide.html">PHP Style Guide</a>. In this section they do a great job at outlining the proper format when declaring variables, writing comments, naming files, etc. This is a great place to start when creating your templates. If you don&#8217;t already, you should think about getting in the habit of following these standards (even if you aren&#8217;t programming with CI) because they will help keep your code clean and consistent.</p>
<h2>Template Files</h2>
<p>Before I start coding my app I typically create a template file and place it in the controller and model folders. The templates are different of course, but they both create a nice starting point whenever I need to create a new file. It&#8217;s important to note that you don&#8217;t necessarily have to create physical template files to accomplish clean and well formatted code. Some tools like <a href="http://www.panic.com/coda/">Coda</a> and <a href="http://macromates.com/">TextMate</a> give you the ability to save bits of text and reuse them in your files. So you could create your header comment block and save it in your editor and just call upon that whenever you create a new file. Doesn&#8217;t really matter how you do it, it just matters that you do.</p>
<h2>That&#8217;s a Wrap</h2>
<p>OK&#8230; lecture over. That does it for the building applications using CodeIgniter post series. If interested, you can <a href="http://www.christophermonnat.com/wp-content/uploads/2009/04/codeigniter_171.zip">download a copy</a> of the final CI install that we&#8217;ve created over the last 4 posts with helpers, code templates and all.</p>
<p>I hope by sheding some light on my process and explaining how I do things you came up with some ideas on how you can improve your own CI apps. As always, feel free to leave any questions or feedback as a comment below.</p>


<p>Related posts:<ol><li><a href='http://www.christophermonnat.com/2009/04/building-applications-using-codeigniter-part-1-file-structure/' rel='bookmark' title='Permanent Link: Building Applications using CodeIgniter (Part 1) &#8211; File Structure'>Building Applications using CodeIgniter (Part 1) &#8211; File Structure</a></li><li><a href='http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-3-helpers/' rel='bookmark' title='Permanent Link: Building Applications using CodeIgniter (Part 3) &#8211; Helpers'>Building Applications using CodeIgniter (Part 3) &#8211; Helpers</a></li><li><a href='http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-2-configuration/' rel='bookmark' title='Permanent Link: Building Applications using CodeIgniter (Part 2) &#8211; Configuration'>Building Applications using CodeIgniter (Part 2) &#8211; Configuration</a></li></ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/2GWCzju4Fwmcf2g3ljCEXX_4Oaw/0/da"><img src="http://feedads.g.doubleclick.net/~a/2GWCzju4Fwmcf2g3ljCEXX_4Oaw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/2GWCzju4Fwmcf2g3ljCEXX_4Oaw/1/da"><img src="http://feedads.g.doubleclick.net/~a/2GWCzju4Fwmcf2g3ljCEXX_4Oaw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=gmGnhH7g_aY:BZdUayWa6HA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=gmGnhH7g_aY:BZdUayWa6HA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=gmGnhH7g_aY:BZdUayWa6HA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?i=gmGnhH7g_aY:BZdUayWa6HA:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/gmGnhH7g_aY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-4-code-templates/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-4-code-templates/</feedburner:origLink></item>
		<item>
		<title>Building Applications using CodeIgniter (Part 3) – Helpers</title>
		<link>http://feedproxy.google.com/~r/ChrisMonnat/~3/gFPEjnB4Swo/</link>
		<comments>http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-3-helpers/#comments</comments>
		<pubDate>Fri, 08 May 2009 10:00:23 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>

		<guid isPermaLink="false">http://www.christophermonnat.com/?p=593</guid>
		<description><![CDATA[So far in this series we&#8217;ve discussed framework/application structure and configuration information. The next thing I always add to new applications is some common helper files I&#8217;ve developed and that come in handy in most projects. CodeIgniter (CI) helpers are very flexible tools to assist with common tasks throughout the app. If it doesn&#8217;t belong [...]]]></description>
			<content:encoded><![CDATA[<p>So far in this series we&#8217;ve discussed <a href="http://www.christophermonnat.com/2009/04/building-applications-using-codeigniter-part-1-file-structure/">framework/application structure</a> and <a href="http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-2-configuration/">configuration information</a>. The next thing I always add to new applications is some common <a href="http://codeigniter.com/user_guide/general/helpers.html">helper files</a> I&#8217;ve developed and that come in handy in most projects. CodeIgniter (CI) helpers are very flexible tools to assist with common tasks throughout the app. If it doesn&#8217;t belong in a controller and is too small for a custom library then a helper might be just what the programmer ordered.</p>
<p><span id="more-593"></span></p>
<h2>What belongs in a helper?</h2>
<p>Something I&#8217;ve struggled with in the past is determining when a certain function or process belongs in a helper file and when it would be better off elsewhere. There is no cold hard rule for determining when something belongs in a helper and when it doesn&#8217;t but you do need to be aware of the following:</p>
<p>&#8220;Unlike most other systems in CodeIgniter, Helpers are not written in an Object Oriented format. They are simple, procedural functions. Each helper function performs one specific task, with no dependence on other functions.&#8221;<br />
- CI Users Guide</p>
<p>This means that in order to access libraries and models within your helper functions you will need to get a CI instance:</p>
<p>$CI =&amp; get_instance();</p>
<p>With the technicalities out of the way let&#8217;s take a look at the 2 helper files I&#8217;ve developed: <strong>display_helper.php</strong> and  <strong>flash_helper.php</strong>.</p>
<h2>display_helper.php</h2>
<p>A lot can be accomplished with CI&#8217;s built in templating but there are still some things that require logic and therefore fit nicely within a helper function. The display_helper.php file holds a number of common HTML display functions that I use throughout my program view files. To see what this file looks like, <a href="http://www.christophermonnat.com/wp-content/uploads/2009/04/display_helper.zip">download an example</a>. The functions in this file are pretty self-explanatory but I will briefly describe what each does below:</p>
<p><strong>display_error()</strong></p>
<p>The display_error() function displays a properly formatted HTML error message. I have this function setup so it can display 2 types of message: standard and form. When using the form_validation library I use the set_error_delimiter() method to wrap my error messages in list item tags and then display form error messages as unordered lists. So, I can easily accomplish displaying both types of messages using this function just by passing some variables.</p>
<p><strong>display_msg()</strong></p>
<p>This function just displays a properly formatted HTML message. This doesn&#8217;t necessarily need to be in a helper function because it&#8217;s so simple. But, the nice thing about having it here is if I ever decide to change the format of my messages I just need to come here in one place and make the update. So it consolidates my code nicely&#8230; but the same could probably be accomplished by using more generic CSS ID names.</p>
<p><strong>req_field()</strong></p>
<p>You should always identify required fields on your forms so users know what they need to fill in and what can be left blank. I&#8217;ve put the display of this flag in a helper function again to consolidate my code. As with the display_msg() function, if I ever decide to change my required field flag I just need to come to this one place and change it instead of going into all my view files and going a find and replace.</p>
<p><strong>js_confirm()</strong></p>
<p>JavaScript confirmation messages come in handy when you want to check with a user to make sure they are sure of something before you do it. You can accomplish the same confirmation by writing more PHP but that takes more work. The js_confirm() function, when used with the default <a href="http://codeigniter.com/user_guide/helpers/url_helper.html">CI URL helper</a> anchor() function, displays a browser pop-up message with whatever text I pass to the function. If I&#8217;m in a hurry and don&#8217;t provide a message the function just returns a generic &#8220;Are you sure?&#8221; message.</p>
<p>Your display_helper file might look much different than mine, this is just an example of how I use it. But you want to be on the look out while your coding for repetition and little details here and there that might be changing down the road. If you can consolidate those things in a helper file you will end up saving a lot of time updating down the road.</p>
<h2>flash_helper.php</h2>
<p>CI added flashdata to it&#8217;s <a href="http://codeigniter.com/user_guide/libraries/sessions.html">session library</a> a few versions back and I for one was happy to see it. Flashdata allows you to pass messages for display between pages.  Simple status messages like &#8220;record added&#8221; or &#8220;record not found&#8221; can be placed in a flashdata variable and then displayed after the user is redirected to another page. A very handy tool for letting your users know the results of their actions.</p>
<p>While I do like this functionality, writing $this-&gt;session-&gt;set_flashdata(&#8217;item&#8217;, &#8216;value&#8217;) and $this-&gt;session-&gt;flashdata(&#8217;item&#8217;) every time I need to set or get something is a lot of typing. So the flash_helper is a pair of wrapper functions that handle the job of setting and displaying flash messages for me. To see what this file looks like, <a href="http://www.christophermonnat.com/wp-content/uploads/2009/04/flash_helper.zip">download an example</a>.</p>
<p><strong>display_flash()</strong></p>
<p>The display_flash() function displays a selected flash message in a view file. Simply provide the name of the flash variable and it will display it in a properly formatted HTML div.</p>
<p><strong>set_flash()</strong></p>
<p>This function sets a flash variable with a value I specify. Since I use flash variables for a lot of different messages, which I may need to format differently, I also use this function to store some formatting data along with the message. That way when I display the message it is automatically displayed using the CSS style I intended.</p>
<p>The flash_helper file is based on the same concept that <a href="http://www.michaelwales.com/">Michael Wales</a> posted about a while back. I would link to the post but I can&#8217;t seem to find it anymore.</p>
<h2>Last up: Code Templates</h2>
<p>That wraps up the 3rd installment of this series. In the next, and final post, I&#8217;ll discuss creating code templates to help you maintain consistency between your files.</p>


<p>Related posts:<ol><li><a href='http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-2-configuration/' rel='bookmark' title='Permanent Link: Building Applications using CodeIgniter (Part 2) &#8211; Configuration'>Building Applications using CodeIgniter (Part 2) &#8211; Configuration</a></li><li><a href='http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-4-code-templates/' rel='bookmark' title='Permanent Link: Building Applications using CodeIgniter (Part 4) &#8211; Code Templates'>Building Applications using CodeIgniter (Part 4) &#8211; Code Templates</a></li><li><a href='http://www.christophermonnat.com/2009/04/building-applications-using-codeigniter-part-1-file-structure/' rel='bookmark' title='Permanent Link: Building Applications using CodeIgniter (Part 1) &#8211; File Structure'>Building Applications using CodeIgniter (Part 1) &#8211; File Structure</a></li></ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/-zeeY68BoYH93oLEleQmYG5VKWg/0/da"><img src="http://feedads.g.doubleclick.net/~a/-zeeY68BoYH93oLEleQmYG5VKWg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-zeeY68BoYH93oLEleQmYG5VKWg/1/da"><img src="http://feedads.g.doubleclick.net/~a/-zeeY68BoYH93oLEleQmYG5VKWg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=gFPEjnB4Swo:eroqndzDekc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=gFPEjnB4Swo:eroqndzDekc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChrisMonnat?a=gFPEjnB4Swo:eroqndzDekc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisMonnat?i=gFPEjnB4Swo:eroqndzDekc:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisMonnat/~4/gFPEjnB4Swo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-3-helpers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.christophermonnat.com/2009/05/building-applications-using-codeigniter-part-3-helpers/</feedburner:origLink></item>
	</channel>
</rss>
