<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
 
 <title>Emphasized Insanity</title>
 
 <link href="http://blog.eizesus.com/" />
 <updated>2009-11-10T18:39:56-05:00</updated>
 <id>http://blog.eizesus.com/</id>
 <author>
   <name>Elad Meidar</name>
   <email>elad@eizesus.com</email>
 </author>
 
 
 <link rel="self" href="http://feeds.feedburner.com/EladOnRails" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
   <title>Bag o' Links - 8/11/2009</title>
   <link href="http://feedproxy.google.com/~r/EladOnRails/~3/1JjW7FRlAjk/bag-o-links-8-11-2009" />
   <updated>2009-11-08T00:00:00-05:00</updated>
   <id>http://gitready.com/2009/11/bag-o-links-8-11-2009</id>
   <content type="html">&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.simile-widgets.org/timeline/"&gt;Timeline javascript widget&lt;/a&gt; &amp;#8211; Lots of other cool stuff from the guys that did that  one.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://ianvarley.com/UT/MR/Varley_MastersReport_Full_2009-08-07.pdf" title="PDF"&gt;Non relational databases overview&lt;/a&gt; &amp;#8211; awesome write up by Iam Thomas Varley from the University of Austin,TX.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://code.google.com/closure/"&gt;Closure tools&lt;/a&gt; -The Closure tools help developers to build rich web applications with JavaScript that is both powerful and efficient. The Closure tools include a javascript optimizer, a comprehensive library and a templating system. the optimizers looks solid so far.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.slideshare.net/madrobby/extreme-javascript-performance"&gt;Extreme Javascript performance&lt;/a&gt; &amp;#8211; Slides that will make you a better javascript developer.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.hackido.com/2009/11/install-ruby-on-rails-on-ubuntu-karmic.html" title="Ubuntu 9.10"&gt;Install Ruby on Rails stack on Karmic Koala&lt;/a&gt; &amp;#8211; a fast tutorial for that. glad that&amp;#8217;s covered.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://code.google.com/p/textmate-missingdrawer/"&gt;Textmate&amp;#8217;s missingdrawer&lt;/a&gt; &amp;#8211; get Textmate a nice looking panel instead of that pesky drawer.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.80legs.com/whatitis.html"&gt;Crawl the web with vengeance&lt;/a&gt; &amp;#8211; 80legs is a service platform for web crawling and processing web content. claims to set 50K &amp;#8220;computers&amp;#8221; by your side for a low cost.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://asemanfar.com/Bluepill:-a-new-process-monitoring-tool"&gt;bluepill server monitoring&lt;/a&gt; &amp;#8211; another member to the growing family of ruby based server monitoring tools, seems easier to setup than God and to have a much more readable syntax than monit. hopefully it will live to my expectations.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://bubbletimer.com/"&gt;BubbleTimer &amp;#8211; track your time&lt;/a&gt; &amp;#8211; i was looking the other week for a small app that will tell me how exactly i am dividing my time. I just wanted to know if i can do stuff a little better and when i found this nice little app, it helped me to create a better day schedule. 20$ per year, is kind of a down side thu.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://iplotz.com/index.php"&gt;iPlotz&lt;/a&gt; &amp;#8211; Lately i came to a complete stop with Balsamiq Mockups, it came to a point where i could not use it to wireframe the layout/UI i wanted so i started hunting for a new candidate, this is one of them &amp;#8211; nice, clean and simple. &lt;a href="http://www.flairbuilder.com/"&gt;FlairBuilder&lt;/a&gt; is nice as well but my current fav is &lt;a href="http://www.protoshare.com/"&gt;ProtoShare&lt;/a&gt; &amp;#8211; which also allows collaboration and interactive features.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.digitalhobbit.com/2009/11/08/building-a-twitter-filter-with-sinatra-redis-and-tweetstream/"&gt;Building a twitter filter with sinatra, Redis and TweetStream&lt;/a&gt; &amp;#8211; a tutorial to show the usefulness (maybe) of the new Twitter stream gem, aside from that nice tutorial, if you really want to clear some crap off your twitter stream, head over to &lt;a href="http://tweetmuffler.com/"&gt;TweetMuffler&lt;/a&gt;, awesome tool to set filters on your Twitter timeline, ninja follow and add searches to your timeline, i love it.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.businessinsider.com/how-we-use-mongodb-2009-11"&gt;How this website uses MongoDB&lt;/a&gt; &amp;#8211; real life example to that awesome non relational magic.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://frozenplague.net/2009/11/scoping-by-locales/"&gt;Scoping by locales&lt;/a&gt; &amp;#8211; Ryan Bigg solves another crime.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://agiletesting.blogspot.com/2009/11/automated-deployments-with-puppet-and.html"&gt;Automated deployments with Puppet and Fabric&lt;/a&gt; &amp;#8211; cool tutorial on using Puppet and fabric to automate your server setup.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://javascript.open-libraries.com/multimedia/3d/fantastic-javascript-3d-libraries/"&gt;Javascript 3D libraries&lt;/a&gt; &amp;#8211; neat.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://highscalability.com/blog/2009/11/5/a-yes-for-a-nosql-taxonomy.html"&gt;a Yes for NoSQL taxonomy&lt;/a&gt; &amp;#8211; overview and presentation on NoSQL, current implementations and common libraries.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.pcworld.com/businesscenter/article/181382/paypal_introduces_open_api_to_put_payments_into_apps.html"&gt;PayPal introduces Open &lt;span class="caps"&gt;API&lt;/span&gt;&lt;/a&gt; &amp;#8211; developers gets a better interface. &lt;span class="caps"&gt;FINALLY&lt;/span&gt;!&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.webdesignerdepot.com/2009/11/best-practices-for-6-common-user-interface-elements/"&gt;Best practices for commonly used elements&lt;/a&gt; &amp;#8211; how to design search boxes, expendable content and more in a good way.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://robots.thoughtbot.com/post/215005339/sinatra-at-boston-rb-part-1"&gt;Sinatra and Heroku on Boston.rb&lt;/a&gt; &amp;#8211; This is one aweosme group they have there, this time it a first of a series of posts about Sinatra and Heroku.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://vimeo.com/6702766"&gt;UI fundamentals for programmers&lt;/a&gt; &amp;#8211; awesome presentation, best practices for coding templates and helpers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Treasures&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/paolodona/rails-widgets"&gt;RailsWidgets&lt;/a&gt; &amp;#8211; a collection of UI widgets for rails, not sure what that means exactly.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/tobi/liquid-editor"&gt;Liquid Editor&lt;/a&gt; &amp;#8211; &lt;span class="caps"&gt;HTML&lt;/span&gt; Editor for the liquid language (syntax highlighting, basic error checking etc)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://rdoc.info/projects/jferris/effigy"&gt;effigy&lt;/a&gt; &amp;#8211; Create usable views in Ruby with &lt;span class="caps"&gt;HTML&lt;/span&gt; and &lt;span class="caps"&gt;CSS&lt;/span&gt; selectors.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=1JjW7FRlAjk:5PgUl3bJzIs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=1JjW7FRlAjk:5PgUl3bJzIs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=1JjW7FRlAjk:5PgUl3bJzIs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=1JjW7FRlAjk:5PgUl3bJzIs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=1JjW7FRlAjk:5PgUl3bJzIs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=1JjW7FRlAjk:5PgUl3bJzIs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=1JjW7FRlAjk:5PgUl3bJzIs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=1JjW7FRlAjk:5PgUl3bJzIs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=1JjW7FRlAjk:5PgUl3bJzIs:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=1JjW7FRlAjk:5PgUl3bJzIs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=1JjW7FRlAjk:5PgUl3bJzIs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=1JjW7FRlAjk:5PgUl3bJzIs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EladOnRails/~4/1JjW7FRlAjk" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.eizesus.com/2009/11/bag-o-links-8-11-2009</feedburner:origLink></entry>
 
 <entry>
   <title>Handle Facebook session expiry with Facebooker</title>
   <link href="http://feedproxy.google.com/~r/EladOnRails/~3/qLEweB3ijDo/handle-facebook-session-expiry-with-facebooker" />
   <updated>2009-11-07T00:00:00-05:00</updated>
   <id>http://gitready.com/2009/11/handle-facebook-session-expiry-with-facebooker</id>
   <content type="html">&lt;p&gt;&lt;a href="http://github.com/mmangino/facebooker/"&gt;Facebooker&lt;/a&gt; is the most commonly used ruby interface to the Facebook &lt;span class="caps"&gt;API&lt;/span&gt;. It is considered stable and generally is being kept up to date with the frequent-and-annoying Facebook &lt;span class="caps"&gt;API&lt;/span&gt; changes.&lt;/p&gt;
&lt;p&gt;Facebook has some strict rules you have to consider when using their &lt;span class="caps"&gt;API&lt;/span&gt; and FacebookConnect integration, one &lt;strong&gt;hidden&lt;/strong&gt; rule for example, says something like that:&lt;/p&gt;
&lt;p&gt;&amp;#8220;If you use Facebook Connect on your site, the cookie that we are going to use, is the same cookie we keep for our main site,&lt;br /&gt;
Facebook.com&amp;#8221;&lt;/p&gt;
&lt;p&gt;Meaning basically that if a user is connected to your application (via Connect or through &lt;span class="caps"&gt;FBML&lt;/span&gt;, doesn&amp;#8217;t really matter if it&amp;#8217;s &lt;span class="caps"&gt;FBML&lt;/span&gt;) and &lt;strong&gt;he or she logs out of the main facebook site, they will also log out from the Facebook session on your application&lt;/strong&gt;. Basically saying, that the user&amp;#8217;s facebook session in your application, can be reseted without an explicit action from the user on your site. epic win facebook.&lt;/p&gt;
&lt;p&gt;In order to handle that kind of situation you&amp;#8217;ll have to rescue the &lt;code&gt;Facebooker::Session::SessionExpired&lt;/code&gt; and use the failsafe Rails method named &lt;code&gt;rescue_from&lt;/code&gt;:&lt;/p&gt;
&lt;script src="http://gist.github.com/229150.js"&gt;&lt;/script&gt;&lt;p&gt;This will clear up all the Facebook remnants in your user&amp;#8217;s session and will force him to reload.&lt;/p&gt;
&lt;p&gt;Note that if the user granted you with the &amp;#8220;offline access&amp;#8221; permission and you saved the credentials, you will be able to restore the session without notifying the user.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=qLEweB3ijDo:7Miauclf_9o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=qLEweB3ijDo:7Miauclf_9o:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=qLEweB3ijDo:7Miauclf_9o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=qLEweB3ijDo:7Miauclf_9o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=qLEweB3ijDo:7Miauclf_9o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=qLEweB3ijDo:7Miauclf_9o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=qLEweB3ijDo:7Miauclf_9o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=qLEweB3ijDo:7Miauclf_9o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=qLEweB3ijDo:7Miauclf_9o:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=qLEweB3ijDo:7Miauclf_9o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=qLEweB3ijDo:7Miauclf_9o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=qLEweB3ijDo:7Miauclf_9o:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EladOnRails/~4/qLEweB3ijDo" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.eizesus.com/2009/11/handle-facebook-session-expiry-with-facebooker</feedburner:origLink></entry>
 
 <entry>
   <title>Bag O' Links - 3/11/2009</title>
   <link href="http://feedproxy.google.com/~r/EladOnRails/~3/kaDy3Y2FSY8/bag-o-links-3-11-2009" />
   <updated>2009-11-04T00:00:00-05:00</updated>
   <id>http://gitready.com/2009/11/bag-o-links-3-11-2009</id>
   <content type="html">&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://drnicwilliams.com/2009/11/03/first-look-at-rails-3-0-pre/"&gt;First look at Rails 3.0.pre&lt;/a&gt; &amp;#8211; Dr Nic&amp;#8217;s first attempt on the upcoming Rails 3 pre release.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.slideshare.net/ihower/rails-best-practices"&gt;Rails practices slide&lt;/a&gt; &amp;#8211; this one has actually more than 2 good ideas inside.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://mediumexposure.com/2009/10/27/drier-gem-configs"&gt;drier gem configs&lt;/a&gt; &amp;#8211; &lt;a href="http://twitter.com/hakunin"&gt;@hakunin&lt;/a&gt; is doing it again, now a better more readable way to specify your &lt;code&gt;config.gem&lt;/code&gt;.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.admixweb.com/2009/05/20/how-to-easily-create-a-javascript-framework-part-1/"&gt;Easily create a javascript framework&lt;/a&gt; &amp;#8211; obviously a lie, thu worth the read.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.devcurry.com/2009/11/7-free-tools-to-minify-your-scripts-and.html"&gt;Javascript minifying tools&lt;/a&gt; &amp;#8211; a quick set of tools for reference.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://railstips.org/2009/11/4/know-when-to-fold-em"&gt;Know when to fold&amp;#8217;em&lt;/a&gt; &amp;#8211; one way to handle too many open source projects.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://git-wt-commit.rubyforge.org/#git-wtf"&gt;git-wtf&lt;/a&gt; &amp;#8211; a script to display the state of your repository in a readable and easy-to-scan format.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://yehudakatz.com/2009/11/03/using-the-new-gem-bundler-today/"&gt;using the new gem bundler&lt;/a&gt; &amp;#8211; this will be an integrated part into Rails 3, better start now.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://whynotwiki.com/Ruby_/_Method_aliasing_and_chaining"&gt;method aliasing in Ruby&lt;/a&gt; &amp;#8211; and why chaining is potentially evil.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://abduzeedo.com/web-design-pixelmator"&gt;web design with pixelmator&lt;/a&gt; &amp;#8211; meh, but i like pixel mator.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.viget.com/extend/re-introducing-simple-importer/"&gt;simple_importer tutorial&lt;/a&gt; &amp;#8211; how to import csv into your Rails app.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.w3.org/"&gt;w3c gets a new home&lt;/a&gt; &amp;#8211; navigation totally changed, not sure if it&amp;#8217;s right or not.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://railstips.org/2009/6/27/mongomapper-the-rad-mongo-wrapper"&gt;Using MongoMapper&lt;/a&gt; &amp;#8211; a brief tutorial on how to use this MongoDB OM gem.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Treasures&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/timcharper/spork"&gt;spork&lt;/a&gt; &amp;#8211; A DRb server for testing frameworks (RSpec / Cucumber currently) that forks before each run to ensure a clean testing state.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/defunkt/resque"&gt;resque&lt;/a&gt; &amp;#8211; A simple Redis-based queue.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://sourceforge.net/projects/automysqlbackup/"&gt;autoMySQLBackup&lt;/a&gt; &amp;#8211; A script to take daily, weekly and monthly backups of your MySQL databases using mysqldump.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/hardbap/trap_door"&gt;trap_door&lt;/a&gt; &amp;#8211; lure those spam bots into oblivion.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/jpsilvashy/fluid-grid-system"&gt;fluid_grid_system&lt;/a&gt; &amp;#8211; A lightwieght &lt;span class="caps"&gt;XHTML&lt;/span&gt;/&lt;span class="caps"&gt;CSS&lt;/span&gt; framework that follows both the typographic grid, and also baseline grid&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/bmabey/faketwitter"&gt;faketwitter&lt;/a&gt; &amp;#8211; a fakeweb extension to fake twitter responses.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=kaDy3Y2FSY8:3rHU4IHNmXQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=kaDy3Y2FSY8:3rHU4IHNmXQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=kaDy3Y2FSY8:3rHU4IHNmXQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=kaDy3Y2FSY8:3rHU4IHNmXQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=kaDy3Y2FSY8:3rHU4IHNmXQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=kaDy3Y2FSY8:3rHU4IHNmXQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=kaDy3Y2FSY8:3rHU4IHNmXQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=kaDy3Y2FSY8:3rHU4IHNmXQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=kaDy3Y2FSY8:3rHU4IHNmXQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=kaDy3Y2FSY8:3rHU4IHNmXQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=kaDy3Y2FSY8:3rHU4IHNmXQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=kaDy3Y2FSY8:3rHU4IHNmXQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EladOnRails/~4/kaDy3Y2FSY8" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.eizesus.com/2009/11/bag-o-links-3-11-2009</feedburner:origLink></entry>
 
 <entry>
   <title>Bag O' Links - 30/10/2009</title>
   <link href="http://feedproxy.google.com/~r/EladOnRails/~3/ghP4vIWUT84/bag-o-links-30-10-2009" />
   <updated>2009-10-30T00:00:00-04:00</updated>
   <id>http://gitready.com/2009/10/bag-o-links-30-10-2009</id>
   <content type="html">&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://code.quirkey.com/sammy/"&gt;sammy&lt;/a&gt; &amp;#8211; super awesome javascript &lt;span class="caps"&gt;MVC&lt;/span&gt; framework, based on jQuery and feels like sinatra. looking good.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://documentcloud.github.com/underscore/"&gt;underscore.js&lt;/a&gt; &amp;#8211; a functional javascript library, based on jQuery too with some cool extends to javascript objects. pay attention to the discussion on &lt;a href="http://www.reddit.com/r/programming/comments/9ymld/underscorejs_functional_programming_for_jquery/"&gt;Reddit&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.slideshare.net/napcs/intro-to-ruby-twin-cities-code-camp-7?src=embed"&gt;intro to Ruby &amp;#8211; by Brian Hogan&lt;/a&gt; &amp;#8211; awesome slides by &lt;a href="http://twitter.com/bphogan"&gt;@bphogan&lt;/a&gt;, bare through the &amp;#8220;Programming is fun&amp;#8221; slide and enjoy :)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.positioniseverything.net/explorer.html"&gt;Explorer Exposed&lt;/a&gt; &amp;#8211; common bugs and fixes for IE hell.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www-cs-students.stanford.edu/~blynn/gitmagic/book.html"&gt;Git Magic&lt;/a&gt; &amp;#8211; another new Git book for all of you infidels/&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://280atlas.com/"&gt;Atlas&lt;/a&gt; &amp;#8211; an Xcode style Interface builder for web applications, coming soon.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://frozenplague.net/2009/10/size-count/"&gt;cache_counter gotachs&lt;/a&gt; &amp;#8211; a warning from Ryan Bigg.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labuschin.com/rails"&gt;300 rails links&lt;/a&gt; &amp;#8211; i don&amp;#8217;t know how updated it is, use at your own risk.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://hadoop.apache.org/pig/"&gt;pig&lt;/a&gt; &amp;#8211; an Hadoop high level abstraction of parallel processing, super neat.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://openmonkey.com/articles/2009/07/thinking-sphinx-rspec-matchers"&gt;ThinkingSphinx RSpec matchers&lt;/a&gt; &amp;#8211; test Thinking Spinx&amp;#8217;s setup block.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://devver.net/blog/2009/10/improving-code-using-metric-fu/"&gt;imporving your code with Metric_fu&lt;/a&gt; &amp;#8211; a good article from Devver.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.developerzen.com/2009/10/29/building-an-iphone-application/"&gt;Building an iPhone Application&lt;/a&gt; &amp;#8211; a good post by DeveloperZen, covering the creation of a new application and the tools they used.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://mediumexposure.com/2009/10/28/github"&gt;Off github&lt;/a&gt; &amp;#8211; a solution by &lt;a href="http://twitter.com/hakunin"&gt;@hakunin&lt;/a&gt; to help in migrating your gems from github to gemcutter.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Treasures&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/ezmobius/nanite"&gt;nanite&lt;/a&gt; &amp;#8211; scalable message queueing.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/nelsonsilva/yUMLmeRails"&gt;yUMLmeRails&lt;/a&gt; &amp;#8211; Use yUML to generate Rails diagrams using RailRoad and Shoes&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/marcinbunsch/quick_serve"&gt;quick_serve&lt;/a&gt; &amp;#8211; a super-simple way of serving static files for development. It was made mainly for javascript and css development, but might have other uses.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=ghP4vIWUT84:r8D4hAt1hKU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=ghP4vIWUT84:r8D4hAt1hKU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=ghP4vIWUT84:r8D4hAt1hKU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=ghP4vIWUT84:r8D4hAt1hKU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=ghP4vIWUT84:r8D4hAt1hKU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=ghP4vIWUT84:r8D4hAt1hKU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=ghP4vIWUT84:r8D4hAt1hKU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=ghP4vIWUT84:r8D4hAt1hKU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=ghP4vIWUT84:r8D4hAt1hKU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=ghP4vIWUT84:r8D4hAt1hKU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=ghP4vIWUT84:r8D4hAt1hKU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=ghP4vIWUT84:r8D4hAt1hKU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EladOnRails/~4/ghP4vIWUT84" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.eizesus.com/2009/10/bag-o-links-30-10-2009</feedburner:origLink></entry>
 
 <entry>
   <title>Using BlackBird javascript console in Rails</title>
   <link href="http://feedproxy.google.com/~r/EladOnRails/~3/OjIO3h1oWnE/using-blackbird-javascript-console-in-rails" />
   <updated>2009-10-28T00:00:00-04:00</updated>
   <id>http://gitready.com/2009/10/using-blackbird-javascript-console-in-rails</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.gscottolson.com/blackbirdjs/"&gt;BlackBird&lt;/a&gt; offers a dead-simple way to log messages in JavaScript and an attractive console to view and filter them. Although most of us are already familiar with the FireBug &lt;code&gt;console&lt;/code&gt;, BlackBird supplies us with an easy, simple and Cross Browser live console that is available upfront anytime you&amp;#8217;d like.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://github.com/eladmeidar/blackbird_rails"&gt;BlackBird_rails&lt;/a&gt; is a plugin i created to simplify the integration of BlackBird into your rails applications, simply install it by invoking:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
&amp;gt; script/plugin install git://github.com/eladmeidar/blackbird_rails.git&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;and the required javascripts, stylesheets and images will be copied into your &lt;code&gt;public/&lt;/code&gt; folder. Next thing you&amp;#8217;ll probably want to do is adding the &lt;code&gt;include_black_bird&lt;/code&gt; snippet into your &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; block:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
&lt;html&gt;&lt;br /&gt;
  &lt;head&gt;&lt;br /&gt;
    &amp;lt;%= include_black_bird %&amp;gt;&lt;br /&gt;
    &amp;#8230;&lt;/p&gt;
&lt;/head&gt;
&lt;p&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Which will add the blackbird javascript and &lt;span class="caps"&gt;CSS&lt;/span&gt; tags. It&amp;#8217;s also important to point out, that the helper will only generate these tags when running the development environment, so you are hassle free regarding that matter.&lt;br /&gt;
you&amp;#8217;ll still be required to remove all &lt;code&gt;log.something&lt;/code&gt; calls in your javascript source, otherwise IE is going to be mad at you.&lt;/p&gt;
&lt;p&gt;From this point on, you can use BlackBird exactly as the home page explains.&lt;/p&gt;
&lt;h4&gt;Quick Tip&lt;/h4&gt;
&lt;p&gt;Drag this bookmartlets into your favorites toolbar and you&amp;#8217;ll be able to:&lt;/p&gt;
&lt;ul&gt;
          &lt;li&gt;&lt;a href="javascript:log.clear();"&gt;clear&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href="javascript:log.move();"&gt;move&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href="javascript:log.resize();"&gt;resize&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;and &lt;a href="javascript:log.toggle();"&gt;toggle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;your BlackBird window anytime you&amp;#8217;d like.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=OjIO3h1oWnE:nKihEMx7R_0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=OjIO3h1oWnE:nKihEMx7R_0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=OjIO3h1oWnE:nKihEMx7R_0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=OjIO3h1oWnE:nKihEMx7R_0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=OjIO3h1oWnE:nKihEMx7R_0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=OjIO3h1oWnE:nKihEMx7R_0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=OjIO3h1oWnE:nKihEMx7R_0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=OjIO3h1oWnE:nKihEMx7R_0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=OjIO3h1oWnE:nKihEMx7R_0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=OjIO3h1oWnE:nKihEMx7R_0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=OjIO3h1oWnE:nKihEMx7R_0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=OjIO3h1oWnE:nKihEMx7R_0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EladOnRails/~4/OjIO3h1oWnE" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.eizesus.com/2009/10/using-blackbird-javascript-console-in-rails</feedburner:origLink></entry>
 
 <entry>
   <title>Bag O' Links - 27/10/2009</title>
   <link href="http://feedproxy.google.com/~r/EladOnRails/~3/7zXzGQ9ljr0/bag-o-links-27-10-2009" />
   <updated>2009-10-27T00:00:00-04:00</updated>
   <id>http://gitready.com/2009/10/bag-o-links-27-10-2009</id>
   <content type="html">&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://juicejs.org/"&gt;Juice&lt;/a&gt; &amp;#8211; Juice is a javascript server-side web framework, i am not a fan of server side javascript, but i keep the options open.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://drnicwilliams.com/2009/10/06/install-any-html-themetemplate-into-your-rails-app/"&gt;Dr Nic&amp;#8217;s install-theme&lt;/a&gt; &amp;#8211; import any &lt;span class="caps"&gt;HTML&lt;/span&gt; template to your rails projects, a brief tutorial.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.foreui.com/"&gt;Foreui&lt;/a&gt; &amp;#8211; a mockup design application, looks a bit more packed than Balsamiq Mockups.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.elctech.com/articles/good-ruby-times"&gt;Good Ruby Times&lt;/a&gt; &amp;#8211; some advices and practice ideas for a bunch of code reviews, good stuff to read and learn.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.elctech.com/articles/amazon-s-mysql-in-the-cloud-rds"&gt;Amazon&amp;#8217;s &lt;span class="caps"&gt;RDS&lt;/span&gt;&lt;/a&gt; &amp;#8211; Amazon recently released their new MySQL Relational Database Service, this is a good post on the aspects, usage and observations of using &lt;span class="caps"&gt;RDS&lt;/span&gt;.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.1kbgrid.com/"&gt;1K grid&lt;/a&gt; &amp;#8211; a small neat &lt;span class="caps"&gt;CSS&lt;/span&gt; grid layout generator.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.bigrecord.org/getting-started/"&gt;BigRecord&lt;/a&gt; &amp;#8211; Column-oriented Data Mapping for Ruby on Rails, not that i have any idea what that is.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://update.gemcutter.org/2009/10/26/transition.html"&gt;RubyGems.org&lt;/a&gt; &amp;#8211; GemCutter becomes the #1 source for Ruby gems.&lt;/li&gt;
	&lt;li&gt;and on that note &lt;a href="http://github.com/maxim/off_github"&gt;move your gems to gemcutter&lt;/a&gt; &amp;#8211; a gem from &lt;a href="http://twitter.com/hakunin"&gt;hakunin&lt;/a&gt; that helps in the process.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://speckyboy.com/2009/10/26/the-blueprint-css-framework-tutorials-how-to-guides-and-tools/"&gt;BluePrint &lt;span class="caps"&gt;CSS&lt;/span&gt; tutorials&lt;/a&gt; &amp;#8211; a brief tutorial.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://ecsstender.org/"&gt;eCSStender&lt;/a&gt; &amp;#8211; subdue browsers to your &lt;span class="caps"&gt;CSS&lt;/span&gt;.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.devwords.com/12-flash-like-jquery-effects/"&gt;Flash like jQuery&lt;/a&gt; &amp;#8211; games, effects and other fun-ness.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://coderack.org/"&gt;CodeRack&lt;/a&gt; &amp;#8211; a Rack Middleware competition, those of you who care about Rack existence, will find some cool stuff in the projects list.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://jsbin.com/"&gt;jsbin&lt;/a&gt; &amp;#8211; live javascript debugging.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.viget.com/extend/nosql-misconceptions/"&gt;NoSQL misconceptions&lt;/a&gt; &amp;#8211; some explaining done by the guys at viget.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://ruby-metaprogramming.heroku.com/"&gt;Ruby Metaprogramming first steps&lt;/a&gt; &amp;#8211; How, when, where and why.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://googlewebmastercentral.blogspot.com/2009/10/help-us-make-web-better-update-on-rich.html"&gt;Google&amp;#8217;s attention to &lt;span class="caps"&gt;RDF&lt;/span&gt; and Microformats&lt;/a&gt; &amp;#8211; a small change in attitude.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.tripwiremagazine.com/tutorials/tutorials/jquery-and-general-javascript-tips-to-improve-your-code.html"&gt;Better jQuery and JS coding&lt;/a&gt; &amp;#8211; nice tips. i didn&amp;#8217;t know about &lt;code&gt;$(selector).data&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Treasures&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/stefankroes/ancestry"&gt;Ancestry&lt;/a&gt; &amp;#8211; Organise ActiveRecord model into a tree structure, extra methods included.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/zilkey/active_hash"&gt;ActiveHash&lt;/a&gt; &amp;#8211; A readonly ActiveRecord-esque base class that lets you use a hash, a Yaml file or a custom file as the datasource.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://code.google.com/p/roma-prj/"&gt;&lt;span class="caps"&gt;ROMA&lt;/span&gt;&lt;/a&gt; &amp;#8211; key value store for Ruby (among others).&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/alno/irwi"&gt;Irwi&lt;/a&gt; &amp;#8211; Wiki plugin for ruby on rails.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/hafriedlander/jquery.concrete"&gt;jquery.concrete&lt;/a&gt; &amp;#8211; Concrete UI programming library for jQuery&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/parolkar/geo_mere_laal"&gt;geo_mere_laal&lt;/a&gt; &amp;#8211; integrate browser locationing in rails.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/michel/interfaceLift"&gt;interfacelift&lt;/a&gt; &amp;#8211; a collection of templates for rails applications.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=7zXzGQ9ljr0:TsGXxLKH7mI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=7zXzGQ9ljr0:TsGXxLKH7mI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=7zXzGQ9ljr0:TsGXxLKH7mI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=7zXzGQ9ljr0:TsGXxLKH7mI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=7zXzGQ9ljr0:TsGXxLKH7mI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=7zXzGQ9ljr0:TsGXxLKH7mI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=7zXzGQ9ljr0:TsGXxLKH7mI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=7zXzGQ9ljr0:TsGXxLKH7mI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=7zXzGQ9ljr0:TsGXxLKH7mI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=7zXzGQ9ljr0:TsGXxLKH7mI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=7zXzGQ9ljr0:TsGXxLKH7mI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=7zXzGQ9ljr0:TsGXxLKH7mI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EladOnRails/~4/7zXzGQ9ljr0" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.eizesus.com/2009/10/bag-o-links-27-10-2009</feedburner:origLink></entry>
 
 <entry>
   <title>fields_for nested attributes - current child index</title>
   <link href="http://feedproxy.google.com/~r/EladOnRails/~3/plM8wDfbHPE/fields_for-nested-attributes-current-child-index" />
   <updated>2009-10-25T00:00:00-04:00</updated>
   <id>http://gitready.com/2009/10/fields_for-nested-attributes-current-child-index</id>
   <content type="html">&lt;div class="note"&gt;
i created a better version of this fix as a &lt;a href="https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/3426-current-child-index-on-fields_for-nested-attributes"&gt;patch&lt;/a&gt; for Rails 2.3.x (2-3-stable branch on github)
&lt;/div&gt;
&lt;p&gt;Recently (2 hours ago) i started working on a complex form for one of our applications, it came to the point where i had to use the current child index in an &lt;a href="http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes"&gt;accepts_nested_attributes_for&lt;/a&gt; form packed with javascript ninja maneuvers.&lt;/p&gt;
&lt;p&gt;Surprisingly, i didn&amp;#8217;t find anyway to do it. ( Another patch is waiting to the next &lt;a href="http://wiki.railsbridge.org/projects/railsbridge/wiki/BugMash"&gt;BugMash&lt;/a&gt; festival).&lt;/p&gt;
&lt;p&gt;Trying to find some ways to access it, i turned to the rails code (always a good idea to have a frozen rails in your &lt;code&gt;vendor/&lt;/code&gt;) and tracked down the method that is responsible for rendering the &lt;code&gt;fields_for&lt;/code&gt; nested attributes in the &lt;code&gt;ActionView::Helpers::FormBuilder&lt;/code&gt; class, surprisingly, again, it was named &lt;code&gt;fields_for_with_nested_attributes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Way to go, Sherlock&amp;#8221;.&lt;/p&gt;
&lt;p&gt;A short read indicated that the current child index is determined by either being specified by the developer (&lt;code&gt;:child_index =&amp;gt; something&lt;/code&gt; in your &lt;code&gt;fields_for&lt;/code&gt; options) or by an automatic value (0 and up) assigned by an auto incremented instance variable named &lt;code&gt;nested_child_index&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;My first attempt was to access it with the doomsday device, &lt;code&gt;#send&lt;/code&gt; and snatch it, but the inevitable failure arrived when the infamous &lt;a href="http://m.onkey.org/"&gt;@lifo&lt;/a&gt; pointed me to the fact that when accessing the &lt;code&gt;nested_child_index&lt;/code&gt; method, i am actually incrementing the index value.&lt;/p&gt;
&lt;p&gt;As a last resort i turned to my (seriously neglected) metaprogramming skills to try and add an unobtrusive getter method for the current child index in a &lt;code&gt;fields_for&lt;/code&gt; nested attribute block.&lt;/p&gt;
&lt;p&gt;i created &lt;code&gt;fields_for_child_index.rb&lt;/code&gt; in my &lt;code&gt;config/initializers&lt;/code&gt; folder:&lt;/p&gt;
&lt;script src="http://gist.github.com/217884.js"&gt;&lt;/script&gt;&lt;p&gt;Kind of messy i know, and i am sure that there&amp;#8217;s a better way to have store the current association name without going into &lt;code&gt;alias_method_chain&lt;/code&gt;, but this is working and will work until i&amp;#8217;ll create the core patch for that.&lt;/p&gt;
&lt;p&gt;Of course, in the meantime, i am open to improvement suggestions, anyway, this is how you use it:&lt;/p&gt;
&lt;script src="http://gist.github.com/217887.js"&gt;&lt;/script&gt;&lt;p&gt;&lt;code&gt;#current_child_index&lt;/code&gt; will return the current child index for every element in the &lt;code&gt;fields_for&lt;/code&gt; block.&lt;/p&gt;
&lt;h4&gt;Important note&lt;/h4&gt;
&lt;p&gt;unless you use it &lt;span class="caps"&gt;EXACTLY&lt;/span&gt; as i said, i can&amp;#8217;t assure it&amp;#8217;s working.. it&amp;#8217;s just a simple bypass until the patch will be ready. use at your own risk.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=plM8wDfbHPE:1sqyFqjebwk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=plM8wDfbHPE:1sqyFqjebwk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=plM8wDfbHPE:1sqyFqjebwk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=plM8wDfbHPE:1sqyFqjebwk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=plM8wDfbHPE:1sqyFqjebwk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=plM8wDfbHPE:1sqyFqjebwk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=plM8wDfbHPE:1sqyFqjebwk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=plM8wDfbHPE:1sqyFqjebwk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=plM8wDfbHPE:1sqyFqjebwk:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=plM8wDfbHPE:1sqyFqjebwk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=plM8wDfbHPE:1sqyFqjebwk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=plM8wDfbHPE:1sqyFqjebwk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EladOnRails/~4/plM8wDfbHPE" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.eizesus.com/2009/10/fields_for-nested-attributes-current-child-index</feedburner:origLink></entry>
 
 <entry>
   <title>GitProductive: See how productive exactly are you</title>
   <link href="http://feedproxy.google.com/~r/EladOnRails/~3/vNXoL_5z04E/gitproductive-see-how-productive-exactly-are-you" />
   <updated>2009-10-21T00:00:00-04:00</updated>
   <id>http://gitready.com/2009/10/gitproductive-see-how-productive-exactly-are-you</id>
   <content type="html">&lt;p&gt;Productivity is subjective, Everyone has their own tools that help them to remain productive, focused and on target. I for example try to use &lt;a href="http://trackdailygoals.com"&gt;DailyGoals&lt;/a&gt; to get my daily todo lists on track, but i can&amp;#8217;t keep up with updating as i should.&lt;/p&gt;
&lt;p&gt;One of the best ways to measure how much work was done, is to actually see &lt;strong&gt;how much did you code&lt;/strong&gt;, thinking about that, i turned to &lt;code&gt;git log&lt;/code&gt; for some help and found out that you can get a list of changed/added lines in on your commits, git is so damn powerful that it even lets you to bound your search to a specific, natural language time frames (ex: &amp;#8220;2 weeks ago&amp;#8221;).&lt;/p&gt;
&lt;p&gt;Now, the fun part. i created this tiny little Ruby program that displays exactly how much did you code, showing the number of commits and &lt;span class="caps"&gt;LOC&lt;/span&gt; inserted, and even shows a simple rate stat of your &lt;span class="caps"&gt;LOC&lt;/span&gt;/commits.&lt;/p&gt;
&lt;p&gt;Here it is:&lt;br /&gt;
&lt;script src="http://gist.github.com/215383.js"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;simply run &lt;code&gt;ruby git_productive.rb &amp;lt;path_to_project_root&amp;gt;&lt;/code&gt;, might be nice to run is a rake task or a commit hook that sends you and your boss and email with your current code rate.&lt;/p&gt;
&lt;p&gt;well, mine shows 120 lines since this morning, considering half of it is probably a plugin, i&amp;#8217;d better get back to work and stop blogging.&lt;/p&gt;
&lt;p&gt;as always, forks and suggestions are welcome.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=vNXoL_5z04E:5JIksQcCLgs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=vNXoL_5z04E:5JIksQcCLgs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=vNXoL_5z04E:5JIksQcCLgs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=vNXoL_5z04E:5JIksQcCLgs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=vNXoL_5z04E:5JIksQcCLgs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=vNXoL_5z04E:5JIksQcCLgs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=vNXoL_5z04E:5JIksQcCLgs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=vNXoL_5z04E:5JIksQcCLgs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=vNXoL_5z04E:5JIksQcCLgs:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=vNXoL_5z04E:5JIksQcCLgs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=vNXoL_5z04E:5JIksQcCLgs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=vNXoL_5z04E:5JIksQcCLgs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EladOnRails/~4/vNXoL_5z04E" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.eizesus.com/2009/10/gitproductive-see-how-productive-exactly-are-you</feedburner:origLink></entry>
 
 <entry>
   <title>Bag O' Links - 20/10/2009</title>
   <link href="http://feedproxy.google.com/~r/EladOnRails/~3/KlyPAseulhk/bag-o-links-20-10-2009" />
   <updated>2009-10-21T00:00:00-04:00</updated>
   <id>http://gitready.com/2009/10/bag-o-links-20-10-2009</id>
   <content type="html">&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.tripwiremagazine.com/tools/tools/13-essential-tools-for-freelancers-to-track-time.html"&gt;Time tracking apps for freelancers&lt;/a&gt; &amp;#8211; and for others that can&amp;#8217;t keep track of anything.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.boxedice.com/2009/10/20/nginx-server-monitoring-sd-agent-1-3-0/"&gt;Nginx monitoring&lt;/a&gt; &amp;#8211; seems like a nice tool, but i can&amp;#8217;t get myself to drop Apache for nginx just for syntax.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.neeraj.name/blog/articles/881-extending-self-in-a-module"&gt;extending self with a module&lt;/a&gt; &amp;#8211; another short tip from this guy.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.noupe.com/jquery/35-fresh-useful-jquery-plugins.html"&gt;Fresh useful dosage of jQuery plugins&lt;/a&gt; &amp;#8211; some stuff i didn&amp;#8217;t know in there.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.mysqlperformanceblog.com/2009/10/15/mysql-memcached-or-nosql-tokyo-tyrant-part-1/"&gt;Mysql + memcached or nosql + tyrant?&lt;/a&gt; &amp;#8211; if you are not reading this blog you are missing an important aspect of that thing you do and is called &amp;#8220;professional web development&amp;#8221;.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.henriquez.net/2009/08/kill-your-signup-form-with-rails.html"&gt;kill your signup form with rails&lt;/a&gt; &amp;#8211; a way to enhance your signup forms, Rails oriented.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://designgalleria.tumblr.com/"&gt;&lt;span class="caps"&gt;RIA&lt;/span&gt; gallery&lt;/a&gt; &amp;#8211; a nice collection of Rich internet applications.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.newmediacampaigns.com/page/nmcdropdown"&gt;Nice drop down menu in jQuery&lt;/a&gt; &amp;#8211; i like it.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://net.tutsplus.com/tutorials/javascript-ajax/drag-to-share/"&gt;Drag to Share&lt;/a&gt; &amp;#8211; that awesome feature from Mashable, turn to bits.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://paulstamatiou.com/how-to-getting-started-with-amazon-ec2"&gt;Setup your EC2 instance&lt;/a&gt; &amp;#8211; updated tutorial, written well.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://webdesignfan.com/26-jquery-plugins-for-superb-navigation/"&gt;jQuery Navigation and menu plugins&lt;/a&gt; &amp;#8211; kind of keeping me busy lately.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://devver.net/blog/2009/06/a-dozen-or-so-ways-to-start-sub-processes-in-ruby-part-1/"&gt;Ways to start up subprocesses in Ruby&lt;/a&gt; &amp;#8211; a serious of posts by &lt;a href="http://twitter.com/avdi"&gt;@avdi&lt;/a&gt; about ruby subprocess running.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/blog/517-unicorn"&gt;GitHub and Unicorn&lt;/a&gt; &amp;#8211; how switching to unicorn worked for GitHub.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://startuptodo.com/session/new"&gt;startuptodo&lt;/a&gt; &amp;#8211; Twitter for startups, wonder if that will work.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://mj12net.org/index.php/system-administrator-interview-cheat-sheet.html"&gt;System administrator cheatsheet&lt;/a&gt; &amp;#8211; all, and i mean &lt;span class="caps"&gt;ALL&lt;/span&gt; you ever needed.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://encosia.com/2009/10/11/do-you-know-about-this-undocumented-google-cdn-feature/"&gt;jQuery UI themes are on Google too&lt;/a&gt; &amp;#8211; it appears that Google&amp;#8217;s &lt;span class="caps"&gt;AJAX&lt;/span&gt; libraries include jQueri UI&amp;#8217;s themes too, epic win for performance.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.envylabs.com/summit/"&gt;my RailsIndexes on RailsSummit in Brazil&lt;/a&gt; &amp;#8211; my very own &lt;a href="http://github.com/eladmeidar/rails_indexes"&gt;RailsIndexes&lt;/a&gt; plugin was named by @GreggPollack of envylabs as a useful plugin for practicing scaling in rails, there are other good stuff on that list too. :)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.campaignmonitor.com/blog/post/2435/how-forms-perform-in-html-emai/"&gt;Using Forms in &lt;span class="caps"&gt;HTML&lt;/span&gt; emails&lt;/a&gt; &amp;#8211; no, and why.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;GitHub Treasures&lt;/h4&gt;
&lt;p&gt;Probably for the last time, till i convince &lt;a href="http://twitter.com"&gt;@qrush&lt;/a&gt; to setup me up with a &amp;#8220;recently updated&amp;#8221; paginated list on &lt;a href="http://gemcutter.org"&gt;gemcutter&lt;/a&gt; :)&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/wvanbergen/http_status_exceptions/"&gt;htto_status_exceptions&lt;/a&gt; &amp;#8211; A Rails plugin to use exceptions for generating &lt;span class="caps"&gt;HTTP&lt;/span&gt; status responses.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/rocky/rbdbgr"&gt;rbdbgr&lt;/a&gt; &amp;#8211; Ruby 1.9 dubugger.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/ninjudd/active_document"&gt;ActiveDocument&lt;/a&gt; &amp;#8211; Active models in Berkeley DB.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://github.com/radman/notification_system"&gt;NotificationSystem&lt;/a&gt; &amp;#8211; event notification system for Rails.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=KlyPAseulhk:h2vxOxlLNeY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=KlyPAseulhk:h2vxOxlLNeY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=KlyPAseulhk:h2vxOxlLNeY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=KlyPAseulhk:h2vxOxlLNeY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=KlyPAseulhk:h2vxOxlLNeY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=KlyPAseulhk:h2vxOxlLNeY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=KlyPAseulhk:h2vxOxlLNeY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=KlyPAseulhk:h2vxOxlLNeY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=KlyPAseulhk:h2vxOxlLNeY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=KlyPAseulhk:h2vxOxlLNeY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=KlyPAseulhk:h2vxOxlLNeY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=KlyPAseulhk:h2vxOxlLNeY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EladOnRails/~4/KlyPAseulhk" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.eizesus.com/2009/10/bag-o-links-20-10-2009</feedburner:origLink></entry>
 
 <entry>
   <title>STI best practices in Rails</title>
   <link href="http://feedproxy.google.com/~r/EladOnRails/~3/JKz9ks6sMGA/sti-best-practices-in-rails" />
   <updated>2009-10-17T00:00:00-04:00</updated>
   <id>http://gitready.com/2009/10/sti-best-practices-in-rails</id>
   <content type="html">&lt;p&gt;Single Table inheritance. Lot&amp;#8217;s of developers i talk to seem to hate the concept of &lt;span class="caps"&gt;STI&lt;/span&gt; and claim that it&amp;#8217;s  &amp;#8220;java-ish&amp;#8221; and something that should be avoided on all costs.&lt;br /&gt;
Generally i would spend me time explaining to that person why &lt;span class="caps"&gt;STI&lt;/span&gt; is a legitimate design pattern which can be useful and correct when being used in the right place and not as a &amp;#8220;super solution for everything&amp;#8221;, but a recent post named &lt;a href="http://www.matthewpaulmoore.com/articles/1276-ruby-on-rails-code-quality-checklist"&gt;The Rails Code Quality Checklist&lt;/a&gt; recently bashed &lt;span class="caps"&gt;STI&lt;/span&gt; and surprisingly (imo, at least) got pretty good responses from people around.&lt;/p&gt;
&lt;p&gt;Any case of a misused design pattern can be tagged as a &amp;#8220;bad practice&amp;#8221;, and the one to blame for it is usually the developer/programmer, and not the design pattern. I thought i might take a swing at this mayhem and maybe try to clear out some stuff about &lt;span class="caps"&gt;STI&lt;/span&gt; and best usage practices in rails:&lt;/p&gt;
&lt;h3&gt;Using &lt;span class="caps"&gt;STI&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class="caps"&gt;STI&lt;/span&gt; is a design pattern that is aimed to allow multiple &lt;span class="caps"&gt;ORM&lt;/span&gt; classes to share the same database table in case they share a large base of common attributes (columns) and to represent an inheritance functionality in a relational &lt;span class="caps"&gt;DBMS&lt;/span&gt;. The main plus of this design pattern is that you don&amp;#8217;t have to create several tables that have common columns, you just use a single table to host all your models and by that, DRYing up your database infrastructure.&lt;/p&gt;
&lt;h4&gt;Good example&lt;/h4&gt;
&lt;p&gt;Let&amp;#8217;s say we have a `Cat` and a `Lion` classes. It would make perfect sense to use a single table inheritance in this case since we all (should) know that a lion is a kind of a cat.&lt;/p&gt;
&lt;script src="http://gist.github.com/212197.js"&gt;&lt;/script&gt;&lt;p&gt;Since there is almost a complete overlapping between those 2 models&amp;#8217; attributes (although they still differ in concept and may have different methods), it will be a smart choice to use &lt;span class="caps"&gt;STI&lt;/span&gt; in this case.&lt;/p&gt;
&lt;h4&gt;Bad example&lt;/h4&gt;
&lt;p&gt;This is a bad example of an &lt;span class="caps"&gt;STI&lt;/span&gt; implementation:&lt;/p&gt;
&lt;script src="http://gist.github.com/212210.js"&gt;&lt;/script&gt;&lt;p&gt;Although Cat and Human can both be considered as Animals, they overlap each other in a very small number of attirbutes. As you can see `highschool_name` and `married_since` are both attributes that has no meaning when we are referring to a Cat instance, on the other hand `last_visit_at_the_vet` and `fur_color` are useless to a Human instance. Those attributes, although unnecessary, are also populated when you access the table.&lt;/p&gt;
&lt;p&gt;If you have too many of those unnecessary fields, this may lead to bulky queries and lousy database performance, and of course, blaming &lt;span class="caps"&gt;STI&lt;/span&gt;.&lt;/p&gt;
&lt;h5&gt;Stuff to pay attention to and countermeasures to take&lt;/h5&gt;
&lt;ul&gt;
	&lt;li&gt;Every time you think about creating an &lt;span class="caps"&gt;STI&lt;/span&gt; implementation or adding a column to an &lt;span class="caps"&gt;STI&lt;/span&gt; parent table, &lt;strong&gt;check that the amount of fields that don&amp;#8217;t apply to all of the children classes, is relatively small or zero&lt;/strong&gt;.&lt;/li&gt;
	&lt;li&gt;Add indexes, usually for an &lt;span class="caps"&gt;STI&lt;/span&gt; table you&amp;#8217;ll need to add an joint index on both `:id` and your inheritance column name (defaults to `:type`). You can use my &lt;a href="http://github.com/eladmeidar/rails_indexes"&gt;RailsIndexes&lt;/a&gt; plugin to see if there are other places you may need to add indexes in.&lt;/li&gt;
	&lt;li&gt;If your &lt;span class="caps"&gt;STI&lt;/span&gt; table is going to host a big/huge amount of data, indexes may not be enough. Using memcached, Sphinx, cassandra or any other memory resident storage might boost your application performance.&lt;/li&gt;
	&lt;li&gt;pay attention to your design, don&amp;#8217;t treat any kind of inheritance as an &lt;span class="caps"&gt;STI&lt;/span&gt; implementation de-facto, consider the fact and the other players in your infrastructure to maximize the relevancy of your decision.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Of course both of my examples could have been solved easily in other ways as you suggests (if one prefers that).&lt;/p&gt;
&lt;p&gt;Point is, that &lt;span class="caps"&gt;STI&lt;/span&gt; is not more &amp;#8220;evil&amp;#8221; than overusing plugins, super-sized controllers, no cacheing or no testing. It&amp;#8217;s yet another thing you need to know when and how to use.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=JKz9ks6sMGA:Q-qpRnHxyy4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=JKz9ks6sMGA:Q-qpRnHxyy4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=JKz9ks6sMGA:Q-qpRnHxyy4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=JKz9ks6sMGA:Q-qpRnHxyy4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=JKz9ks6sMGA:Q-qpRnHxyy4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=JKz9ks6sMGA:Q-qpRnHxyy4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=JKz9ks6sMGA:Q-qpRnHxyy4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=JKz9ks6sMGA:Q-qpRnHxyy4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=JKz9ks6sMGA:Q-qpRnHxyy4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=JKz9ks6sMGA:Q-qpRnHxyy4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?i=JKz9ks6sMGA:Q-qpRnHxyy4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EladOnRails?a=JKz9ks6sMGA:Q-qpRnHxyy4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EladOnRails?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EladOnRails/~4/JKz9ks6sMGA" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.eizesus.com/2009/10/sti-best-practices-in-rails</feedburner:origLink></entry>
 
 
</feed>
