<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>Gabriel Saldaña&#039;s blog &#187; Programming &amp; Web Development</title>
	<atom:link href="http://blog.gabrielsaldana.org/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gabrielsaldana.org</link>
	<description>About emacs, web development, free software and other lifestyle topics</description>
	<lastBuildDate>Mon, 09 Jan 2012 13:11:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/mx/</creativeCommons:license>
		<item>
		<title>Easy CSS editing with Emacs</title>
		<link>http://blog.gabrielsaldana.org/easy-css-editing-with-emacs/</link>
		<comments>http://blog.gabrielsaldana.org/easy-css-editing-with-emacs/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 00:18:00 +0000</pubDate>
		<dc:creator>Gabriel Saldaña</dc:creator>
				<category><![CDATA[Emacs]]></category>
		<category><![CDATA[GNU/Linux Free Software & Open Source]]></category>
		<category><![CDATA[Programming & Web Development]]></category>
		<category><![CDATA[elisp]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[webdevelopment]]></category>

		<guid isPermaLink="false">http://blog.gabrielsaldana.org/?p=994</guid>
		<description><![CDATA[Editing CSS in Emacs is very easy since the standard CSS mode comes included by default. But developer Julien Danjou created this nice minor mode called rainbow-mode which will display the color of the code as the background of the &#8230; <a href="http://blog.gabrielsaldana.org/easy-css-editing-with-emacs/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://blog.gabrielsaldana.org/animate-your-webpage-fast-and-easy-with-facebook-animation-library/' rel='bookmark' title='Animate your webpage fast and easy with Facebook Animation Library'>Animate your webpage fast and easy with Facebook Animation Library</a></li>
<li><a href='http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/' rel='bookmark' title='Easy PHP code test development with SimpleTest unit testing framework'>Easy PHP code test development with SimpleTest unit testing framework</a></li>
<li><a href='http://blog.gabrielsaldana.org/php-syntax-check-as-you-type-with-emacs/' rel='bookmark' title='PHP syntax check as you type with Emacs'>PHP syntax check as you type with Emacs</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.gabrielsaldana.org/wp-content/uploads/2012/01/rainbow-mode.png" alt="rainbow-mode" title="rainbow-mode" width="364" height="308" class="alignnone size-full wp-image-995" /></p>

<p>Editing CSS in Emacs is very easy since the standard CSS mode comes included by default. But developer Julien Danjou created this nice <a href="http://julien.danjou.info/software/rainbow-mode" target="_blank">minor mode called rainbow-mode</a> which will display the color of the code as the background of the code&#8217;s text. It is very useful to immediately see the colors right there in the style sheet instead of trying to remember each code and then test in the browser window. </p>

<p>One of the problems I had was when opening any CSS file, it would open by default css-mode, but I had to manually load rainbow-mode every time. The elisp function <em>auto-mode-alist</em> is used to detect a file type by its name and running a function associated with it, generally the function to enable a major mode to edit that type of file. For minor modes I couldn&#8217;t find anything that would allow me to launch them without inhibiting the mayor mode&#8217;s startup. </p>

<p>So since <em>auto-mode-alist</em> takes a regular expression for the file type and only one function as its arguments, I wrote a function that will run both and use that as the second argument to execute.</p>

<p> 
<code><pre>
;; CSS and Rainbow modes 
(defun all-css-modes() (css-mode) (rainbow-mode)) 

;; Load both major and minor modes in one call based on file type 
(add-to-list 'auto-mode-alist '("\\.css$" . all-css-modes)) 
</pre></code>
</p>

<p>Hope you find it useful and you like the combination of css-mode and rainbow-mode as much as I do.</p>
<p><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-css-editing-with-emacs%2F&amp;linkname=Easy%20CSS%20editing%20with%20Emacs" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-css-editing-with-emacs%2F&amp;linkname=Easy%20CSS%20editing%20with%20Emacs" title="Twitter" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-css-editing-with-emacs%2F&amp;linkname=Easy%20CSS%20editing%20with%20Emacs" title="Facebook" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-css-editing-with-emacs%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-css-editing-with-emacs%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-css-editing-with-emacs%2F&amp;linkname=Easy%20CSS%20editing%20with%20Emacs" title="Google Reader" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-css-editing-with-emacs%2F&amp;linkname=Easy%20CSS%20editing%20with%20Emacs" title="Reddit" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-css-editing-with-emacs%2F&amp;title=Easy%20CSS%20editing%20with%20Emacs" id="wpa2a_2">Share/Bookmark</a></p><p>Related posts:<ol>
<li><a href='http://blog.gabrielsaldana.org/animate-your-webpage-fast-and-easy-with-facebook-animation-library/' rel='bookmark' title='Animate your webpage fast and easy with Facebook Animation Library'>Animate your webpage fast and easy with Facebook Animation Library</a></li>
<li><a href='http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/' rel='bookmark' title='Easy PHP code test development with SimpleTest unit testing framework'>Easy PHP code test development with SimpleTest unit testing framework</a></li>
<li><a href='http://blog.gabrielsaldana.org/php-syntax-check-as-you-type-with-emacs/' rel='bookmark' title='PHP syntax check as you type with Emacs'>PHP syntax check as you type with Emacs</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gabrielsaldana.org/easy-css-editing-with-emacs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/mx/</creativeCommons:license>
	</item>
		<item>
		<title>From my reading links: HTML5 forms and Django, Google API playground and Python development tips</title>
		<link>http://blog.gabrielsaldana.org/from-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips/</link>
		<comments>http://blog.gabrielsaldana.org/from-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 06:05:00 +0000</pubDate>
		<dc:creator>Gabriel Saldaña</dc:creator>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Programming & Web Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[webdevelopment]]></category>

		<guid isPermaLink="false">http://blog.gabrielsaldana.org/?p=974</guid>
		<description><![CDATA[Making Forms fabulous with html5 Great introduction to the new HTML5 form input types and what you can do with them. HTML5 &#8211; Example Form validation and styling Form elements With the new HTML5 form input types and CSS3 properties, &#8230; <a href="http://blog.gabrielsaldana.org/from-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://blog.gabrielsaldana.org/random-links-from-my-bookmarks/' rel='bookmark' title='Random links from my bookmarks'>Random links from my bookmarks</a></li>
<li><a href='http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/' rel='bookmark' title='Easy PHP code test development with SimpleTest unit testing framework'>Easy PHP code test development with SimpleTest unit testing framework</a></li>
<li><a href='http://blog.gabrielsaldana.org/the-importance-of-web-frameworks-in-startup-development-teams/' rel='bookmark' title='The importance of Web frameworks in startup development teams'>The importance of Web frameworks in startup development teams</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<ul> <li><a href="http://www.html5rocks.com/en/tutorials/forms/html5forms/">Making Forms fabulous with html5</a>   Great introduction to the new HTML5 form input types and what you can do with them.  </li> <li><a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/bobleah/entry/html5_example_form_validation_and_form_elements141?lang=en">HTML5 &#8211; Example Form validation and styling Form elements</a>   With the new HTML5 form input types and CSS3 properties, form validation is very quick and easy, as well as nice form element presentation.  </li> <li><a href="http://headjs.com/">Head JS</a>   A very interesting utility that will load all your js scripts (jquery, google analytics, etc) in parallel so page load times get shorter, plus a lot of other nice features like new HTML5 elements styling in browsers that don&#8217;t yet support them like some versions of Internet Explorer.  </li> <li><a href="http://code.google.com/apis/ajax/playground/">Google APIs code playgroud</a>   I didn&#8217;t know you could play with all the Google APIs in a single webpage, testing your code as your write it.  </li> <li><a href="http://invisibleroads.com/tutorials/geodjango-googlemaps-build.html">GeoDjango and google maps</a>   An interesting read if you&#8217;re trying to integrate Google Maps with Django  </li> <li><a href="http://www.thepiepers.net/blog/bryan-pieper/2011/01/html5-django-form-inputs/">HTML5 and Django form inputs</a>   How to render the new HTML5 input types with Django form classes. It doesn&#8217;t require much, really easy and fast.  </li>  <li><a href="http://coder.cl/2010/09/emacs-as-python-ide/">Emacs as Python IDE</a>   A bunch of tips to have a good Emacs Python development environment. I personally don&#8217;t prefer IDEs, so I don&#8217;t use ECB but the rest is very useful.  </li> <li><a href="http://techblog.rosedu.org/python-environment.html">Setting up a Python Environment</a>   Good advice for those coming from a PHP world and are getting started on Python development. I didn&#8217;t know about virtualenv until I had to deploy my first Django app on a shared host web server. Then it all made sense. </li> </ul>
<p><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Ffrom-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips%2F&amp;linkname=From%20my%20reading%20links%3A%20HTML5%20forms%20and%20Django%2C%20Google%20API%20playground%20and%20Python%20development%20tips" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Ffrom-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips%2F&amp;linkname=From%20my%20reading%20links%3A%20HTML5%20forms%20and%20Django%2C%20Google%20API%20playground%20and%20Python%20development%20tips" title="Twitter" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Ffrom-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips%2F&amp;linkname=From%20my%20reading%20links%3A%20HTML5%20forms%20and%20Django%2C%20Google%20API%20playground%20and%20Python%20development%20tips" title="Facebook" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.gabrielsaldana.org%2Ffrom-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.gabrielsaldana.org%2Ffrom-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Ffrom-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips%2F&amp;linkname=From%20my%20reading%20links%3A%20HTML5%20forms%20and%20Django%2C%20Google%20API%20playground%20and%20Python%20development%20tips" title="Google Reader" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Ffrom-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips%2F&amp;linkname=From%20my%20reading%20links%3A%20HTML5%20forms%20and%20Django%2C%20Google%20API%20playground%20and%20Python%20development%20tips" title="Reddit" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.gabrielsaldana.org%2Ffrom-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips%2F&amp;title=From%20my%20reading%20links%3A%20HTML5%20forms%20and%20Django%2C%20Google%20API%20playground%20and%20Python%20development%20tips" id="wpa2a_4">Share/Bookmark</a></p><p>Related posts:<ol>
<li><a href='http://blog.gabrielsaldana.org/random-links-from-my-bookmarks/' rel='bookmark' title='Random links from my bookmarks'>Random links from my bookmarks</a></li>
<li><a href='http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/' rel='bookmark' title='Easy PHP code test development with SimpleTest unit testing framework'>Easy PHP code test development with SimpleTest unit testing framework</a></li>
<li><a href='http://blog.gabrielsaldana.org/the-importance-of-web-frameworks-in-startup-development-teams/' rel='bookmark' title='The importance of Web frameworks in startup development teams'>The importance of Web frameworks in startup development teams</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gabrielsaldana.org/from-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/mx/</creativeCommons:license>
	</item>
		<item>
		<title>The importance of Web frameworks in startup development teams</title>
		<link>http://blog.gabrielsaldana.org/the-importance-of-web-frameworks-in-startup-development-teams/</link>
		<comments>http://blog.gabrielsaldana.org/the-importance-of-web-frameworks-in-startup-development-teams/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 14:08:18 +0000</pubDate>
		<dc:creator>Gabriel Saldaña</dc:creator>
				<category><![CDATA[GNU/Linux Free Software & Open Source]]></category>
		<category><![CDATA[Programming & Web Development]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://blog.gabrielsaldana.org/?p=964</guid>
		<description><![CDATA[In a start-up environment, things happen so fast that there&#8217;s very little time to polish your tools. Code gets done undocumented, development team members come and go with different programming styles and tools, and the chaos just builds up as &#8230; <a href="http://blog.gabrielsaldana.org/the-importance-of-web-frameworks-in-startup-development-teams/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/' rel='bookmark' title='Easy PHP code test development with SimpleTest unit testing framework'>Easy PHP code test development with SimpleTest unit testing framework</a></li>
<li><a href='http://blog.gabrielsaldana.org/command-line-tools-for-web-developers/' rel='bookmark' title='command line tools for web developers'>command line tools for web developers</a></li>
<li><a href='http://blog.gabrielsaldana.org/from-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips/' rel='bookmark' title='From my reading links: HTML5 forms and Django, Google API playground and Python development tips'>From my reading links: HTML5 forms and Django, Google API playground and Python development tips</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/j_p_d/6178848605/" title="SPNP #52 by J_P_D, on Flickr"><img src="http://farm7.static.flickr.com/6177/6178848605_db99c952ae.jpg" width="500" height="345" alt="SPNP #52"/></a></p>

<p>In a start-up environment, things happen so fast that there&#8217;s very little time to polish your tools. Code gets done undocumented, development team members come and go with different programming styles and tools, and the chaos just builds up as the business goes.</p>

<p>At some point, you can&#8217;t finish or maintain something because one team member left the company with the knowledge of the code and without documenting. You either have to spend time figuring out what was done and how it works, or rewrite all that unmanageable code. I&#8217;ve seen this scenario happen too many times.</p>

<p>Just as the saying goes: &#8220;Stand in the shoulders of giants&#8221;, using an open source development framework is essential for the following reasons:</p>

<ul>
<li>Access to lots of documentation, tutorials, forums, etc</li>
<li>Proven working code by a large user community</li>
<li>Everyone knows where to look when a certain change is needed</li>
<li>Development teams scale faster because new hires or people switching project teams can catch up and integrate to the team quickly</li>
<li>Benefit from patches and upgrades from outside your development team</li>
<li>Improve team productivity by not having to spend time writing basic common components from scratch every time</li>
</ul>

<p>Even when using a closed source framework, you still get most of the benefits. Some companies prefer to build their own tools and frameworks. This approach will work out as long as they stay consistent and everybody agrees to use them in a standard way. But unless you&#8217;re addressing a very specific problem or facing a special situation, I recommend you not to reinvent the wheel and use one of the many existing open source development frameworks out there.</p>

<p>Here&#8217;s an old video of a chat with Steve Jobs, where he talks on how to improve productivity and saving time and resources in a development team, by eliminating lines of code to write and taking advantage of what is already out there.</p>

<iframe width="420" height="315" src="http://www.youtube.com/embed/3LEXae1j6EY#t=2452s" frameborder="0" allowfullscreen></iframe>

<h6>Photo: <a href="http://www.flickr.com/photos/j_p_d/6178848605/">SPNP #52 is Creative Commons by J_P_D on Flickr</a></h6>
<p><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Fthe-importance-of-web-frameworks-in-startup-development-teams%2F&amp;linkname=The%20importance%20of%20Web%20frameworks%20in%20startup%20development%20teams" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Fthe-importance-of-web-frameworks-in-startup-development-teams%2F&amp;linkname=The%20importance%20of%20Web%20frameworks%20in%20startup%20development%20teams" title="Twitter" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Fthe-importance-of-web-frameworks-in-startup-development-teams%2F&amp;linkname=The%20importance%20of%20Web%20frameworks%20in%20startup%20development%20teams" title="Facebook" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.gabrielsaldana.org%2Fthe-importance-of-web-frameworks-in-startup-development-teams%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.gabrielsaldana.org%2Fthe-importance-of-web-frameworks-in-startup-development-teams%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Fthe-importance-of-web-frameworks-in-startup-development-teams%2F&amp;linkname=The%20importance%20of%20Web%20frameworks%20in%20startup%20development%20teams" title="Google Reader" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Fthe-importance-of-web-frameworks-in-startup-development-teams%2F&amp;linkname=The%20importance%20of%20Web%20frameworks%20in%20startup%20development%20teams" title="Reddit" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.gabrielsaldana.org%2Fthe-importance-of-web-frameworks-in-startup-development-teams%2F&amp;title=The%20importance%20of%20Web%20frameworks%20in%20startup%20development%20teams" id="wpa2a_6">Share/Bookmark</a></p><p>Related posts:<ol>
<li><a href='http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/' rel='bookmark' title='Easy PHP code test development with SimpleTest unit testing framework'>Easy PHP code test development with SimpleTest unit testing framework</a></li>
<li><a href='http://blog.gabrielsaldana.org/command-line-tools-for-web-developers/' rel='bookmark' title='command line tools for web developers'>command line tools for web developers</a></li>
<li><a href='http://blog.gabrielsaldana.org/from-my-reading-links-html5-forms-and-django-google-api-playground-and-python-development-tips/' rel='bookmark' title='From my reading links: HTML5 forms and Django, Google API playground and Python development tips'>From my reading links: HTML5 forms and Django, Google API playground and Python development tips</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gabrielsaldana.org/the-importance-of-web-frameworks-in-startup-development-teams/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/mx/</creativeCommons:license>
	</item>
		<item>
		<title>Easy PHP code test development with SimpleTest unit testing framework</title>
		<link>http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/</link>
		<comments>http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 05:40:45 +0000</pubDate>
		<dc:creator>Gabriel Saldaña</dc:creator>
				<category><![CDATA[GNU/Linux Free Software & Open Source]]></category>
		<category><![CDATA[Programming & Web Development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[test driven development]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[unit testing]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://blog.gabrielsaldana.org/?p=800</guid>
		<description><![CDATA[Testing is a task every developer has to do eventually on any programming project. You can do it manually after writing all your code to see if it works as you intended, or better yet, before writing your code, using &#8230; <a href="http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://blog.gabrielsaldana.org/php-5-oop-implementation-quirks/' rel='bookmark' title='PHP 5 OOP implementation quirks'>PHP 5 OOP implementation quirks</a></li>
<li><a href='http://blog.gabrielsaldana.org/easy-css-editing-with-emacs/' rel='bookmark' title='Easy CSS editing with Emacs'>Easy CSS editing with Emacs</a></li>
<li><a href='http://blog.gabrielsaldana.org/php-syntax-check-as-you-type-with-emacs/' rel='bookmark' title='PHP syntax check as you type with Emacs'>PHP syntax check as you type with Emacs</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://simpletest.org/images/simpletest-logo.png" alt="Simpletest, Unit Testing for PHP" /></p>

<p>Testing is a task every developer has to do eventually on any programming project. You can do it manually after writing all your code to see if it works as you intended, or better yet, before writing your code, using <a href="http://en.wikipedia.org/wiki/Test-driven_development">test driven development</a> techniques that will save you time and frustrations down the road. One of those techniques is called <a href="http://en.wikipedia.org/wiki/Unit_testing">Unit Testing</a>.</p>

<p>Ideally, unit testing takes place before writing any code. Its a way to plan out how your functions, classes and objects will behave. The basic idea is that you plan the outcomes of each part of your program, then you write those parts to provide that outcome. So think of it as a black box that you will give some input and expect some output. This way you know how objects will be organized, what methods to write in each class, what needs to be their input and how are they going to output the results. Having all your code in tests will help you add new features, change or refactor parts of your code faster without the fear of breaking something else in your software. If you changed something and all your tests still pass, you&#8217;re good to go, if not, you can easily track down where the error is and what got affected.</p>

<p><a href="http://php.net">PHP</a> is famous for having spaghetti code and being too flexible that you can mess things out pretty fast, specially when you&#8217;re not an experienced programmer, or you have a team of developers with different programming styles and experience working on several components of the same project.</p>

<p>Although there are several unit testing frameworks for PHP, I&#8217;ll talk about <a href="http://www.simpletest.org/">SimpleTest</a> since its very light, easy to install and easy to learn. Also, if you&#8217;re a Drupal developer, its the <a href="http://drupal.org/simpletest">testing framework of choice</a>.</p>

<h3>Setup</h3>

<p>To install it, go to the <a href="http://www.simpletest.org/en/download.html">Simpletest download page</a> and get the latest version. Extract the files to your PHP path, or use require_once() calls to the autorun file:</p>

<pre><code>&lt;?php 
require_once('simpletest/autorun.php');
</code></pre>

<h3>Usage</h3>

<p>Here&#8217;s an example of a class&#8217; tests (testfile.php):</p>

<pre><code>&lt;?php
/* SimpleTest framework 
 set the path to where your simpletest folder is located.
 in this case, its in the same directory as the test file */
require_once('simpletest/autorun.php');

/* The class file I want to test */
require_once('myclass.php');

class MyclassTest extends UnitTestCase {

    function testGetList() {
       /* Create instance of class */
       $obj = new MyClass();

       /* call method to test */
       $result = $obj-&gt;getList(5);

       /* test result is an array */
       $this-&gt;assertTrue(is_array($result));

       /* test correct number of output elements */
       $this-&gt;assertEqual(count($result), 5);

       /* make a different call with different parameter */
       $result = $obj-&gt;getList();

       /* confirm that output is always an array, even with 0 elements */
       $this-&gt;assertTrue(is_array($result));
    }
}
</code></pre>

<p>Now you have a basic skeleton of you methods and their behaviors, now you can go ahead and write the real code (myclass.php).</p>

<pre><code>&lt;?php   
class MyClass {
   /**
   * Create a list of numbers
   * @param integer $size The number of elements of the list
   * @return array The list of numbers
   */
   public function getList($size = Null) {
       $list = array();
       if(!$size) {
           return $list;
       } 
       else {
           for($i=0;$i&lt;$size;$i++) {
              $list[] = $i;
           }
       }
       return $list;
   }
}
</code></pre>

<h3>Run it</h3>

<p>Once we&#8217;ve written the class, we can test out its methods by running our tests script. You can do that by using the command line, or by viewing the php script in a browser window.</p>

<p>Personally, I prefer to use the command line for convenience and faster testing without needing even to setup any web server. Running it will look like this:</p>

<pre><code>$ php testfile.php 
testfile.php
OK
Test cases run: 1/1, Passes: 3, Failures: 0, Exceptions: 0
</code></pre>

<h3>Do more</h3>

<p>This is a very small and simple test, but you can also test out the interface of your project. SimpleTest has a browser class that can perform some events like simulating browser visits, doing clicks on your interface&#8217;s links and checking the HTML structure of the web server responses.</p>

<p>Check out the <a href="http://simpletest.org/en/overview.html">full documentation</a>, which is very easily laid out as a <a href="http://simpletest.org/en/first_test_tutorial.html">big tutorial</a>, and start testing all your code!</p>
<p><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-php-code-test-development-with-simpletest-unit-testing-framework%2F&amp;linkname=Easy%20PHP%20code%20test%20development%20with%20SimpleTest%20unit%20testing%20framework" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-php-code-test-development-with-simpletest-unit-testing-framework%2F&amp;linkname=Easy%20PHP%20code%20test%20development%20with%20SimpleTest%20unit%20testing%20framework" title="Twitter" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-php-code-test-development-with-simpletest-unit-testing-framework%2F&amp;linkname=Easy%20PHP%20code%20test%20development%20with%20SimpleTest%20unit%20testing%20framework" title="Facebook" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-php-code-test-development-with-simpletest-unit-testing-framework%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-php-code-test-development-with-simpletest-unit-testing-framework%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-php-code-test-development-with-simpletest-unit-testing-framework%2F&amp;linkname=Easy%20PHP%20code%20test%20development%20with%20SimpleTest%20unit%20testing%20framework" title="Google Reader" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-php-code-test-development-with-simpletest-unit-testing-framework%2F&amp;linkname=Easy%20PHP%20code%20test%20development%20with%20SimpleTest%20unit%20testing%20framework" title="Reddit" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.gabrielsaldana.org%2Feasy-php-code-test-development-with-simpletest-unit-testing-framework%2F&amp;title=Easy%20PHP%20code%20test%20development%20with%20SimpleTest%20unit%20testing%20framework" id="wpa2a_8">Share/Bookmark</a></p><p>Related posts:<ol>
<li><a href='http://blog.gabrielsaldana.org/php-5-oop-implementation-quirks/' rel='bookmark' title='PHP 5 OOP implementation quirks'>PHP 5 OOP implementation quirks</a></li>
<li><a href='http://blog.gabrielsaldana.org/easy-css-editing-with-emacs/' rel='bookmark' title='Easy CSS editing with Emacs'>Easy CSS editing with Emacs</a></li>
<li><a href='http://blog.gabrielsaldana.org/php-syntax-check-as-you-type-with-emacs/' rel='bookmark' title='PHP syntax check as you type with Emacs'>PHP syntax check as you type with Emacs</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/mx/</creativeCommons:license>
	</item>
		<item>
		<title>command line tools for web developers</title>
		<link>http://blog.gabrielsaldana.org/command-line-tools-for-web-developers/</link>
		<comments>http://blog.gabrielsaldana.org/command-line-tools-for-web-developers/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 15:00:10 +0000</pubDate>
		<dc:creator>Gabriel Saldaña</dc:creator>
				<category><![CDATA[GNU/Linux Free Software & Open Source]]></category>
		<category><![CDATA[Programming & Web Development]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://blog.gabrielsaldana.org/?p=605</guid>
		<description><![CDATA[Many people are typically afraid of the terminal. Yes, it might look scary for some, retro for others, but for the practical busy programmer, the terminal is the best tool you can have. Lately for my day job, I&#8217;ve been &#8230; <a href="http://blog.gabrielsaldana.org/command-line-tools-for-web-developers/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://blog.gabrielsaldana.org/the-importance-of-web-frameworks-in-startup-development-teams/' rel='bookmark' title='The importance of Web frameworks in startup development teams'>The importance of Web frameworks in startup development teams</a></li>
<li><a href='http://blog.gabrielsaldana.org/random-links-from-my-bookmarks/' rel='bookmark' title='Random links from my bookmarks'>Random links from my bookmarks</a></li>
<li><a href='http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/' rel='bookmark' title='Easy PHP code test development with SimpleTest unit testing framework'>Easy PHP code test development with SimpleTest unit testing framework</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" rel="external" href="http://flic.kr/p/2qMK1"><img src="http://farm1.static.flickr.com/13/16153058_c5fab2cc29_m.jpg" alt="Computer Data Output" /></a></p>

<p>Many people are typically afraid of the terminal. Yes, it might look scary for some, retro for others, but for the practical busy programmer, the terminal is the best tool you can have.</p>

<p>Lately for my day job, I&#8217;ve been required to work with lots of static web pages, as I&#8217;ve mentioned on several of my previous posts. So for my daily tasks, I&#8217;ve been using a lot of command line tools on the terminal that make my work a lot faster.</p>

<p>Here are some of the tools that I&#8217;ve been using and how I&#8217;ve used them:</p>

<ul>
<li><h3>find</h3>
Helps me list and filter certain types of files for processing. For example <code>find . -name *.html</code> This will give me a list of all files with .html extension under the current directory and subdirectories.</li>

<li><h3>sed</h3>
<a target="_blank" rel="external" href="http://www.gnu.org/software/sed/">GNU sed</a> is very handy to do all kinds of text manipulation without having to write a whole script about it. For example one common task would be search and replace a text or regular expression pattern on a file. Example: <code>sed -e "s/My Search/My replace/g" myfile.html</code></li>

<li><h3>xargs</h3>
This is a &#8216;piping&#8217; command, it will take the output of one tool and place it as arguments for the subsequent tool in the line. Example: <code>find . -name *.temp -print0 | xargs sed -n -e "s/Hello/Goodbye/g"</code> This will find all .temp files, then on each of them will search the word &#8220;Hello&#8221; and will replace it with the word &#8220;Goodbye&#8221;.</li>

<li><h3>tidy</h3>

When you have a bunch of legacy HTML code or &#8220;messy&#8221; (X)HTML documents you must parse, a good idea is to first clean up the code before working with it. <a target="_blank" rel="external" href="http://tidy.sourceforge.net/">Tidy</a> is a command line tool that will help you with the task of cleaning, reformatting and indenting any messy (X)HTML document. It even does a good job cleaning MS Word generated HTML files!</li>

<li><h3>GNU make</h3>

This is an &#8220;old school&#8221; tool, for the ones that grew up with web development and away from C/C++ development. <a target="_blank" rel="external"  href="http://www.gnu.org/software/make/">Make</a> is used to automate certain tasks and in a given order, checking for dependancies. In the web development process, I use make to automate repetitive tasks, such as deploying files to the testing server, making a tag in my version control system and publishing the site on the production server, cleaning up temporary files, and so on. So I write a Makefile with these tasks, and every time I have to upload my code to the testing server I only execute something like <code>make upload</code> and it will do the task. For example, cleaning up all temporary files on my project would involve me doing: <code>find . -name *.temp | xargs rm -rf</code>. I can create a Makefile with the following: 
<code>
clean:
        find . -name *.temp | xargs rm -rf
</code>
then every time I need to cleanup my codebase, I simply run <code>make clean</code> Hope you get the idea <img src='http://blog.gabrielsaldana.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> 
</li>
<li><h3>git</h3>
My preferred version control system for the past 4 years has been <a target="_blank" rel="external" href="http://git-scm.com/">Git</a>. Its a distributed version control system that is very simple and very practical to use because its extremely fast and doesn&#8217;t get in your way while programming. It has lots of features and tools for the everyday tasks and its a very good practice to version control *all* your projects, even if you&#8217;re the only developer of them. Since its distributed, you don&#8217;t need to setup a server for it and you can replicate your repository on any media and with as many copies you like. Version controlling your projects will save you from troubles like accidentally deleting files, or, using local code branches, you can easily experiment new features without affecting your main &#8220;stable&#8221; version of your code. There&#8217;s a lot to say about version controlling and Git and I guess I haven&#8217;t written about it before (strange since its a big topic for me), so I guess I&#8217;ll put more of these details for another post. Just take my advice, use git and version control all your projects. You&#8217;ll thank me later.</li>

<li><h3>rsync</h3>
<a target="_blank" rel="external" href="http://rsync.samba.org/">Rsync</a> is a great tool to synchronize files and directories from one location to another. This can be on the same machine or on different (remote) machines. The typicall use of rsync is for automated backups. You can use it as so, or you can also use it to mirror your website on another folder or machine. I use it to deploy my files on the testing and/or production servers. This way I don&#8217;t have to be worried about forgetting to upload a file, the whole project can be synchronized with one single command on multiple machines. You can configure rsync to connect through ssh (more on this below) to move your files around in a secure, encrypted file transfer.</li>

<li><h3>ssh &#038; scp</h3>
You definately don&#8217;t want your files to be going through the network in plain sight. I know, some might say: &#8220;who cares?&#8221; but really, its better to be paranoid and careful about your data. You never know. So the best way to transport your files from one machine to another is through a secure encrypted channel. This is what <a target="_blank" rel="external" href="http://www.openssh.com/">SSH</a> does for you. With ssh you can connect securely to your server&#8217;s command line to execute command there, or you can securely copy files from one machine to another using scp.</li>
</ul>

<p>There might be several other tools that I use daily but these are the ones more present in my mind as I&#8217;ve been using them a constantly.</p>

<p>What command line tools do you use for your web development tasks? Do you have other ideas on which the tools listed here can be used? Send me your comments, this might get interesting and useful for all of us.</p>
<p><a class="a2a_button_identi_ca" href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Fcommand-line-tools-for-web-developers%2F&amp;linkname=command%20line%20tools%20for%20web%20developers" title="Identi.ca" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/identica.png" width="16" height="16" alt="Identi.ca"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Fcommand-line-tools-for-web-developers%2F&amp;linkname=command%20line%20tools%20for%20web%20developers" title="Twitter" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Fcommand-line-tools-for-web-developers%2F&amp;linkname=command%20line%20tools%20for%20web%20developers" title="Facebook" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.gabrielsaldana.org%2Fcommand-line-tools-for-web-developers%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.gabrielsaldana.org%2Fcommand-line-tools-for-web-developers%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Fcommand-line-tools-for-web-developers%2F&amp;linkname=command%20line%20tools%20for%20web%20developers" title="Google Reader" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fblog.gabrielsaldana.org%2Fcommand-line-tools-for-web-developers%2F&amp;linkname=command%20line%20tools%20for%20web%20developers" title="Reddit" rel="nofollow" target="_blank"><img src="http://blog.gabrielsaldana.org/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.gabrielsaldana.org%2Fcommand-line-tools-for-web-developers%2F&amp;title=command%20line%20tools%20for%20web%20developers" id="wpa2a_10">Share/Bookmark</a></p><p>Related posts:<ol>
<li><a href='http://blog.gabrielsaldana.org/the-importance-of-web-frameworks-in-startup-development-teams/' rel='bookmark' title='The importance of Web frameworks in startup development teams'>The importance of Web frameworks in startup development teams</a></li>
<li><a href='http://blog.gabrielsaldana.org/random-links-from-my-bookmarks/' rel='bookmark' title='Random links from my bookmarks'>Random links from my bookmarks</a></li>
<li><a href='http://blog.gabrielsaldana.org/easy-php-code-test-development-with-simpletest-unit-testing-framework/' rel='bookmark' title='Easy PHP code test development with SimpleTest unit testing framework'>Easy PHP code test development with SimpleTest unit testing framework</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.gabrielsaldana.org/command-line-tools-for-web-developers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/mx/</creativeCommons:license>
	</item>
	</channel>
</rss>

<!-- Served from: blog.gabrielsaldana.org @ 2012-02-07 11:50:05 by W3 Total Cache -->
