<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programmers.biz</title>
	<atom:link href="http://programmers.biz/feed" rel="self" type="application/rss+xml" />
	<link>http://programmers.biz</link>
	<description>Everything related to programmers and programming business</description>
	<lastBuildDate>Sun, 05 Feb 2012 02:00:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Ruby on Rails Development Atlanta &#8211; What is Ruby on Rails and why should you use it?</title>
		<link>http://programmers.biz/programming-articles/ruby-on-rails-development-atlanta-what-is-ruby-on-rails-and-why-should-you-use-it</link>
		<comments>http://programmers.biz/programming-articles/ruby-on-rails-development-atlanta-what-is-ruby-on-rails-and-why-should-you-use-it#comments</comments>
		<pubDate>Sun, 05 Feb 2012 02:00:16 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
				<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/ruby-on-rails-development-atlanta-what-is-ruby-on-rails-and-why-should-you-use-it</guid>
		<description><![CDATA[What is ruby on rails? Why its atechnology to really consider? Will Ruby is the right replacement of Java? Many Questions About ruby on rails. To find out the answers read the article. Go to Source Post from: Programmers.bizRuby on Rails Development Atlanta &#8211; What is Ruby on Rails and why should you use it?<p>Post from: <a href="http://programmers.biz">Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/ruby-on-rails-development-atlanta-what-is-ruby-on-rails-and-why-should-you-use-it">Ruby on Rails Development Atlanta &#8211; What is Ruby on Rails and why should you use it?</a></p>
]]></description>
			<content:encoded><![CDATA[<p>What is ruby on rails? Why its atechnology to really consider? Will Ruby is the right replacement of Java? Many Questions About ruby on rails. To find out the answers read the article.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.articlesbase.com/rss/categories/154" >Go to Source</a></p>
<p>Post from: <a href="http://programmers.biz" >Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/ruby-on-rails-development-atlanta-what-is-ruby-on-rails-and-why-should-you-use-it" >Ruby on Rails Development Atlanta &#8211; What is Ruby on Rails and why should you use it?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/ruby-on-rails-development-atlanta-what-is-ruby-on-rails-and-why-should-you-use-it/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPhone HD Video Recording</title>
		<link>http://programmers.biz/programming-articles/iphone-hd-video-recording</link>
		<comments>http://programmers.biz/programming-articles/iphone-hd-video-recording#comments</comments>
		<pubDate>Fri, 03 Feb 2012 02:00:31 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
				<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/iphone-hd-video-recording</guid>
		<description><![CDATA[IPhone is the most commonly used smart phone and there has been a rapid development in the iPhone industry. The iPhone development applications can also be updated from time to time and it can be downloaded to stay up to date. Go to Source Post from: Programmers.bizIPhone HD Video Recording<p>Post from: <a href="http://programmers.biz">Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/iphone-hd-video-recording">IPhone HD Video Recording</a></p>
]]></description>
			<content:encoded><![CDATA[<p>IPhone is the most commonly used smart phone and there has been a rapid development in the iPhone industry. The iPhone development applications can also be updated from time to time and it can be downloaded to stay up to date.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.articlesbase.com/rss/categories/154" >Go to Source</a></p>
<p>Post from: <a href="http://programmers.biz" >Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/iphone-hd-video-recording" >IPhone HD Video Recording</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/iphone-hd-video-recording/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best of Tuts+ in January 2012</title>
		<link>http://programmers.biz/programming/best-of-tuts-in-january-2012</link>
		<comments>http://programmers.biz/programming/best-of-tuts-in-january-2012#comments</comments>
		<pubDate>Fri, 03 Feb 2012 02:00:16 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming/best-of-tuts-in-january-2012</guid>
		<description><![CDATA[Each month, we bring together a selection of the best tutorials and articles from across the whole Tuts+ network. Whether you&#8217;d like to read the top posts from your favourite site, or would like to start learning something completely new, this is the best place to start! Psdtuts+ — Photoshop Tutorials Create a Pimped Out [...]<p>Post from: <a href="http://programmers.biz">Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming/best-of-tuts-in-january-2012">Best of Tuts+ in January 2012</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=23918&amp;c=1454003484"  target="_blank"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/b4777_img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=23918&amp;c=1454003484" border="0" alt="" /></a>
<p>Each month, we bring together a selection of the best tutorials and articles from across the whole <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://tutsplus.com/" >Tuts+ network</a>. Whether you&#8217;d like to read the top posts from your favourite site, or would like to start learning something completely new, this is the best place to start!</p>
<p><span></span></p>
<hr />
<h2>Psdtuts+ — Photoshop Tutorials</h2>
<ul>
<li>
<div>
			<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/b4777_preview.jpg" alt="Create a Pimped Out Truck Using Photoshop and Point and Shoot Photos" width="200" height="200" />
		</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://psd.tutsplus.com/tutorials/photo-effects-tutorials/pimped-out-truck/" >Create a Pimped Out Truck Using Photoshop and Point and Shoot Photos</a></h4>
<p>Making modifications to your car or truck in Photoshop can be a lot of fun. In this tutorial we will demonstrate how to create a pimped out truck modification using photos taken with a simple point and shoot camera, with no advanced lighting setup. Let&#8217;s get started!</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://psd.tutsplus.com/tutorials/photo-effects-tutorials/pimped-out-truck/" >Visit Article</a></p>
</li>
<li>
<div>
			<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/71b3e_preview.jpg" alt="Create an Elephant Sundae Using Photo Manipulation Techniques" width="200" height="200" />
		</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://psd.tutsplus.com/tutorials/photo-effects-tutorials/elephant-sundae/" >Create an Elephant Sundae Using Photo Manipulation Techniques</a></h4>
<p>Photoshop is great at seamlessly combing photos to create an entirely new scene. In this tutorial we will create an elephant sundae using several stock photos. Let&#8217;s get started!</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://psd.tutsplus.com/tutorials/photo-effects-tutorials/elephant-sundae/" >Visit Article</a></p>
</li>
<li>
<div>
			<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/71b3e_preview.jpg" alt="The Incredible Digital Art of Michael Oswald" width="200" height="200" />
		</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://psd.tutsplus.com/articles/inspiration/michael-oswald/" >The Incredible Digital Art of Michael Oswald</a></h4>
<p>In this article we will be featuring the work of <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.bymichaelo.com/" >Michael Oswald</a>. Oswald is a digital artist with a unique style. His technique involves a combination of photo manipulation and digital painting techniques and the results are often stunning. Let&#8217;s take a look!</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://psd.tutsplus.com/articles/inspiration/michael-oswald/" >Visit Article</a></p>
</li>
<hr />
<h2>Nettuts+ — Web Development Tutorials</h2>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/71b3e_sublime-text-2-tips-and-tricks.jpg" alt="Sublime Text 2 Tips and Tricks (Updated)" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://net.tutsplus.com/tutorials/tools-and-tips/sublime-text-2-tips-and-tricks/" >Sublime Text 2 Tips and Tricks (Updated)</a></h4>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.sublimetext.com/dev" >Sublime Text 2</a> is one of the fastest and most incredible code editors to be released in a long time! With a community and plugin ecosystem as passionate as this one, it just might be impossible for any other editor to catch up. I&#8217;ll show you my favorite tips and tricks today. </p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://net.tutsplus.com/tutorials/tools-and-tips/sublime-text-2-tips-and-tricks/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/d50e9_html5-media-and-accessibility.jpg" alt="An In Depth Analysis of HTML5 Multimedia and Accessibility" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://net.tutsplus.com/tutorials/html-css-techniques/an-in-depth-overview-of-html5-multimedia-and-accessibility/" >An In Depth Analysis of HTML5 Multimedia and Accessibility</a></h4>
<p>In this tutorial, youll learn how HTML5 helps to provide you with several ways of presenting your media content to users. As a result, youll increase the availability of your media to users with different<br />
needs and requirements, making it more accessible.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://net.tutsplus.com/tutorials/html-css-techniques/an-in-depth-overview-of-html5-multimedia-and-accessibility/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/d50e9_api-wrapper-for-dribbble.png" alt="Writing an API Wrapper in Ruby with TDD" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://net.tutsplus.com/tutorials/ruby/writing-an-api-wrapper-in-ruby-with-tdd/" >Writing an API Wrapper in Ruby with TDD</a></h4>
<p>Sooner or later, all developers are required to interact with an API. The most difficult part is always related to reliably testing the code we write, and, as we want to make sure that everything works properly, we continuosly run code that queries the API itself. This process is slow and inefficient, as we can experience network issues and data inconsistencies (the API results may change). Let&#8217;s review how we can avoid all of this effort with Ruby.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://net.tutsplus.com/tutorials/ruby/writing-an-api-wrapper-in-ruby-with-tdd/" >Visit Article</a></p>
</li>
<hr />
<h2>Vectortuts+ — Illustrator Tutorials</h2>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/d50e9_preview.jpg" alt="How to Illustrate a Microscope in Illustrator" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://vector.tutsplus.com/tutorials/illustration/illustrate-a-microscope/" >How to Illustrate a Microscope in Illustrator</a></h4>
<p>The microscopes is a symbol of our civilization. Throughout this tutorial on how to illustrate a vector microscope you&#8217;ll take advantage of numerous Illustrator tools. You will learn how to use blends, art brushes and 3D rendering in Adobe Illustrator. Let&#8217;s get started!</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://vector.tutsplus.com/tutorials/illustration/illustrate-a-microscope/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/d50e9_preview.jpg" alt="Create a Picture Gallery in Illustrator" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://vector.tutsplus.com/tutorials/illustration/create-a-picture-gallery/" >Create a Picture Gallery in Illustrator</a></h4>
<p>This work is a common project created together with <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://vector.tutsplus.com/author/iaroslav-lazunov/" >Iaroslav Lazunov</a> and <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://vector.tutsplus.com/author/alexander-egupov/" >Alexander Egupov</a>. We have used 3D rendering, Blends, Opacity masks, making this three-dimensional stage with vanishing points. Learn every step in how to create this picture gallery work.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://vector.tutsplus.com/tutorials/illustration/create-a-picture-gallery/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/d50e9_preview.jpg" alt="13 Important Resources for Learning How to Design Typefaces and Full Fonts" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://vector.tutsplus.com/articles/web-roundups/how-to-design-typefaces-fonts/" >Important Resources for Learning How to Design Typefaces and Full Fonts</a></h4>
<p>If you&#8217;re serious about creating a typeface design, then you&#8217;ll need some solid resources to get started. Learn effective typeface design workflows, how to take an initial spark of an idea from sketch, through Illustrator, into Fontlab, and then work your creation into a complete and custom font design. Here are multiple tutorials that show you how to create fonts in Illustrator and Fontlab, and you can also dive into articles that describe the foundation of quality type design with ample inspirational examples.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://vector.tutsplus.com/articles/web-roundups/how-to-design-typefaces-fonts/" >Visit Article</a></p>
</li>
<hr />
<h2>Webdesigntuts+ — Web Design Tutorials</h2>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/27f72_preview.png" alt="A Beginner’s Guide to Pairing Fonts" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://webdesign.tutsplus.com/articles/typography-articles/a-beginners-guide-to-pairing-fonts/" >A Beginner&#8217;s Guide to Pairing Fonts</a></h4>
<p>Pairing fonts can be a challenge. Selecting two or more fonts which work well is one thing &#8211; selecting two which work <em>together</em> to achieve your typographic aims may have you reaching for the aspirin. Let&#8217;s see if we can alleviate any headaches. This guide will help you get started with font pairing for the web.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://webdesign.tutsplus.com/articles/typography-articles/a-beginners-guide-to-pairing-fonts/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/27f72_preview.png" alt="Design a Series of Smart Banner Ads in Photoshop" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://webdesign.tutsplus.com/tutorials/visuals/design-a-series-of-smart-banner-ads-in-photoshop/" >Design a Series of Smart Banner Ads in Photoshop</a></h4>
<p>With the continuous growth of the Internet, online marketing has gotten bigger every year, and along with it, the advertising industry. One major factor in all this craziness is buying and selling ads. </p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://webdesign.tutsplus.com/tutorials/visuals/design-a-series-of-smart-banner-ads-in-photoshop/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/27f72_bootstrap.png" alt="Twitter Bootstrap 101: Introduction" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://webdesign.tutsplus.com/tutorials/complete-websites/twitter-bootstrap-101-introduction/" >Twitter Bootstrap 101: Introduction</a></h4>
<p>Twitter&#8217;s Bootstrap is an excellent set of carefully crafted user interface elements, layouts, and javascript tools, freely available to use in your next web design project. This video series aims to introduce you to Bootstrap; taking you all the way from downloading the resources, to building a complete Bootstrap-based website.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://webdesign.tutsplus.com/tutorials/complete-websites/twitter-bootstrap-101-introduction/" >Visit Article</a></p>
</li>
<hr />
<h2>Phototuts+ — Photography Tutorials</h2>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/27f72_preview.jpg" alt="HDR: Love it or Leave It?" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://photo.tutsplus.com/articles/post-processing-articles/hdr-love-it-or-leave-it/" >HDR: Love it or Leave It?</a></h4>
<p>There are few techniques in the photography world that divide our community as much as HDR. High dynamic range images, or HDR images, are a special type of composite image that combines several images at different exposure settings in order to create an image with increased dynamic range. The look provided by HDR is loved by many, and disliked by perhaps just as many. In today&#8217;s article, we&#8217;re going to take a better look at what HDR is, and get some opinions from photographers using HDR.<span></span></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://photo.tutsplus.com/articles/post-processing-articles/hdr-love-it-or-leave-it/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/e660a_preview.jpg" alt="50 Inspiring Images of Cars and Motorcycles" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://photo.tutsplus.com/articles/inspiration/50-inspiring-images-of-cars-and-motorcycles/" >Inspiring Images of Cars and Motorcycles</a></h4>
<p>Cars and motorbikes have been around for 100 years. Throughout the century, they have looked beautiful, satisfied our need for speed and become a symbol for thrill seeking. Today, we&#8217;ll look at photos ranging from brand new Ferrari&#8217;s to classic muscle cars.<span></span></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://photo.tutsplus.com/articles/inspiration/50-inspiring-images-of-cars-and-motorcycles/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/e660a_preview.jpg" alt="Quick Tip: GIMP Portable – Take Your Editing Software With You" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://photo.tutsplus.com/articles/post-processing-articles/quick-tip-gimp-portable-take-your-editing-software-with-you/" >Quick Tip: GIMP Portable &#8211; Take Your Editing Software With You</a></h4>
<p>While a number of smartphones now offer photo editing basics (and a plethora of apps to expand things even more), the portability of a solid photo editing program has been hard to come by. Photoshop is a monster in regards to space requirements and its ability to work on any system where it is not expressively installed. Picasa can be fairly &#8216;lightweight&#8217; but lacks many of the more advanced photo editing tools. So what about GIMP?<span></span></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://photo.tutsplus.com/articles/post-processing-articles/quick-tip-gimp-portable-take-your-editing-software-with-you/" >Visit Article</a></p>
</li>
<hr />
<h2>Cgtuts+ — Computer Graphics Tutorials</h2>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/51282_Thumb.png" alt="Modeling, UVmapping And Texturing A Low Poly T-Rex In Blender, Part 1" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://cg.tutsplus.com/tutorials/blender/modeling-uvmapping-and-texturing-a-low-poly-t-rex-in-blender-part-1/" >Modeling, UVmapping And Texturing A Low Poly T-Rex In Blender, Part 1</a></h4>
<p>In the first tutorial of 2012 you’ll learn how to create an awesome low-poly dinosaur using Blender and Gimp. In today’s post artist Karan Shah will walk you through the entire modeling process step by step, and show you how to create an optimized model suitable for use in any game engine.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://cg.tutsplus.com/tutorials/blender/modeling-uvmapping-and-texturing-a-low-poly-t-rex-in-blender-part-1/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/51282_Thumb.jpg" alt="Create A Realistic Explosion In Maya Using Maya Fluids" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://cg.tutsplus.com/tutorials/autodesk-maya/create-a-realistic-explosion-in-maya-using-maya-fluids/" >Create A Realistic Explosion In Maya Using Maya Fluids</a></h4>
<p>Today you’ll learn to animate and shade fluids, understand all of the major attributes, learn how adding fields will allow you to gain better control over your simulation, and how to light and render the final animation.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://cg.tutsplus.com/tutorials/autodesk-maya/create-a-realistic-explosion-in-maya-using-maya-fluids/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/51282_Thumb.jpg" alt="SpeedTree To UDK: The Complete Workflow, Part 1 Creating The Tree" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://cg.tutsplus.com/tutorials/game-dev/speedtree-to-udk-the-complete-workflow-part-1/" >SpeedTree To UDK: The Complete Workflow, Part 1 Creating The Tree</a></h4>
<p>Due to the shear number of polygons often required to make believable 3D trees, creating realistic ones for use &#8220;in-game&#8221; can be a challenging, time consuming task. SpeedTree from IDV aims to change all that with it&#8217;s intuitive UI, ease of use and powerful toolset. Making believable trees and plants has literally never been easier!</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://cg.tutsplus.com/tutorials/game-dev/speedtree-to-udk-the-complete-workflow-part-1/" >Visit Article</a></p>
</li>
<hr />
<h2>Aetuts+ — After Effects Tutorials</h2>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/e6a62_dominoes_thumbnail.jpg" alt="“Dominoes” CameraTracker and Cinema 4d Case Study – Day 1" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://ae.tutsplus.com/tutorials/workflow/dominoes-cameratracker-and-cinema-4d-case-study-day-1/" >Dominoes&#8221; CameraTracker and Cinema 4d Case Study &#8211; Day 1</a></h4>
<p>In this tutorial we&#8217;re going to go over the principle functionality of <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.thefoundry.co.uk/products/cameratracker/" >CameraTracker</a> from The Foundry, learning basic workflow, optimizing results, aligning the ground plane and exporting this data from After Effects to <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.maxon.net/"  rel="external">Cinema 4d</a>.<span></span></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://ae.tutsplus.com/tutorials/workflow/dominoes-cameratracker-and-cinema-4d-case-study-day-1/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/e6a62_Flame_Reactant_Thumbnail.jpg" alt="Make An Amazing Motion Reactant Flame – Tuts+ Premium" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://ae.tutsplus.com/tutorials/vfx/make-an-amazing-motion-reactant-flame-tutsplus-premium/" >Make An Amazing Motion Reactant Flame &#8211; Tuts+ Premium</a></h4>
<p>Using just a few video elements of torch flames, we composite a burning hand by using a series of null objects and expressions to drive a <strong>time lagged displacement effect</strong> to simulate fire burning from a moving source. We use the Puppet tool for the distortion and throw on some tracked lighting effects and a displacement map for the Heat. This principle can be used to <strong>add realistic, fluid motion to any tracked object</strong>.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://ae.tutsplus.com/tutorials/vfx/make-an-amazing-motion-reactant-flame-tutsplus-premium/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/e6a62_freelancer.jpg" alt="10 Key Tips To Becoming A Successful Video Freelancer" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://ae.tutsplus.com/articles/in-depth/10-key-tips-to-becoming-a-successful-video-freelancer/" >Key Tips To Becoming A Successful Video Freelancer</a></h4>
<p>Youve watched thousands of tutorials. Youve put in countless hours and spent many late nights working on personal projects. Youve finally come to the conclusion that this may just be something you would like to do for a career. It can seem a little intimidating at first, because how are you going to convince someone to pay you to do this? Up until now youve been your only client. How do you get more?  Im going to share my insight and experiences on how to successfully launch your freelance career this year!</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://ae.tutsplus.com/articles/in-depth/10-key-tips-to-becoming-a-successful-video-freelancer/" >Visit Article</a></p>
</li>
<hr />
<h2>Audiotuts+ — Audio &#038; Production Tutorials</h2>
<li>
<div>
		<img src="http://d3vvl31cy8gagb.cloudfront.net/713_8free/Preview Image.jpg" alt="8 Free Professional Quality Audio Unit Plug-ins for Mac" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://audio.tutsplus.com/articles/general/8-free-professional-quality-audio-unit-plug-ins-for-mac/" >Free Professional Quality Audio Unit Plug-ins for Mac</a></h4>
<p>Lets face it, software is expensive. While there are hundreds of free plug-ins available online, more often than not two problems will arise: One, most of them are for PCs leaving us Mac users feeling left out. Two, most of them are vary poor quality.</p>
<p>While I do agree with the saying, &#8220;The tools are only as good as the artist,&#8221; I also believe the opposite is true; that at some point the artist can only be as good as his tools are.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://audio.tutsplus.com/articles/general/8-free-professional-quality-audio-unit-plug-ins-for-mac/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/15047_Thumbnail.jpg" alt="Quick Tip: Drum Processing Part 4: Tips and Tricks" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://audio.tutsplus.com/tutorials/production/quick-tip-drum-processing-part-4-tips-and-tricks/" >Quick Tip: Drum Processing Part 4: Tips and Tricks</a></h4>
<p>This short series of quick tips is designed to give you a good overview of the audio processing techniques involved in creating a professional sounding drum beat for use in house, electro and breaks in Cubase. In this final part we will look at a few ways to add even more life to your drums.<br />
<span></span><br />
Here is a sample of the type of beat you could expect to end up with at the end of this series of tips:</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://audio.tutsplus.com/tutorials/production/quick-tip-drum-processing-part-4-tips-and-tricks/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/15047_preview.jpg" alt="Quick Tip: Use the Doubling Technique for Quick Drums" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://audio.tutsplus.com/tutorials/production/quick-tip-use-the-doubling-technique-for-quick-drums/" >Quick Tip: Use the Doubling Technique for Quick Drums</a></h4>
<p>It&#8217;s 3:30 in the afternoon when your phone rings. The head of a music library is calling and she needs your help. They have a commercial for an A-list client that needs music, and they want you to submit an entry. You&#8217;ll get $10,000 if you land the gig.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://audio.tutsplus.com/tutorials/production/quick-tip-use-the-doubling-technique-for-quick-drums/" >Visit Article</a></p>
</li>
<hr />
<h2>Activetuts+ — Flash, Flex &#038; ActionScript Tutorials</h2>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/15047_preview.jpg" alt="Create a Microphone-Controlled Flash Game: Code" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://active.tutsplus.com/tutorials/games/create-a-microphone-controlled-flash-game-code/" >Create a Microphone-Controlled Flash Game: Code</a></h4>
<p>In this mini-series, we&#8217;re creating a spaceship game where the main control is via the microphone: shout louder to make the ship fly higher. <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://active.tutsplus.com/tutorials/games/create-a-microphone-controlled-flash-game-design/" >So far</a>, we&#8217;ve created all the required graphical elements for the game. Now, it&#8217;s time to work on our code. We&#8217;ve got a lot to do, so let&#8217;s get started!<span></span></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://active.tutsplus.com/tutorials/games/create-a-microphone-controlled-flash-game-code/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/15047_why_bother_with_jquery.png" alt="Why Bother With jQuery? A Guide for (Former) Flash Developers" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://active.tutsplus.com/articles/explanatory/why-bother-with-jquery-a-guide-for-former-flash-developers/" >Why Bother With jQuery? A Guide for (Former) Flash Developers</a></h4>
<p>If you, like many Flash developers, are looking into using HTML5 for your web apps, you&#8217;ll almost certainly have come across jQuery. It&#8217;s a very popular JavaScript library, used by <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://trends.builtwith.com/javascript/JQuery"  rel="external">a large percentage</a> of the most visited websites &#8211; but what&#8217;s all the fuss about, and should you use it?<span></span></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://active.tutsplus.com/articles/explanatory/why-bother-with-jquery-a-guide-for-former-flash-developers/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/15047_gamepadAPI-preview.jpg" alt="An Introduction to the HTML5 Gamepad API" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://active.tutsplus.com/tutorials/games/an-introduction-to-the-html5-gamepad-api/" >An Introduction to the HTML5 Gamepad API</a></h4>
<p>As HTML games begin to gradually increase in popularity, vendors are starting to introduce some exciting new APIs to make gaming that little bit sweeter for both us developers and our end players. One of these is the GamepadAPI, which allows you to connect your good old console gamepad into your computer and use it for browser based games, plug and play style. Let&#8217;s dive in!<span></span></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://active.tutsplus.com/tutorials/games/an-introduction-to-the-html5-gamepad-api/" >Visit Article</a></p>
</li>
<hr />
<h2>Wptuts+ — WordPress Tutorials</h2>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/715c5_html5.jpg" alt="The Rise of HTML5 in WordPress" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://wp.tutsplus.com/articles/the-rise-of-html5-in-wordpress/" >The Rise of HTML5 in WordPress</a></h4>
<p>2011 was a big year for the advancement of HTML5 in the web development community. It became pretty widely adopted, especially for the mobile web. There have been major projects that help developers use HTML5, like Paul Irish&#8217;s <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://html5boilerplate.com/" >HTML5 Boilerplate</a> (technically 2010, but popularized in 2011) and books galore!</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://wp.tutsplus.com/articles/the-rise-of-html5-in-wordpress/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/715c5_metabox_0.jpg" alt="Reusable Custom Meta Boxes Part 3: Extra Fields" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part-3-extra-fields/" >Reusable Custom Meta Boxes Part 3: Extra Fields</a></h4>
<p>In <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part-1-intro-and-basic-fields/" >Part 1</a> and <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part-2-advanced-fields/" >Part 2</a> of our custom meta box template tutorial series, we learned how to create a field array to loop through and create a custom meta box with your standard fields. Now let&#8217;s throw in a bit of JavaScript for some fancy, but highly useful fields.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part-3-extra-fields/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/62dff_uwo.png" alt="The Ultimate Quickstart Guide to Speeding Up Your WordPress Site" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://wp.tutsplus.com/tutorials/the-ultimate-quickstart-guide-to-speeding-up-your-wordpress-site/" >The Ultimate Quickstart Guide to Speeding Up Your WordPress Site</a></h4>
<p>Give your site a boost! Implement crucial optimization techniques that will improve not only your <strong><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://developer.yahoo.com/yslow/" >ySlow </a></strong>score, but your Google rank too. In this tutorial we will cover all aspects of W3 caching, ySlow, Google page speed, CSS sprites &#038; htaccess rules, to achieve a high ySlow score like i have done on <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://imattic.com/" >my blog.</a></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://wp.tutsplus.com/tutorials/the-ultimate-quickstart-guide-to-speeding-up-your-wordpress-site/" >Visit Article</a></p>
</li>
<hr />
<h2>Mobiletuts+ — Mobile Development Tutorials</h2>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/62dff_carousel.jpg" alt="iOS SDK: Creating an Awesome Carousel" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-creating-an-awesome-carousel/" >iOS SDK: Creating an Awesome Carousel</a></h4>
<p>Engage your users with stunning carousels.  We&#8217;ll look at how easy and clean it can be to implement scrollable, interactive carousels in your iOS applications.  With high configurability, you can have 3D, flat, rotating, and endless scrolling arrays for data, images, or buttons.<br />
<span></span></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-creating-an-awesome-carousel/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/62dff_phonegap.jpg" alt="PhoneGap From Scratch: Introduction" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch/" >PhoneGap From Scratch: Introduction</a></h4>
<p>Want to learn how to use PhoneGap, but don&#8217;t know where to get started? Join us as we put together &#8220;Sculder&#8221;, not only a tribute to an excellent science fiction TV series, but a fully-fledged native mobile application for the believer in you!</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch/" >Visit Article</a></p>
</li>
<li>
<div>
		<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/42422_mobile-flash.png" alt="Mobile Flash is Far From Dead: Setting the Record Straight" width="200" height="200" />
	</div>
<h4><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://mobile.tutsplus.com/?p=9436" >Mobile Flash is Far From Dead: Setting the Record Straight</a></h4>
<p>In light of recent announcements from Adobe, there has been a lot of confusion over the state of the Flash Platform &#8211; specifically in regard to Flash content on mobile devices. This article seeks to clarify many of the misconceptions that exist by addressing the main points of confusion around these announcements regardless of the initial, monumental, and absolutely unbelievable blunders from failed public (and private) relations messaging and general marketing surrounding these announcements.<span></span></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://mobile.tutsplus.com/?p=9436" >Visit Article</a></p>
</li>
</ul>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feedads.g.doubleclick.net/~a/ZnKEytR8CAyz5VqSywXNd4mIAGI/0/da" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/42422_di" border="0"></img></a><br />
<a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feedads.g.doubleclick.net/~a/ZnKEytR8CAyz5VqSywXNd4mIAGI/1/da" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/42422_di" border="0"></img></a></p>
<div>
<a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=JtBVW0IlEaE:CeiJ0V3T4Gg:yIl2AUoC8zA" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/42422_nettuts?d=yIl2AUoC8zA" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=JtBVW0IlEaE:CeiJ0V3T4Gg:F7zBnMyn0Lo" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/42422_nettuts?i=JtBVW0IlEaE:CeiJ0V3T4Gg:F7zBnMyn0Lo" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=JtBVW0IlEaE:CeiJ0V3T4Gg:V_sGLiPBpWU" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/42422_nettuts?i=JtBVW0IlEaE:CeiJ0V3T4Gg:V_sGLiPBpWU" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=JtBVW0IlEaE:CeiJ0V3T4Gg:gIN9vFwOqvQ" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/42422_nettuts?i=JtBVW0IlEaE:CeiJ0V3T4Gg:gIN9vFwOqvQ" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=JtBVW0IlEaE:CeiJ0V3T4Gg:TzevzKxY174" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/e6249_nettuts?d=TzevzKxY174" border="0"></img></a>
</div>
<p><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/e6249_JtBVW0IlEaE" height="1" width="1" /></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/nettuts" >Go to Source</a></p>
<p>Post from: <a href="http://programmers.biz" >Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming/best-of-tuts-in-january-2012" >Best of Tuts+ in January 2012</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming/best-of-tuts-in-january-2012/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learn jQuery in 30 Days</title>
		<link>http://programmers.biz/programming/learn-jquery-in-30-days</link>
		<comments>http://programmers.biz/programming/learn-jquery-in-30-days#comments</comments>
		<pubDate>Thu, 02 Feb 2012 02:00:08 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming/learn-jquery-in-30-days</guid>
		<description><![CDATA[Sometimes, it&#8217;s easy to become overwhelmed by how much there is to learn in this industry. If jQuery happens to be on your personal &#8220;need to learn soon&#8221; list, then I&#8217;m happy to announce my new course: &#8220;Learn jQuery in 30 Days&#8221;. If you&#8217;ll give me fifteen minutes a day for the next month, I&#8217;ll [...]<p>Post from: <a href="http://programmers.biz">Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming/learn-jquery-in-30-days">Learn jQuery in 30 Days</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=23901&amp;c=1291653117"  target="_blank"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/9dd60_img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=23901&amp;c=1291653117" border="0" alt="" /></a>
<p>Sometimes, it&#8217;s easy to become overwhelmed by how much there is to learn in this industry. If jQuery happens to be on your personal &#8220;need to learn soon&#8221; list, then I&#8217;m happy to announce my new course: <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://learnjquery.tutsplus.com" >&#8220;Learn jQuery in 30 Days&#8221;</a>. If you&#8217;ll give me fifteen minutes a day for the next month, I&#8217;ll help you become a jQuery pro &#8211; <strong>and it&#8217;s free!</strong><span></span></p>
<hr />
<h2> How Does it Work? </h2>
<div>
<a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://learnjquery.tutsplus.com" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/7752b_learnjQuerySite.jpg" alt="Learn jQuery"></a>
</div>
<blockquote>
<p>Sporadically, your skills will be put to the test, when you take the interactive quizzes! </p>
</blockquote>
<p>Once you <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://learnjquery.tutsplus.com" >enroll (free) via email</a>, each day, you&#8217;ll receive a 10-15 minute video lesson. As you might expect, every episode will build upon the one it proceeds, and, sporadically, your skills will be put to the test, when you take the interactive quizzes! </p>
<p>Along the way, you&#8217;ll learn the essentials (querying and manipulating the DOM), while incrementally working your way up to more advanced topics, such as jQuery&#8217;s AJAX methods and plugin development. </p>
<p>I worked particularly hard to make the process of picking up this new skill as easy as possible for everyone &#8211; even if you have very, very little JavaScript experience. So&#8230;<a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://learnjquery.tutsplus.com" >do you want to join me?</a> </p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feedads.g.doubleclick.net/~a/x6RAfkI52on-WdOSxWtjLvR2aNo/0/da" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/7752b_di" border="0"></img></a><br />
<a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feedads.g.doubleclick.net/~a/x6RAfkI52on-WdOSxWtjLvR2aNo/1/da" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/7752b_di" border="0"></img></a></p>
<div>
<a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=hI3XrFMnqw8:9H-58M5y3RI:yIl2AUoC8zA" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/7752b_nettuts?d=yIl2AUoC8zA" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=hI3XrFMnqw8:9H-58M5y3RI:F7zBnMyn0Lo" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/7752b_nettuts?i=hI3XrFMnqw8:9H-58M5y3RI:F7zBnMyn0Lo" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=hI3XrFMnqw8:9H-58M5y3RI:V_sGLiPBpWU" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4facc_nettuts?i=hI3XrFMnqw8:9H-58M5y3RI:V_sGLiPBpWU" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=hI3XrFMnqw8:9H-58M5y3RI:gIN9vFwOqvQ" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4facc_nettuts?i=hI3XrFMnqw8:9H-58M5y3RI:gIN9vFwOqvQ" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=hI3XrFMnqw8:9H-58M5y3RI:TzevzKxY174" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4facc_nettuts?d=TzevzKxY174" border="0"></img></a>
</div>
<p><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4facc_hI3XrFMnqw8" height="1" width="1" /></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/nettuts" >Go to Source</a></p>
<p>Post from: <a href="http://programmers.biz" >Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming/learn-jquery-in-30-days" >Learn jQuery in 30 Days</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming/learn-jquery-in-30-days/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprehensive Web Development Company</title>
		<link>http://programmers.biz/programming-articles/comprehensive-web-development-company</link>
		<comments>http://programmers.biz/programming-articles/comprehensive-web-development-company#comments</comments>
		<pubDate>Wed, 01 Feb 2012 02:00:20 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
				<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/comprehensive-web-development-company</guid>
		<description><![CDATA[The web site sizzles because of the way it gets coded. Rich, beginning and accurately accounting cipher ensures the web site turns out wonderfully. It becomes a almighty force, whose casework and articles get articular able-bodied and audience assuming absorption in them. Traffic as well starts advancing in heavily, the web site developing a loyal [...]<p>Post from: <a href="http://programmers.biz">Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/comprehensive-web-development-company">Comprehensive Web Development Company</a></p>
]]></description>
			<content:encoded><![CDATA[<p>The web site sizzles because of the way it gets coded. Rich, beginning and accurately accounting cipher ensures the web site turns out wonderfully. It becomes a almighty force, whose casework and articles get articular able-bodied and audience assuming absorption in them. Traffic as well starts advancing in heavily, the web site developing a loyal applicant abject in the process.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.articlesbase.com/rss/categories/154" >Go to Source</a></p>
<p>Post from: <a href="http://programmers.biz" >Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/comprehensive-web-development-company" >Comprehensive Web Development Company</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/comprehensive-web-development-company/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recovering a Tumblr Blog That I Deleted</title>
		<link>http://programmers.biz/programming-articles/recovering-a-tumblr-blog-that-i-deleted</link>
		<comments>http://programmers.biz/programming-articles/recovering-a-tumblr-blog-that-i-deleted#comments</comments>
		<pubDate>Wed, 01 Feb 2012 02:00:17 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
				<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/recovering-a-tumblr-blog-that-i-deleted</guid>
		<description><![CDATA[Recovering a Tumblr blog that you deleted may be difficult, but it isn&#8217;t impossible. Learn about recovering a Tumblr blog that you deleted with help from a web and graphic specialist in this free video clip. Go to Source Post from: Programmers.bizRecovering a Tumblr Blog That I Deleted<p>Post from: <a href="http://programmers.biz">Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/recovering-a-tumblr-blog-that-i-deleted">Recovering a Tumblr Blog That I Deleted</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.ehow.com/video_12219927_recovering-tumblr-blog-deleted.html" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/d73cb_3a7a9b61-d8ce-47de-8ec5-f41834eb782e_0.jpg" alt="" /></a>Recovering a Tumblr blog that you deleted may be difficult, but it isn&#8217;t impossible. Learn about recovering a Tumblr blog that you deleted with help from a web and graphic specialist in this free video clip.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.ehow.com/feed/computer-programming.rss" >Go to Source</a></p>
<p>Post from: <a href="http://programmers.biz" >Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/recovering-a-tumblr-blog-that-i-deleted" >Recovering a Tumblr Blog That I Deleted</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/recovering-a-tumblr-blog-that-i-deleted/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Php Website Growth And Outsourcing Added benefits</title>
		<link>http://programmers.biz/programming-articles/php-website-growth-and-outsourcing-added-benefits</link>
		<comments>http://programmers.biz/programming-articles/php-website-growth-and-outsourcing-added-benefits#comments</comments>
		<pubDate>Tue, 31 Jan 2012 02:00:23 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
				<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/php-website-growth-and-outsourcing-added-benefits</guid>
		<description><![CDATA[PHP or Hypertext Pre-processor is probably most famous and advanced scripting language accustomed to build internet purposes. Go to Source Post from: Programmers.bizPhp Website Growth And Outsourcing Added benefits<p>Post from: <a href="http://programmers.biz">Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/php-website-growth-and-outsourcing-added-benefits">Php Website Growth And Outsourcing Added benefits</a></p>
]]></description>
			<content:encoded><![CDATA[<p>PHP or Hypertext Pre-processor is probably most famous and advanced scripting language accustomed to build internet purposes.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.articlesbase.com/rss/categories/154" >Go to Source</a></p>
<p>Post from: <a href="http://programmers.biz" >Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/php-website-growth-and-outsourcing-added-benefits" >Php Website Growth And Outsourcing Added benefits</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/php-website-growth-and-outsourcing-added-benefits/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recently in Web Development (January ’12 Edition)</title>
		<link>http://programmers.biz/programming/recently-in-web-development-january-12-edition</link>
		<comments>http://programmers.biz/programming/recently-in-web-development-january-12-edition#comments</comments>
		<pubDate>Tue, 31 Jan 2012 02:00:11 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming/recently-in-web-development-january-12-edition</guid>
		<description><![CDATA[Web development is an industry that&#8217;s in a state of constant flux with technologies and jargon changing and mutating in an endless cycle. Not to mention the sheer deluge of information one has to process everyday. In this series, published monthly, we&#8217;ll seek to rectify this by bringing you all the important news, announcements, releases [...]<p>Post from: <a href="http://programmers.biz">Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming/recently-in-web-development-january-12-edition">Recently in Web Development (January ’12 Edition)</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=23889&amp;c=637656488"  target="_blank"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/3a11d_img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=23889&amp;c=637656488" border="0" alt="" /></a>
<p>Web development is an industry that&#8217;s in a state of constant flux with technologies and jargon changing and mutating in an endless cycle. Not to mention the sheer deluge of information one has to process everyday.</p>
<p>In this series, published monthly, we&#8217;ll seek to rectify this by bringing you all the important news, announcements, releases and interesting discussions within the web development industry in a concise package. Join me after the jump for an extra dose of community content this month!</p>
<p><span></span></p>
<h2>
<hr />News and Releases</h2>
<p>All of the important news in a single place: releases, announcements, companies bickering, security issues and all related hoopla.</p>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/7f958_html.png" width="250" /></div>
<h3>&#8216;HTML5 Please&#8217; Helps Devs Make Informed Decisions</h3>
<p>HTML5 is a beast of a spec with no one <em>truly</em> knowing everything there is to know. This shiny new site gives you all the information you need to use HTML5 features on your site, right now.</p>
<p>The site provides you with recommendations as to whether you should be using that specific facet of HTML5 right now and provides you with helpful links to polyfills, when necessary. Time saver!</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://html5please.us/" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/7f958_enyo.png" width="250" /></div>
<h3>HP Open Sources Enyo</h3>
<p>Enyo is the engine that powers webOS. But what exactly is Enyo, you ask? Well, it&#8217;s a spiffy JavaScript framework that helps you build better performing, easier to maintain application.</p>
<p>I&#8217;m sure you&#8217;ve heard this plenty of times before so why don&#8217;t you check out the link below to find out for yourself?</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://enyojs.com/" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/7f958_sopa.png" width="250" /></div>
<h3>Tech Giants Protest SOPA</h3>
<p>Last month saw a figurative deluge of protests against SOPA. If you have no idea what SOPA is, hit the link below to find out.</p>
<p>While many services merely blackened out their logo, many others, including Wikipedia and Reddit, went the extra length and completely blacked out their sites. The proposed bill has been shelved but I predict that we&#8217;ll see another in a different skin soon&#8230;</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://en.wikipedia.org/wiki/SOPA" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4f245_vim.png" width="250" /></div>
<h3>Vim on a Tablet? Yes, Please!</h3>
<p>I understand not everyone uses a tablet but the number is growing, quite rapidly. Wouldn&#8217;t it be great to SSH into your server to fix that pesky bug? Get a proper laptop, you say? I&#8217;m going to ask you to shush for now and go with the flow.</p>
<p>This month saw the release of Vim for the iOS platform. And no, it&#8217;s not a gimped version. From a quick run through, it seems that all the nice bits are still in there. If you&#8217;re in the intersection between developers and iPad users, let us know in the comments below as to whether it fits your needs.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://applidium.com/en/applications/vim/" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4f245_ctr.jpg" width="250" /></div>
<h3>Cut the Rope Ported to the Browser</h3>
<p>I&#8217;m sure a lot of you have played this ridiculously cute &#8216;aww&#8217; inducing game. What brings the game to our list is the fact that it has been ported to the browser by the newly cool Internet Explorer team. </p>
<p>And true to their current vision, they&#8217;ve ported it using JavaScript and the magic of HTML5. The link below leads you to a write up about the game development instead of the game itself to protect your productivity.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.cuttherope.ie/dev/" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4f245_rails.png" width="250" /></div>
<h3>The Rails Tutorial, Version Two, Inches Towards Completion</h3>
<p>&#8216;The&#8217; Rails tutorial? Indeed it is! Michael Hartl&#8217;s <em>free</em> has helped many learn the voodoo that is Rails and Michael is slowly updating his ebook for Ruby 1.9 and Rails 3.2</p>
<p>Thus far, six chapters are out with a chapter expected every week in the future. Make sure to check the site out! </p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://news.railstutorial.org/ruby-on-rails-tutorial-second-edition-updated" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4f245_st2.png" width="250" /></div>
<h3>Sublime Text 2 Piles on More Features with New Beta</h3>
<p>Sublime Text 2 is a grand piece of work and every build only reaffirms this. This new build introduces a ton of features including auto complete, performance improvements, a new UI theme and a ton more.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.sublimetext.com/blog/articles/sublime-text-2-build-2165" >Read more</a></p>
<div></div>
<div></div>
<h2>
<hr />New Kids on the Block</h2>
<p>As web developers, the sheer amount of resources we can tap into increases exponentially with time. Here is just a quick look at some recently created resources that deserve your attention &#8212; everything from new books to scripts and frameworks.</p>
<hr />
<h3>wrap.js</h3>
<blockquote><p>My wrap.js plugin handles the nested require based on a config, and takes it to the next level by generating an actual AMD module for you during the build. So now you don’t have to write wrappers around scripts that you wish were modules, wrap.js does that for you. </p>
</blockquote>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/geddesign/wrap.js" >Github Repo</a></p>
<hr />
<h3>Resumable.js</h3>
<blockquote><p>Resumables is a JavaScript library providing multiple simultaneous, stable and resumable uploads via the HTML5 File API.<br />
The library is designed to introduce fault-tolerance into the upload of large files through HTTP. This is done by splitting each files into small chunks; whenever the upload of a chunk fails, uploading is retried until the procedure completes.</p>
</blockquote>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/23/resumable.js" >Github Repo</a></p>
<hr />
<h3>IcedCoffeeScript</h3>
<blockquote><p>IcedCoffeeScript is a fork of CoffeeScript. It is superset of the CoffeeScript language. The iced interpreter is a drop-in replacement for the standard coffee interpreter since it will interpret all existing CoffeeScript programs. IcedCoffeeScript (ICS) adds two new keywords: await and defer. These additions simply and powerfully streamline asynchronous control flow, both on the server and on the browser. </p>
</blockquote>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://maxtaco.github.com/coffee-script/" >Github Repo</a></p>
<hr />
<h3>Banking.js</h3>
<blockquote><p> Banking.JS retrieves all of your bank transactions similiar to how quickbooks does it. There is no need to depend on or pay for third party services. The bank statement results are in JSON or Valid XML and supports all financial institutions.</p>
</blockquote>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/euforic/banking.js" >Github Repo</a></p>
<hr />
<h3>Roy</h3>
<blockquote><p>Roy is a small functional language that compiles to JavaScript. The main features include whitespace significant syntax, compile-time meta-programming, structural typing and monad syntax</p>
</blockquote>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/pufuwozu/roy" >Github Repo</a></p>
<hr />
<h3>jsgif</h3>
<blockquote><p>jsgif an animated GIF player bookmarklet with support for pausing, going frame-by-frame, playing in reverse, and other features that one might expect from a video player. </p>
</blockquote>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/shachaf/jsgif" >Github Repo</a></p>
<hr />
<h3>zip.js</h3>
<blockquote><p>zip.js offers a low-level API for writing and reading large zip files (up to 4GB) with a stable RAM use. It also offers a Filesystem API in order to manipulate zip file structure.</p>
</blockquote>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://gildas-lormeau.github.com/zip.js/" >Github Repo</a></p>
<hr />
<h3>Seriously.js</h3>
<blockquote><p>Seriously.js is a real-time, node-based video compositor for the web. Inspired by professional software such as After Effects and Nuke, Seriously.js renders high-quality video effects, but allows them to be dynamic and interactive.</p>
</blockquote>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/brianchirls/Seriously.js" >Github Repo</a></p>
<h2>
<hr />Best of the Internet</h2>
<p>Often, you&#8217;re not really looking for a tutorial as much as you&#8217;re looking for a rant, an opinion or the musings of a tired developer or just something cool with absolutely zero real world use. This sections contains links to precisely those &#8212; interesting and cool stuff from the developer community. </p>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4f245_preview.jpg" width="250" /></div>
<h3>The Five Stages of Hosting</h3>
<p>Five common options for hosting a web business, ranked in decreasing order of &#8216;cloudiness&#8217;. </p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://blog.pinboard.in/2012/01/the_five_stages_of_hosting/" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4f245_yehuda_katz.png" width="250" /></div>
<h3>JavaScript Needs Blocks</h3>
<p>Yehuda Katz talks about why he wants to see block lambdas in JavaScript. It&#8217;s a bit technical but well worth a read. </p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://yehudakatz.com/2012/01/10/javascript-needs-blocks/" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4f245_ror.png" width="250" /></div>
<h3>How I Learned Enough Ruby On Rails In 12 Weeks To Launch Freelancify</h3>
<p>A Non-Developer explains how&#8230; I think you know already. Just click the darn link and move on.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.webstartup.me/learned-ruby-rails-12-weeks-launch-freelancify" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4f245_cfn.gif" width="250" /></div>
<h3>Why are software development task estimations regularly off by a factor of 2-3?</h3>
<p>Is it the developer&#8217;s fault? Is it a management issue? Bad methodology, or lack thereof? Or is it ingrained in the nature of the process?</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.quora.com/Engineering-Management/Why-are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4f245_wat.png" width="250" /></div>
<h3>Explanation for the &#8216;Wat&#8217; Talk &#8211; CodeMash 2012</h3>
<p>This StackOverflow question, along with the well written answers below, explore the code that was demonstrated in the talk mentioned in the title. Provides a quick look at the quirkier portions of JavaScript. </p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://stackoverflow.com/questions/9032856/can-anyone-explain-these-bizarre-javascript-behaviours-mentioned-in-the-wat-ta" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4f245_db.png" width="250" /></div>
<h3>Why are column oriented databases so much faster than row oriented databases?</h3>
<p>A quick little read that explains why, and how, different databases perform differently. There isn&#8217;t much jargon there and gets the point quite clearly. </p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://siganakis.com/using-bitmap-indexes-in-query-processing" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/1595a_200x200.jpg" width="250" /></div>
<h3>PHP Mind Love</h3>
<p>The link below points to some PHP code. Figure out what the output is and you get a cookie!</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/TheFox/JaPHPh/blob/master/japhph.php" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/c8f7d_2d.jpg" width="250" /></div>
<h3>Testing Socket.IO With Mocha, Should.js and Socket.IO Client</h3>
<p>A clean writeup that details how the author got all the named technologies working together. </p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://net.tutsplus.com/gg" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/c8f7d_js.jpg" width="250" /></div>
<h3>What is the difference between semicolons in JavaScript and in Python?</h3>
<p>Ever had to think about the question above? How exactly do they each handle semicolons and newlines? Read up below.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://stackoverflow.com/questions/7219541/what-is-the-difference-between-semicolons-in-javascript-and-in-python" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/c8f7d_dj.png" width="250" /></div>
<h3>The Programming Djinn</h3>
<p>The Least Boring Programming Book teaches Ruby programming to beginners in an unconventional way. </p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://ethanfast.com/2012/01/the-least-boring-programming-book-chapter-1-excerpt/" >Read more</a></p>
<div></div>
<div></div>
<div><img alt="Nettuts image" src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4937e_hg.png" width="250" /></div>
<h3>Non-Canvas Wizardry</h3>
<p>I don&#8217;t really have much context to go on here so just give the link below a click. Pretty smooth stuff for something that&#8217;s not canvas or Flash based.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://scorcher.de/palette/palette.html?fps=10&amp;colors=500&amp;pixels=30&amp;container=680" >Read more</a></p>
<div></div>
<h2>
<hr />Wrapping Up</h2>
<p>Well, that&#8217;s about all the major changes that happened in our industry lately. </p>
<p>Do you want us to cover more standard news? A focus on upcoming scripts maybe? Or just more interesting posts and discussions from the community? Let us know in the comments and thank you so much for reading! </p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feedads.g.doubleclick.net/~a/KH7eF1fsvCT5hbD59kBjcIUu_MA/0/da" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4937e_di" border="0"></img></a><br />
<a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feedads.g.doubleclick.net/~a/KH7eF1fsvCT5hbD59kBjcIUu_MA/1/da" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4937e_di" border="0"></img></a></p>
<div>
<a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=CZhjBpTuRuM:8hIim0ry3ZU:yIl2AUoC8zA" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4937e_nettuts?d=yIl2AUoC8zA" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=CZhjBpTuRuM:8hIim0ry3ZU:F7zBnMyn0Lo" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4937e_nettuts?i=CZhjBpTuRuM:8hIim0ry3ZU:F7zBnMyn0Lo" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=CZhjBpTuRuM:8hIim0ry3ZU:V_sGLiPBpWU" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4937e_nettuts?i=CZhjBpTuRuM:8hIim0ry3ZU:V_sGLiPBpWU" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=CZhjBpTuRuM:8hIim0ry3ZU:gIN9vFwOqvQ" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4937e_nettuts?i=CZhjBpTuRuM:8hIim0ry3ZU:gIN9vFwOqvQ" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=CZhjBpTuRuM:8hIim0ry3ZU:TzevzKxY174" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4937e_nettuts?d=TzevzKxY174" border="0"></img></a>
</div>
<p><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/4937e_CZhjBpTuRuM" height="1" width="1" /></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/nettuts" >Go to Source</a></p>
<p>Post from: <a href="http://programmers.biz" >Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming/recently-in-web-development-january-12-edition" >Recently in Web Development (January ’12 Edition)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming/recently-in-web-development-january-12-edition/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classified Scripts &#8211; A Trend These Days</title>
		<link>http://programmers.biz/programming-articles/classified-scripts-a-trend-these-days</link>
		<comments>http://programmers.biz/programming-articles/classified-scripts-a-trend-these-days#comments</comments>
		<pubDate>Mon, 30 Jan 2012 02:00:18 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
				<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/classified-scripts-a-trend-these-days</guid>
		<description><![CDATA[Classified Scripts are becoming the latest fashion, of late. One should buy extremely customizable Classified Ads Script with high-tech designs. Go to Source Post from: Programmers.bizClassified Scripts &#8211; A Trend These Days<p>Post from: <a href="http://programmers.biz">Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/classified-scripts-a-trend-these-days">Classified Scripts &#8211; A Trend These Days</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Classified Scripts are becoming the latest fashion, of late. One should buy extremely customizable Classified Ads Script with high-tech designs.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://www.articlesbase.com/rss/categories/154" >Go to Source</a></p>
<p>Post from: <a href="http://programmers.biz" >Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming-articles/classified-scripts-a-trend-these-days" >Classified Scripts &#8211; A Trend These Days</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/classified-scripts-a-trend-these-days/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing an API Wrapper in Ruby with TDD</title>
		<link>http://programmers.biz/programming/writing-an-api-wrapper-in-ruby-with-tdd</link>
		<comments>http://programmers.biz/programming/writing-an-api-wrapper-in-ruby-with-tdd#comments</comments>
		<pubDate>Sun, 29 Jan 2012 02:00:08 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming/writing-an-api-wrapper-in-ruby-with-tdd</guid>
		<description><![CDATA[Sooner or later, all developers are required to interact with an API. The most difficult part is always related to reliably testing the code we write, and, as we want to make sure that everything works properly, we continuosly run code that queries the API itself. This process is slow and inefficient, as we can [...]<p>Post from: <a href="http://programmers.biz">Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming/writing-an-api-wrapper-in-ruby-with-tdd">Writing an API Wrapper in Ruby with TDD</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=23875&amp;c=1274595345"  target="_blank"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/25ed8_img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=23875&amp;c=1274595345" border="0" alt="" /></a>
<p>Sooner or later, all developers are required to interact with an API. The most difficult part is always related to reliably testing the code we write, and, as we want to make sure that everything works properly, we continuosly run code that queries the API itself. This process is slow and inefficient, as we can experience network issues and data inconsistencies (the API results may change). Let&#8217;s review how we can avoid all of this effort with Ruby.</p>
<p><span></span></p>
<hr />
<h2>Our Goal</h2>
<blockquote>
<p>&#8220;Flow is essential: write the tests, run them and see them fail, then write the minimal implementation code to make them pass. Once they all do, refactor if needed.&#8221;</p>
</blockquote>
<p>Our goal is simple: write a small wrapper around the <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://dribbble.com/api" >Dribbble API</a> to retrieve information about a user (called &#8216;player&#8217; in the Dribbble world).<br />
As we will be using Ruby, we will also follow a TDD approach: if you&#8217;re not familiar with this technique, Nettuts+ has a <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://net.tutsplus.com/tutorials/ruby/ruby-for-newbies-testing-with-rspec/" >good primer on RSpec</a> you can read. In a nutshell, we will write tests before writing our code implementation, making it easier to spot bugs and to achieve a high code quality. Flow is essential: write the tests, run them and see them fail, then write the minimal implementation code to make them pass. Once they all do, refactor if needed.</p>
<h3>The API</h3>
<p>The Dribbble API is fairly straightforward. At the time of this   it supports only GET requests and doesn&#8217;t require authentication: an ideal candidate for our tutorial. Moreover, it offers a 60 calls per minute limit, a restriction that perfectly shows why working with APIs require a smart approach.</p>
<hr />
<h2>Key Concepts</h2>
<p>This tutorial needs to assume that you have some familiarity with testing concepts: fixtures, mocks, expectations. Testing is an important topic (especially in the Ruby community) and even if you are not a Rubyist,  I&#8217;d encourage you to dig deeper into the matter and to search for equivalent tools for your everyday language. You may want to read <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://pragprog.com/book/achbd/the-rspec-book" >&#8220;The RSpec book&#8221; by David Chelimsky et al.</a>, an excellent primer on Behavior Driven Development. </p>
<p>To summarize here, here are three key concepts you must know:</p>
<ul>
<li><strong>Mock</strong>: also called double, a mock is &#8220;an object that stands in for another object in an example&#8221;. This means that if we want to test the interaction between an object and another, we can mock the second one. In this tutorial, we will mock the Dribbble API, as to test our code we don&#8217;t need the API, itself, but something that behaves like it and exposes the same interface.</li>
<li><strong>Fixture</strong>: a dataset that recreates a specific state in the system. A fixture can be used to create the needed data to test a piece of logic.</li>
<li><strong>Expectation</strong>: a test example written the from the point of view of the result we want to achieve.</li>
</ul>
<hr />
<h2>Our Tools</h2>
<blockquote>
<p>&#8220;As a general practice, run tests every time you update them.&#8221;</p>
</blockquote>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/bblimke/webmock" >WebMock</a> is a Ruby mocking library that is used to mock (or stub) http requests. In other words, it allows you to simulate any HTTP request without actually making one. The primary advantage to this is being able to develop and test against any HTTP service without needing the service itself and without incurring in related issues (like API limits, IP restrictions and such).<br />
<a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/myronmarston/vcr" >VCR</a> is a complementary tool that records any real http request and creates a fixture, a file that contains all the needed data to replicate that request without performing it again. We will configure it to use WebMock to do that. In other words, our tests will interact with the real Dribbble API just once: after that, WebMock will stub all the requests thanks to the data recorded by VCR. We will have a perfect replica of the Dribbble API responses recorded locally. In addition, WebMock will let us test edge cases (like the request timing out) easily and consistently. A wonderful consequence of our setup is that everything will be extremely fast.</p>
<p>
As for unit testing, we will be using <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/seattlerb/minitest" >Minitest</a>. It&#8217;s a fast and simple unit testing library that also supports expectations in the RSpec fashion. It offers a  smaller feature set, but I find that this actually encourages and pushes you to separate your logic into small, testable methods. Minitest is part of Ruby 1.9, so if you&#8217;re using it (I hope so) you don&#8217;t need to install it. On Ruby 1.8, it&#8217;s only a matter of <code>gem install minitest</code>.</p>
<p>
I will be using Ruby 1.9.3: if you don&#8217;t, you will probably encounter some issues related to <code>require_relative</code>, but I&#8217;ve included fallback code in a comment right below it. As a general practice, you should run tests every time you update them, even if I won&#8217;t be mentioning this step explicitly throughout the tutorial.</p>
<hr />
<h2>Setup</h2>
<div>
  <img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/ef975_01_setup.jpg" alt="Setup">
</div>
<p>We will use the conventional <code>/lib</code> and <code>/spec</code> folder structure to organize our code. As for the name of our library, we&#8217;ll call it <b>Dish</b>, following the Dribbble convention of using basketball related terms.</p>
<p>The Gemfile will contain all our dependencies, albeit they&#8217;re quite small.</p>
<pre>
source :rubygems

gem 'httparty'

group :test do
  gem 'webmock'
  gem 'vcr'
  gem 'turn'
  gem 'rake'
end
</pre>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/jnunemaker/httparty" >Httparty</a> is an easy to use gem to handle HTTP requests; it will be the core of our library. In the test group, we will also add <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/https://github.com/TwP/turn" >Turn</a> to change the output of our tests to be more descriptive and to support color.</p>
<p>The <code>/lib</code> and <code>/spec</code> folders have a symmetrical structure: for every file contained in the <code>/lib/dish</code> folder, there should be a file inside <code>/spec/dish</code> with the same name and the &#8216;_spec&#8217; suffix.</p>
<p>
Let&#8217;s start by creating a <code>/lib/dish.rb</code> file and add the following code:</p>
<pre>
require &quot;httparty&quot;
Dir[File.dirname(__FILE__) + '/dish/*.rb'].each do |file|
  require file
end
</pre>
<p>It doesn&#8217;t do much: it requires &#8216;httparty&#8217; and then iterates over every <code>.rb</code> file inside <code>/lib/dish</code> to require it. With this file in place, we will be able to add any functionality inside separate files in <code>/lib/dish</code> and have it automatically loaded just by requiring this single file.</p>
<p>Let&#8217;s move to the <code>/spec</code> folder. Here&#8217;s the content of the <code>spec_helper.rb</code> file.</p>
<pre>
#we need the actual library file
require_relative '../lib/dish'
# For Ruby &lt; 1.9.3, use this instead of require_relative
# require(File.expand_path('../../lib/dish', __FILE__))

#dependencies
require 'minitest/autorun'
require 'webmock/minitest'
require 'vcr'
require 'turn'

Turn.config do |c|
 # <img src='http://programmers.biz/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> utline  - turn's original case/test outline mode [default]
 c.format  = <img src='http://programmers.biz/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> utline
 # turn on invoke/execute tracing, enable full backtrace
 c.trace   = true
 # use humanized test names (works only with <img src='http://programmers.biz/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> utline format)
 c.natural = true
end

#VCR config
VCR.config do |c|
  c.cassette_library_dir = 'spec/fixtures/dish_cassettes'
  c.stub_with :webmock
end
</pre>
<p>There&#8217;s quite a few things here worth noting, so let&#8217;s break it piece by piece:</p>
<ul>
<li>At first, we require the main lib file for our app, making the code we want to test available to the test suite. The <code>require_relative</code> statement is a Ruby 1.9.3 addition.
<li>We then require all the library dependencies: <code>minitest/autorun</code> includes all the expectations we will be using, <code>webmock/minitest</code> adds the needed bindings between the two libraries, while <code>vcr</code> and <code>turn</code> are pretty self-explanatory.
<li> The Turn config block merely needs to tweak our test output. We will use the outline format, where we can see the description of our specs.
<li>The VCR config blocks tells VCR to store the requests into a fixture folder (note the relative path) and to use WebMock as a stubbing library (VCR supports some other ones).</p>
</ul>
<p>Last, but not least, the <code>Rakefile</code> that contains some support code:</p>
<pre>
require 'rake/testtask'

Rake::TestTask.new do |t|
  t.test_files = FileList['spec/lib/dish/*_spec.rb']
  t.verbose = true
end

task :default =&gt; test
</pre>
<p>The <code>rake/testtask</code> library includes a <code>TestTask</code> class that is useful to set the location of our test files. From now on, to run our specs, we will only type <code>rake</code> from the library root directory.</p>
<p>As a way to test our configuration, let&#8217;s add the following code to <code>/lib/dish/player.rb</code>:</p>
<pre>
module Dish
  class Player
  end
end
</pre>
<p>Then <code>/spec/lib/dish/player_spec.rb</code>:</p>
<pre>
require_relative '../../spec_helper'
# For Ruby &lt; 1.9.3, use this instead of require_relative
# require (File.expand_path('./../../../spec_helper', __FILE__))

describe Dish::Player do

  it &quot;must work&quot; do
    &quot;Yay!&quot;.must_be_instance_of String
  end

end
</pre>
<p>Running <code>rake</code> should give you one test passing and no errors. This test is by no means useful for our project, yet it implicitly verifies that our library file structure is in place (the <code>describe</code> block would throw an error if the <code>Dish::Player</code> module was not loaded).</p>
<hr />
<h2>First Specs</h2>
<p>To work properly, Dish requires the Httparty modules and the correct <code>base_uri</code>, i.e. the base url of the Dribbble API. Let&#8217;s write the relevant tests for these requirements in <code>player_spec.rb</code>:</p>
<pre>
...
describe Dish::Player do

  describe &quot;default attributes&quot; do

    it &quot;must include httparty methods&quot; do
      Dish::Player.must_include HTTParty
    end

    it &quot;must have the base url set to the Dribble API endpoint&quot; do
      Dish::Player.base_uri.must_equal 'http://api.dribbble.com'
    end

  end

end
</pre>
<p>As you can see, Minitest expectations are self-explanatory, especially if you are an RSpec user: the biggest difference is wording, where Minitest prefers &#8220;must/wont&#8221; to &#8220;should/should_not&#8221;.</p>
<p>Running these tests will show one error and one failure. To have them pass, let&#8217;s add our first lines of implementation code to <code>player.rb</code>:</p>
<pre>
module Dish

  class Player

    include HTTParty

    base_uri 'http://api.dribbble.com'

  end

end
</pre>
<p>Running <code>rake</code> again should show the two specs passing. Now our <code>Player</code> class has access to all Httparty class methods, like <code>get</code> or <code>post</code>.</p>
<hr />
<h2>Recording our First Request</h2>
<p>As we will be working on the <code>Player</code> class, we will need to have API data for a player. The Dribbble API documentation page shows that the endpoint to get data about a specific player is <code>http://api.dribbble.com/players/:id</code></p>
<p>As in typical Rails fashion, <code>:id</code> is either the <em>id</em> or the <em>username</em> of a specific player. We will be using <code>simplebits</code>, the username of Dan Cederholm, one of the Dribbble founders.</p>
<p>To record the request with VCR, let&#8217;s update our <code>player_spec.rb</code> file by adding the following <code>describe</code> block to the spec, right after the first one:</p>
<pre>
  ...

  describe &quot;GET profile&quot; do

  before do
    VCR.insert_cassette 'player', :record =&gt; :new_episodes
  end

  after do
    VCR.eject_cassette
  end

  it &quot;records the fixture&quot; do
    Dish::Player.get('/players/simplebits')
  end

  end

end
</pre>
<blockquote>
<p>After running <code>rake</code>, you can verify that the fixture has been created. From now on, all our tests will be completely network independent.</p>
</blockquote>
<p>The <code>before</code> block is used to execute a specific portion of code before every expectation: we use it to add the VCR macro used to record a fixture that we will call &#8216;player&#8217;. This will create a <code>player.yml</code> file under <code>spec/fixtures/dish_cassettes</code>. The <code>:record</code> option is set to record all new requests once and replay them on every subsequent, identical request. As a proof of concept, we can add a spec whose only aim is to record a fixture for simplebits&#8217;s profile. The <code>after</code> directive tells VCR to remove the cassette after the tests, making sure that everything is properly isolated. The <code>get</code> method on the <code>Player</code> class is made available, thanks to the inclusion of the <code>Httparty</code> module.</p>
<p>After running <code>rake</code>, you can verify that the fixture has been created. From now on, all our tests will be completely network independent.</p>
<hr />
<h2>Getting the Player Profile</h2>
<div><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/c5bf0_02_dribbble.jpg" alt="Dribbble"></div>
<p>Every Dribbble user has a profile that contains a pretty extensive amount of data. Let&#8217;s think about how we would like our library to be when actually used: this is a useful way to flesh out our DSL will work. Here&#8217;s what we want to achieve:</p>
<pre>
simplebits = Dish::Player.new('simplebits')
simplebits.profile
  =&gt; #returns a hash with all the data from the API
simplebits.username
  =&gt; 'simplebits'
simplebits.id
  =&gt; 1
simplebits.shots_count
  =&gt; 157
</pre>
<p>Simple and effective: we want to instantiate a Player by using its username and then get access to its data by calling methods on the instance that map to the attributes returned by the API. We need to be consistent with the API itself.</p>
<p>Let&#8217;s tackle one thing at a time and write some tests related to getting the player data from the API. We can modify our <code>"GET profile"</code> block to have:</p>
<pre>
describe &quot;GET profile&quot; do

  let(:player) { Dish::Player.new }

  before do
    VCR.insert_cassette 'player', :record =&gt; :new_episodes
  end

  after do
    VCR.eject_cassette
  end

  it &quot;must have a profile method&quot; do
    player.must_respond_to :profile
  end

  it &quot;must parse the api response from JSON to Hash&quot; do
    player.profile.must_be_instance_of Hash
  end

  it &quot;must perform the request and get the data&quot; do
    player.profile[&quot;username&quot;].must_equal 'simplebits'
  end

end
</pre>
<p>The <code>let</code> directive at the top creates a <code>Dish::Player</code> instance available in the expectations. Next, we want to make sure that our player has got a profile method whose value is a hash representing the data from the API. As a last step, we test a sample key (the username) to make sure that we actually perform the request.</p>
<p>
Note that we&#8217;re not yet handling how to set the username, as this is a further step. The minimal implementation required is the following:</p>
<pre>
...
class Player

  include HTTParty

  base_uri 'http://api.dribbble.com'

  def profile
    self.class.get '/players/simplebits'
  end

end
...
</pre>
<p>A very little amount of code: we&#8217;re just wrapping a get call in the <code>profile</code> method. We then pass the hardcoded path to retrieve simplebits&#8217;s data, data that we had already stored thanks to VCR.</p>
<p>All our tests should be passing.</p>
<hr />
<h2>Setting the Username</h2>
<p>Now that we have a working profile function, we can take care of the username. Here are the relevant specs:</p>
<pre>
describe &quot;default instance attributes&quot; do

  let(:player) { Dish::Player.new('simplebits') }

  it &quot;must have an id attribute&quot; do
    player.must_respond_to :username
  end

  it &quot;must have the right id&quot; do
    player.username.must_equal 'simplebits'
  end

end

describe &quot;GET profile&quot; do

  let(:player) { Dish::Player.new('simplebits') }

  before do
    VCR.insert_cassette 'base', :record =&gt; :new_episodes
  end

  after do
    VCR.eject_cassette
  end

  it &quot;must have a profile method&quot; do
    player.must_respond_to :profile
  end

  it &quot;must parse the api response from JSON to Hash&quot; do
    player.profile.must_be_instance_of Hash
  end

  it &quot;must get the right profile&quot; do
    player.profile[&quot;username&quot;].must_equal &quot;simplebits&quot;
  end

end
</pre>
<p>We&#8217;ve added a new describe block to check the username we&#8217;re going to add and simply amended the <code>player</code> initialization in the <code>GET profile</code> block to reflect the DSL we want to have. Running the specs now will reveal many errors, as our <code>Player</code> class doesn&#8217;t accept arguments when initialized (for now).</p>
<p>Implementation is very straightforward:</p>
<pre>
...
class Player

  attr_accessor :username

  include HTTParty

  base_uri 'http://api.dribbble.com'

  def initialize(username)
    self.username = username
  end

  def profile
    self.class.get &quot;/players/#{self.username}&quot;
  end

end
...
</pre>
<p>The initialize method gets a username that gets stored inside the class thanks to the <code>attr_accessor</code> method added above. We then change the profile method to interpolate the username attribute.</p>
<p>We should get all our tests passing once again.</p>
<hr />
<h2>Dynamic Attributes</h2>
<p>At a basic level, our lib is in pretty good shape. As profile is a Hash, we could stop here and already use it by passing the key of the attribute we want to get the value for. Our goal, however, is to create an easy to use DSL that has a method for each attribute.</p>
<p>Let&#8217;s think about what we need to achieve. Let&#8217;s assume we have a player instance and stub how it would work:</p>
<pre>
player.username
  =&gt; 'simplebits'
player.shots_count
  =&gt; 157
player.foo_attribute
  =&gt; NoMethodError
</pre>
<p>Let&#8217;s translate this into specs and add them to the <code>GET profile</code> block:</p>
<pre>
...
describe &quot;dynamic attributes&quot; do

  before do
    player.profile
  end

  it &quot;must return the attribute value if present in profile&quot; do
    player.id.must_equal 1
  end

  it &quot;must raise method missing if attribute is not present&quot; do
    lambda { player.foo_attribute }.must_raise NoMethodError
  end

end
...
</pre>
<p>We already have a spec for username, so we don&#8217;t need to add another one. Note a few things:</p>
<ul>
<li>we explicitly call <code>player.profile</code> in a before block, otherwise it will be nil when we try to get the attribute value.</li>
<li>to test that <code>foo_attribute</code> raises an exception, we need to wrap it in a lambda and check that it raises the expected error.</li>
<li>we test that <code>id</code> equals <code>1</code>, as we know that that is the expected value (this is a purely data-dependent test).</li>
</ul>
<p>Implementation-wise, we could define a series of methods to access the <code>profile</code> hash, yet this would create a lot of duplicated logic. Moreover, the would rely on the API result to always have the same keys.</p>
<blockquote>
<p>&#8220;We will rely on <code>method_missing</code> to handle this cases and &#8216;generate&#8217; all those methods on the fly.&#8221;</p>
</blockquote>
<p>Instead, we will rely on <code>method_missing</code> to handle this cases and &#8216;generate&#8217; all those methods on the fly. But what does this mean? Without going into too much metaprogramming, we can simply say that every time we call a method not present on the object, Ruby raises a <code>NoMethodError</code> by using <code>method_missing</code>. By redefining this very method inside a class, we can modify its behaviour.</p>
<p>In our case, we will intercept the <code>method_missing</code> call, verify that the method name that has been called is a key in the profile hash and in case of positive result, return the hash value for that key. If not, we will call <code>super</code> to raise a standard <code>NoMethodError</code>: this is needed to make sure that our library behaves exactly the way any other library would do. In other words, we want to guarantee the least possible surprise.</p>
<p>Let&#8217;s add the following code to the Player class:</p>
<pre>
def method_missing(name)
  if profile.has_key?(name.to_s)
    profile[name.to_s]
  else
    super
  end
end
</pre>
<p>The code does exactly what described above. If you now run the specs, you should have them all pass. I&#8217;d encorage you to add some more to the spec files for some other attribute, like <code>shots_count</code>.</p>
<p>This implementation, however, is not really idiomatic Ruby. It works, but it can be streamlined into a ternary operator, a condensed form of an if-else conditional. It can be rewritten as:</p>
<pre>
def method_missing(name, *args, &amp;block)
  profile.has_key?(name.to_s) ? profile[name.to_s] : super
end
</pre>
<p>It&#8217;s not just a matter of length, but also a matter of consistency and shared conventions between developers. Browsing source code of Ruby gems and libraries is a good way to get accustomed to these conventions.</p>
<hr />
<h2>Caching</h2>
<p>As a final step, we want to make sure that our library is efficient. It should not make any more requests than needed and possibly cache data internally. Once again, let&#8217;s think about how we could use it:</p>
<pre>
player.profile
  =&gt; performs the request and returns a Hash
player.profile
  =&gt; returns the same hash
player.profile(true)
  =&gt; forces the reload of the http request and then returns the hash (with data changes if necessary)
</pre>
<p>How can we test this? We can by using WebMock to enable and disable network connections to the API endpoint. Even if we&#8217;re using VCR fixtures, WebMock can simulate a network Timeout or a different response to the server. In our case, we can test caching by getting the profile once and then disabling the network. By calling <code>player.profile</code> again we should see the same data, while by calling <code>player.profile(true)</code> we should get a <code>Timeout::Error</code>, as the library would try to connect to the (disabled) API endpoint.</p>
<p>Let&#8217;s add another block to the <code>player_spec.rb</code> file, right after <code>dynamic attribute generation</code>:</p>
<pre>
describe &quot;caching&quot; do

  # we use Webmock to disable the network connection after
  # fetching the profile
  before do
    player.profile
    stub_request(:any, /api.dribbble.com/).to_timeout
  end

  it &quot;must cache the profile&quot; do
    player.profile.must_be_instance_of Hash
  end

  it &quot;must refresh the profile if forced&quot; do
    lambda { player.profile(true) }.must_raise Timeout::Error
  end

end
</pre>
<p>The <code>stub_request</code> method intercepts all calls to the API endpoint and simulates a timeout, raising the expected <code>Timeout::Error</code>. As we did before, we test the presence of this error in a lambda.</p>
<p>Implementation can be tricky, so we&#8217;ll split it into two steps. Firstly, let&#8217;s move the actual http request to a private method:</p>
<pre>
...
def profile
  get_profile
end

...

private

def get_profile
  self.class.get(&quot;/players/#{self.username}&quot;)
end
...
</pre>
<p>This will not get our specs passing, as we&#8217;re not caching the result of <code>get_profile</code>. To do that, let&#8217;s change the <code>profile</code> method:</p>
<pre>
...
def profile
  @profile ||= get_profile
end
...
</pre>
<p>We will store the result hash into an instance variable. Also note the <code>||=</code> operator, whose presence makes sure that <code>get_profile</code> is run only if @profile returns a falsy value (like <code>nil</code>).</p>
<p>Next we can add the forced reload directive:</p>
<pre>
...
def profile(force = false)
  force ? @profile = get_profile : @profile ||= get_profile
end
...
</pre>
<p>We&#8217;re using a ternary again: if <code>force</code> is false, we perform <code>get_profile</code> and cache it, if not, we use the logic written in the previous version of this method (i.e. performing the request only if we don&#8217;t have already an hash).</p>
<p>Our specs should be green now and this is also the end of our tutorial.</p>
<hr />
<h2>Wrapping Up</h2>
<p>Our purpose in this tutorial was writing a small and efficient library to interact with the Dribbble API; we&#8217;ve laid the foundation for this to happen. Most of the logic we&#8217;ve written can be abstracted and requesed to access all the other endpoints. Minitest, WebMock and VCR have proven to be valuable tools to help us shape our code.</p>
<p>
We do, however, need to be aware of a small caveat: VCR can become a double-edged sword, as our tests can become too much data-dependent. If, for any reason, the API we&#8217;re building against changes without any visible sign (like a version number), we may risk having our tests perfectly working with a dataset, which is no longer relevant. In that case, removing and recreating the fixture is the best way to make sure that our code still works as expected.</p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feedads.g.doubleclick.net/~a/LER8jqe63jWFyvChbz31gykQOd8/0/da" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/66c44_di" border="0"></img></a><br />
<a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feedads.g.doubleclick.net/~a/LER8jqe63jWFyvChbz31gykQOd8/1/da" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/66c44_di" border="0"></img></a></p>
<div>
<a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=UkklRP6FQRY:yOuKNfaF-Xw:yIl2AUoC8zA" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/66c44_nettuts?d=yIl2AUoC8zA" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=UkklRP6FQRY:yOuKNfaF-Xw:F7zBnMyn0Lo" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/66c44_nettuts?i=UkklRP6FQRY:yOuKNfaF-Xw:F7zBnMyn0Lo" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=UkklRP6FQRY:yOuKNfaF-Xw:V_sGLiPBpWU" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/61601_nettuts?i=UkklRP6FQRY:yOuKNfaF-Xw:V_sGLiPBpWU" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=UkklRP6FQRY:yOuKNfaF-Xw:gIN9vFwOqvQ" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/61601_nettuts?i=UkklRP6FQRY:yOuKNfaF-Xw:gIN9vFwOqvQ" border="0"></img></a> <a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/~ff/nettuts?a=UkklRP6FQRY:yOuKNfaF-Xw:TzevzKxY174" ><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/61601_nettuts?d=TzevzKxY174" border="0"></img></a>
</div>
<p><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/61601_UkklRP6FQRY" height="1" width="1" /></p>
<p><a target="_blank" rel="nofollow" href="http://programmers.biz/goto/http://feeds.feedburner.com/nettuts" >Go to Source</a></p>
<p>Post from: <a href="http://programmers.biz" >Programmers.biz</a><br/><br/><a href="http://programmers.biz/programming/writing-an-api-wrapper-in-ruby-with-tdd" >Writing an API Wrapper in Ruby with TDD</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming/writing-an-api-wrapper-in-ruby-with-tdd/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

