<?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>Fuel Your Coding</title>
	
	<link>http://fuelyourcoding.com</link>
	<description />
	<lastBuildDate>Mon, 09 Aug 2010 14:40:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</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" type="application/rss+xml" href="http://feeds.feedburner.com/fuelyourcoding" /><feedburner:info uri="fuelyourcoding" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>fuelyourcoding</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Down &amp; Dirty with MongoDB Part 2: Ruby ToDo</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/Cbjt-BSxRn8/</link>
		<comments>http://fuelyourcoding.com/down-and-dirty-with-mongodb-part-2/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 14:40:31 +0000</pubDate>
		<dc:creator>Jerod Santo</dc:creator>
				<category><![CDATA[Datastores]]></category>
		<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[Languages]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[nosql]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=1235</guid>
		<description><![CDATA[Earlier this summer, we kicked off a series on MongoDB where the goal was to write a simple todo application using native MongoDB drivers and three of our favorite scripting languages.
This article is part 2 in that series, in which we write said application in Ruby.
The Interface
You can refer back to the introductory article for [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/down-and-dirty-with-mongodb-part-2/">Down &#038; Dirty with MongoDB Part 2: Ruby ToDo</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Earlier this summer, we kicked off <a href="/down-and-dirty-with-mongodb-part-1/">a series on MongoDB</a> where the goal was to write a simple todo application using native <a href="http://mongodb.org">MongoDB</a> drivers and three of our favorite scripting languages.</p>
<p>This article is part 2 in that series, in which we write said application in <a href="http://ruby-lang.org">Ruby</a>.</p>
<h2>The Interface</h2>
<p>You can refer back to the <a href="http://fuelyourcoding.com/down-and-dirty-with-mongodb-part-1/">introductory article</a> for all the details, but I&#8217;ll reiterate the command-line interface here for easy reference:</p>
<ul>
<li><strong>todo</strong> &#8211; list all incomplete tasks sorted by priority then chronologically</li>
<li><strong>todo next</strong> &#8211; list all incomplete tasks that are high priority</li>
<li><strong>todo done</strong> &#8211; list all complete tasks chronologically</li>
<li><strong>todo high &#8220;pay bills&#8221;</strong> &#8211; add high priority task called &#8220;pay bills&#8221;</li>
<li><strong>todo low &#8220;get milk&#8221;</strong> &#8211; add low priority task called &#8220;get milk&#8221;</li>
<li><strong>todo finish &#8220;pay bills&#8221;</strong> &#8211; complete task called &#8220;pay bills&#8221;</li>
<li><strong>todo dont &#8220;get milk&#8221;</strong> &#8211; delete task called &#8220;get milk&#8221;</li>
<li><strong>todo help</strong> &#8211; list all commands and their usage</li>
</ul>
<p>Okay, let&#8217;s write this thing!</p>
<h2>The Driver</h2>
<p><a href="http://www.10gen.com/">10gen</a> distributes the Ruby driver using Ruby&#8217;s most popular package distribution tool, <a href="http://rubygems.org">RubyGems</a>. To install the driver on your machine simply execute:</p>
<pre class="brush: bash;">
gem install mongo
</pre>
<p>Our program will need to load in the driver before anything else, and we&#8217;ll use RubyGems to do it, so create a new text file called <tt>mongo_todo.rb</tt> and begin it with the following:</p>
<pre class="brush: ruby;">
require 'rubygems'
require 'mongo'
</pre>
<h2>The ToDo Class</h2>
<p>Ruby is a purely object-oriented language, so our program will employ a single object of a class we&#8217;ll write called <tt>ToDo</tt>. The class will take in the required command-line arguments, connect to the MongoDB collection that stores our todos, and execute the appropriate command on them.</p>
<p>To facilitate these needs, our object will need to take some arguments from the user and store a reference to the MongoDB collection when it is instantiated:</p>
<pre class="brush: ruby;">
class ToDo
  def initialize(args)
    @args  = args
    @mongo = Mongo::Connection.new.db(&quot;todo&quot;).collection(&quot;todos&quot;)
  end
end
</pre>
<p>In Ruby, the <tt>initialize</tt> instance method is called when a new object of a class is instantiated, most often using the <tt>new</tt> class method, like this:</p>
<pre class="brush: ruby;">
my_todo = ToDo.new
</pre>
<p>When a new <tt>ToDo</tt> object is instantiated, our class will store the arguments passed in to it in an instance variable called <tt>@args</tt> and store a connection to MongoDB in an instance variable called <tt>@mongo</tt>. <a href="http://api.mongodb.org/ruby/current/Mongo/Collection.html">Mongo::Connection</a> is a class provided by the <tt>mongo</tt> gem that we&#8217;re using.</p>
<p>Since our class expects some arguments passed in to the initializer, we need to provide them to the <tt>new</tt> method. The arguments will be read in from the command-line when the program is executed, and Ruby exposes these to our program via the <tt>ARGV</tt> variable. So, we call <tt>new</tt> like this instead:</p>
<pre class="brush: ruby;">
my_todo = ToDo.new(ARGV)
</pre>
<p>At this point, the entire program should look like this:</p>
<pre class="brush: ruby;">
require 'rubygems'
require 'mongo'

class Todo
  def initialize(args)
    @args  = args
    @mongo = Mongo::Connection.new.db(&quot;todo&quot;).collection(&quot;todos&quot;)
  end
end

ToDo.new(ARGV)
</pre>
<p>You can execute this program from the command-line, but nothing will happen. Well, stuff will happen but you won&#8217;t see it displayed back to you. We still need to implement the bulk of the program, which parses the user&#8217;s command-line arguments and acts appropriately.</p>
<h2>A Little Help</h2>
<p>The first thing we&#8217;ll implement is a method that prints usage help for the program. It looks like this:</p>
<pre class="brush: ruby;">
def help
  abort &lt;&lt;-HELP
  usage: #{__FILE__} &lt;method&gt;

  == Methods ==
  &lt;none&gt;            list all incomplete tasks sorted by priority
  help              show this help
  next              list all incomplete tasks that are high priority
  done              list all complete tasks chronologically
  high &quot;argument&quot;   add high priority task called argument
  low &quot;argument&quot;    add low priority task called argument
  finish &quot;argument&quot; complete task called argument
  dont &quot;argument&quot;   delete unfinished task called argument
  HELP
end
</pre>
<p>In Ruby, <a href="http://ruby-doc.org/ruby-1.9/classes/Kernel.html#M002645">abort</a> is a method you can call which will exit the application and display a string you pass to it. The string we&#8217;re passing in shows all the ways the program can be used, which will be displayed back to the user. This will be executed by default if the user doesn&#8217;t pass in an argument that we want to handle. More on that in the next section.</p>
<h2>Run, Baby, Run</h2>
<p>At some point, our application needs to run, so lets create an instance method called <tt>run</tt> which will handle the program&#8217;s flow. In this method we will determine what the user passed in from the command-line and call another method that handles the different use cases. The default action is to list all incomplete tasks, and the catch-all is to execute the <tt>help</tt> method we implemented above. Here is what <tt>run</tt> looks like:</p>
<pre class="brush: ruby;">
def run
  if @args.empty?
    show :complete =&gt; false
  else
    case @args.first
    when &quot;help&quot;   then help
    when &quot;high&quot;   then add &quot;high&quot;
    when &quot;low&quot;    then add &quot;low&quot;
    when &quot;next&quot;   then show :complete =&gt; false, :level =&gt; &quot;high&quot;
    when &quot;done&quot;   then show :complete =&gt; true
    when &quot;dont&quot;   then complete false
    when &quot;finish&quot; then complete true
    else
      help
    end
  end
end
</pre>
<p><tt>ARGV</tt> is an <a href="http://ruby-doc.org/ruby-1.9/classes/Array.html">Array</a>, so we can call methods like <a href="http://ruby-doc.org/ruby-1.9/classes/Array.html#M000711">empty?</a> and <a href="http://ruby-doc.org/ruby-1.9/classes/Array.html#M000698">first</a> on it. The meat of the run method is a Ruby <tt>case</tt> statement which checks if the first argument passed in by the user matches any of our predetermined keywords and calls other methods, <tt>add</tt><tt>, </tt><tt>show</tt>, and <tt>complete</tt>. These methods are the ones that actually interact with MongoDB and display information back to the user. We&#8217;ll implement them next.</p>
<h2>Using Mongo</h2>
<p>So far we&#8217;ve only dealt with setting up our class and parsing user arguments, we&#8217;ve barely even touched MongoDB! This is the meat of the application, so let&#8217;s get straight to it. First, the <tt>show</tt> method:</p>
<pre class="brush: ruby;">
def show(params)
  sort = [[&quot;level&quot;, Mongo::ASCENDING], [&quot;added&quot;, Mongo::ASCENDING]]
  @mongo.find(params, :sort =&gt; sort).each { |todo| puts &quot;#{todo[&quot;task&quot;]} (#{todo[&quot;level&quot;]})&quot; }
end
</pre>
<p><tt>show</tt> takes a hash of <tt>params</tt> as an argument and passes that hash on directly to the <tt>mongo</tt> library&#8217;s <a href="http://api.mongodb.org/ruby/current/Mongo/Collection.html#find-instance_method">find</a> method, which will return an array of the found items in the collection.</p>
<p>We print each of the todo items returned from <a href="http://api.mongodb.org/ruby/current/Mongo/Collection.html#find-instance_method">find</a> along with the level of the todo. How do those items get in there in the first, place? That is up to the <tt>add</tt> method, which we will implement next.</p>
<pre class="brush: ruby;">
def add(level)
  help unless @args.length == 2
  @mongo.insert &quot;task&quot; =&gt; @args.last, &quot;level&quot; =&gt; level, &quot;complete&quot; =&gt; false, &quot;added&quot; =&gt; Time.now
  puts &quot;added #{level} level task: #{@args.last}&quot;
end
</pre>
<p><tt>add</tt> takes a single argument, the level of the todo to create (e.g.- &#8220;high&#8221; or &#8220;low&#8221;). It then makes sure that the user had passed in two arguments at the command line because it needs the second one for the name of the task. If not, it calls <tt>help</tt> which aborts the application.</p>
<p>If so, It calls Mongo&#8217;s <a href="http://api.mongodb.org/ruby/current/Mongo/Collection.html#insert-instance_method">insert</a> method and passes it all the information to be stored in the datastore.</p>
<p>Finally, we need to implement the <tt>complete</tt> method, which is the most complex of the lot. Like <tt>add</tt>, it makes sure there were two command-line arguments given. Then it tries to find the todo by the &#8220;task&#8221; name. If found, it will either &#8220;finish&#8221; the task or &#8220;remove&#8221; the task depending on a boolean argument passed in. The method looks like this:</p>
<pre class="brush: ruby;">
def complete(finish)
  help unless @args.length == 2
  if (document = @mongo.find_one(&quot;task&quot; =&gt; @args.last, &quot;complete&quot; =&gt; false))
    if finish
      document[&quot;complete&quot;] = Time.now
      @mongo.save(document)
      puts &quot;finished: #{@args.last}&quot;
    else
      @mongo.remove(document)
      puts &quot;removed: #{@args.last}&quot;
    end
  else
    puts &quot;No ToDo matching #{@args.length} found&quot;
  end
end
</pre>
<p>The mongo-related calls in the <tt>complete</tt> method are <a href="http://api.mongodb.org/ruby/current/Mongo/Collection.html#find_one-instance_method">find_one</a>, <a href="http://api.mongodb.org/ruby/current/Mongo/Collection.html#save-instance_method">save</a>, and <a href="http://api.mongodb.org/ruby/current/Mongo/Collection.html#remove-instance_method">remove</a>.</p>
<h2>Finishing Up</h2>
<p>So, we&#8217;ve written our <tt>run</tt> method which calls the other methods using the user&#8217;s passed in arguments. Now all we have to do to get the class going is finish the program by creating a ToDo class object and calling <tt>run</tt> on it, like this:</p>
<pre class="brush: ruby;">
ToDo.new(ARGV).run
</pre>
<p>You can view/download the program in its entirety <a href="http://gist.github.com/409729">here</a>. One thing to note is how little code is needed to add CRUD to an application when using MongoDB as a datastore.</p>
<p>Hopefully this article has helped you with Ruby or MongoDB or both. Stay tuned for our next article in the series when we write the exact same application in PHP!</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/down-and-dirty-with-mongodb-part-2/">Down &#038; Dirty with MongoDB Part 2: Ruby ToDo</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=Cbjt-BSxRn8:IegRfutF_Yo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=Cbjt-BSxRn8:IegRfutF_Yo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=Cbjt-BSxRn8:IegRfutF_Yo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=Cbjt-BSxRn8:IegRfutF_Yo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=Cbjt-BSxRn8:IegRfutF_Yo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=Cbjt-BSxRn8:IegRfutF_Yo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=Cbjt-BSxRn8:IegRfutF_Yo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=Cbjt-BSxRn8:IegRfutF_Yo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=Cbjt-BSxRn8:IegRfutF_Yo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=Cbjt-BSxRn8:IegRfutF_Yo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=Cbjt-BSxRn8:IegRfutF_Yo:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/Cbjt-BSxRn8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/down-and-dirty-with-mongodb-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/down-and-dirty-with-mongodb-part-2/</feedburner:origLink></item>
		<item>
		<title>Jquery, JQuery and Asking for help</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/OfVZOCjwR9A/</link>
		<comments>http://fuelyourcoding.com/jquery-jquery-and-asking-for-help/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 09:00:15 +0000</pubDate>
		<dc:creator>Douglas Neiner</dc:creator>
				<category><![CDATA[Concepts & Training]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=1223</guid>
		<description><![CDATA[A few weeks ago, I tweeted:
General service announcement: it is written &#8220;jQuery&#8221; not &#8220;Jquery&#8221; or &#8220;JQuery&#8221;&#8230; even if it comes first in a sentence!!!! ∞
Then Saturday I put out a stronger tweet, and caught some stronger feedback for it:
Test: &#8220;If you want jQuery help, which misspelling will greatly hurt your chances: a) Jquery b) JQuery c) [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/jquery-jquery-and-asking-for-help/">Jquery, JQuery and Asking for help</a></p>
]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago, I tweeted:</p>
<blockquote><p>General service announcement: it is written &#8220;jQuery&#8221; not &#8220;Jquery&#8221; or &#8220;JQuery&#8221;&#8230; even if it comes first in a sentence!!!! <a href="http://twitter.com/dougneiner/status/15858703370">∞</a></p></blockquote>
<p>Then Saturday I put out a stronger tweet, and caught some stronger feedback for it:</p>
<blockquote><p>Test: &#8220;If you want jQuery help, which misspelling will greatly hurt your chances: a) Jquery b) JQuery c) jquery d) All of the above. <a href="http://twitter.com/dougneiner/status/18214276476">∞</a></p></blockquote>
<p>At the end of the day, does it really matter how someone writes the name &#8220;jQuery&#8221;? Does it make them a better or worse programmer based on how they type it out?</p>
<p>Let me clarify that I have never failed to answer a question on Stack Overflow (Where I like to hang out and answer jQuery questions) because the asker typed jQuery with incorrect capitalization. <strong>I would never fail to respond to an email because the asker wrote it as Jquery or JQuery.</strong> I would hate to be that petty an individual, and I think that is the feeling some people were picking up from my tweets.</p>
<p>However, I can say I <em>notice</em> it and it <em>bothers me</em> when people seeking help don&#8217;t type out the library name correctly. It really is a small thing, and maybe it shouldn&#8217;t bother me, but it does. It got me thinking about things that might negatively affect a request for help, and I came up with a list of six suggestions. I hope these suggestions are helpful when you need to ask for help with open source software.</p>
<h2>Asking for Help</h2>
<p>If you need help with an open source project, you will often be dealing with people that 1) don&#8217;t have a lot of time and 2) must use the time they have wisely. With that in mind, here are few suggestions that might help you get answers easier:</p>
<ol>
<li>Take the time to <strong>make sure your question makes sense</strong>. Complete sentences, clear code examples, and links to a page demonstrating the problem all go a long way in ensuring a quality answer.</li>
<li><strong>Run spell-check</strong> before sending your question. There are at least two reasons there would be a lot of spelling errors in a question: 1) English is not the native tongue of the person requesting help 2) The person requesting help didn&#8217;t take the time ensure a quality question. Most applications have spell check. If they don&#8217;t, you can copy and paste your question to an application that does have spell check. Reason #1 is understandable and should be overlooked; reason #2 is what will stand out most to someone reading your question. It may affect that person&#8217;s decision to answer you.</li>
<li>Getting back to my original statement regarding Jquery, JQuery and jquery. Some libraries have really weird spelling or capitalizations, some are more straight forward. <strong>Write the library/plugin name correctly when asking for help with it!</strong> jQuery should be very easy, but so many people get it wrong. It is like the names iPad and iPhone: the first letter is lowercase! For another example, the popular blogging platform is WordPress, not Wordpress or Word Press.</li>
<li>At the very least, <strong>run a Google/Yahoo/Bing search (pick one) </strong>with some of the words from the question you plan on asking. I almost always take time to run a few searches to answer a question myself before asking on Stack Overflow or emailing someone for help. It is just common courtesy to spend some of <em>your</em> time before asking for the time of <em>someone else</em>.</li>
<li>If you find the answer yourself after asking for help, <strong>be sure to let the person know you no longer need their help</strong>. Sometimes emails will sit around until there is time to answer them while in the mean time you find the answer somewhere else. It might reduce your chance of getting future emails answered if the person who takes the time to answer your question finds out they wasted their time.</li>
<li><strong>Be respectful and kind.</strong> If an open source project is screwing up your project, you have a few choices 1) use a different project 2) pay for help 3) Ask kindly for help from the project. Notice I didn&#8217;t put &#8220;4) Demand help for free.&#8221; On a very positive note, I have to say every request I have gotten for help on the few small projects I maintain have been both respectful and kind. This is really important!</li>
</ol>
<h2>What It All Means</h2>
<p>The bottom line is this: <em>If it appears to someone reading your question that you have not put any time into either solving the problem yourself or writing a decent request for help, they will be less likely to put any time into answering it.</em></p>
<p>Remember, it isn&#8217;t always about just getting an answer. Sometimes its about getting the <em>right person</em> to answer your question. For instance, there are tons of programmers answering questions on Stack Overflow, but not all of them have equal qualifications and skill. Put in the effort up front when asking the question. It will be worth it when you get a solid answer!</p>
<p>Do you have any tips to add? If so, please let me know about them in the comments!</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/jquery-jquery-and-asking-for-help/">Jquery, JQuery and Asking for help</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=OfVZOCjwR9A:WAsgpS-7rvI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=OfVZOCjwR9A:WAsgpS-7rvI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=OfVZOCjwR9A:WAsgpS-7rvI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=OfVZOCjwR9A:WAsgpS-7rvI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=OfVZOCjwR9A:WAsgpS-7rvI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=OfVZOCjwR9A:WAsgpS-7rvI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=OfVZOCjwR9A:WAsgpS-7rvI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=OfVZOCjwR9A:WAsgpS-7rvI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=OfVZOCjwR9A:WAsgpS-7rvI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=OfVZOCjwR9A:WAsgpS-7rvI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=OfVZOCjwR9A:WAsgpS-7rvI:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/OfVZOCjwR9A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/jquery-jquery-and-asking-for-help/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/jquery-jquery-and-asking-for-help/</feedburner:origLink></item>
		<item>
		<title>Down &amp; Dirty with MongoDB Part 1: the Plot</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/w6Mal4_R5v8/</link>
		<comments>http://fuelyourcoding.com/down-and-dirty-with-mongodb-part-1/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 13:32:22 +0000</pubDate>
		<dc:creator>Jerod Santo</dc:creator>
				<category><![CDATA[Datastores]]></category>
		<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[nosql]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=1197</guid>
		<description><![CDATA[MongoDB is an open-source, document-based datastore that has been gaining traction with developers lately. Its popularity is most likely due to the &#8220;middle ground&#8221; it provides between relational databases like MySQL and key-value stores like Redis.

We&#8217;ve found the datastore a joy to use and wanted to feature it somehow on FYC. However, there are many, [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/down-and-dirty-with-mongodb-part-1/">Down &#038; Dirty with MongoDB Part 1: the Plot</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mongodb.org/">MongoDB</a> is an open-source, document-based datastore that has been gaining traction with developers lately. Its popularity is most likely due to the &#8220;middle ground&#8221; it provides between relational databases like <a href="http://www.mysql.com/">MySQL</a> and key-value stores like <a href="http://code.google.com/p/redis/m">Redis</a>.</p>
<p><a href="http://www.mongodb.org/"><img src="http://fuelyourcoding.com/files/MongoDB.png" alt="MongoDB" title="MongoDB" width="550" height="115" class="alignright size-full wp-image-1200" /></a></p>
<p>We&#8217;ve found the datastore a joy to use and wanted to feature it somehow on FYC. However, there are many, many <a href="http://devzone.zend.com/article/12132">introductory articles</a> and <a href="http://www.rubyinside.com/getting-started-mongodb-ruby-1875.html">getting started tutorials</a> for MongoDB (also the <a href="http://www.mongodb.org/display/DOCS/Home">information</a> on the project&#8217;s website is spectacular), so we would be remiss to provide yet another basic intro.</p>
<p>Instead, we decided to highlight how the datastore is used from a few popular dynamic languages. <a href="http://www.10gen.com/">10gen</a> &#8211; MongoDB&#8217;s creator &#8211; provides many official client drivers (libraries) and the open-source community has produced a handful of libraries as well. We couldn&#8217;t feature them all, so we chose three favorites &#8211; Ruby, Python, and PHP &#8211; to include in the series.</p>
<h2 id="theplot">The Plot</h2>
<p>Many demonstrations use throwaway &#8220;Hello World&#8221; type programs. We thought it would be much cooler to write something that we can actually use, build upon, and maybe derive some value from. With that in mind, we tried to think of an application that had the following characteristics:</p>
<ol>
<li>Real-world use case</li>
<li>Few lines of code (~ 100)</li>
<li>Simple to understand and implement</li>
<li>No 3rd party libraries or frameworks</li>
<li>Demonstrate the basic <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a> operations</li>
</ol>
<p>For better or worse, we chose to write a command-line todo list app as it fit the requirements well.</p>
<h2 id="thespec">The Spec</h2>
<p>Our todo application is invoked from the command-line and works as follows:</p>
<ul>
<li><strong>todo</strong> &#8211; list all incomplete tasks sorted by priority then chronologically</li>
<li><strong>todo next</strong> &#8211; list all incomplete tasks that are high priority</li>
<li><strong>todo done</strong> &#8211; list all complete tasks chronologically</li>
<li><strong>todo high &#8220;pay bills&#8221;</strong> &#8211; add high priority task called &#8220;pay bills&#8221;</li>
<li><strong>todo low &#8220;get milk&#8221;</strong> &#8211; add low priority task called &#8220;get milk&#8221;</li>
<li><strong>todo finish &#8220;pay bills&#8221;</strong> &#8211; complete task called &#8220;pay bills&#8221;</li>
<li><strong>todo dont &#8220;get milk&#8221;</strong> &#8211; delete task called &#8220;get milk&#8221;</li>
<li><strong>todo help</strong> &#8211; list all commands and their usage</li>
</ul>
<p style="text-align: center;"><img src="http://fuelyourcoding.com/files/todo-example.png" alt="todo-example" title="todo-example" width="520" height="98" class="size-full wp-image-1216" /></p>
<p>The only requirement outside of the user interface outlined above is that MongoDB be used to persist the todo list.</p>
<h2 id="thesetup">The Setup</h2>
<p>An identical application will be written in Ruby, Python, and PHP using the <a href="http://www.mongodb.org/display/DOCS/Drivers">official MongoDB drivers</a>. Each language will get its own article in the series. You have the application requirements so feel free to code along in your language of choice. Also, we&#8217;d love to see versions in <a href="http://www.mongodb.org/display/DOCS/Perl+Language+Center">some</a> <a href="http://www.mongodb.org/display/DOCS/Javascript+Language+Center">other</a> <a href="http://www.mongodb.org/display/DOCS/JVM+Languages">languages</a> that we won&#8217;t be covering. Show us your skills by submitting them in the comments. We&#8217;ll happily tweet them out and link them up in our final article in the series!</p>
<p>Be sure to grab our <a href="http://feeds.feedburner.com/FuelYourCoding">RSS feed</a> or follow <a href="http://twitter.com/fuelyourcoding">@fuelyourcoding</a> on Twitter so you don&#8217;t miss out as we get down &amp; dirty with MongoDB!</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/down-and-dirty-with-mongodb-part-1/">Down &#038; Dirty with MongoDB Part 1: the Plot</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=w6Mal4_R5v8:KLy_cUc-LI4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=w6Mal4_R5v8:KLy_cUc-LI4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=w6Mal4_R5v8:KLy_cUc-LI4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=w6Mal4_R5v8:KLy_cUc-LI4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=w6Mal4_R5v8:KLy_cUc-LI4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=w6Mal4_R5v8:KLy_cUc-LI4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=w6Mal4_R5v8:KLy_cUc-LI4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=w6Mal4_R5v8:KLy_cUc-LI4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=w6Mal4_R5v8:KLy_cUc-LI4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=w6Mal4_R5v8:KLy_cUc-LI4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=w6Mal4_R5v8:KLy_cUc-LI4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/w6Mal4_R5v8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/down-and-dirty-with-mongodb-part-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/down-and-dirty-with-mongodb-part-1/</feedburner:origLink></item>
		<item>
		<title>Eight Great iOS Apps for Developers</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/EOgzxupB4WA/</link>
		<comments>http://fuelyourcoding.com/eight-great-ios-apps-for-developers/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 13:30:22 +0000</pubDate>
		<dc:creator>Jerod Santo</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=1138</guid>
		<description><![CDATA[The trouble with having over 200,000 iOS apps in the App Store is how difficult it is to find high quality apps to fit our needs. With that in mind, I have compiled this list of eight apps that I&#8217;ve found invaluable as a developer.
Without any further ado, here they are listed alphabetically:

Air Display

Price: $9.99
Type: [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/eight-great-ios-apps-for-developers/">Eight Great iOS Apps for Developers</a></p>
]]></description>
			<content:encoded><![CDATA[<p>The trouble with having over <strong>200,000</strong> iOS apps in the App Store is how difficult it is to find high quality apps to fit our needs. With that in mind, I have compiled this list of eight apps that I&#8217;ve found invaluable as a developer.</p>
<p>Without any further ado, here they are listed alphabetically:</p>
<hr />
<h2><a href="http://itunes.apple.com/us/app/air-display/id368158927?mt=8">Air Display</a></h2>
<p><a href="http://itunes.apple.com/us/app/air-display/id368158927?mt=8"><img src="http://fuelyourcoding.com/files/AirDisplay.png" alt="AirDisplay" title="AirDisplay" width="125" height="125" class="alignright size-full wp-image-1167" style="border: none; background: transparent; padding-left: 50px; padding-bottom: 0;"/></a></p>
<p><strong>Price:</strong> $9.99<br />
<strong>Type:</strong> iPad<br />
<strong>Version:</strong> 1.0.1</p>
<p>Air Display lets you use your iPad as a wireless display for your Mac OS X computer. Why is this great for developers? Because we need screen real estate, baby!</p>
<p><a href="http://www.flickr.com/photos/sant0sk1/4645873586/">Here&#8217;s a pic</a> of Air Display in action as my 3rd monitor. The iPad monitor is perfect size for your <a href="http://www.skype.com/">Skype</a> windows, API documentation, or a browser session with programming tutorials.</p>
<hr />
<h2><a href="http://itunes.apple.com/us/app/domainstorm/id376898108?mt=8">DomainStorm</a></h2>
<p><a href="http://itunes.apple.com/us/app/domainstorm/id376898108?mt=8"><img src="http://fuelyourcoding.com/files/DomainStorm.png" alt="DomainStorm" title="DomainStorm" width="125" height="125" class="alignright size-full wp-image-1160" style="border: none; background: transparent; padding-left: 50px; padding-bottom: 0;"/></a></p>
<p><strong>Price:</strong> Free<br />
<strong>Type:</strong> iPhone<br />
<strong>Version:</strong> 1.0</p>
<p>When inspiration for that new web application hits you, the first (and most fun) thing to do is buy a great domain name for it. </p>
<p>DomainStorm is a relatively new app from <a href="http://networksolutions.com/">Network Solutions</a> built to help you accomplish just that. It tells you if domains are available, helps you brainstorm name ideas, lets you mark domains as favorites for later purchase, and even provides you <a href="http://en.wikipedia.org/wiki/Whois">WHOIS</a> information so you can contact current domain owners about a purchase. A must have for sure!</p>
<hr />
<h2><a href="http://itunes.apple.com/us/app/ego/id306785502?mt=8">Ego</a></h2>
<p><a href="http://itunes.apple.com/us/app/ego/id306785502?mt=8"><img src="http://fuelyourcoding.com/files/Ego.png" alt="Ego" title="Ego" width="125" height="125" class="alignright size-full wp-image-1163" style="border: none; background: transparent; padding-left: 50px; padding-bottom: 0;"/></a></p>
<p><strong>Price:</strong> $1.99, $4.99<br />
<strong>Type:</strong> iPhone, iPad<br />
<strong>Version:</strong> 2.1</p>
<p>Obsessed with checking your site analytics? There is no better way to get a quick glance at your traffic than the beautifully designed <a href="http://ego-app.com/">Ego</a> by <a href="http://garrettmurray.net/">Garrett Murray</a>.</p>
<p>With support for Google Analytics, Ember, FeedBurner, Twitter, Mint, Vimeo, Tumblr, and SquareSpace this app has your analytics needs covered. Did I mention it was beautifully designed?</p>
<hr />
<h2><a href="http://itunes.apple.com/us/app/evernote/id281796108?mt=8">Evernote</a></h2>
<p><a href="http://itunes.apple.com/us/app/evernote/id281796108?mt=8"><img src="http://fuelyourcoding.com/files/Evernote.png" alt="Evernote" title="Evernote" width="125" height="125" class="alignright size-full wp-image-1169" style="border: none; background: transparent; padding-left: 50px; padding-bottom: 0;"/></a></p>
<p><strong>Price:</strong> Free<br />
<strong>Type:</strong> Universal<br />
<strong>Version:</strong> 3.3.5</p>
<p><a href="http://www.evernote.com">Evernote</a> is a wonderful way to store all the programming tips, tricks, tutorials and gotchas that we accumulate as we go about our development efforts. The power of Evernote is the universal access to your notes that it provides. They have a web interface, Mac/Windows clients, and mobile apps including a highly polished iOS app.</p>
<p>If you haven&#8217;t tried Evernote yet, now is a great time to put all your notes in one highly accessible place. You can even save passwords in Evernote as they provide encrypted strings inside your notes.</p>
<hr />
<h2><a href="http://itunes.apple.com/us/app/ioctocat/id310429782?mt=8">iOctocat</a></h2>
<p><a href="http://itunes.apple.com/us/app/ioctocat/id310429782?mt=8"><img src="http://fuelyourcoding.com/files/iOctocat.png" alt="iOctocat" title="iOctocat" width="125" height="125" class="alignright size-full wp-image-1151" style="border: none; background: transparent; padding-left: 50px; padding-bottom: 0;"/></a></p>
<p><strong>Price:</strong> $4.99<br />
<strong>Type:</strong> iPhone<br />
<strong>Version:</strong> 1.7.1.1</p>
<p>iOctocat is, hands down, the best way to keep up to snuff with open-source development on <a href="http://github.com">GitHub</a> from your iPhone.</p>
<p>This app features access to your personal news feed, repositories, individual commits, issues, user profiles and site search. While the app is not free as in beer, it is <a href="http://en.wikipedia.org/wiki/Gratis_versus_Libre#.22Free_as_in_beer.22_vs_.22Free_as_in_speech.22">free as in speech</a> and the source is aptly hosted <a href="http://github.com/dbloete/ioctocat">on GitHub</a>. That makes it <a href="/one-sure-fire-way-to-improve-your-coding">a great candidate for learning</a> iOS development as well!</p>
<hr />
<h2><a href="http://itunes.apple.com/us/app/issh-ssh-vnc-console/id287765826?mt=8">iSSH</a></h2>
<p><a href="http://itunes.apple.com/us/app/issh-ssh-vnc-console/id287765826?mt=8"><img src="http://fuelyourcoding.com/files/iSSH.png" alt="iSSH" title="iSSH" width="125" height="125" class="alignright size-full wp-image-1144" style="border: none; background: transparent; padding-left: 50px; padding-bottom: 0;" /></a></p>
<p><strong>Price:</strong> $9.99<br />
<strong>Type:</strong> Universal<br />
<strong>Version:</strong> 4.2.5</p>
<p>Most developers have found themselves <a href="http://en.wikipedia.org/wiki/Afk">AFK</a> when a very important server is having problems. If you know the feeling, then <a href="http://www.zinger-soft.com/iSSH_features.html">iSSH</a> is your new best friend. </p>
<p>There are a few remote server control iOS apps available, but this one is the best one that I&#8217;ve come across. It allows SSH, telnet, and even VNC connections and boasts many features. The iPad version provides a display size large enough to allow <a href="http://www.flickr.com/photos/sant0sk1/4555954836/">determined coders like myself</a> to fire up vim and get some coding done. The price is a bit steep, but if iSSH saves your butt one time then it has already earned its keep.</p>
<hr />
<h2><a href="http://itunes.apple.com/us/app/istat-sys-monitoring-battery/id303034517?mt=8">iStat</a></h2>
<p><a href="http://itunes.apple.com/us/app/istat-sys-monitoring-battery/id303034517?mt=8"><img src="http://fuelyourcoding.com/files/iStat.png" alt="iStat" title="iStat" width="125" height="125" class="alignright size-full wp-image-1171" style="border: none; background: transparent; padding-left: 50px; padding-bottom: 0;"/></a></p>
<p><strong>Price:</strong> $0.99<br />
<strong>Type:</strong> iPhone<br />
<strong>Version:</strong> 1.2</p>
<p>Bjango makes gorgeous and useful software including the OS X system monitoring tool <a href="http://bjango.com/apps/istatmenus/">iStat Menus</a>. They also offer a similar app called <a href="http://bjango.com/apps/istat/">iStat</a> which displays your iPhone&#8217;s system stats.</p>
<p>The beauty of the iStat app for developers is that you can also use it to monitor remote servers running Mac, Linux or Solaris! You simply install a daemon on the server you need monitoring and iStat will show you its CPU, memory, disk, temps, uptime, and tons more information. It feels great to have intimate details about your servers always at your fingertips.</p>
<hr />
<h2><a href="http://itunes.apple.com/us/app/nezumi/id346715875?mt=8">Nezumi</a></h2>
<p><a href="http://itunes.apple.com/us/app/nezumi/id346715875?mt=8"><img src="http://fuelyourcoding.com/files/Nezumi.png" alt="Nezumi" title="Nezumi" width="125" height="125" class="alignright size-full wp-image-1174" style="border: none; background: transparent; padding-left: 50px; padding-bottom: 0;"/></a></p>
<p><strong>Price:</strong> $4.99<br />
<strong>Type:</strong> iPhone<br />
<strong>Version:</strong> 1.2</p>
<p>This one is specific to Ruby-using web developers. For those who fit that description, you absolutely need to try deploying an application to <a href="http://heroku.com/">Heroku</a>. It is the dead simplest way to get deployed and if you haven&#8217;t tried it yet then you don&#8217;t know what you&#8217;re missing out on.</p>
<p>For those who&#8217;ve seen the Heroku light, <a href="http://nezumiapp.com/">Nezumi</a> is a must-have companion app for the Heroku service. Nezumi gives you instant access to your Heroku apps from your iPhone so you can add collaborators, manage your dynos, toggle maintenance mode, execute rake/console tasks, and even restart your application on the go. Love it!</p>
<hr />
<p>So there you have &#8216;em. Eight great iOS apps for developers. Hopefully you&#8217;ll find that one or more of these apps helps you increase your productivity as a developer. I know I&#8217;m better off with them than I was without.</p>
<p>If you know of any other iOS apps that did not make my list, please give them a shout out in the comments, so we can all check them out!</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/eight-great-ios-apps-for-developers/">Eight Great iOS Apps for Developers</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=EOgzxupB4WA:83iqQsjP-cY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=EOgzxupB4WA:83iqQsjP-cY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=EOgzxupB4WA:83iqQsjP-cY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=EOgzxupB4WA:83iqQsjP-cY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=EOgzxupB4WA:83iqQsjP-cY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=EOgzxupB4WA:83iqQsjP-cY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=EOgzxupB4WA:83iqQsjP-cY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=EOgzxupB4WA:83iqQsjP-cY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=EOgzxupB4WA:83iqQsjP-cY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=EOgzxupB4WA:83iqQsjP-cY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=EOgzxupB4WA:83iqQsjP-cY:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/EOgzxupB4WA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/eight-great-ios-apps-for-developers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/eight-great-ios-apps-for-developers/</feedburner:origLink></item>
		<item>
		<title>ScriptJunkie Launches!</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/szggnYnbPf0/</link>
		<comments>http://fuelyourcoding.com/scriptjunkie-launches/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 06:57:28 +0000</pubDate>
		<dc:creator>Douglas Neiner</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=1127</guid>
		<description><![CDATA[Earlier this week a new site launched on the Microsoft Developer Network named ScriptJunkie. ScriptJunkie is a site geared solely at client side development and is surprisingly* unbiased given that it is on a Microsoft run network. There is no assumption that the readers are using Visual Studio or developing on PC, etc. It is a new [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/scriptjunkie-launches/">ScriptJunkie Launches!</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Earlier this week a new site launched on the Microsoft Developer Network named <a href="http://msdn.microsoft.com/en-us/scriptjunkie/default.aspx">ScriptJunkie</a>. ScriptJunkie is a site geared solely at client side development and is surprisingly* unbiased given that it is on a Microsoft run network. There is no assumption that the readers are using Visual Studio or developing on PC, etc. It is a new resource for client side developers to learn from industry leaders like Christian Heilmann, Elijah Manor, Emily Lewis, Juriy Zaytsev and others about the latest and greatest practices and techniques.</p>
<p><a href="http://msdn.microsoft.com/en-us/scriptjunkie/default.aspx"><img class="alignnone size-medium wp-image-1129" title="SJ" src="http://fuelyourcoding.com/files/SJ-600x183.png" alt="SJ" width="600" height="183" /></a></p>
<p><em>* Or unsurprisingly for those who have followed Microsoft&#8217;s ongoing efforts to reach out to the development community and embrace open technology.</em></p>
<p>A little info from their about page reveals the goal of the site:</p>
<blockquote><p>By providing solutions-based articles, videos and code samples, developers will be able to have a concise resource to go to for the latest in web application development techniques.</p></blockquote>
<p>There have already been a number of great articles posted on ScriptJunkie, but here are two to get you started:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/scriptjunkie/ee819093.aspx">&#8220;How to Debug Your jQuery Code&#8221;</a> by Elijah Manor</li>
<li><a href="http://msdn.microsoft.com/en-us/scriptjunkie/ff679957.aspx">&#8220;Be a CSS Team Player: CSS Best Practices for Team-Based Development&#8221;</a> by Emily Lewis</li>
</ul>
<p>I feel very privileged to have been asked to contribute some articles to ScriptJunkie as well! If you are feeling up to learning about the jQuery UI Widget Factory, I&#8217;d love you to check out my first SJ article: <a href="http://msdn.microsoft.com/en-us/scriptjunkie/ff706600.aspx">&#8220;Introduction to Stateful Plugins and the Widget Factory&#8221;</a>.</p>
<h2>Do we need &#8220;another&#8221; resource?</h2>
<p>In a world where our RSS readers are overflowing with &#8220;content,&#8221; it becomes difficult to embrace newly launched sites. I think ScriptJunkie is a site that is worth embracing. Though it has <em>just</em> launched, the material already present on the site reflects a wealth of techniques and information for any client side developer. I hope you will take a moment to check it out, and even <a href="http://social.msdn.microsoft.com/Forums/en-US/sjgeneral/thread/2ffa8234-f6e4-4495-b725-b8bc14138b30">give some feedback to Microsoft</a> about what you want to see covered on the site.</p>
<p><strong>What do you think? </strong>Are you excited to see Microsoft embrace and support the client side development community? Are there topics not yet covered on ScriptJunkie you feel are really important? Be sure to leave a comment with your thoughts!</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/scriptjunkie-launches/">ScriptJunkie Launches!</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=szggnYnbPf0:JovplbU6_U0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=szggnYnbPf0:JovplbU6_U0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=szggnYnbPf0:JovplbU6_U0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=szggnYnbPf0:JovplbU6_U0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=szggnYnbPf0:JovplbU6_U0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=szggnYnbPf0:JovplbU6_U0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=szggnYnbPf0:JovplbU6_U0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=szggnYnbPf0:JovplbU6_U0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=szggnYnbPf0:JovplbU6_U0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=szggnYnbPf0:JovplbU6_U0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=szggnYnbPf0:JovplbU6_U0:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/szggnYnbPf0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/scriptjunkie-launches/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/scriptjunkie-launches/</feedburner:origLink></item>
		<item>
		<title>Giveaway: Balsamiq Mockups [Winners Announced!]</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/u0lFm6vj4XQ/</link>
		<comments>http://fuelyourcoding.com/giveaway-balsamiq-mockups/#comments</comments>
		<pubDate>Mon, 31 May 2010 16:07:14 +0000</pubDate>
		<dc:creator>Jerod Santo</dc:creator>
				<category><![CDATA[Contests]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=1103</guid>
		<description><![CDATA[UPDATE: Winners Announced!
Congratulations to  our winners: mojo, Dan, and Dan!! We&#8217;ll be contacting you via email with details on claiming your free license. To everybody else, thanks for entering! I&#8217;m sure we&#8217;ll have more awesome giveaways coming along to help your fuel your coding!
We&#8217;re very excited to provide the chance at three (count &#8216;em, [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/giveaway-balsamiq-mockups/">Giveaway: Balsamiq Mockups [Winners Announced!]</a></p>
]]></description>
			<content:encoded><![CDATA[<h3>UPDATE: Winners Announced!</h3>
<p>Congratulations to  our winners: <strong>mojo, Dan, and Dan!!</strong> We&#8217;ll be contacting you via email with details on claiming your free license. To everybody else, thanks for entering! I&#8217;m sure we&#8217;ll have more awesome giveaways coming along to help your fuel your coding!</p>
<p><strong>We&#8217;re very excited to provide the chance at three (count &#8216;em, 1, 2, 3) free licenses to the excellent <a href="http://www.balsamiq.com/products/mockups">Mockups</a> app by <a href="http://www.balsamiq.com/">Balsamiq Studios</a>!</strong></p>
<p>I&#8217;ve been using Balsamiq Mockups for more than a year and couldn&#8217;t be happier with how quickly I can turn an interface idea into something tangible. For example, I mocked up this simplified version of the FYC homepage in about 20 minutes:</p>
<p><img class="aligncenter size-large wp-image-1118" title="mockup" src="http://fuelyourcoding.com/files/mockup-607x499.png" alt="mockup" width="607" height="499" /><br />
The best way to see the power of Mockups is to watch this video wherein iTunes&#8217; interface is mocked up in less than 3 minutes:</p>
<p style="text-align: center"><object id="flashObj" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="610" height="515" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=77322598001&amp;linkBaseURL=http%3A%2F%2Fwww.balsamiq.com%2Fproducts%2Fmockups&amp;playerID=67664583001&amp;domain=embed&amp;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://c.brightcove.com/services/viewer/federated_f9/67664583001?isVid=1" /><param name="name" value="flashObj" /><param name="flashvars" value="videoId=77322598001&amp;linkBaseURL=http%3A%2F%2Fwww.balsamiq.com%2Fproducts%2Fmockups&amp;playerID=67664583001&amp;domain=embed&amp;dynamicStreaming=true" /><param name="allowfullscreen" value="true" /><embed id="flashObj" type="application/x-shockwave-flash" width="610" height="515" src="http://c.brightcove.com/services/viewer/federated_f9/67664583001?isVid=1" name="flashObj" allowscriptaccess="always" swliveconnect="true" allowfullscreen="true" seamlesstabbing="false" base="http://admin.brightcove.com" flashvars="videoId=77322598001&amp;linkBaseURL=http%3A%2F%2Fwww.balsamiq.com%2Fproducts%2Fmockups&amp;playerID=67664583001&amp;domain=embed&amp;dynamicStreaming=true" bgcolor="#FFFFFF"></embed></object></p>
<p>Convinced yet? Want a copy you can call your own?</p>
<p>Enter to win by commenting on this post telling us why you need Mockups. Be genuine, be creative, but most of all be persuasive!</p>
<p>We will choose our three favorite comments and announce the winners exactly one week from today (Monday, June 7th 2010).</p>
<p><strong>On your marks. Get Set. Go!</strong></p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/giveaway-balsamiq-mockups/">Giveaway: Balsamiq Mockups [Winners Announced!]</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=u0lFm6vj4XQ:ADjCkYOYFa0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=u0lFm6vj4XQ:ADjCkYOYFa0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=u0lFm6vj4XQ:ADjCkYOYFa0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=u0lFm6vj4XQ:ADjCkYOYFa0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=u0lFm6vj4XQ:ADjCkYOYFa0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=u0lFm6vj4XQ:ADjCkYOYFa0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=u0lFm6vj4XQ:ADjCkYOYFa0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=u0lFm6vj4XQ:ADjCkYOYFa0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=u0lFm6vj4XQ:ADjCkYOYFa0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=u0lFm6vj4XQ:ADjCkYOYFa0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=u0lFm6vj4XQ:ADjCkYOYFa0:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/u0lFm6vj4XQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/giveaway-balsamiq-mockups/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/giveaway-balsamiq-mockups/</feedburner:origLink></item>
		<item>
		<title>One Sure-Fire Way to Improve Your Coding</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/D43WqeNtRMo/</link>
		<comments>http://fuelyourcoding.com/one-sure-fire-way-to-improve-your-coding/#comments</comments>
		<pubDate>Thu, 27 May 2010 13:25:35 +0000</pubDate>
		<dc:creator>Jerod Santo</dc:creator>
				<category><![CDATA[Concepts & Training]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=1086</guid>
		<description><![CDATA[The most obvious way to improve your coding is to write more code. Everybody knows that. However, another activity which I guarantee will improve your coding is the complete opposite of writing. I will state this as plainly as I possibly can:
If you want to dramatically increase your programming skills you need to be reading [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/one-sure-fire-way-to-improve-your-coding/">One Sure-Fire Way to Improve Your Coding</a></p>
]]></description>
			<content:encoded><![CDATA[<p>The most obvious way to improve your coding is to write more code. Everybody knows that. However, another activity which I guarantee will improve your coding is the complete opposite of writing. I will state this as plainly as I possibly can:</p>
<p><strong>If you want to dramatically increase your programming skills you need to be reading other people&#8217;s code.</strong></p>
<p>Maybe you believe that, maybe you don&#8217;t. You should. And if you&#8217;re willing to give it a shot, I believe you will be rewarded greatly for your time.</p>
<p>In this article I will help you choose what to read and give you practical advice on how to go about reading it. If you&#8217;re already a code reader you may find a few ways to get more from your efforts. If you aren&#8217;t, you absolutely must read on.</p>
<h2>What to Read</h2>
<p>This is a big decision, and one that is difficult to advise on. I won&#8217;t simply point you toward code I think you should read, because it really comes down to what you&#8217;re in to. However, I will provide some guidelines which you can follow to help you choose what to read.</p>
<h3>&raquo; Read Code That You Rely On</h3>
<p>A great place to start is with any plugins or libraries that you are already using.</p>
<ul>
<li>A WordPress plugin that you really like</li>
<li>A Ruby gem that you&#8217;ve found useful</li>
<li>A jQuery plugin that you keep going back to</li>
</ul>
<p>These are all great candidates for learning. You are already familiar with their public APIs so the barrier to understanding their inner workings is lower. Also, as a user of the code you have an opportunity to add documentation, implement a new feature, or generally give back to the project in some way.</p>
<h3>&raquo; Read Code That Impresses You</h3>
<p>I remember the first time I saw <a href="http://280slides.com">280 Slides</a> and I thought to myself, &#8220;Now that is impressive.&#8221; I quickly learned that the code driving that site was the open-source <a href="http://cappuccino.org">Cappuccino</a> project. I tucked that knowledge into the far recesses of my brain and when I eventually came across <a href="http://almost.at">another impressive app</a> running on <a href="http://cappuccino.org">Cappuccino</a> I knew I had a project that I could learn a lot from. What have you been impressed by lately? Is it open-source? If so, it&#8217;s a great choice for reading since the code is likely to impress you as much as the resulting application.</p>
<h3>&raquo; Read Code Written By Somebody You Respect</h3>
<p>If you&#8217;ve been coding with open-source software for more than a little while, there are probably other programmers who have earned your respect. I can think of <a href="http://github.com/defunkt">a</a> <a href="http://github.com/defunkt">few</a> <a href="http://github.com/jashkenas">developers</a> off the top of my head whose code is downright enviable.</p>
<p style="text-align: center;"><img src="http://fuelyourcoding.com/files/follow-coders.png" alt="follow-coders" title="follow-coders" width="438" height="88" class="aligncenter size-full wp-image-1097" /></p>
<p>If you don&#8217;t have a respected developer in mind, it&#8217;s easy to find one. He or she has probably authored some code in one of the previous two sections (code you rely upon, or that impresses you).</p>
<h3>&raquo; Read Code That You Can Actually Grok</h3>
<p>If you&#8217;re the adventurous type you may be considering diving into a large project like <a href="http://rubyonrails.org">Ruby on Rails</a>, <a href="http://drupal.org/">Drupal</a>, or <a href="http://jquery.com/">jQuery</a>. I suggest avoiding projects like these for now unless you are an experienced code reader.</p>
<p>Large projects have a lot more moving pieces, and you may end up struggling too much with the concepts to learn anything of immediate value. Confusion leads to discouragement, and larger projects more likely to confuse and discourage you in your reading. The advantage of picking a small project to read is that you can hold the entire program logic in your head at once. This leaves you with just the details to discover and learn from.</p>
<h2>How to Read</h2>
<p>Now that you&#8217;ve chosen some code to read, what is the best way to go about reading it? I&#8217;ve read a lot of code in my days, and I can suggest a few ways to maximize your ROI.</p>
<h3>&raquo; See the Big Picture</h3>
<p>I&#8217;m going to assume that you at least know at a macro level what the code you&#8217;re reading accomplishes. If not, I suggest reading the project&#8217;s website, tutorials, documentation, and anything else you can get your hands on except the code.</p>
<p>Okay, with that cleared I suggest your first step is to wrap your head around the project&#8217;s structure. This is a variable amount of work depending on the size of the codebase you&#8217;ve chosen, but anything larger than one file will require a little bit of time.</p>
<p>First, note the file structure. This step is aided by an editor that has a folder hierarchy view like <a href="http://macromates.com">TextMate</a>. For example, here is a nice overview of the <a href="http://github.com/jnunemaker/twitter">Twitter</a> Ruby gem:</p>
<p style="text-align: center;"><img src="http://fuelyourcoding.com/files/twitter-folder-structure.png" alt="twitter-folder-structure" title="twitter-folder-structure" width="230" height="510" class="aligncenter size-full wp-image-1090" /></p>
<p>The goal with this step is to just get familiar with the source. Find out which files include/require/load other files, where the bulk of the code is, the namespaces used if any, and things of this nature. Once you&#8217;ve got the big picture you&#8217;ll be ready to dig into the details.</p>
<h3>&raquo; Document Your Findings</h3>
<p>Reading code should not be a passive activity. I encourage you to add comments as you go, documenting your assumptions and your conclusions as you begin to understand the program flow. When you first get started your comments will probably look something like:</p>
<pre class="brush: ruby;">
# I think this function is called after 'initialize'
</pre>
<pre class="brush: ruby;">
# What does this equation even do?
</pre>
<pre class="brush: ruby;">
# Pretty sure this variable loses scope after line 17
</pre>
<p>As your understanding progresses you can remove the little breadcrumb comments you left yourself and perhaps write more meaningful and authoritative comments that could possibly be committed back to the project.</p>
<h3>&raquo; Use the Tests, Luke</h3>
<p>Hopefully the project you&#8217;ve chosen has a test suite. If not, you can skip this section altogether (or find one that does).</p>
<p>Tests are a great place to start whenever you read somebody else&#8217;s code because they document what the code is supposed to accomplish. Some tests are more informative than others, but no matter how well written, you&#8217;ll often find the programmer&#8217;s intent in the tests much more easily than you&#8217;ll find it in the implementation. While you&#8217;re reading, try to get the test suite to run successfully. This will make sure your development environment is configured properly and will make you more confident when making changes.</p>
<h3>&raquo; Execute, Change Stuff, Execute</h3>
<p>Who said reading code had to be hands off? You&#8217;ll really start to understand things once you&#8217;ve broken everything and put it back together again. Remember those tests you got passing? Make them fail, add some more, or try changing the implementation without breaking them. Try adding a small feature that you think is cool, or setup project-wide logging so you can print output at various stages of the code. Is this still reading? Absolutely, but at this point its more of a choose your own adventure than a mystery novel. And that&#8217;s a good thing!</p>
<h3>&raquo; Rinse and Repeat</h3>
<p>Once you finish reading one codebase, pick another one and start the process over again. The more code you read, the better you get at reading it and the more you get out of it in less time. I think you&#8217;ll find that the ROI increases quite quickly and that it&#8217;s actually a very enjoyable way to learn.</p>
<h2>Where To Start</h2>
<p>The single most influential factor in my code reading is <a href="http://github.com">GitHub</a>. The site makes it so easy to find new projects and great coders that you&#8217;re doing yourself a disservice if you&#8217;re not leveraging it. I suggest starting on <a href="http://github.com">GitHub</a> and reading code right on the site until you find a project you know you can learn from. Then <tt>git clone</tt> that baby and get to reading!</p>
<p><strong>How about you? Do you read code as a learning tool? Which projects would you recommend to others? Read any good code lately?</strong></p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/one-sure-fire-way-to-improve-your-coding/">One Sure-Fire Way to Improve Your Coding</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=D43WqeNtRMo:AJiaaspMTx4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=D43WqeNtRMo:AJiaaspMTx4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=D43WqeNtRMo:AJiaaspMTx4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=D43WqeNtRMo:AJiaaspMTx4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=D43WqeNtRMo:AJiaaspMTx4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=D43WqeNtRMo:AJiaaspMTx4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=D43WqeNtRMo:AJiaaspMTx4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=D43WqeNtRMo:AJiaaspMTx4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=D43WqeNtRMo:AJiaaspMTx4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=D43WqeNtRMo:AJiaaspMTx4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=D43WqeNtRMo:AJiaaspMTx4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/D43WqeNtRMo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/one-sure-fire-way-to-improve-your-coding/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/one-sure-fire-way-to-improve-your-coding/</feedburner:origLink></item>
		<item>
		<title>WordPress: Auto URL Shortening</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/6G6xLseN1FU/</link>
		<comments>http://fuelyourcoding.com/wordpress-auto-url-shortening/#comments</comments>
		<pubDate>Mon, 24 May 2010 12:39:29 +0000</pubDate>
		<dc:creator>Designerfoo</dc:creator>
				<category><![CDATA[Languages]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[bitly]]></category>
		<category><![CDATA[Plugins / Add-Ons]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=985</guid>
		<description><![CDATA[Everyday there are scores of new links shared, re-tweeted, posted, and emailed by people like you and I. Because of social media platforms like Twitter and Facebook, our love for sharing information, tutorials, freebies, etc., has never been stronger!
The Proposition
As a WordPress developer/designer, how would you like if URLs on your WordPress site were automatically [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/wordpress-auto-url-shortening/">WordPress: Auto URL Shortening</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img src="http://fuelyourcoding.com/files/urlshortner_mini.jpg" alt="WP Auto URL Shortening" title="WP Auto URL Shortening" width="250" height="188" class="alignright size-full wp-image-1031" />Everyday there are scores of new links shared, re-tweeted, posted, and emailed by people like you and I. Because of social media platforms like Twitter and Facebook, our love for sharing information, tutorials, freebies, etc., has never been stronger!</p>
<h2>The Proposition</h2>
<p>As a <a href="http://wordpress.org">WordPress</a> developer/designer, how would you like if URLs on your WordPress site were automatically shortened as soon as you publish? This would mean instantly available shortened URLs for sharing/posting AND statistics of your links!</p>
<h2>Here&#8217;s How</h2>
<p>We are going to build the Auto URL Shortening feature within your WordPress theme using the <a href="http://bit.ly/">bit.ly</a> API. Let&#8217;s start with the <tt>functions.php</tt> file found within your theme.</p>
<p>The <tt>functions.php</tt> file is included in most WordPress themes as a place to drop custom functions to be used from the theme. If this file doesn&#8217;t exist in the theme you are using, go ahead and create it.</p>
<h3>Add 3 functions within the functions.php file</h3>
<pre class="brush: php;">
function makeshorturl()
{

}

function shorturl_metabox()
{

}

function showshorturlbox()
{

}
</pre>
<p>The first function, <tt>makeshorturl()</tt>, as the name suggests will be creating a short URL for us. The second and the third functions will work together to show us the short URL in the admin editor.</p>
<h3>Shortening the link</h3>
<pre class="brush: php;">
function makeshorturl()
{
    global $post;

    $short_url = json_decode(file_get_contents('http://api.bit.ly/v3/shorten?login=[username]&amp;apiKey=[apikey]&amp;longURL='.urlencode(get_permalink($post-&gt;ID)).'&amp;format=json'));

    if($short_url-&gt;status_code==&quot;200&quot;)
    {
         $short_url = $short_url-&gt;data-&gt;url;
    }
    else
    {
        $short_url = &quot;Bit.ly Error! &quot;.$short_url-&gt;status_txt;
    }

    do_action('makeshorturl');

    return $short_url;
}
</pre>
<p>The first line in this function declares WordPress&#8217;s global <tt>$post</tt> variable which holds all the data for the current post. We extract the permalink of the current post using the <tt>get_permalink()</tt> function and supplying the current post&#8217;s id. We then take the permalink and pass it on to bit.ly&#8217;s API which returns us a short URL within a JSON object. Next we extract the short URL. If an error occurs we simply return the error.</p>
<p>The <tt>do_action()</tt> method in WordPress makes this function hookable with other functions/hooks and the function can be used within theme using the hook &#8211; <strong>makeshorturl()</strong>.</p>
<p>Want to know more about <a href="http://codex.wordpress.org/Function_Reference/do_action" target="_new" rel="nofollow">do_action()</a> and <a href="http://codex.wordpress.org/Plugin_API"  target="_new" rel="nofollow">wordpress hooks</a>?</p>
<h3>Lets look at the api call in more detail</h3>
<pre class="brush: php;">
http://api.bit.ly/v3/shorten?login=[username]&amp;apiKey=[apikey]&amp;longURL='.urlencode(get_permalink($post-&gt;ID)).'&amp;format=json
</pre>
<p>It&#8217;s really quite simple.</p>
<p>The <tt>login</tt> parameter would expect your login over at bit.ly (<a href="http://bit.ly/a/sign_up" target="_new" rel="nofollow">don&#8217;t have one? create one here</a>). The <tt>apiKey</tt> parameter accepts the API key given to each bit.ly account. If you already have an account you can find <a href="http://bit.ly/a/your_api_key" target="_new" rel="nofollow">the API key here</a>. The <tt>longURL</tt> parameter expects an encoded long URL string that needs to be shortened, and this is where our custom permalinks get passed. The <tt>format</tt> parameter expects one of the three values &#8211; json, xml or text; depending on the format value specified, the API returns the shortened url (and more data) as JSON, XML or text respectively. By default, if format is not specified, it returns a JSON object. For more info on the bit.ly API, refer the <a href="http://code.google.com/p/bitly-api/wiki/ApiDocumentation">API documentation</a>. Once the bit.ly API sends the JSON object back, we use PHP&#8217;s <tt>json_decode</tt> function to decode the JSON object into a PHP5 object.</p>
<h3>Adding the shortened URL to the admin editor</h3>
<p>Once the permalink has been shortened, we need to make it available in the backend. To do this, we use the two functions as outlined below.</p>
<pre class="brush: php;">
function shorturl_metabox()
{
    if(is_admin())
    {
        add_meta_box('bitlyurl',__('Short URL','short-url'),'showshorturlbox','post','side');
        add_meta_box('bitlyurl',__('Short URL','short-url'),'showshorturlbox','page','side');
    }
}
</pre>
<p>The <tt>shorturl_metabox</tt> will first check if the user is within the admin section of the wordpress based site/blog. Then we add a meta box to the admin page.</p>
<p><img src="http://fuelyourcoding.com/files/shorturlmaker.png" alt="Short URL Admin" title="Short URL Admin" width="297" height="79" class="alignleft size-full wp-image-1019" /> A Meta box in WordPress basically is a box which sets and gets meta information about a post. Default meta boxes include Post Tags, Discussions and so forth. </p>
<p><a href="http://codex.wordpress.org/Writing_Posts" target="_new" rel="nofollow">More on meta boxes.</a></p>
<p>The <tt>add_meta_box</tt> function takes five parameters:</p>
<ol>
<li> the HTML id of the box</li>
<li>the label/title of the box</li>
<li>the callback function which would render the box contents</li>
<li>the type of write screen &#8211; post or a page
</li>
<li>the position or context where the box would be located &#8211; Normal, Advanced or Side.</li>
</ol>
<p><a href="ttp://codex.wordpress.org/Function_Reference/add_meta_box" target="_new" rel="nofollow">More on add_meta_box()</a>.</p>
<p>As you can see, that when the function &#8220;<em>adds</em>&#8221; the meta box to the admin view, it calls the <tt>showshorturlbox</tt> function which renders the contents of the meta box, as shown below.</p>
<pre class="brush: php;">
function showshorturlbox()
{
    echo '&lt;label for=&quot;bitlyurl&quot;&gt;'.__('Shortened URL','short-url-label').': '.makeshorturl().'&lt;/label&gt;&lt;br/&gt;&lt;br/&gt;';
}
</pre>
<p>The function echoes the short URL in a label, thus making it available to be shared by the authors of the post/page. We are calling <tt>makeshorturl()</tt> which fetches or generates the shortened URL via the bitly API.</p>
<h3>Bringing it together</h3>
<p>Finally we use the following three lines which attach our <tt>makeshorturl()</tt> function to the <tt>publish_post</tt> and <tt>publish_page</tt> hooks and attaches <tt>shorturl_metabox</tt> to the <tt>do_meta_boxes</tt> hook that generates the meta boxes.</p>
<pre class="brush: php;">
add_action('publish_post','makeshorturl');
add_action('publish_page','makeshorturl');
add_action('do_meta_boxes','shorturl_metabox');
</pre>
<h3>Complete Code within functions.php</h3>
<pre class="brush: php;">
function makeshorturl()
{
global $post;

$short_url = json_decode(file_get_contents('http://api.bit.ly/v3/shorten?login=[username]&amp;apiKey=[apikey]&amp;longURL='.urlencode(get_permalink($post-&gt;ID)).'&amp;format=json'));

if($short_url-&gt;status_code==&quot;200&quot;)
    {
         $short_url = $short_url-&gt;data-&gt;url;
    }
    else
    {
        $short_url = &quot;Bit.ly Error! &quot;.$short_url-&gt;status_txt;
    }
    do_action('makeshorturl');
    return $short_url;
}

function shorturl_metabox()
{
    if(is_admin())
    {
        add_meta_box('bitlyurl',__('Short URL','short-url'),'showshorturlbox','post','side');
        add_meta_box('bitlyurl',__('Short URL','short-url'),'showshorturlbox','page','side');
    }
}

function showshorturlbox()
{
    echo '&lt;label for=&quot;bitlyurl&quot;&gt;'.__('Shortened URL','short-url-label').': '.makeshorturl().'&lt;/label&gt;&lt;br/&gt;&lt;br/&gt;';
}

add_action('publish_post','makeshorturl');
add_action('publish_page','makeshorturl');
add_action('do_meta_boxes','shorturl_metabox');
</pre>
<h3>Usage</h3>
<p>If you did like to show off the shortened URL to your users simply insert this code where you want the short URL to show up:</p>
<pre class="brush: php;">
&lt;?php echo makeshorturl(); ?&gt;
</pre>
<h2>BONUS</h2>
<p>Want a ready-to-use solution? Here&#8217;s the plugin version of the above code that will generate the shortened URLs on the fly for you to share. If you did like to call the functions from within the theme template, you can do so by using: </p>
<pre class="brush: php;">
&lt;?php echo wps_hook(); ?&gt;
</pre>
<p><em><strong>Note: </strong>Above tag is for the plugin only. </em></p>
<p><em>PS:</em> The plugin can also show number of clicks on a shortened link :) per shortened URL</p>
<h3>Download it!</h3>
<p><a href="http://fuelyourcoding.com/files/wp_shorturlmaker.zip" rel="nofollow"><img src="http://fuelyourcoding.com/files/downloadplugin1.jpg" alt="Download Plugin - WP Short URL Maker" title="Download Plugin - WP Short URL Maker" width="300" height="60" class="alignleft size-full wp-image-1043" border="0"/></a></p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/wordpress-auto-url-shortening/">WordPress: Auto URL Shortening</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=6G6xLseN1FU:uQkqc9Uw6tE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=6G6xLseN1FU:uQkqc9Uw6tE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=6G6xLseN1FU:uQkqc9Uw6tE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=6G6xLseN1FU:uQkqc9Uw6tE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=6G6xLseN1FU:uQkqc9Uw6tE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=6G6xLseN1FU:uQkqc9Uw6tE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=6G6xLseN1FU:uQkqc9Uw6tE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=6G6xLseN1FU:uQkqc9Uw6tE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=6G6xLseN1FU:uQkqc9Uw6tE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=6G6xLseN1FU:uQkqc9Uw6tE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=6G6xLseN1FU:uQkqc9Uw6tE:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/6G6xLseN1FU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/wordpress-auto-url-shortening/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/wordpress-auto-url-shortening/</feedburner:origLink></item>
		<item>
		<title>Create a simple “shop” page in Textpattern</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/ZyQh-9pDKXk/</link>
		<comments>http://fuelyourcoding.com/create-a-simple-shop-page-in-textpattern/#comments</comments>
		<pubDate>Thu, 20 May 2010 12:32:19 +0000</pubDate>
		<dc:creator>Marie Poulin</dc:creator>
				<category><![CDATA[Concepts & Training]]></category>
		<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[Languages]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Textpattern]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=881</guid>
		<description><![CDATA[This tutorial assumes that you have a fairly strong understanding of  HTML and CSS, as well as a basic understanding of Textpattern and its  tags. (I won&#8217;t be going into detail about the css) We will be building a very simple &#8220;shop&#8221; type page in Textpattern.  There are plugins which allow Textpattern [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/create-a-simple-shop-page-in-textpattern/">Create a simple &#8220;shop&#8221; page in Textpattern</a></p>
]]></description>
			<content:encoded><![CDATA[<p>This tutorial assumes that you have a fairly strong understanding of  HTML and CSS, as well as a basic understanding of Textpattern and its  tags. (I won&#8217;t be going into detail about the css) We will be building a very simple &#8220;shop&#8221; type page in Textpattern.  There are plugins which allow Textpattern to integrate paypal support,  but this is a fairly simple alternative. This allows you to feature  products which you may sell through paypal, e-junkie, Amazon (or  whatever else you may be using) The structure of this page is built with  the client in mind &#8211; they don&#8217;t need to format the page with any html  or div&#8217;s in order to get the products laid out nicely.</p>
<p>Two example links of this simple functionality in action are:</p>
<p>1. <a href="http://www.meghantelpner.com/shop/?c=books" target="_blank">http://www.meghantelpner.com/shop/?c=books</a></p>
<p>2. <a href="http://www.elmwoodspa.com/shop/">http://www.elmwoodspa.com/shop/</a></p>
<p>In the first example, you can click on one of Meghan&#8217;s books to see more information before deciding to purchase. If you click on &#8220;buy now&#8221;, you will be taken to her e-junkie store. Additionally, if you click on a specific book to see more information, you get a small navigation block at the top of the article that allows you to quickly browse the next and previous products. You may notice that if you click on one of the other submenus within her store, such as the Books/DVDs/Audio, that you will be taken directly to the Amazon affiliate link for that product. The client has the capacity to choose whether or not to link the product to an external link (Amazon, e-junkie, paypal) or whether or not to link to the full product page itself first, with a &#8220;buy now&#8221; button.</p>
<p>In the second example, you can click to see details/shop online which takes you immediately to Elmwood Spa&#8217;s online store.</p>
<p>I will be using the first example as a basis for the tutorial.</p>
<p>Plugins used: <a href="http://textpattern.org/plugins/470/cbs_category_list">cbs_category_list</a>, <a href="http://textpattern.org/plugins/186/zem_nth">zem_nth</a> (both optional) and <a href="http://utterplush.com/txp-plugins/upm-image">upm_image</a></p>
<p>First you&#8217;ll want to set up some custom fields, depending on how you want your shop to function. For Meghan&#8217;s shop, there are instances where she links to external products via a buy now button. Other times, she&#8217;ll want to link to an external site without the buy now button. So I have created 2 custom fields, &#8220;link to this site&#8221; and &#8220;buynow.&#8221; If you link exclusively to Paypal links, you could name it paypal, or whatever is easy for you to remember. (As long as you adjust it accordingly in the article forms)</p>
<p><img class="alignnone size-full wp-image-883" title="customfields" src="http://fuelyourcoding.com/files/customfields.jpg" alt="customfields" width="547" height="99" /></p>
<p>Now let&#8217;s take a look at one of the product pages inside textpattern:</p>
<p><img class="alignnone size-full wp-image-884" title="shop1" src="http://fuelyourcoding.com/files/shop1.jpg" alt="shop1" width="606" height="411" /></p>
<p>1. The title that will appear on the shop landing page</p>
<p>2. The description that will appear only one the item is clicked on</p>
<p>3. This is the link that the thumbnail and title will link to if you put a link (full url) here, otherwise:</p>
<p>4. A buy now button will appear and will link to the full url pasted here (if a link is not placed in either field, the title and thumbnail will merely link to the full article page automatically)</p>
<p>5. Place the image id number here that you want to associate with the article (the thumbnail version of this image will appear on the shop landing page, while the full image size will show on the individual article page.)</p>
<p>6. Choose the appropriate section for your article, in this instance, &#8220;shop.&#8221;</p>
<p>7. Select the appropriate categoryfor the article (if applicable. You may not have a need for categories)</p>
<p>8. IF USING THE BUY NOW FIELD you must use the override form named shop_listing2 (I&#8217;ll explain below)</p>
<p>SAVE your article!</p>
<div id="attachment_886" class="wp-caption alignnone" style="width: 616px"><img class="size-full wp-image-886" title="shop2" src="http://fuelyourcoding.com/files/shop2.jpg" alt="shop subnav" width="606" height="365" /><p class="wp-caption-text">shop subnav</p></div>
<p>In the actual page template for the shop, the code that calls the shop submenu (books and guides, etc) looks like this:</p>
<pre class="brush: xml;">&lt;txp:cbs_category_list parent=&quot;shop&quot; wraptag=&quot;ul&quot; break=&quot;li&quot; class=&quot;subnav&quot; section=&quot;shop&quot; showcount=&quot;false&quot; class=&quot;subnav&quot; activeclass=&quot;active&quot;/&gt;</pre>
<p>Using the plugin cbs_category_list, this pulls a list of all of the categories with a parent category of &#8220;shop&#8221;, wraps each category in a list tag, wraps the whole thing in an unordered list with a class of subnav, and assigns a class of active on list items when they are active. Handy dandy! You don&#8217;t necessarily need to use this plugin if your shop does not need this type of subnav.</p>
<p>Ok, so how do we pull all of our shop items into the page? The article tag in our shop page template looks like this:</p>
<div>
<pre class="brush: xml;">&lt;txp:article listform=&quot;shop_listing&quot; form=&quot;shop&quot; limit=&quot;99&quot; sort=&quot;posted asc&quot;/&gt;</pre>
</div>
<p>So this tag basically says: on the landing page (or listform version of the page), display the articles using the form of &#8220;shop_listing&#8221;. If you&#8217;re looking at an individual article page, (i.e. an individual product page) display the article using the form &#8220;shop&#8221;. Limit the amount of articles shown to 99, and sort them by date of Posted Ascending.</p>
<p>The &#8220;shop_listing&#8221; form looks like this:</p>
<div>
<pre class="brush: xml;">&lt;div class=&quot;shop-item&quot;&gt;  &lt;a href=&quot;&lt;txp:permlink  /&gt;&quot;&gt;&lt;txp:upm_article_image type=&quot;thumbnail&quot;  class=&quot;shopimg&quot;/&gt;&lt;/a&gt;  &lt;h3&gt;&lt;txp:permlink&gt;&lt;txp:title  /&gt;&lt;/txp:permlink&gt;&lt;/h3&gt;  &lt;span&gt;&lt;a href=&quot;&lt;txp:custom_field  name=&quot;buynow&quot; /&gt;&quot;&gt;BUY NOW&lt;/a&gt;&lt;/span&gt;  &lt;/div&gt;</pre>
</div>
<p>Translation: the thumbnail version of the article&#8217;s image is being pulled from the &#8220;Article image&#8221; field in the article, and assigned the class of &#8220;shopimg&#8221; for styling purposes. Both the title and thumbnail are linked to the permanent link to the article (which will show the body/description of the product. The Buy Now button links to whatever gets put into the custom field named &#8220;buynow.&#8221; The shop-item css looks something like: .shop-item {float:left; margin:20px 25px 10px 0; width:175px; }</p>
<p><em>Alternately, if you want to get really nerdy, you could use the plugin <a href="http://textpattern.org/plugins/186/zem_nth">zem_nth</a> to tell every third (or whatever number) post to display with different class. I use it to apply &#8220;shop-item-last&#8221; (<span style="font-style: normal;"><em>which has a margin-right of zero) <span style="font-style: normal;"><em>to every third item , so the last item in every row doesn&#8217;t have any extra margin space on the right. You can choose to do your layouts with or without zem_nth. This is what my shop_listing article form really looks like:</em></span></em></span></em></p>
<pre class="brush: xml;">&lt;txp:zem_nth step=&quot;1&quot; of=&quot;3&quot;&gt;&lt;div class=&quot;shop-item&quot;&gt;&lt;/txp:zem_nth&gt;&lt;txp:zem_nth step=&quot;2&quot; of=&quot;3&quot; &gt;&lt;div class=&quot;shop-item&quot;&gt;&lt;/txp:zem_nth&gt;&lt;txp:zem_nth step=&quot;3&quot; of=&quot;3&quot; &gt;&lt;div class=&quot;shop-item-last&quot;&gt;&lt;/txp:zem_nth&gt;&lt;a href=&quot;&lt;txp:permlink /&gt;&quot;&gt;&lt;txp:upm_article_image type=&quot;thumbnail&quot; class=&quot;shopimg&quot;/&gt;&lt;/a&gt;&lt;h3&gt;&lt;txp:permlink&gt;&lt;txp:title /&gt;&lt;/txp:permlink&gt;&lt;/h3&gt;&lt;span class=&quot;register&quot;&gt;&lt;a href=&quot;&lt;txp:custom_field name=&quot;buynow&quot; /&gt;&quot;&gt;BUY NOW&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;txp:zem_nth step=&quot;3&quot; of=&quot;3&quot; &gt;&lt;hr class=&quot;space&quot; /&gt;&lt;/txp:zem_nth&gt;</pre>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2145px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;txp:zem_nth step=&#8221;1&#8243; of=&#8221;3&#8243;&gt;&lt;div&gt;&lt;/txp:zem_nth&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2145px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;txp:zem_nth step=&#8221;2&#8243; of=&#8221;3&#8243; &gt;&lt;div&gt;&lt;/txp:zem_nth&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2145px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;txp:zem_nth step=&#8221;3&#8243; of=&#8221;3&#8243; &gt;&lt;div&gt;&lt;/txp:zem_nth&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2145px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;a href=&#8221;&lt;txp:permlink /&gt;&#8221;&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2145px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;txp:upm_article_image type=&#8221;thumbnail&#8221;/&gt;&lt;/a&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2145px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;h3&gt;&lt;txp:permlink&gt;&lt;txp:title /&gt;&lt;/txp:permlink&gt;&lt;/h3&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2145px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;span&gt;&lt;a href=&#8221;&lt;txp:custom_field name=&#8221;buynow&#8221; /&gt;&#8221;&gt;BUY NOW&lt;/a&gt;&lt;/span&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2145px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;/div&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2145px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;txp:zem_nth step=&#8221;3&#8243; of=&#8221;3&#8243; &gt;&lt;hr /&gt;&lt;/txp:zem_nth&gt;</div>
<p>The &#8220;shop_listing2&#8243; form (for products without a buy now button, linking externally) looks like this:</p>
<div>
<pre class="brush: xml;">&lt;div class=&quot;shop-item&quot;&gt;
 &lt;a href=&quot;&lt;txp:custom_field name=&quot;link to this site&quot; /&gt;&quot;  rel=&quot;external&quot;&gt;&lt;txp:upm_article_image type=&quot;thumbnail&quot;  class=&quot;shopimg&quot;/&gt;&lt;/a&gt;
 &lt;h3&gt;&lt;a href=&quot;&lt;txp:custom_field name=&quot;link to this site&quot;  /&gt;&quot;&gt;&lt;txp:title /&gt;&lt;/a&gt;&lt;/h3&gt;
 &lt;/div&gt;</pre>
</div>
<p>This tells the title and thumbnail on the listing page to link directly (in a new window/tab) to the link that is found in the &#8220;link to this site&#8221; field shown in the image above, #3. You could also include the &lt;txp:excerpt /&gt; tag if you wanted to include an excerpt. If you want the article to appear this way (without the buy now button), you need to ensure that you are using the override_form in the article named &#8220;shop_listing2&#8243;.</p>
<p>Now that we have set up what the listing page looks like for product pages, let&#8217;s look at how the individual product pages look. If you will recall the article form we used:</p>
<div>
<pre class="brush: xml;">&lt;txp:article listform=&quot;shop_listing&quot; form=&quot;shop&quot; limit=&quot;99&quot;  sort=&quot;posted asc&quot;/&gt;</pre>
</div>
<p>We need to create a form called &#8220;shop&#8221; that will determine how the individual pages look once you click on the thumbnail/title.</p>
<p>The &#8220;shop&#8221; article form looks like this:</p>
<div>
<pre class="brush: xml;">&lt;p&gt;&lt;a href=&quot;/shop&quot;&gt;Back to Shop&lt;/a&gt; |  &lt;txp:link_to_prev&gt;Previous Product&lt;/txp:link_to_prev&gt; |  &lt;txp:link_to_next&gt;Next Product&lt;/txp:link_to_next&gt;&lt;/p&gt;
 &lt;div class=&quot;right&quot;&gt;&lt;txp:upm_article_image/&gt;&lt;br /&gt;&lt;span  class=&quot;register&quot; &gt;&lt;a href='&lt;txp:custom_field  name=&quot;buynow&quot;/&gt;' &gt;BUY NOW&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;txp:body /&gt;</pre>
</div>
<p>Translation: The tags inside the paragraphs set up a small subnav which allows the user to click through to the next/previous products. Then it puts the full version of the article image in a div labelled &#8220;right&#8221; (which I float right in my css), below that place a Buy Now button which links to the url provided in the &#8220;buynow&#8221; custom field. Then display the body of the article. You could of course format the tags however you want. (image on top with text below, etc). Individual product page pictured below:</p>
<div id="attachment_888" class="wp-caption alignnone" style="width: 616px"><img class="size-full wp-image-888" title="individualpage" src="http://fuelyourcoding.com/files/individualpage.jpg" alt="individual product page" width="606" height="525" /><p class="wp-caption-text">individual product page</p></div>
<p>Using custom fields is a great way to allow the client (who doesn&#8217;t know how to code) to be able to add new items to the shop easily without having to see any textpattern or html tags, and avoid them forgetting to close link tags and add things like rel=&#8221;external&#8221;. Yay!</p>
<p>This tutorial assumes that you have textpattern installed and ready to go, and have a good grasp of the tags.</p>
<p>( Download the latest version of Textpattern here: http://textpattern.com/download )</p>
<p>Did I miss anything? If you need any more clarity or have any questions, please feel free to put them in the comments, and I will do my best to help.</p>
<p>Happy Coding!</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/create-a-simple-shop-page-in-textpattern/">Create a simple &#8220;shop&#8221; page in Textpattern</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=ZyQh-9pDKXk:XJFnKj0Prqc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=ZyQh-9pDKXk:XJFnKj0Prqc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=ZyQh-9pDKXk:XJFnKj0Prqc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=ZyQh-9pDKXk:XJFnKj0Prqc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=ZyQh-9pDKXk:XJFnKj0Prqc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=ZyQh-9pDKXk:XJFnKj0Prqc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=ZyQh-9pDKXk:XJFnKj0Prqc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=ZyQh-9pDKXk:XJFnKj0Prqc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=ZyQh-9pDKXk:XJFnKj0Prqc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=ZyQh-9pDKXk:XJFnKj0Prqc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=ZyQh-9pDKXk:XJFnKj0Prqc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/ZyQh-9pDKXk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/create-a-simple-shop-page-in-textpattern/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/create-a-simple-shop-page-in-textpattern/</feedburner:origLink></item>
		<item>
		<title>Giveaway: Voices That Matter Web Design Conference Pass [Winner Announced!]</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/kPezkua2Ihg/</link>
		<comments>http://fuelyourcoding.com/giveaway-voices-that-matter-web-design-pass/#comments</comments>
		<pubDate>Fri, 14 May 2010 16:00:11 +0000</pubDate>
		<dc:creator>Jerod Santo</dc:creator>
				<category><![CDATA[Contests]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=920</guid>
		<description><![CDATA[Giveaway Update:
Winner Announced and Early Bird Dates Extended!
After a number of comments, and a trip to random.org, we finally have a winner! A big congratulations goes out to Cristalia Garcia as the winner of the Voices That Matter Giveaway! If you didn&#8217;t win, all is not lost! The Early Bird Special discount has been extended [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/giveaway-voices-that-matter-web-design-pass/">Giveaway: Voices That Matter Web Design Conference Pass [Winner Announced!]</a></p>
]]></description>
			<content:encoded><![CDATA[<h2>Giveaway Update:<br />
Winner Announced and Early Bird Dates Extended!</h2>
<p>After a number of comments, and a trip to <a href="http://random.org">random.org</a>, we finally have a winner! A big congratulations goes out to <strong style="outline-width: 0px; outline-style: initial; outline-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;">Cristalia Garcia</strong><span style="outline-width: 0px; outline-style: initial; outline-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"> as the winner of the Voices That Matter Giveaway! If you didn&#8217;t win, all is not lost! The Early Bird Special discount has been extended until May 21. That means if you <a href="http://www.voicesthatmatter.com/webdesign2010/register.aspx">register</a> on or before May 21, and use the special FYC reader discount code (WBNBLGA), you will save a total of $250 off the ticket price!</span></p>
<h2>Original Post:</h2>
<p>The kind folks at New Rider have offered FYC readers a chance at a free pass to their upcoming <a href="http://www.voicesthatmatter.com/webdesign2010/">Voices that Matter: Web Design 2010</a> conference!</p>
<p>What&#8217;s this conference all about? In their own words:</p>
<p style="text-align: center;"><img class="size-full wp-image-924  aligncenter" title="WD10497x72" src="http://fuelyourcoding.com/files/WD10497x72.jpg" alt="WD10497x72" width="497" height="72" /></p>
<blockquote><p>New Riders’ Voices That Matter: Web Design Conference, now in its fourth consecutive year, will take place June 28-29 in San Francisco and the timing couldn’t be better! Web design is undergoing an historic transformation: while the basics of HTML, CSS, and JavaScript haven&#8217;t changed, the new and evolving functionality in the HTML5 and CSS3 specs, the number of new ways in which people access the Web, and the rise of social media mean that Web designers need to know more than ever.</p>
<p>Don’t miss this opportunity to meet face-to-face with industry greats and discuss Web design’s most critical topics! We’ll open with a keynote address from Jesse James Garrett, author of The Elements of User Experience: User-Centered Design for the Web and close with a keynote address delivered by Steve Krug, author of the well known book Don&#8217;t Make Me Think and the brand new book Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems. From start to finish this conference will blow you away.</p></blockquote>
<p>Enter to win a free pass (a $595 value) to the conference by commenting on this post (just say anything you like!) and we&#8217;ll pick one lucky commenter at random one week from today (Friday, May 14th)!</p>
<h2>Bonus: Special Savings</h2>
<p>All FYC readers can save $150 off the conference fee by providing priority code WBNBLGA when <a href="http://www.voicesthatmatter.com/webdesign2010/register.aspx">registering</a>. Register before May 14th and save $250 as this $100 discount is combined with the early bird pricing!</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/giveaway-voices-that-matter-web-design-pass/">Giveaway: Voices That Matter Web Design Conference Pass [Winner Announced!]</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=kPezkua2Ihg:2Euk05DFvt0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=kPezkua2Ihg:2Euk05DFvt0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=kPezkua2Ihg:2Euk05DFvt0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=kPezkua2Ihg:2Euk05DFvt0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=kPezkua2Ihg:2Euk05DFvt0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=kPezkua2Ihg:2Euk05DFvt0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=kPezkua2Ihg:2Euk05DFvt0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=kPezkua2Ihg:2Euk05DFvt0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=kPezkua2Ihg:2Euk05DFvt0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=kPezkua2Ihg:2Euk05DFvt0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=kPezkua2Ihg:2Euk05DFvt0:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/kPezkua2Ihg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/giveaway-voices-that-matter-web-design-pass/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/giveaway-voices-that-matter-web-design-pass/</feedburner:origLink></item>
		<item>
		<title>Emailify Your App with Gmail and Ruby</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/P5IPzXziLPU/</link>
		<comments>http://fuelyourcoding.com/emailify-your-app-with-gmail-and-ruby/#comments</comments>
		<pubDate>Thu, 13 May 2010 14:00:52 +0000</pubDate>
		<dc:creator>Jerod Santo</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=965</guid>
		<description><![CDATA[Sending and receiving email from your application isn&#8217;t hard, but lets be honest, its not as easy as you&#8217;d like either. If you haven&#8217;t considered using Gmail to manage inbound/outbound email, you really should! The advantages of using Gmail over a local SMTP server or Sendmail include:

No tricky mail server configuration
Google&#8217;s spam filtering is excellent
Free [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/emailify-your-app-with-gmail-and-ruby/">Emailify Your App with Gmail and Ruby</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Sending and receiving email from your application isn&#8217;t hard, but lets be honest, its not as easy as you&#8217;d like either. If you haven&#8217;t considered using <a href="http://mail.google.com">Gmail</a> to manage inbound/outbound email, you really should! The advantages of using Gmail over a local SMTP server or Sendmail include:</p>
<ul>
<li>No tricky mail server configuration</li>
<li>Google&#8217;s spam filtering is excellent</li>
<li>Free archive/backup of your email history</li>
<li>Easy manual administration when necessary</li>
</ul>
<p>Any language with <a href="http://en.wikipedia.org/wiki/Imap">IMAP</a> capabilities in its core, standard library, or 3rd party ecosystem can connect to Gmail for email processing. If that language happens to be <a href="http://www.ruby-lang.org/en/">Ruby</a>, it&#8217;s even easier thanks the the <a href="http://dcparker.github.com/ruby-gmail/">ruby-gmail</a> gem by <a href="http://BehindLogic.com">Daniel Parker</a>. Check it out.</p>
<h2>Installing</h2>
<p>Easy peasy.</p>
<pre class="brush: bash;">
gem install ruby-gmail
</pre>
<h2>Connecting to Gmail</h2>
<p>Connecting up is quite easy, and there are two options for how to proceed. First, you can perform all your activities inside a block. The advantage of this is the library will automatically log you out at the end of the block:</p>
<pre class="brush: ruby;">
require 'gmail'

Gmail.new(username, password) do |gmail|
  # send commands
end
# logged out
</pre>
<p>Second, you can store the connection in a variable and logout it explicitly when done:</p>
<pre class="brush: ruby;">
require 'gmail'

gmail = Gmail.new(username, password)
# send commands
gmail.logout
# logged out
</pre>
<h2>Managing Email</h2>
<p>The <tt>mailbox</tt> method takes a label as an argument and returns an object which has access to email with the given label.</p>
<pre class="brush: ruby;">
inbox  = gmail.mailbox('inbox')
urgent = gmail.mailbox('urgent')
</pre>
<p>Since <tt>inbox</tt> is such a common label to access, there&#8217;s a handy shortcut method:</p>
<pre class="brush: ruby;">
inbox = gmail.inbox
</pre>
<p>Now that you have a mailbox object in hand, you can access its emails or get counts:</p>
<pre class="brush: ruby;">
inbox.emails #  an array of all emails in mailbox
inbox.emails(:unread) # an array of unread emails
inbox.emails(:from =&gt; &quot;phb@work.com&quot;) # an array of emails from PHB
</pre>
<pre class="brush: ruby;">
inbox.count # how many emails in the mailbox
inbox.count(:unread) # how many unread
inbox.count(:from =&gt; &quot;phb@work.com&quot;) # how many from PHB
</pre>
<p>You can also perform many tasks on an individual email:</p>
<pre class="brush: ruby;">
email = inbox.emails.first

email.mark(:read)
email.archive!
email.delete!
email.label('urgent')
email.move_to('followup')
</pre>
<h2>Sending Email</h2>
<p>Creating and sending emails is also a breeze. Just like connecting you can use the idiomatic Ruby block method, or the more object-oriented approach:</p>
<pre class="brush: ruby;">
# with a block
gmail.deliver do
  to &quot;phb@work.com&quot;
  subject &quot;Not feeling well&quot;
  text_part do
    body &quot;I won't be coming in today.&quot;
  end
  html_part do
    body &quot;&lt;p&gt;I &lt;em&gt;won't&lt;/em&gt; be coming in today.&lt;/p&gt;&quot;
  end
end

# or generate message and send it later
email = gmail.generate_message do
  to &quot;phb@work.com&quot;
  subject &quot;Not feeling well&quot;
  body &quot;I won't be coming in today.&quot;
end

email.deliver!
</pre>
<p>The library will take care of sending it out your Gmail account and even set the &#8220;From&#8221; header for you. Nice!</p>
<h2>Try It</h2>
<p>If you&#8217;re already using Ruby to build an application and you need it to send or receive email, there is little excuse not to let <a href="http://dcparker.github.com/ruby-gmail">Ruby-Gmail</a> do the heavy lifting for you. Give it a try!</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/emailify-your-app-with-gmail-and-ruby/">Emailify Your App with Gmail and Ruby</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=P5IPzXziLPU:9X1Xm2pYBFk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=P5IPzXziLPU:9X1Xm2pYBFk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=P5IPzXziLPU:9X1Xm2pYBFk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=P5IPzXziLPU:9X1Xm2pYBFk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=P5IPzXziLPU:9X1Xm2pYBFk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=P5IPzXziLPU:9X1Xm2pYBFk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=P5IPzXziLPU:9X1Xm2pYBFk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=P5IPzXziLPU:9X1Xm2pYBFk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=P5IPzXziLPU:9X1Xm2pYBFk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=P5IPzXziLPU:9X1Xm2pYBFk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=P5IPzXziLPU:9X1Xm2pYBFk:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/P5IPzXziLPU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/emailify-your-app-with-gmail-and-ruby/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/emailify-your-app-with-gmail-and-ruby/</feedburner:origLink></item>
		<item>
		<title>Meet Storytlr</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/k-_w7KaEX9E/</link>
		<comments>http://fuelyourcoding.com/meet-storytlr/#comments</comments>
		<pubDate>Mon, 10 May 2010 14:08:17 +0000</pubDate>
		<dc:creator>John Hobbs</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Languages]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=932</guid>
		<description><![CDATA[What is Storytlr?
Lifestreaming is the aggregation of all of your actions throughout the web in one place to present a complete picture of your digital life. There are several lifestreaming applications out there, and Storytlr was one of the first.
Storytlr was originally a closed source, hosted web application started by Laurent Eschenauer and Alard Weisscher [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/meet-storytlr/">Meet Storytlr</a></p>
]]></description>
			<content:encoded><![CDATA[<h2>What is Storytlr?</h2>
<p><a href="http://en.wikipedia.org/wiki/Lifestreaming">Lifestreaming</a> is the aggregation of all of your actions throughout the web in one place to present a complete picture of your digital life. There are several lifestreaming applications out there, and <a href="http://storytlr.org/">Storytlr</a> was one of the first.</p>
<p>Storytlr was originally a closed source, hosted web application started by Laurent Eschenauer and Alard Weisscher in 2008. In October 2009 they decided to close the service and in December they open sourced the code.</p>
<p>Considerable community development has occurred since the project was open sourced, including many new plugins, bug fixes and features.</p>
<h2>Installing Storytlr</h2>
<p>Storytlr is written in PHP and based around the <a href="http://framework.zend.com/">Zend</a> framework. It is usually run on Apache, but works fine on lighttpd and Nginx. The current stable release is 0.9.2, although there is an RC 0.9.3 that works well.  Additionally you can use the bleeding edge code on <a href="http://github.com/storytlr/core">GitHub</a>.  I currently maintain my own version of 0.9.3 that has a few more features and plugins you won&#8217;t find in the core. You can find it <a href="http://github.com/jmhobbs/storytlr">here</a>.</p>
<p>Since it&#8217;s coming out of a close source system, expect some rough edges and thin documentation.  This is improving all the time with the growing <a href="http://code.google.com/p/storytlr/wiki/WikiHome?tm=6">wiki</a> and the <a href="http://code.google.com/p/storytlr/issues/list">issues board</a>.  Installation is still one of those rough edges, but it&#8217;s fairly easy anyway.</p>
<p>For simplicity I&#8217;ll be using the 0.9.2 release from the <a href="http://code.google.com/p/storytlr/downloads/list">Google Code site</a>, but these instructions can be easily adapted to other versions.  I&#8217;ll be doing just about everything from the command line, so if you don&#8217;t have shell access, be prepared to tweak things a bit.</p>
<h3>Requirements</h3>
<p>First, let&#8217;s make sure our server is compatible.  0.9.2 has the following requirements:</p>
<ul>
<li>PHP 5</li>
<li>mcrypt</li>
<li>PDO</li>
<li>Tidy</li>
<li>MySQL</li>
<li>Zend Framework</li>
</ul>
<p>An easy way to check compatibility is to use <a href="http://gist.github.com/raw/393739/storytlr_requirements_check.php">this script</a>.</p>
<p>Most hosts have these extensions. The rarest one is Tidy.  For instance, Dreamhost does not run Tidy.  If your host doesn&#8217;t have Tidy, you can work around it by using a different version with the <a href="http://code.google.com/p/storytlr/issues/detail?id=64&amp;can=1&amp;q=htmLawed#c1">htmLawed patch</a>.</p>
<p>If you are missing Zend, that can be downloaded <a href="http://framework.zend.com/download/current/">here</a>. Make sure to put it in your PHP include path.</p>
<h3>Getting Started</h3>
<p>Now that you&#8217;ve got the requirements met, download the <a href="http://code.google.com/p/storytlr/downloads/list">0.9.2 file</a> and unpack it into your root web directory.</p>
<pre class="brush: bash;">
jmhobbs@katya:/var/www/lifestream$ wget http://storytlr.googlecode.com/files/storytlr-0.9.2.tgz
--2010-05-07 13:33:05--  http://storytlr.googlecode.com/files/storytlr-0.9.2.tgz
Resolving storytlr.googlecode.com... 74.125.45.82
Connecting to storytlr.googlecode.com|74.125.45.82|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8748114 (8.3M) [application/x-gzip]
Saving to: “storytlr-0.9.2.tgz”

100%[============================================&gt;] 8,748,114    233K/s   in 36s

2010-05-07 13:33:41 (239 KB/s) - “storytlr-0.9.2.tgz” saved [8748114/8748114]

jmhobbs@katya:/var/www/lifestream$ tar -zxf storytlr-0.9.2.tgz
jmhobbs@katya:/var/www/lifestream$ ls -a
.  ..  feeds  flash  friendconnect  .htaccess  images  index.php  INSTALL  js  LICENSE  protected  storytlr-0.9.2.tgz  style  themes
jmhobbs@katya:/var/www/lifestream$
</pre>
<h3>The Database</h3>
<p>Now you need to load the database schema. The schema files is located at <tt>protected/install/database.sql</tt>.  If you don&#8217;t have a database or user set up, now is the time to do that as well.</p>
<pre class="brush: bash;">
jmhobbs@katya:/var/www/lifestream$ cd protected/install/
jmhobbs@katya:/var/www/lifestream/protected/install$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5515
Server version: 5.0.81-1 (Debian)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database lifestream;
Query OK, 1 row affected (0.05 sec)

mysql&gt; grant all on lifestream.* to lifestream@localhost identified by 'supersecretpassword';
Query OK, 0 rows affected (0.11 sec)

mysql&gt; flush privileges;
Query OK, 0 rows affected (0.08 sec)

mysql&gt; use lifestream;
Database changed
mysql&gt; source database.sql
Query OK, 0 rows affected (0.00 sec)

(Lines Removed For Brevity)

Query OK, 0 rows affected (0.00 sec)

mysql&gt; Bye
jmhobbs@katya:/var/www/lifestream/protected/install$
</pre>
<h3>Configuration</h3>
<p>Your last major step is the configuration file, which goes at <tt>protected/config/config.ini</tt>.  Storytlr provides an example file with good defaults, so we&#8217;ll edit that.  The key settings to change are:</p>
<ul>
<li>db.username</li>
<li>db.password</li>
<li>db.dbname</li>
<li>security.cookie</li>
<li>web.host</li>
<li>web.timezone</li>
</ul>
<pre class="brush: bash;">
jmhobbs@katya:/var/www/lifestream$ cd protected/config/
jmhobbs@katya:/var/www/lifestream/protected/config$ ls
config.ini.sample
jmhobbs@katya:/var/www/lifestream/protected/config$ cp config.ini.sample config.ini
jmhobbs@katya:/var/www/lifestream/protected/config$ vim config.ini

[general]

;Database connection settings
db.adapter=PDO_MYSQL
db.host=localhost
db.username=lifestream
db.password=supersecretpassword
db.dbname=lifestream

;Security
security.cookie = kg89y6gbval

;Caching
;cache.content = 1
;cache.metadata = 1
;cache.path = /tmp/cache/

;Web deployment settings
web.host=lifestream.velvetcache.org
web.path=/
web.redirect = 1
web.timezone=America/Chicago
jmhobbs@katya:/var/www/lifestream/protected/config$
</pre>
<h3>The Fruits of Our Labor</h3>
<p>At this point your lifestream should be working, open a browser and take a look.</p>
<p><img class="alignnone size-medium wp-image-934" title="It Works!" src="http://fuelyourcoding.com/files/storytlr-1-600x429.png" alt="It Works!" width="600" height="429" /></p>
<p>Now we need to change our password, so go to the admin page <tt>http://www.example.com/admin</tt> and log in. The default username and password are <tt>admin</tt> and <tt>storytlr</tt> respectively.  You can find that under <strong>Configure » Password</strong>.</p>
<p><img class="alignnone size-medium wp-image-936" title="Change Password" src="http://fuelyourcoding.com/files/storytlr-3-600x429.png" alt="Change Password" width="600" height="429" /></p>
<p>There are lots of options to browse through, and I won&#8217;t cover them all, but I&#8217;d like to run through setting up a source. Sources are the core of lifestreaming, and there are lots of options to choose from. In the admin interface go to <strong>Sources</strong> and click <strong>Add</strong> next to a source you want to add, I&#8217;ll use Delicious in my example.</p>
<p>This should present you with a form asking for some information. Each source is going to be slightly different, but all should be pretty easy to understand. Fill that out and it should import what it can from that source.</p>
<p><img class="alignnone size-medium wp-image-938" title="Delicious" src="http://fuelyourcoding.com/files/storytlr-5b-600x429.png" alt="Delicious" width="600" height="429" /></p>
<p><img class="alignnone size-medium wp-image-939" title="Importing" src="http://fuelyourcoding.com/files/storytlr-6b-600x429.png" alt="Importing" width="600" height="429" /></p>
<p>There you have it! Add some more sources until your lifestream really fleshes out.</p>
<p><img class="alignnone size-medium wp-image-940" title="Lifestream!" src="http://fuelyourcoding.com/files/storytlr-8b-600x429.png" alt="Lifestream!" width="600" height="429" /></p>
<h3>Keeping Current</h3>
<p>The very last step, which is often overlooked, is updating your sources. The primary means for this is the PHP script <tt>protected/tools/update.php</tt>. This must be run from the command line with the name of the user to update.  Here&#8217;s an example:</p>
<pre class="brush: bash;">
jmhobbs@katya:/var/www/lifestream$ php5 protected/tools/update.php admin
Memory usage on startup: 4997940
Memory: 5351904
Memory: 5351904
Updating source delicious for user admin [0/2] (5).... found 0 items
Updated 1 out of 2 sources in 1 seconds.
jmhobbs@katya:/var/www/lifestream$
</pre>
<p>It&#8217;s common to set up a cron job to handle these updates. It&#8217;s often important to put in full paths for your cron jobs.  This example will update my sources every 10 minutes. You can learn more about cron <a href="http://www.linuxhelp.net/guides/cron/">here</a>.</p>
<pre class="brush: bash;">
jmhobbs@katya:/var/www/lifestream$ crontab -e
MAILTO=jmhobbs@towncommons.com
# m h  dom mon dow   command
*/10 * * * * /usr/bin/php5 /var/www/lifestream/protected/tools/update.php admin
jmhobbs@katya:/var/www/lifestream$
</pre>
<p>Storytlr has lots more features and configuration options, I would encourage you to browse around and make your installation suit your taste. To see an example of a fully customized Storytlr installation, you can visit mine at <a href="http://lifestream.velvetcache.org/">http://lifestream.velvetcache.org/</a></p>
<h2>Going Further</h2>
<p>Storytlr is rich with opportunities to contribute. It&#8217;s fairly young and has lots of finicky little things to figure out, and it can always use one more plugin.  Lots of stuff is in the works, including a much simpler installer which will make most of this article obsolete!</p>
<p>Documentation is in need of some TLC, and more eyes on the bug reports would be great.</p>
<p>To get involved visit the <a href="http://code.google.com/p/storytlr">Storytlr Google Code</a> site or hop onto Github and <a href="http://github.com/storytlr/core">fork the project</a>.  Finally, you can also join us on Freenode IRC in <a href="irc://chat.freenode.net/storytlr">#storytlr</a>.</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/meet-storytlr/">Meet Storytlr</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=k-_w7KaEX9E:piOeTQ3TR_w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=k-_w7KaEX9E:piOeTQ3TR_w:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=k-_w7KaEX9E:piOeTQ3TR_w:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=k-_w7KaEX9E:piOeTQ3TR_w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=k-_w7KaEX9E:piOeTQ3TR_w:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=k-_w7KaEX9E:piOeTQ3TR_w:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=k-_w7KaEX9E:piOeTQ3TR_w:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=k-_w7KaEX9E:piOeTQ3TR_w:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=k-_w7KaEX9E:piOeTQ3TR_w:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=k-_w7KaEX9E:piOeTQ3TR_w:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=k-_w7KaEX9E:piOeTQ3TR_w:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/k-_w7KaEX9E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/meet-storytlr/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/meet-storytlr/</feedburner:origLink></item>
		<item>
		<title>A Brief Overview of Twitter’s New @Anywhere API</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/BRIXHwbD_A4/</link>
		<comments>http://fuelyourcoding.com/a-brief-overview-of-twitters-new-anywhere-api/#comments</comments>
		<pubDate>Wed, 05 May 2010 14:54:24 +0000</pubDate>
		<dc:creator>Jerod Santo</dc:creator>
				<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=907</guid>
		<description><![CDATA[Twitter recently announced and released a JavaScript API called @Anywhere which makes it super-simple to integrate Twitter-related content on any website. This means developers no longer have to roll their own integration or use 3rd party libraries. @Anywhere, despite its unfortunate naming, appears to be a big win for all. Here is a brief overview [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/a-brief-overview-of-twitters-new-anywhere-api/">A Brief Overview of Twitter&#8217;s New @Anywhere API</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Twitter recently announced and released a JavaScript API called <a href="http://dev.twitter.com/anywhere">@Anywhere</a> which makes it super-simple to integrate Twitter-related content on any website. This means developers no longer have to roll their own integration or use 3rd party libraries. @Anywhere, despite its unfortunate naming, appears to be a big win for all. Here is a brief overview of its features and usage.</p>
<p>To get started, <a href="http://dev.twitter.com/anywhere/apps/new">register an @Anywhere application</a> and get an API key. Then plug this snippet into your page:</p>
<pre class="brush: jscript;">
&lt;script src=&quot;http://platform.twitter.com/anywhere.js?id=YOUR_API_KEY&amp;v=1&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
<p>Now you can begin using any of the following features:</p>
<h2>Auto-linkification of Twitter usernames</h2>
<p>This is a convenient way to link Twitter usernames on your site to the appropriate user&#8217;s profile page on Twitter. The most basic usage looks like this:</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot;&gt;

  twttr.anywhere(function (T) {
    T.linkifyUsers();
  });

&lt;/script&gt;
</pre>
<h2>Hovercards</h2>
<p>A Hovercard is a small, context-aware tooltip that provides access to data about a particular Twitter user. It looks like this:</p>
<p><img src="http://fuelyourcoding.com/files/hovercard.png" alt="hovercard" title="hovercard" width="310" height="163" class="alignnone size-full wp-image-913" /></p>
<p>To enable hovercards on a page:</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot;&gt;

  twttr.anywhere(function (T) {
    T.hovercards();
  });

&lt;/script&gt;
</pre>
<h2>Follow buttons</h2>
<p>The feature name pretty much says it all. Let people follow Twitter users from your page. To enable it for user <a href="http://twitter.com/sant0sk1">sant0sk1</a> inside a span with id of `follow-me`:</p>
<pre class="brush: jscript;">
&lt;span id=&quot;follow-me&quot;&gt;&lt;/span&gt;
&lt;script type=&quot;text/javascript&quot;&gt;

  twttr.anywhere(function (T) {
    T('#follow-mei').followButton(&quot;sant0sk1&quot;);
  });

&lt;/script&gt;
</pre>
<p>The buttons look like this:</p>
<p><img src="http://fuelyourcoding.com/files/follow-buttons.png" alt="follow-buttons" title="follow-buttons" width="407" height="37" class="alignnone size-full wp-image-914" /></p>
<h2>Tweet Box</h2>
<p>Let Twitter users tweet from inside your webpage or web application. An example of using this on a div with id of `tweetbox`:</p>
<pre class="brush: jscript;">
&lt;div id=&quot;tbox&quot;&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;

  twttr.anywhere(function (T) {
    T(&quot;#tbox&quot;).tweetBox();
  });
&lt;/script&gt;
</pre>
<h2>User login &#038; signup</h2>
<p>This feature allows users to perform some of the authentication-required activities like following users and tweeting from your page. It uses OAuth and provides <tt>authComplete</tt> and <tt>signOut</tt> callbacks that you can hook into. It&#8217;s more complicated than the others so we won&#8217;t provide an example here.</p>
<h2>Try it!</h2>
<p>@Anywhere looks like a solid API that can provide immediate advantages over other solutions. If you need quick, easy and official Twitter integration on your site we highly recommend trying it out. Start with the <a href="http://dev.twitter.com/anywhere/begin">official documentation</a> from which we derived much of this overview. Then you can move on to the <a href="http://platform.twitter.com/js-api.html">full API documentation</a> which is (at the time of posting) in a preview state. Enjoy!</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/a-brief-overview-of-twitters-new-anywhere-api/">A Brief Overview of Twitter&#8217;s New @Anywhere API</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=BRIXHwbD_A4:1PdM_C2j1fc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=BRIXHwbD_A4:1PdM_C2j1fc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=BRIXHwbD_A4:1PdM_C2j1fc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=BRIXHwbD_A4:1PdM_C2j1fc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=BRIXHwbD_A4:1PdM_C2j1fc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=BRIXHwbD_A4:1PdM_C2j1fc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=BRIXHwbD_A4:1PdM_C2j1fc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=BRIXHwbD_A4:1PdM_C2j1fc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=BRIXHwbD_A4:1PdM_C2j1fc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=BRIXHwbD_A4:1PdM_C2j1fc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=BRIXHwbD_A4:1PdM_C2j1fc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/BRIXHwbD_A4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/a-brief-overview-of-twitters-new-anywhere-api/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/a-brief-overview-of-twitters-new-anywhere-api/</feedburner:origLink></item>
		<item>
		<title>Open-Source Spotlight: Underscore.js</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/zE1Pa0yl2bQ/</link>
		<comments>http://fuelyourcoding.com/open-source-spotlight-underscorejs/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 16:20:36 +0000</pubDate>
		<dc:creator>Jerod Santo</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Languages]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=856</guid>
		<description><![CDATA[JavaScript is a powerful language, but it lacks some of the handy utilities that developers of other languages like Ruby &#38; Python have come to know and love. Underscore.js is your utility belt. In the author&#8217;s own words:
Underscore is a utility-belt library for JavaScript that provides a lot of the functional programming support that you [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/open-source-spotlight-underscorejs/">Open-Source Spotlight: Underscore.js</a></p>
]]></description>
			<content:encoded><![CDATA[<p>JavaScript is a powerful language, but it lacks some of the handy utilities that developers of other languages like Ruby &amp; Python have come to know and love. <a href="http://documentcloud.github.com/underscore/">Underscore.js</a> is your utility belt. In the author&#8217;s own words:</p>
<blockquote><p>Underscore is a utility-belt library for JavaScript that provides a lot of the functional programming support that you would expect in Prototype.js (or Ruby), but without extending any of the built-in JavaScript objects. It&#8217;s the tie to go along with jQuery&#8217;s tux.</p></blockquote>
<p><a href="http://documentcloud.github.com/underscore/">Underscore.js</a> provides collection functions like <tt>each</tt>, <tt>map</tt>, <tt>include</tt>, and <tt>reduce</tt>. It makes arrays more powerful by adding <tt>flatten</tt>, <tt>uniq</tt>, and <tt>intersect</tt>. It extends objects with many useful functions like <tt>keys</tt>, <tt>values</tt>, <tt>functions</tt>, <tt>isNaN</tt>, and many more.</p>
<p>A few examples to whet your appetite:</p>
<p>Using the <tt>each</tt> function to write each array value to the console:</p>
<pre class="brush: jscript;">
// object-oriented way
_(['John', 'Paul', 'George', 'Ringo']).each(function(beatle) {
    console.log(beatle);
});
// functional way
_.each(['John', 'Paul', 'George', 'Ringo'], function(beatle) {
    console.log(beatle);
});
</pre>
<p>Using the <tt>reduce</tt> method to round three numbers down and sum the results:</p>
<pre class="brush: jscript;">
_.reduce([1.5,2,3.7], 0, function(memo, num) { return memo + Math.floor(num) });
// =&gt; 6
</pre>
<p>Using the <tt>pluck</tt> method to to extract just the names from an array of objects:</p>
<pre class="brush: jscript;">
var beatles = [
  {name: 'John', dead: true},
  {name: 'Paul', dead: false},
  {name: 'Ringo', dead: false},
  {name: 'George', dead: true}
]

_.pluck(beatles, 'name');
// =&gt; [&quot;John&quot;, &quot;Paul&quot;, &quot;Ringo&quot;, &quot;George&quot;]
</pre>
<p>The library weighs in at just <strong>2.5kb</strong> once packed and gzipped, so there is little excuse not to take advantage of its offerings. There are over 60 functions included, the documentation on how to use each function is great, the source code is freely available <a href="http://github.com/documentcloud/underscore/">on GitHub</a>, and the library is completely DOM-free which means you can use it server-side as well.</p>
<p>Thanks to <a href="http://github.com/jashkenas">Jeremy Ashkenas</a> and the folks at <a href="http://www.documentcloud.org/home">DocumentCloud</a> for a great open-source library that we can all benefit from!</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/open-source-spotlight-underscorejs/">Open-Source Spotlight: Underscore.js</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=zE1Pa0yl2bQ:WJsOT0ScpBc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=zE1Pa0yl2bQ:WJsOT0ScpBc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=zE1Pa0yl2bQ:WJsOT0ScpBc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=zE1Pa0yl2bQ:WJsOT0ScpBc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=zE1Pa0yl2bQ:WJsOT0ScpBc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=zE1Pa0yl2bQ:WJsOT0ScpBc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=zE1Pa0yl2bQ:WJsOT0ScpBc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=zE1Pa0yl2bQ:WJsOT0ScpBc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=zE1Pa0yl2bQ:WJsOT0ScpBc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=zE1Pa0yl2bQ:WJsOT0ScpBc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=zE1Pa0yl2bQ:WJsOT0ScpBc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/zE1Pa0yl2bQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/open-source-spotlight-underscorejs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/open-source-spotlight-underscorejs/</feedburner:origLink></item>
		<item>
		<title>jQuery UI 1.8 Released!</title>
		<link>http://feedproxy.google.com/~r/fuelyourcoding/~3/fWxp2Ga60B0/</link>
		<comments>http://fuelyourcoding.com/jquery-ui-1-8-released/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 19:10:21 +0000</pubDate>
		<dc:creator>Douglas Neiner</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jqueryui]]></category>
		<category><![CDATA[Plugins / Add-Ons]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://fuelyourcoding.com/?p=852</guid>
		<description><![CDATA[The jQuery UI team made a big announcement today regarding the immediate release of jQuery UI 1.8 final, the latest release of the official user interface library for jQuery.

From the release post:
Now it’s even easier to build your own widgets or extend ours, whether you use the jQuery UI Widget Factory, the jQuery UI CSS [...]<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/jquery-ui-1-8-released/">jQuery UI 1.8 Released!</a></p>
]]></description>
			<content:encoded><![CDATA[<p>The jQuery UI team made a <a href="http://blog.jqueryui.com/2010/03/jquery-ui-18/">big announcement today</a> regarding the immediate release of jQuery UI 1.8 final, the latest release of the official user interface library for jQuery.</p>
<p><a href="http://jqueryui.com"><img class="alignnone size-full wp-image-853" title="jqueryui" src="http://fuelyourcoding.com/files/jqueryui.jpg" alt="jqueryui" width="600" height="300" /></a></p>
<p>From the release post:</p>
<blockquote><p>Now it’s even easier to build your own widgets or extend ours, whether you use the jQuery UI Widget Factory, the jQuery UI CSS Framework, or both. This release is a collective effort spanning more than 9 months with contributions from hundreds of developers, designers, testers and users.</p></blockquote>
<h2>Top Additions:</h2>
<p>Though the release signifies the completion of major milestones, optimizations and additions, two things in this release really have me the most excited:</p>
<h3>Autocomplete</h3>
<p>For anyone who has tried to use one for the many autocomplete variants, they know just how annoying and/or difficult they were to work with. It seemed I always had to hack the plugin I was using just to get it to cooperate. Because of my experiences, I am super excited to see the jQuery UI team bring on, rebuild and fully support the Autocomplete plugin as one of the core UI plugins.</p>
<h3>Widget Factory</h3>
<p>I love working with jQuery Plugins and I extensively structure my websites by building little (or large) plugins to handle abstracted functionality. The issue that always came up was the idea of a plugin maintaining state, and having that state able to be altered at any time. The reworked Widget Factory has been abstracted into its own file, with no dependency on the jquery.ui.core.js file. This means plugin developers now have a design pattern they can follow to build stateful plugins for their projects.</p>
<p>I hope the release of the updated Widget Factory pushes jQuery plugin development further in a big way!</p>
<h2>Congratulations</h2>
<p>I want to wish a big congratulations to the jQuery UI team for all their hard work in bringing 1.8 to a releasable state.</p>
<p>Be sure to head on over to <a href="http://jqueryui.com">jQuery UI</a> to download the latest version. Remember, it requires jQuery 1.4.2!</p>
<p><p><strong>Sponsored by</strong></p>
<a href='http://madebytinder.com' target='_blank'><img src='http://fuelbrand.s3.amazonaws.com/downloads/WhatisTinder250x250.jpg' border='0' alt='Made By Tinder' /></a>
<p><a href="http://www.fuelbrandnetwork.com/advertise/">Advertise on Fuel Brand Network</a>. <br />
  <a href="http://www.fuelbrandnetwork.com">Fuel Brand Network</a> 2010 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">cc</a> (creative commons license)
</p></p>
<p><a href="http://fuelyourcoding.com/jquery-ui-1-8-released/">jQuery UI 1.8 Released!</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=fWxp2Ga60B0:dFmxoYR4Sw4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=fWxp2Ga60B0:dFmxoYR4Sw4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=fWxp2Ga60B0:dFmxoYR4Sw4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=fWxp2Ga60B0:dFmxoYR4Sw4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=fWxp2Ga60B0:dFmxoYR4Sw4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=fWxp2Ga60B0:dFmxoYR4Sw4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=fWxp2Ga60B0:dFmxoYR4Sw4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=fWxp2Ga60B0:dFmxoYR4Sw4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=fWxp2Ga60B0:dFmxoYR4Sw4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?i=fWxp2Ga60B0:dFmxoYR4Sw4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fuelyourcoding?a=fWxp2Ga60B0:dFmxoYR4Sw4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/fuelyourcoding?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/fuelyourcoding/~4/fWxp2Ga60B0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://fuelyourcoding.com/jquery-ui-1-8-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://fuelyourcoding.com/jquery-ui-1-8-released/</feedburner:origLink></item>
	</channel>
</rss>
