<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://www.etagwerker.com/wp-atom.php">
	<title type="text">Tech Notes From The Trenches</title>
	<subtitle type="text">Ernesto Tagwerker writes about technology</subtitle>

	<updated>2010-09-01T19:33:29Z</updated>
	

	<link rel="alternate" type="text/html" href="http://www.etagwerker.com" />
	<id>http://www.etagwerker.com/feed/atom/</id>
	

			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/etagwerker" /><feedburner:info uri="etagwerker" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>etagwerker</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[how to ignore *.php requests using Apache]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/XODfvAOl4dw/" />
		<id>http://www.etagwerker.com/?p=626</id>
		<updated>2010-09-01T19:33:29Z</updated>
		<published>2010-09-01T19:33:29Z</published>
		<category scheme="http://www.etagwerker.com" term="Ruby programming" /><category scheme="http://www.etagwerker.com" term="open source" /><category scheme="http://www.etagwerker.com" term="web programming" /><category scheme="http://www.etagwerker.com" term="high-quality code" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="rails" /><category scheme="http://www.etagwerker.com" term="web tips" />		<summary type="html"><![CDATA[This will <strong>redirect</strong> any *.php requests to your 404.html and <strong>save resources</strong> in your server.]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2010/09/how-to-ignore-php-requests-using-apache/">&lt;p&gt;I recently deployed a &lt;strong&gt;beta version&lt;/strong&gt; of one of my projects.&lt;/p&gt;
&lt;p&gt;A few days went by and then I started getting &lt;strong&gt;404 email notifications&lt;/strong&gt; to my inbox. It seems that someone was trying to &lt;strong&gt;exploit&lt;/strong&gt; known &lt;strong&gt;PHP issues&lt;/strong&gt; (eg. &lt;strong&gt;phpMyAdmin&lt;/strong&gt; issues, as seen in the picture below)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.etagwerker.com/wp-content/uploads/2010/08/phpExploitsInbox.png"&gt;&lt;img class="size-full wp-image-628 alignnone" title="phpExploitsInbox" src="http://www.etagwerker.com/wp-content/uploads/2010/08/phpExploitsInbox.png" alt="Exception emails due to exploit attempts" width="482" height="395" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is how I solved this issue:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make sure you have &lt;strong&gt;mod_rewrite&lt;/strong&gt; enabled for your Apache&lt;/li&gt;
&lt;li&gt;Write a rule in your &lt;strong&gt;VirtualHost&lt;/strong&gt; that looks like this:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="codecolorer-container xml geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;6&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;VirtualHost&lt;/span&gt; *:80&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; ServerName example.com&lt;br /&gt;
&amp;nbsp; DocumentRoot /path/to/example.com/current/public&lt;br /&gt;
&amp;nbsp; RewriteEngine On&lt;br /&gt;
&amp;nbsp; RewriteRule    ^.*.php$  404.html  [R]&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/VirtualHost&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;This will &lt;strong&gt;redirect&lt;/strong&gt; any *.php requests to your 404.html and &lt;strong&gt;save resources&lt;/strong&gt; in your server.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/XODfvAOl4dw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2010/09/how-to-ignore-php-requests-using-apache/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2010/09/how-to-ignore-php-requests-using-apache/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2010/09/how-to-ignore-php-requests-using-apache/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[getting started with acts_as_state_machine]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/VpZwmJH-kAo/" />
		<id>http://www.etagwerker.com/?p=582</id>
		<updated>2010-08-26T16:04:23Z</updated>
		<published>2010-08-26T15:57:15Z</published>
		<category scheme="http://www.etagwerker.com" term="Ruby programming" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="software engineering" /><category scheme="http://www.etagwerker.com" term="nuby" /><category scheme="http://www.etagwerker.com" term="open source" /><category scheme="http://www.etagwerker.com" term="rails" /><category scheme="http://www.etagwerker.com" term="ruby" /><category scheme="http://www.etagwerker.com" term="rubyisms" />		<summary type="html"><![CDATA[This is a note to self. Remember to define all states for an object before you start referencing it.

If not, you will get an error like this:

"You have a nil object when you didn't expect it! The error occurred while evaluating nil.entering"]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2010/08/getting-started-with-acts_as_state_machine/">&lt;p&gt;This is a &lt;strong&gt;note to self&lt;/strong&gt;. &lt;strong&gt;Remember&lt;/strong&gt; to define &lt;strong&gt;all states&lt;/strong&gt; for an object &lt;strong&gt;before&lt;/strong&gt; you start referencing it.&lt;/p&gt;
&lt;p&gt;If not, you will get an error like this:&lt;br /&gt;
&lt;em&gt; &amp;#8220;You have a nil object when you didn&amp;#8217;t expect it! The error occurred while evaluating nil.entering&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is the &lt;strong&gt;solution&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="codecolorer-container ruby geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;6&lt;br /&gt;7&lt;br /&gt;8&lt;br /&gt;9&lt;br /&gt;10&lt;br /&gt;11&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&lt;span style="color:#9966CC; font-weight:bold;"&gt;class&lt;/span&gt; Squad &lt;span style="color:#006600; font-weight:bold;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#6666ff; font-weight:bold;"&gt;ActiveRecord::Base&lt;/span&gt; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; acts_as_state_machine &lt;span style="color:#ff3333; font-weight:bold;"&gt;:initial&lt;/span&gt; &lt;span style="color:#006600; font-weight:bold;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#ff3333; font-weight:bold;"&gt;:in_progress&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; event &lt;span style="color:#ff3333; font-weight:bold;"&gt;:complete&lt;/span&gt; &lt;span style="color:#9966CC; font-weight:bold;"&gt;do&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; transitions &lt;span style="color:#ff3333; font-weight:bold;"&gt;:from&lt;/span&gt; &lt;span style="color:#006600; font-weight:bold;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#ff3333; font-weight:bold;"&gt;:in_progress&lt;/span&gt;, &lt;span style="color:#ff3333; font-weight:bold;"&gt;:to&lt;/span&gt; &lt;span style="color:#006600; font-weight:bold;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#ff3333; font-weight:bold;"&gt;:completed&lt;/span&gt;,  &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color:#ff3333; font-weight:bold;"&gt;:guard&lt;/span&gt; &lt;span style="color:#006600; font-weight:bold;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#CC0066; font-weight:bold;"&gt;Proc&lt;/span&gt;.&lt;span style="color:#9900CC;"&gt;new&lt;/span&gt; &lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#123;&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;|&lt;/span&gt;s&lt;span style="color:#006600; font-weight:bold;"&gt;|&lt;/span&gt; !s.&lt;span style="color:#9900CC;"&gt;completed_at&lt;/span&gt;.&lt;span style="color:#9900CC;"&gt;blank&lt;/span&gt;? &lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style="color:#9966CC; font-weight:bold;"&gt;end&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; state &lt;span style="color:#ff3333; font-weight:bold;"&gt;:in_progress&lt;/span&gt; &lt;span style="color:#008000; font-style:italic;"&gt;# This is the line I had forgotten to write&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; state &lt;span style="color:#ff3333; font-weight:bold;"&gt;:completed&lt;/span&gt;,  :enter &lt;span style="color:#006600; font-weight:bold;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#ff3333; font-weight:bold;"&gt;:do_complete&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Have fun with &lt;strong&gt;acts_as_state_machine&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;And keep in mind that &lt;strong&gt;acts_as_state_machine&lt;/strong&gt; is not concurrent. Read &lt;a title="AASM Concurrency Issue" href="http://rhnh.net/2010/07/05/acts-as-state-machine-is-not-concurrent" target="_blank"&gt;more here&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/VpZwmJH-kAo" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2010/08/getting-started-with-acts_as_state_machine/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2010/08/getting-started-with-acts_as_state_machine/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2010/08/getting-started-with-acts_as_state_machine/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[how to stub methods in cucumber]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/RGIZFStXnDg/" />
		<id>http://www.etagwerker.com/?p=594</id>
		<updated>2010-08-05T15:55:16Z</updated>
		<published>2010-08-05T15:54:26Z</published>
		<category scheme="http://www.etagwerker.com" term="Uncategorized" />		<summary type="html"><![CDATA[Most of the Cucumber tests that I&#8217;ve written don&#8217;t need stubbing. But the other day I was trying to test a particular feature which integrated with an external service.
Then, stubbing a call to the external service seemed like the best way to go. Fortunately, since Cucumber 0.8.4, mocking and stubbing is now possible without hacks. [...]]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2010/08/how-to-stub-methods-in-cucumber/">&lt;p&gt;Most of the &lt;a title="Just cuke it" href="http://cukes.info/" target="_blank"&gt;Cucumber&lt;/a&gt; tests that I&amp;#8217;ve written don&amp;#8217;t need stubbing. But the other day I was trying to test a particular feature which integrated with an external service.&lt;/p&gt;
&lt;p&gt;Then, stubbing a call to the external service seemed like the best way to go. Fortunately, since Cucumber 0.8.4, mocking and stubbing is now possible without hacks. See: &lt;a title="Cucumber Stubbing &amp;amp; Mocking" href="http://wiki.github.com/aslakhellesoy/cucumber/mocking-and-stubbing-with-cucumber" target="_blank"&gt;Mocking and Stubbing with Cucumber&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is the gist.&lt;/p&gt;
&lt;p&gt;Add this line to your env.rb&lt;/p&gt;
&lt;div class="codecolorer-container ruby geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&lt;span style="color:#CC0066; font-weight:bold;"&gt;require&lt;/span&gt; &lt;span style="color:#996600;"&gt;'spec/stubs/cucumber'&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Start stubbing methods in your steps.rb files&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class="codecolorer-container ruby geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;ExternalService.&lt;span style="color:#9900CC;"&gt;should_receive&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color:#ff3333; font-weight:bold;"&gt;:send&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color:#9900CC;"&gt;and_return&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;my_response&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class="codecolorer-container ruby geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;User.&lt;span style="color:#9900CC;"&gt;should_receive&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color:#ff3333; font-weight:bold;"&gt;:customer_add_success&lt;/span&gt;?&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color:#9900CC;"&gt;and_return&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color:#0000FF; font-weight:bold;"&gt;true&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Next thing I&amp;#8217;d like to do is use stubbing to test features in the feature. For example: Test a feature involving recurring events around daylight time savings time.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/RGIZFStXnDg" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2010/08/how-to-stub-methods-in-cucumber/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2010/08/how-to-stub-methods-in-cucumber/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2010/08/how-to-stub-methods-in-cucumber/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[SVG Javascript chart libraries]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/VQqr70wZIDs/" />
		<id>http://www.etagwerker.com/?p=588</id>
		<updated>2010-07-20T20:14:30Z</updated>
		<published>2010-07-20T20:14:18Z</published>
		<category scheme="http://www.etagwerker.com" term="developer tools" /><category scheme="http://www.etagwerker.com" term="web programming" /><category scheme="http://www.etagwerker.com" term="javascript" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="software development" />		<summary type="html"><![CDATA[The last couple of weeks I worked on a feature that required to display a set of charts. Namely, a pie chart and a bar chart. One of them had to be interactive. We didn't want a Flash chart.

I did some research and found these libraries:

gRaphaël
Highcharts
Google Chart Tools]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2010/07/svg-javascript-charts-libraries/">&lt;p&gt;The last couple of weeks I worked on a feature that required to display a set of charts. Namely, a pie chart and a bar chart. One of them had to be interactive. We didn&amp;#8217;t want a &lt;a title="The Flash" href="http://en.wikipedia.org/wiki/Adobe_Flash" target="_blank"&gt;Flash&lt;/a&gt; chart.&lt;/p&gt;
&lt;p&gt;I did some research and found these libraries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="RaphaelJS Library" href="http://g.raphaeljs.com/" target="_blank"&gt;gRaphaël&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Highcharts Library" href="http://www.highcharts.com" target="_blank"&gt;Highcharts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Google Chart Tools" href="http://code.google.com/apis/chart/" target="_blank"&gt;Google Chart Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is what I think of them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="RaphaelJS Library" href="http://g.raphaeljs.com/" target="_blank"&gt;&lt;strong&gt;gRaphaël&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I liked it from the beginning. I thought it was &lt;strong&gt;simple&lt;/strong&gt; and &lt;strong&gt;straightforward&lt;/strong&gt;. I started using it. But the &lt;strong&gt;lack of documentation&lt;/strong&gt; made me look for &lt;strong&gt;something better&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;One would have to search through &lt;a title="RaphaelJS Issues" href="http://github.com/DmitryBaranovskiy/g.raphael/issues" target="_blank"&gt;all the issues&lt;/a&gt; to find a solution. The &lt;strong&gt;examples&lt;/strong&gt; weren&amp;#8217;t &lt;strong&gt;extensive&lt;/strong&gt; enough for me. And I didn&amp;#8217;t want to scan through &lt;a title="RaphaelJS Source Code" href="http://github.com/DmitryBaranovskiy/g.raphael" target="_blank"&gt;the source code&lt;/a&gt; to find out how to tweak it.&lt;/p&gt;
&lt;p&gt;I would &lt;strong&gt;re-consider&lt;/strong&gt; this library once they write &lt;a title="A work in progress" href="http://g.raphaeljs.com/reference.html" target="_blank"&gt;the documentation&lt;/a&gt;. (Right now it says &amp;#8216;work in progress&amp;#8217;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Highcharts Library" href="http://www.highcharts.com" target="_blank"&gt;&lt;strong&gt;Highcharts&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This library &lt;strong&gt;looks beautiful&lt;/strong&gt;. But the &lt;strong&gt;license&lt;/strong&gt; for it is a bit &lt;strong&gt;expensive&lt;/strong&gt;. And I&amp;#8217;m working on a commercial project. If there wasn&amp;#8217;t a free solution, I would consider it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Google Chart Tools" href="http://code.google.com/apis/chart/" target="_blank"&gt;&lt;strong&gt;Google Chart Tools&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I love this library. It is &lt;strong&gt;very well&lt;/strong&gt; documented. There are a &lt;strong&gt;lot of examples&lt;/strong&gt;. There is even a &lt;a title="Code Playground" href="http://code.google.com/apis/ajax/playground/?type=visualization" target="_blank"&gt;Code Playground&lt;/a&gt; section!&lt;/p&gt;
&lt;p&gt;A few things that could be better:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;customization&lt;/strong&gt; of the look and feel. It could be more customizable.&lt;/li&gt;
&lt;li&gt;If it didn&amp;#8217;t generate an &lt;strong&gt;iframe per chart&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It could be &lt;strong&gt;faster&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But this library was &lt;strong&gt;good enough&lt;/strong&gt; for my feature.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/VQqr70wZIDs" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2010/07/svg-javascript-charts-libraries/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2010/07/svg-javascript-charts-libraries/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2010/07/svg-javascript-charts-libraries/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[&#8220;Aptana Unified Builder&#8221; problem &amp; solution]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/xqdnuHY3QAs/" />
		<id>http://www.etagwerker.com/?p=579</id>
		<updated>2010-07-07T17:56:26Z</updated>
		<published>2010-07-07T17:55:49Z</published>
		<category scheme="http://www.etagwerker.com" term="developer tools" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="environments" /><category scheme="http://www.etagwerker.com" term="productivity tools" /><category scheme="http://www.etagwerker.com" term="software development" />		<summary type="html"><![CDATA[I ran into a problem today with RadRails 2 and its 'Aptana Unified Builder.' I was trying to launch my project and the IDE kept hanging on "Invoking 'Aptana Unified Builder' on '/project'"]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2010/07/aptana-unified-builder-problem-solution/">&lt;p&gt;I ran into a problem today with RadRails 2 and its &amp;#8216;&lt;strong&gt;Aptana Unified Builder&lt;/strong&gt;.&amp;#8217; I was trying to launch my project and &lt;a title="Other people with the same problem" href="https://aptanastudio.tenderapp.com/discussions/problems/755-building-project-aptana-unified-builder-task-dead-locked" target="_blank"&gt;the IDE kept hanging on &amp;#8220;Invoking &amp;#8216;Aptana Unified Builder&amp;#8217;&lt;/a&gt; on &amp;#8216;/project&amp;#8217;&amp;#8221;&lt;/p&gt;
&lt;p&gt;After updating my &lt;a title="Rad Rails" href="http://www.radrails.org/" target="_blank"&gt;RadRails2&lt;/a&gt; with a nightly build and trying different versions of RadRails, Aptana and even RubyMine; this is my &lt;strong&gt;proposed solution&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to Preferences &amp;gt; Run/Debug &amp;gt; Launching.&lt;/li&gt;
&lt;li&gt;Switch &amp;#8216;Wait for ongoing build to complete before launching&amp;#8217; to &amp;#8216;Never.&amp;#8217;&lt;/li&gt;
&lt;li&gt;Switch off &amp;#8216;Build (if required) before launching&amp;#8217;&lt;/li&gt;
&lt;li&gt;Press OK&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That &lt;strong&gt;solved my problem&lt;/strong&gt;. Now back to work!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/xqdnuHY3QAs" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2010/07/aptana-unified-builder-problem-solution/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2010/07/aptana-unified-builder-problem-solution/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2010/07/aptana-unified-builder-problem-solution/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[how to work with git local branches]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/vmbnDWLV7Dg/" />
		<id>http://www.etagwerker.com/?p=546</id>
		<updated>2010-06-25T15:43:58Z</updated>
		<published>2010-06-25T15:42:59Z</published>
		<category scheme="http://www.etagwerker.com" term="developer tools" /><category scheme="http://www.etagwerker.com" term="linux/unix world" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="high-quality code" /><category scheme="http://www.etagwerker.com" term="software development" />		<summary type="html"><![CDATA[Compared to SVN and CVS, I think the best thing about Git is Github. It's awesome how you can see the history of your source code.]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2010/06/how-to-work-with-git-local-branches/">&lt;p&gt;Compared to &lt;a title="SVN" href="http://subversion.tigris.org/" target="_blank"&gt;SVN&lt;/a&gt; and &lt;a title="CVS" href="http://www.nongnu.org/cvs/" target="_blank"&gt;CVS&lt;/a&gt;, I think the best thing about Git is &lt;a title="Github" href="https://github.com/" target="_blank"&gt;Github&lt;/a&gt;. It&amp;#8217;s awesome how you can see the history of your source code.&lt;/p&gt;
&lt;p&gt;So here are the steps to work with &lt;strong&gt;local git branches&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;1. Commit and push the &lt;strong&gt;latest code&lt;/strong&gt; from your local environment&lt;/p&gt;
&lt;div class="codecolorer-container bash geshi" style="border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt;etagwerker&lt;span style="color: #000000; font-weight: bold;"&gt;@&lt;/span&gt;gesell prode&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;$ &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; commit &lt;span style="color: #660033;"&gt;-m&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;My latest stable release&amp;quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt;etagwerker&lt;span style="color: #000000; font-weight: bold;"&gt;@&lt;/span&gt;gesell prode&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;$ &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; push&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;2. Pull the latest code from the server&lt;/p&gt;
&lt;div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt;etagwerker&lt;span style="color: #000000; font-weight: bold;"&gt;@&lt;/span&gt;gesell prode&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;$ &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; pull &lt;span style="color: #660033;"&gt;--rebase&lt;/span&gt;&lt;br /&gt;
Current branch master is up to date.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;3. Create a &lt;strong&gt;new local branch&lt;/strong&gt;&lt;/p&gt;
&lt;div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt;etagwerker&lt;span style="color: #000000; font-weight: bold;"&gt;@&lt;/span&gt;gesell prode&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;$ &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; checkout -b second_round&lt;br /&gt;
Switched to a new branch &lt;span style="color: #ff0000;"&gt;'second_round'&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;4. Modify the code, add a feature, set of features or correct bugs, or whatever you want to do. Finally, &lt;strong&gt;commit all the code&lt;/strong&gt; to your local branch&lt;/p&gt;
&lt;p&gt;5. Switch to the master branch&lt;/p&gt;
&lt;div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt;etagwerker&lt;span style="color: #000000; font-weight: bold;"&gt;@&lt;/span&gt;gesell prode&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;$ &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; checkout master&lt;br /&gt;
Switched to branch &lt;span style="color: #ff0000;"&gt;'master'&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;6. Pull the latest code from the master branch&lt;/p&gt;
&lt;div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt;etagwerker&lt;span style="color: #000000; font-weight: bold;"&gt;@&lt;/span&gt;gesell prode&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;$ &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; pull origin master&lt;br /&gt;
From github.com:&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;etagwerker&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;prode&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;*&lt;/span&gt; branch            master     -&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt; FETCH_HEAD&lt;br /&gt;
Already up-to-date.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;7. &lt;strong&gt;Merge&lt;/strong&gt; the local branch with &lt;strong&gt;master&lt;/strong&gt;&lt;/p&gt;
&lt;div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;6&lt;br /&gt;7&lt;br /&gt;8&lt;br /&gt;9&lt;br /&gt;10&lt;br /&gt;11&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt;etagwerker&lt;span style="color: #000000; font-weight: bold;"&gt;@&lt;/span&gt;gesell prode&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;$ &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; merge second_round&lt;br /&gt;
Updating &lt;span style="color: #000000;"&gt;3043225&lt;/span&gt;..7ca2025&lt;br /&gt;
&lt;br /&gt;
Fast forward&lt;br /&gt;
&lt;br /&gt;
app&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;controllers&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;application_controller.rb          &lt;span style="color: #000000; font-weight: bold;"&gt;|&lt;/span&gt;    &lt;span style="color: #000000;"&gt;5&lt;/span&gt; +++&lt;br /&gt;
app&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;models&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;forecast.rb                             &lt;span style="color: #000000; font-weight: bold;"&gt;|&lt;/span&gt;    &lt;span style="color: #000000;"&gt;4&lt;/span&gt; ++&lt;br /&gt;
config&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;initializers&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;constants.rb                   &lt;span style="color: #000000; font-weight: bold;"&gt;|&lt;/span&gt;    &lt;span style="color: #000000;"&gt;4&lt;/span&gt; ++-&lt;br /&gt;
...&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;20100625123027&lt;/span&gt;_add_round_number_to_games.rb    &lt;span style="color: #000000; font-weight: bold;"&gt;|&lt;/span&gt;   &lt;span style="color: #000000;"&gt;16&lt;/span&gt; ++++++++&lt;br /&gt;
&lt;span style="color: #000000;"&gt;10&lt;/span&gt; files changed, &lt;span style="color: #000000;"&gt;94&lt;/span&gt; insertions&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;+&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;, &lt;span style="color: #000000;"&gt;13&lt;/span&gt; deletions&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;-&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
create mode &lt;span style="color: #000000;"&gt;100644&lt;/span&gt; db&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;migrate&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;20100625123027&lt;/span&gt;_add_round_number_to_games.rb&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;8. &lt;strong&gt;Push the code &lt;/strong&gt;to your remote branch&lt;/p&gt;
&lt;div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;6&lt;br /&gt;7&lt;br /&gt;8&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#91;&lt;/span&gt;etagwerker&lt;span style="color: #000000; font-weight: bold;"&gt;@&lt;/span&gt;gesell prode&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#93;&lt;/span&gt;$ &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; push&lt;br /&gt;
Counting objects: &lt;span style="color: #000000;"&gt;44&lt;/span&gt;, done.&lt;br /&gt;
Delta compression using up to &lt;span style="color: #000000;"&gt;2&lt;/span&gt; threads.&lt;br /&gt;
Compressing objects: &lt;span style="color: #000000;"&gt;100&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;%&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000;"&gt;25&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;25&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;, done.&lt;br /&gt;
Writing objects: &lt;span style="color: #000000;"&gt;100&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;%&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000;"&gt;25&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;25&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;, &lt;span style="color: #000000;"&gt;3.43&lt;/span&gt; KiB, done.&lt;br /&gt;
Total &lt;span style="color: #000000;"&gt;25&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;delta &lt;span style="color: #000000;"&gt;18&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;, reused &lt;span style="color: #000000;"&gt;0&lt;/span&gt; &lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#40;&lt;/span&gt;delta &lt;span style="color: #000000;"&gt;0&lt;/span&gt;&lt;span style="color: #7a0874; font-weight: bold;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
To &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;@&lt;/span&gt;github.com:&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;etagwerker&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;prode.git&lt;br /&gt;
&lt;span style="color: #000000;"&gt;3043225&lt;/span&gt;..7ca2025  master -&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt; master&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;9. And &lt;strong&gt;you are done&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Now you can &lt;strong&gt;work on local branches&lt;/strong&gt; and &lt;strong&gt;merge&lt;/strong&gt; with master whenever you want.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/vmbnDWLV7Dg" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2010/06/how-to-work-with-git-local-branches/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2010/06/how-to-work-with-git-local-branches/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2010/06/how-to-work-with-git-local-branches/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[getting started with Cucumber and Webrat on Rails]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/PXK8nh3yo-Y/" />
		<id>http://www.etagwerker.com/?p=526</id>
		<updated>2010-06-17T19:01:36Z</updated>
		<published>2010-06-17T18:55:52Z</published>
		<category scheme="http://www.etagwerker.com" term="open source" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="web programming" /><category scheme="http://www.etagwerker.com" term="rails" /><category scheme="http://www.etagwerker.com" term="software development" />		<summary type="html"><![CDATA[A couple of months ago I started using Cucumber in one of my projects. I think it&#8217;s a great tool for large projects. It makes it easier for developers joining the project and it gives the development team a lot of confidence when changing the code.
If you have a running set of tests, you know [...]]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2010/06/getting-started-with-cucumber-and-webrat-on-rails/">&lt;p&gt;A couple of months ago I started using &lt;a title="Cucumber BDD" href="http://cukes.info/" target="_blank"&gt;Cucumber&lt;/a&gt; in one of my projects. I think it&amp;#8217;s a great tool for large projects. It makes it easier for developers joining the project and it gives the development team a lot of confidence when changing the code.&lt;/p&gt;
&lt;p&gt;If you have a &lt;strong&gt;running set of tests&lt;/strong&gt;, you know that you can go in, &lt;strong&gt;write a failing test&lt;/strong&gt;, modify the code, add a feature and then run the tests again. If the tests fail, you broke something that was working: fix it. If you didn&amp;#8217;t, &lt;strong&gt;great news&lt;/strong&gt;: you have a &lt;strong&gt;new&lt;/strong&gt; working &lt;strong&gt;feature&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;There is a great &lt;strong&gt;Railscasts&lt;/strong&gt; that explains how to get started: &lt;a title="Railscasts #115" href="http://railscasts.com/episodes/155-beginning-with-cucumber" target="_blank"&gt;http://railscasts.com/episodes/155-beginning-with-cucumber&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is a set of steps to follow.&lt;/p&gt;
&lt;p&gt;1. Create your Rails app&lt;/p&gt;
&lt;pre lang="Ruby"&gt;rails blog&lt;/pre&gt;
&lt;p&gt;2. Add Cucumber and Webrat to your &lt;strong&gt;environment.rb&lt;/strong&gt;&lt;/p&gt;
&lt;pre lang="Ruby"&gt;config.gem 'cucumber',    :lib =&amp;gt; false,
  :version =&amp;gt; '=0.4.3'
config.gem 'webrat',      :lib =&amp;gt; false,
  :version =&amp;gt; '&amp;gt;=0.5.3'
config.gem 'cucumber-rails',      :lib =&amp;gt; false,
  :version =&amp;gt; '&amp;gt;= 0.3.1'&lt;/pre&gt;
&lt;p&gt;3. Install your &lt;strong&gt;gems&lt;/strong&gt;&lt;/p&gt;
&lt;pre lang="Ruby"&gt;cd blog
sudo rake gems:install&lt;/pre&gt;
&lt;p&gt;4. Generate your Cucumber code&lt;/p&gt;
&lt;pre lang="Ruby"&gt;cd blog
./script/generate &lt;strong&gt;cucumber&lt;/strong&gt; --webrat&lt;/pre&gt;
&lt;p&gt;3. Start writing feature files&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;vi features/list_posts.feature&lt;/p&gt;
&lt;pre lang="Ruby"&gt;&lt;strong&gt;Feature&lt;/strong&gt;: Listing all the posts in the blog
&lt;strong&gt;  As a&lt;/strong&gt; user
&lt;strong&gt;  I want to&lt;/strong&gt; see all the posts in the blog&lt;/pre&gt;
&lt;pre lang="Ruby"&gt;&lt;strong&gt;  Scenario&lt;/strong&gt;: I go to the posts list page and I see all the posts
    &lt;strong&gt;Given&lt;/strong&gt; there is a post titled "Awesome post" with content "My cool content"
    &lt;strong&gt;When&lt;/strong&gt; I go to the posts page
    &lt;strong&gt;Then&lt;/strong&gt; I should see what is up
    &lt;strong&gt;And&lt;/strong&gt; I should see "Awesome post"
    &lt;strong&gt;And&lt;/strong&gt; I should see "My cool content"
    &lt;strong&gt;And&lt;/strong&gt; I should not see "New post"&lt;/pre&gt;
&lt;div&gt;4. &lt;strong&gt;Start fixing&lt;/strong&gt; failing tests&lt;/div&gt;
&lt;div&gt;Cucumber will show you:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Passing&lt;/strong&gt; steps&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skipped&lt;/strong&gt; steps: These steps weren&amp;#8217;t evaluated due to failing or undefined step&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failing&lt;/strong&gt; steps: These steps don&amp;#8217;t pass. Something isn&amp;#8217;t working as it should&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Undefined&lt;/strong&gt; steps: These steps aren&amp;#8217;t defined in features/step_definitions/*.rb &amp;#8211; You should define it or make sure you spelled this step correctly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;a title="Webrat" href="http://github.com/brynary/webrat" target="_blank"&gt;Webrat&lt;/a&gt; provides you a lot of useful steps to get started. You can see them in features/step_definitions. I encourage you to go in and check it out.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;5. &lt;strong&gt;Create&lt;/strong&gt; features/step_definitions/general_steps.rb and put this in:&lt;/div&gt;
&lt;div&gt;
&lt;pre lang="Ruby"&gt;Then /^I should see what is up$/ do
  save_and_open_page
end&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;6. &lt;strong&gt;Create&lt;/strong&gt; features/step_definitions/blog_steps.rb and put this in:&lt;/div&gt;
&lt;div&gt;
&lt;pre lang="Ruby"&gt;Given /^there is a post titled "([^\"]*)" with content "([^\"]*)"$/ do |title, content|
  Post.new(:title =&amp;gt; title, :content =&amp;gt; content).save
end&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Note&lt;/strong&gt;: After modifying the database, you will need to run rake db:migrate on your dev environment and then rake db:test:prepare to clone the changes to the cucumber database.&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Have fun&lt;/strong&gt; cuking!&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/PXK8nh3yo-Y" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2010/06/getting-started-with-cucumber-and-webrat-on-rails/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2010/06/getting-started-with-cucumber-and-webrat-on-rails/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2010/06/getting-started-with-cucumber-and-webrat-on-rails/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[please stop overdesigning!]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/h5lYWpsC_9U/" />
		<id>http://www.etagwerker.com/?p=520</id>
		<updated>2010-06-11T14:21:58Z</updated>
		<published>2010-06-11T14:19:52Z</published>
		<category scheme="http://www.etagwerker.com" term="IT services business" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="software engineering" /><category scheme="http://www.etagwerker.com" term="high-quality code" /><category scheme="http://www.etagwerker.com" term="high-quality IT solutions" /><category scheme="http://www.etagwerker.com" term="software development" />		<summary type="html"><![CDATA[Keep it simple, stupid. Or keep it simple stupid. Or keep it simple and straightforward.

But please, do it for other programmers. Do it for yourself. For your own sanity. Stop overdesigning and 'designing for the future.' Stop designing for 'what may happen in the future.' ]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2010/06/kiss-or-please-stop-overdesigning/">&lt;p&gt;Keep it &lt;strong&gt;simple&lt;/strong&gt;, stupid. Or keep it simple stupid. Or keep it simple and &lt;strong&gt;straightforward&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;But please, do it for other programmers. Do it for yourself, for your own sanity. &lt;strong&gt;Stop overdesigning&lt;/strong&gt; and &amp;#8216;designing for the future.&amp;#8217; Stop designing for &amp;#8216;&lt;strong&gt;what may happen&lt;/strong&gt; in the future.&amp;#8217;&lt;/p&gt;
&lt;p&gt;You don&amp;#8217;t need &lt;strong&gt;utterly complicated&lt;/strong&gt; designs. You are not an oracle and you &lt;strong&gt;cannot&lt;/strong&gt; tell what your application will need to do in the future. So please solve a &lt;strong&gt;concrete problem&lt;/strong&gt; and move on.&lt;/p&gt;
&lt;p&gt;95% of the time you &lt;strong&gt;are&lt;/strong&gt; &lt;strong&gt;overdesigning&lt;/strong&gt; your code. &lt;strong&gt;Solve&lt;/strong&gt; a &lt;strong&gt;problem now&lt;/strong&gt;. &lt;strong&gt;Refactor later&lt;/strong&gt;. Thank you!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/h5lYWpsC_9U" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2010/06/kiss-or-please-stop-overdesigning/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2010/06/kiss-or-please-stop-overdesigning/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2010/06/kiss-or-please-stop-overdesigning/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[rails-authorization-plugin first impressions]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/WA4huQkYO04/" />
		<id>http://www.etagwerker.com/?p=487</id>
		<updated>2010-06-01T16:56:54Z</updated>
		<published>2010-06-01T15:51:03Z</published>
		<category scheme="http://www.etagwerker.com" term="developer tools" /><category scheme="http://www.etagwerker.com" term="web programming" /><category scheme="http://www.etagwerker.com" term="high-quality code" /><category scheme="http://www.etagwerker.com" term="open source" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="rails" /><category scheme="http://www.etagwerker.com" term="software development" />		<summary type="html"><![CDATA[I started using the rails-authorization-plugin last week. It is a really awesome and flexible plugin. I don&#8217;t have much to say about it yet.
But there is one thing that I find confusing:
In order to set a role for a user, you can do it like this:

user.is_admin_for(group)

To check if a user has a role, you can [...]]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2010/06/rails-authorization-plugin-first-impressions/">&lt;p&gt;I started using the &lt;strong&gt;rails-authorization-plugin&lt;/strong&gt; last week. It is a really &lt;strong&gt;awesome&lt;/strong&gt; and &lt;strong&gt;flexible&lt;/strong&gt; plugin. I don&amp;#8217;t have much to say about it yet.&lt;/p&gt;
&lt;p&gt;But there is one thing that I find &lt;strong&gt;confusing&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;In order to set a role for a user, you can do it like this:&lt;/p&gt;
&lt;pre lang="Ruby" line="1"&gt;
user.is_admin_for(group)
&lt;/pre&gt;
&lt;p&gt;To check if a user has a role, you can do it like this:&lt;/p&gt;
&lt;pre lang="Ruby" line="1"&gt;
user.is_admin_for?(group)
&lt;/pre&gt;
&lt;p&gt;See the &lt;strong&gt;subtle&lt;/strong&gt; difference? Well, I think the difference is &lt;strong&gt;too subtle&lt;/strong&gt;. Is there a better way to set a role for a user? Haven&amp;#8217;t found it yet.&lt;/p&gt;
&lt;p&gt;Other than that, the plugin is &lt;strong&gt;awesome&lt;/strong&gt;. It&amp;#8217;s super flexible and the integration is pretty seamless. Can&amp;#8217;t wait to learn more about it.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/WA4huQkYO04" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2010/06/rails-authorization-plugin-first-impressions/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2010/06/rails-authorization-plugin-first-impressions/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2010/06/rails-authorization-plugin-first-impressions/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[migrating from SQLite to PostgreSQL via Heroku]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/-_zhfSNi47Y/" />
		<id>http://www.etagwerker.com/?p=489</id>
		<updated>2010-05-20T15:17:19Z</updated>
		<published>2010-05-20T15:14:04Z</published>
		<category scheme="http://www.etagwerker.com" term="developer tools" /><category scheme="http://www.etagwerker.com" term="web programming" /><category scheme="http://www.etagwerker.com" term="environments" /><category scheme="http://www.etagwerker.com" term="heroku" /><category scheme="http://www.etagwerker.com" term="rails" /><category scheme="http://www.etagwerker.com" term="software development" />		<summary type="html"><![CDATA[I had been using SQLite in my development environment, and PostgreSQL in the beta environment for one of my projects, until today. I decided to change to PostgreSQL.

I think it's a good (and almost essential) practice to use the same tools/libraries on development, beta and production.]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2010/05/migrating-from-sqlite-to-postgresql-via-heroku/">&lt;p&gt;I had been using &lt;a title="a DBMS" href="http://www.sqlite.org/" target="_blank"&gt;SQLite&lt;/a&gt; in my &lt;strong&gt;development&lt;/strong&gt; environment, and &lt;a title="another DBMS" href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; in the &lt;strong&gt;beta&lt;/strong&gt; environment for one of my projects, until today. I decided to change to &lt;strong&gt;PostgreSQL&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I think it&amp;#8217;s a &lt;strong&gt;good&lt;/strong&gt; (and almost essential) &lt;strong&gt;practice&lt;/strong&gt; to use the same tools/libraries on &lt;strong&gt;development&lt;/strong&gt;, &lt;strong&gt;beta&lt;/strong&gt; and &lt;strong&gt;production&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is what I did:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Created two &lt;strong&gt;PostgreSQL&lt;/strong&gt; &lt;strong&gt;databases&lt;/strong&gt; locally (app_development &amp;amp; app_test) with &lt;a title="Pretty cool admin GUI " href="http://www.pgadmin.org/" target="_blank"&gt;pgAdmin3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Created a &lt;strong&gt;PostgreSQL&lt;/strong&gt; &lt;strong&gt;user&lt;/strong&gt; (app_user) with &amp;#8216;create database&amp;#8217; privileges&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Changed my &lt;strong&gt;database.yml &lt;/strong&gt;to look like this&lt;/p&gt;
&lt;div class="codecolorer-container php geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;6&lt;br /&gt;7&lt;br /&gt;8&lt;br /&gt;9&lt;br /&gt;10&lt;br /&gt;11&lt;br /&gt;12&lt;br /&gt;13&lt;br /&gt;14&lt;br /&gt;15&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;development&lt;span style="color: #339933;"&gt;:&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; adapter&lt;span style="color: #339933;"&gt;:&lt;/span&gt; postgresql&lt;br /&gt;
&amp;nbsp; database&lt;span style="color: #339933;"&gt;:&lt;/span&gt; app_development&lt;br /&gt;
&amp;nbsp; username&lt;span style="color: #339933;"&gt;:&lt;/span&gt; app_user&lt;br /&gt;
&amp;nbsp; password&lt;span style="color: #339933;"&gt;:&lt;/span&gt; app_pwd&lt;br /&gt;
&amp;nbsp; timeout&lt;span style="color: #339933;"&gt;:&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;5000&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; encoding&lt;span style="color: #339933;"&gt;:&lt;/span&gt; utf8&lt;br /&gt;
&lt;br /&gt;
test&lt;span style="color: #339933;"&gt;:&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&lt;/span&gt;TEST&lt;br /&gt;
&amp;nbsp; adapter&lt;span style="color: #339933;"&gt;:&lt;/span&gt; postgresql&lt;br /&gt;
&amp;nbsp; database&lt;span style="color: #339933;"&gt;:&lt;/span&gt; app_test&lt;br /&gt;
&amp;nbsp; username&lt;span style="color: #339933;"&gt;:&lt;/span&gt; app_user&lt;br /&gt;
&amp;nbsp; password&lt;span style="color: #339933;"&gt;:&lt;/span&gt; app_pwd&lt;br /&gt;
&amp;nbsp; timeout&lt;span style="color: #339933;"&gt;:&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;5000&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; encoding&lt;span style="color: #339933;"&gt;:&lt;/span&gt; utf8&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; Ran heroku db:pull&lt;/p&gt;
&lt;p&gt;That &lt;strong&gt;created&lt;/strong&gt; all the &lt;strong&gt;tables&lt;/strong&gt; in my database and &lt;strong&gt;pulled&lt;/strong&gt; the &lt;strong&gt;data&lt;/strong&gt; from beta.&lt;br /&gt;
This is a &lt;strong&gt;very useful&lt;/strong&gt; way to get new development environments up and running, using &lt;a title="Heroku" href="http://heroku.com/" target="_blank"&gt;Heroku&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/-_zhfSNi47Y" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2010/05/migrating-from-sqlite-to-postgresql-via-heroku/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2010/05/migrating-from-sqlite-to-postgresql-via-heroku/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2010/05/migrating-from-sqlite-to-postgresql-via-heroku/</feedburner:origLink></entry>
	</feed>
