<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-US">
  <title>RailsOnWave Ruby on Rails web 2.0 Ajax - Home</title>
  <id>tag:www.railsonwave.com,2008:mephisto/</id>
  <generator uri="http://mephistoblog.com" version="0.7.3">Mephisto Noh-Varr</generator>
  
  <link href="http://www.railsonwave.com/railsonwave/" rel="alternate" type="text/html" />
  <updated>2008-07-04T16:43:56Z</updated>
  <link rel="self" href="http://feeds.feedburner.com/Railsonwave-Home" type="application/atom+xml" /><feedburner:emailServiceId>609305</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Sandro Paganotti</name>
    </author>
    <id>tag:www.railsonwave.com,2008-07-04:7171</id>
    <published>2008-07-04T16:43:00Z</published>
    <updated>2008-07-04T16:43:56Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/326774522/a-new-checkbox-component-in-streamlined" rel="alternate" type="text/html" />
    <title>A new CheckBox component in Streamlined</title>
<content type="html">
            &lt;p&gt;I’ve noticed that Streamlined when display has_and_belongs_to_many or has_many relationships in an edit view calls ‘Streamlined::Components::Select’ (lib/streamlined/column/association.rb line 123). That class simply render a ‘select’ tag with multiple choices.&lt;/p&gt;


	&lt;p&gt;I created a new component that can be called instead the standard one. It’s called CheckBox and it displays, as the name may suggest, a checkbox for each choice available.&lt;/p&gt;


	&lt;p&gt;To add this component simply create a new file under ‘lib/streamlined/components’ called ‘checkbox.rb’ and paste the same content of ‘select.rb’ except these two changes:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
    # line 15
    class CheckBox
    REQUIRED_ATTRS = [:view, :object, :method, :choices, :item]

    # Substitute the render method with this 
    def render
      ids = item.send(Inflector.pluralize(method.to_s)).collect{|b| b.id}
      name = "#{object}[#{method}][]" 
      choices.collect do |c| 
        view.check_box_tag(name,c[1],ids.include?(c[1])) + "#{c[0]}" 
      end.join("&amp;lt;br/&amp;gt;") + view.hidden_field_tag(name, STREAMLINED_SELECT_NONE)
   end
&lt;/code&gt;
&lt;/pre&gt;    

	&lt;p&gt;Remeber also to include this new file (from lib/streamlined/components.rb) and change the line 123 in association.rb to call this new component:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
      result = Streamlined::Components::CheckBox.render do |s|
        s.view = view
        s.object = model_underscore
        s.method = name
        s.choices = choices
        s.options = {:selected =&amp;gt; selected_choices }
        s.html_options = {:size =&amp;gt; 5, :multiple =&amp;gt; true}
        s.item = item
      end
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Sandro&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/326774522" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/7/4/a-new-checkbox-component-in-streamlined</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2008-07-01:7158</id>
    <published>2008-07-01T08:30:00Z</published>
    <updated>2008-07-01T08:33:14Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/323886056/maths" rel="alternate" type="text/html" />
    <title>Ruby on Rails &amp; Maths...</title>
<content type="html">
            &lt;p&gt;I have always been fascinated with Mathematics and how you can solve problems using it, we all know that in programming it is very useful. I recently had to use maths in a layout that I needed to incorporate for a new application…&lt;/p&gt;


	&lt;h3&gt;Problem:&lt;/h3&gt;


	&lt;p&gt;I had to display a dynamic list of suburbs in a table, that was an x amount of rows and had 3 columns.&lt;/p&gt;


	&lt;h3&gt;Solution:&lt;/h3&gt;


	&lt;p&gt;I used &lt;strong&gt;Mod&lt;/strong&gt; (the mathematical arithmetic that gives you the remainder of the division).&lt;/p&gt;


	&lt;p&gt;Therefore:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
&amp;lt;table&amp;gt;
&amp;lt;% r = 0 %&amp;gt;
&amp;lt;% @count_suburb.each do |c| %&amp;gt;
&amp;lt;% area = Area.find_by_code(c[0])%&amp;gt;

&amp;lt;% if ((r % 3) == 0)  %&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;% end %&amp;gt;
&amp;lt;% r += 1%&amp;gt;

&amp;lt;td&amp;gt;Write something here....&amp;lt;%= c.name.capitalize  %&amp;gt;&amp;lt;/td&amp;gt;

&amp;lt;% if ((r % 3) == 0)  %&amp;gt;
&amp;lt;/tr&amp;gt;    
&amp;lt;% end %&amp;gt;

&amp;lt;% end %&amp;gt;
&amp;lt;/table&amp;gt;
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Does anyone know of a better solution?&lt;/p&gt;


	&lt;p&gt;Thanks
Annalisa&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/323886056" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/7/1/maths</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Sandro Paganotti</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-27:7151</id>
    <published>2008-06-27T09:06:00Z</published>
    <updated>2008-06-27T09:08:46Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/321191619/advanced-statements-with-ruby" rel="alternate" type="text/html" />
    <title>Advanced statements with Ruby</title>
<content type="html">
            &lt;p&gt;Yesterday I was playing with statements trying to find out an elegant way to solve a problem:&lt;/p&gt;


	&lt;h3&gt;The problem&lt;/h3&gt;


	&lt;p&gt;While reading from an Excel file (using the &lt;a href='http://raa.ruby-lang.org/project/parseexcel/'&gt;Parseexcel&lt;/a&gt; gem) I needed to get a value from the 3rd column or from the 2nd (if the third is empty). Plus I had to execute an additional operation only if the value I got came from the second column. ( value / 100 )&lt;/p&gt;


	&lt;p&gt;&lt;img src='http://www.railsonwave.com/assets/2008/6/27/ishot-49.png' alt='' /&gt;&lt;/p&gt;


	&lt;h3&gt;The Solution&lt;/h3&gt;


	&lt;p&gt;Parseexcel lets you scan your Excel worksheet by rows. Each row makes its value available through the ‘at(pos)’ method where pos is the index of the column (starting from 0). This is the solution I come across:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
worksheet.each(3) do |row| 
        break if ((value=row.at(2)).nil? and (div=true;value=row.at(1)).nil?)
        value = value.to_i / 100 if div
        # other code ...
end
&lt;/code&gt;
&lt;/pre&gt;

	&lt;h3&gt;Conclusion&lt;/h3&gt;


	&lt;p&gt;By using this trick I was able to detect when the assignment come from the second or the third column (remember that when the first condition in an ‘and’ clause isn’t met the interpreter doesn’t execute the second, thus div remains nil if row.at(2) is not nil).&lt;/p&gt;


	&lt;p&gt;Hope this could help.
Sandro&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/321191619" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/27/advanced-statements-with-ruby</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Massimo Sgrelli</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-23:7144</id>
    <published>2008-06-23T20:01:00Z</published>
    <updated>2008-06-24T07:19:05Z</updated>
    <category term="Design" />
    <category term="Web 2.0" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/318344812/design-is-about-designing" rel="alternate" type="text/html" />
    <title>Web design is about designing</title>
<content type="html">
            &lt;p&gt;It seems pretty obvious, but it isn’t. I assure you that.&lt;br /&gt;
I’ve just read Amy Hoy article “&lt;a href='http://www.slash7.com/articles/2008/5/18/design-is-not-about-solving-problems'&gt;Design is not about solving problems&lt;/a&gt;” on Slash7 and I agree with her. She focused on the &lt;strong&gt;proactive&lt;/strong&gt; role in designing, blaming the &lt;strong&gt;reactive&lt;/strong&gt; role that design could have. Design is not about solving problems.&lt;/p&gt;


	&lt;p&gt;But I’d like to go further, remarking the obvious: &lt;em&gt;design is about designing&lt;/em&gt;. Understanding the domain language (as &lt;a href='http://youtube.com/watch?v=OR0prVLD3rk'&gt;recalled by Ryan Singer&lt;/a&gt; ), sketching the whole project down, positioning objects on a surface to fulfill the need and then build a mock-up. That is design. Web design makes no objections to this rule, but for sure it adds some constraints to the general process: &lt;strong&gt;the format&lt;/strong&gt;. If a web designer builds up the complete &lt;em&gt;idea of a project&lt;/em&gt;, without worrying about the final format of his work, he will probably have to plan a big rework. That project must be implemented by a software developer, so &lt;em&gt;the format of the designer’s final object is fundamental&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;Too often people speak different languages:&lt;/p&gt;


	&lt;p&gt;&lt;img src='http://www.railsonwave.com/assets/2008/6/23/designerVSdeveloper.png' alt='' /&gt;&lt;/p&gt;


	&lt;p&gt;They simply don’t fit and sometimes tools don’t help a lot. This is why the big challenge is to &lt;strong&gt;forget about Photoshop and start promoting tools closer to the bare &lt;span class='caps'&gt;HTML&lt;/span&gt;&lt;/strong&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;span class='caps'&gt;HTML&lt;/span&gt; is composed by simple shapes. You can easily draw a rectangle, a square, color them, even blur the background. And again, set the font family, the boldness. Adding some &lt;span class='caps'&gt;AJAX&lt;/span&gt; you can get awesome effects… in a simple way. They are good and easily implemented, but you must study the fundamental of web development, the fundamental of browser rendering dialect.&lt;/p&gt;


	&lt;p&gt;People can keep basing their design work on tools like Photoshop, but they have to keep in mind that &lt;em&gt;software developers will need user interface design objects in bare &lt;span class='caps'&gt;HTML&lt;/span&gt;/CSS format&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;If you are use to apply your work through a specific set of tools, it’s very difficult to change your habits in a short time. To train myself in this way I change the tools I use quite often, but of course I have my favorite tools too. At the moment I love using office tools like Keynote or PowerPoint to design web applications. They help you draw simple shapes and words quickly, and they avoid you to design hard things to implement.&lt;/p&gt;


	&lt;p&gt;In any case, independently from the tools I like to use, I’ve learned to sketch my ideas on paper first. That’s absolutely faster and cheaper than any software tool on earth.&lt;br /&gt; 
I make a drawing and then I take a picture of it with my (i)phone to record it on &lt;a href='http://whodo.es'&gt;WhoDoes&lt;/a&gt;. The drawing phase starts days later.&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/318344812" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/23/design-is-about-designing</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Sandro Paganotti</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-20:7141</id>
    <published>2008-06-20T13:09:00Z</published>
    <updated>2008-06-20T13:10:13Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/316205046/streamlined-1-0-hacks-add-help-text-to-forms" rel="alternate" type="text/html" />
    <title>Streamlined 1.0 hacks: add help text to forms.</title>
<content type="html">
            &lt;p&gt;I’ve created a small Streamlined hack that let you implement a :help option while defining ‘user columns’, here’s a sample:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
                :title,                 {
                                          :human_name   =&amp;gt; "Book title",
                                          :help         =&amp;gt; "Please specify the title of the book you're reading." 
                                        }
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;and this is the result (for ‘edit’ and ‘new’ views):&lt;/p&gt;


	&lt;p&gt;&lt;img src='http://railsonwave.com/assets/2008/6/20/ishot-42.png' alt='' /&gt;&lt;/p&gt;


	&lt;h3&gt;Instructions:&lt;/h3&gt;


	&lt;p&gt;Here you’ll find what to change in the plugin:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
#  in /lib/streamlined/column/base.rb 

# around line 9
attr_accessor :human_name, :link_to, :popup, :parent_model, :wrapper, :additional_column_pairs,
                :additional_includes, :filter_column, :help

# around line 196
      x.td(:class =&amp;gt; 'sl_edit_value') do
        x &amp;lt;&amp;lt; render_td(view, item)
        if(!help.nil?)
          x.p{ x &amp;lt;&amp;lt; help }
        end  
      end 
&lt;/code&gt;
&lt;/pre&gt; 

	&lt;p&gt;Hope you’ll find useful.&lt;/p&gt;


	&lt;p&gt;Sandro&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/316205046" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/20/streamlined-1-0-hacks-add-help-text-to-forms</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Massimo Sgrelli</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-13:7126</id>
    <published>2008-06-13T08:24:00Z</published>
    <updated>2008-06-13T08:37:39Z</updated>
    <category term="News" />
    <category term="Web 2.0" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/311009500/in-out-by-37signals-is-pure-genius" rel="alternate" type="text/html" />
    <title>In/Out by 37signals</title>
<content type="html">
            &lt;p&gt;In/Out is an internal application by 37signals first sited by  Jason Fried 2 months ago. They implemented it to keep in touch with each other during the workday without useless interruptions:&lt;/p&gt;


	&lt;p&gt;&lt;img src='http://www.railsonwave.com/assets/2008/6/12/inout-railsonwave.jpg' alt='' /&gt;&lt;/p&gt;


	&lt;p&gt;In/Out is based on a simple need. People working together, on the same team or the same project, that sometimes need to know what each person is doing during the day.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;What are you working on?&lt;/strong&gt; When someone asks you this question it interrupts you and if 3, 4 or 5 people ask the same question during the day, it’s better that you take the day off.&lt;/p&gt;


	&lt;p&gt;In/Out helps to solve this problem efficiently. Each person in the team can use this tool to notify their actual status to others, and at the same time they can add log entries just describing what they have just accomplished.&lt;/p&gt;


	&lt;p&gt;The main page – and I suppose the only one – of this application allows you to see on the left side what has been finished by everyone during the day, while on the right side every worker can see each others status and the list of what they’ve already finished:&lt;/p&gt;


	&lt;p&gt;&lt;img src='http://www.railsonwave.com/assets/2008/6/12/inout-right_side_small.jpg' alt='' /&gt;&lt;/p&gt;


	&lt;p&gt;It’s probably one of the most innovative and simple tools that I’ve ever seen.&lt;/p&gt;


	&lt;p&gt;There’s only one thing that I cannot understand. &lt;strong&gt;Why they don’t release it as a stand alone product?&lt;/strong&gt; I think it could be a major hit. Of course making something similar is not hard for anyone – so it cannot be considered a real asset for 37signals. Actually they only released it as part of Backpack.&lt;/p&gt;


	&lt;p&gt;But having conceived something so &lt;em&gt;simple&lt;/em&gt; and at the same time so &lt;em&gt;useful&lt;/em&gt; is really impressive. It’s like having designed the first non-Twitter application for the business, using the same fundamental principle of “simply useful” – I’ll get back on this concept again in future articles.&lt;/p&gt;


	&lt;p&gt;There’s only a subtle doubt I have. &lt;em&gt;What if they decided not to release it stand alone to avoid cannibalizing their golden egg, Basecamp&lt;/em&gt;?&lt;br /&gt;
Mmmmhhhh…&lt;/p&gt;


	&lt;p&gt;If I was Jason Fried I would be studying a smart way to release it as a stand alone application and at the same time, have it integrated as a “module” of Basecamp – like they have already done with Writeboard.&lt;/p&gt;


	&lt;p&gt;For those of you that want to have some details there’s a short video describing this application at work – now renamed as &lt;strong&gt;Backpack Journal&lt;/strong&gt;:&lt;/p&gt;


	&lt;p&gt;&amp;lt;object id='viddler' height='312' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='437'&gt;&amp;lt;param name='movie' value='http://www.viddler.com/player/a45407f8/' /&gt;&amp;lt;param name='allowScriptAccess' value='always' /&gt;&amp;lt;param name='allowFullScreen' value='true' /&gt;&amp;lt;embed name='viddler' allowfullscreen='true' type='application/x-shockwave-flash' src='http://www.viddler.com/player/a45407f8/' allowscriptaccess='always' height='312' width='437'&gt;&amp;lt;/embed&gt;&amp;lt;/object&gt;&lt;/p&gt;


&lt;hr /&gt;
References:&lt;br /&gt;
- &lt;a href='http://www.37signals.com/svn/posts/976-a-peek-at-inout-an-internal-app-at-37signals'&gt;A peek at In/Out an internal app at 37signals&lt;/a&gt; &lt;br /&gt;
- &lt;a href='http://www.37signals.com/svn/posts/1040-launch-the-backpack-journal'&gt;Launch: the Backpack Journal&lt;/a&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/311009500" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/13/in-out-by-37signals-is-pure-genius</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Massimo Sgrelli</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-11:7120</id>
    <published>2008-06-11T12:53:00Z</published>
    <updated>2008-06-11T12:54:17Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/309604212/a-free-book-about-rails-2-1" rel="alternate" type="text/html" />
    <title>A free book about Rails 2.1</title>
<content type="html">
            &lt;p&gt;&lt;em&gt;“A gift from all Brazilian Railers to the international community”.&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;This is how &lt;strong&gt;Carlos Brando&lt;/strong&gt; presented the release of &lt;a href='http://www.nomedojogo.com/livro/carlosbrando-rubyonrails21_en.pdf'&gt;a free book about Ruby on Rails 2.1&lt;/a&gt; that he and &lt;strong&gt;Marcos Tapajós&lt;/strong&gt; just released on the Internet.&lt;/p&gt;


	&lt;p&gt;The book has been translated from Portuguese thanks to the aim of the Brazilian Rails community in general, and in particular with the effort of Rafael Barbosa, Caike Souza, Pedro Pimentel, Abraão Coelho and Ricardo S Yasuda.&lt;/p&gt;


	&lt;p&gt;Thanks guys.&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/309604212" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/11/a-free-book-about-rails-2-1</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Massimo Sgrelli</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-10:7112</id>
    <published>2008-06-10T23:21:00Z</published>
    <updated>2008-06-11T06:57:39Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/309185503/is-dhh-getting-a-marketing-man" rel="alternate" type="text/html" />
    <title>Is DHH planning to step back?</title>
<content type="html">
            &lt;p&gt;I’ve been to Portland to the RailsConf 2008 and everything has been quite great. Great venue, a lot of people and good food too – and that was really a surprise :)&lt;/p&gt;


	&lt;p&gt;There’s only one thing that left me a bit confused: “David Heinemeier Hansson”. I mean, he’s a great speaker and hacker too, but this year he didn’t make any technical speeches at the conference. He left that role to Jeremy Kemper, who is for sure a wizard inside the Ruby on Rails community, but… he’s not David of course.&lt;/p&gt;


	&lt;p&gt;David has a unique role in the Rails community, and right now the Rails future and success is definitely tied to him. The community needs a leader and a mentor, and David is the man.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;But what will happen if he stops having a technical leading role in Ruby on Rails?&lt;/strong&gt;&lt;br /&gt;
That could really be a bad strike for all of us. The framework is too young and it’s still gaining a dominant position in the technology landscape. It needs its creator more than ever.&lt;/p&gt;


	&lt;p&gt;A second “bad” sign I picked up on was during the final speech, with all the Rails core team on stage, David  did not seem to be completely up-to-date with the actual status of Rails –  and Michael Koziarski had to correct him once.&lt;/p&gt;


	&lt;p&gt;That was not a good thing. Definitely not a good thing.&lt;br /&gt;
In the end, just to give us the final shot, he decided that “it could be a good idea” to leave the conference 15 minutes earlier to catch the flight :)&lt;/p&gt;


	&lt;p&gt;What’s up man?&lt;br /&gt;
Does it mean something is changing?&lt;br /&gt;
Is he planning to step back from his role?&lt;br /&gt;
I hope not, because in that case Ruby on Rails could be threatened very quickly by its competitors, risking to lose its rising star role in the technology landscape.&lt;/p&gt;


	&lt;p&gt;So David, please stop evangelizing and show us the light. We need you to make some code.&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/309185503" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/10/is-dhh-getting-a-marketing-man</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Massimo Sgrelli</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-09:7108</id>
    <published>2008-06-09T20:23:00Z</published>
    <updated>2008-06-10T13:06:44Z</updated>
    <category term="Events" />
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/308356585/spread-out-the-good-novel" rel="alternate" type="text/html" />
    <title>Spread out the good novel</title>
<content type="html">
            &lt;p&gt;RailsConf is over and I was so lucky to be there this year too. &lt;a href='http://www.gotthingsdone.com'&gt;GotThingsDone.com&lt;/a&gt; presence at the all-important convention about Ruby on Rails has been centered around &lt;strong&gt;spreading the good novel” out all over the world&lt;/strong&gt;. Let me explain you why.&lt;/p&gt;


	&lt;p&gt;We were pretty impressed last year discovering that quite a few people were covering the event professionally with videos, interviews and keynotes streaming. The most part of the attendees having a blog were summarizing the convention in real time on their web sites and they did a good job, but I soon realized people want to see their heroes, want to hear their voices. Dancan made amazing pictures and he shared them on Flickr, but you know, they cannot speak.&lt;/p&gt;


	&lt;p&gt;So, this year we decided that Rails is too important to not have any good video interview to show the people who were not as lucky as we were. &lt;em&gt;We wanted to show what a revolution was taking place in Portland&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;So, in the last few days preceding  the conference the crew at GotThingsDone.com and I planned to interview some of the people we thought are leading the Rails scenario right now. We aren’t professional in producing videos, but we made our best to share the intense moments we had there.&lt;/p&gt;


	&lt;p&gt;So I’d like to say thank you to the &lt;a href='http://factory.wavegroup.it/blog/railsconf2008-videos'&gt;people we interviewed&lt;/a&gt;, because they were so patient  and kind with us. Thanks to David Heinemeier Hansson, Joel Splosky, Jeremy Kemper, Ola Bini, John Straw, Ryan Singer, Rick Olson, Chris Wanstrath and Geoffrey Grosenbach.&lt;/p&gt;


	&lt;p&gt;And then thank you to Annalisa, Sandro and Joe for their wonderful job.&lt;/p&gt;


	&lt;p&gt;At Portland we were about 1,800 people. Right now our interviews have been viewed more than 7,300 times :)&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/308356585" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/9/spread-out-the-good-novel</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-09:7103</id>
    <published>2008-06-09T07:18:00Z</published>
    <updated>2008-06-11T08:02:00Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/307828484/railsconf-2008-keynotes-now-available" rel="alternate" type="text/html" />
    <title>RailsConf 2008 Keynotes now available...</title>
<content type="html">
            &lt;h2&gt;David Heinemeier Hansson, Jeremy Kemper, Kent Beck and Joel Spolsky.&lt;/h2&gt;


	&lt;p&gt;If you missed out on the RailsConf 2008 this year or you would just like to have a recap on the Keynotes, you can now view them &lt;a href='http://factory.wavegroup.it/blog/railsconf2008-keynotes'&gt;here&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;If you have not yet seen the interviews of &lt;span class='caps'&gt;DHH&lt;/span&gt;, Jeremy Kemper and many more…. please view them &lt;a href='http://factory.wavegroup.it/blog/railsconf2008-videos'&gt;here&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Annalisa&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/307828484" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/9/railsconf-2008-keynotes-now-available</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-05:7066</id>
    <published>2008-06-05T15:41:00Z</published>
    <updated>2008-06-05T15:47:07Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/305419115/now-available-interviews-for-your-iphone-ipod" rel="alternate" type="text/html" />
    <title>Now available: Interviews for your iPhone/iPod</title>
<content type="html">
            &lt;p&gt;As we promised here are the links to download the interviews and view them on your iPhone or your iPod.&lt;/p&gt;


&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href='http://video.wavegroup.it/railsconf2008/07-david-heinemeier-iphone.m4v'&gt;David Heinemeier Hannson&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href='http://video.wavegroup.it/railsconf2008/12-ryan-singer-iphone.m4v'&gt;Ryan Singer&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href='http://video.wavegroup.it/railsconf2008/09-jeremy-kemper-iphone.m4v'&gt;Jeremy Kemper&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href='http://video.wavegroup.it/railsconf2008/15-rick-olson-iphone.m4v'&gt;Rick Olsen&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href='http://video.wavegroup.it/railsconf2008/10-ola-bini-iphone.m4v'&gt;Ola Bini&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href='http://video.wavegroup.it/railsconf2008/13-geoffrey-grosenbach-iphone.m4v'&gt;Geoffrey Grosenbach&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href='http://video.wavegroup.it/railsconf2008/14-chris-wanstrath-iphone.m4v'&gt;Chris Wanstrath&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href='http://video.wavegroup.it/railsconf2008/08-joel-spolsky-iphone.m4v'&gt;Joel Spolsky&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href='http://video.wavegroup.it/railsconf2008/11-john-straw-iphone.m4v'&gt;John Straw&lt;/td&gt;&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/305419115" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/5/now-available-interviews-for-your-iphone-ipod</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-05:7065</id>
    <published>2008-06-05T13:44:00Z</published>
    <updated>2008-06-05T13:45:25Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/305338788/interviews-soon-available-on-iphone-iphod" rel="alternate" type="text/html" />
    <title>Interviews soon available on iPhone/iPhod...</title>
<content type="html">
            &lt;p&gt;Stay tuned, we are currently working on the interviews to make them available for you in iPhone and iPod format.&lt;/p&gt;


	&lt;p&gt;They will be published in the next few hours….&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/305338788" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/5/interviews-soon-available-on-iphone-iphod</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-05:7063</id>
    <published>2008-06-05T08:14:00Z</published>
    <updated>2008-06-05T08:18:11Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/305161121/adam-pisoni-skynet-a-ruby-map-reduce-framework" rel="alternate" type="text/html" />
    <title>Adam Pisoni: Skynet - A Ruby Map/Reduce Framework</title>
<content type="html">
            &lt;h3&gt;Pisoni illustrates Skynet, a Ruby framework to develop applications with regards to the Map/Reduce model.&lt;/h3&gt;


	&lt;p&gt;Map/Reduce is a programming model aimed at the developing of distributed applications that automatically manage the major parts of the problems of distributing computing; map/reduce enables you to create parallel applications.&lt;/p&gt;


	&lt;p&gt;Skynet is a framework for the distributed computing on Ruby (like MapReduce) with some differences: Map/Reduce uses two types of processes, masters and workers. Skynet only has workers (the role of of the master is that to assign activities divided into tasks.&lt;/p&gt;


	&lt;p&gt;But without masters how can we divide the work into tasks? Each worker becomes a master for a particular job, and takes on the responsibility to divide the work into tasks and assign them.&lt;/p&gt;


	&lt;p&gt;Each worker observes the others in a way to understand if a task fails. When a task is taken up, it is automatically “copied” in the future, if the worker finishes the task it also cancels the future copied task otherwise it is left for someone else to pick it up.&lt;/p&gt;


	&lt;p&gt;How does Skynet follow your code?&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
mapreduce (users) do |u|
      codice
end
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;To use Skynet you need to use the following command:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
skynet_start
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;(note: you need to restart skynet each time you change the code)&lt;/p&gt;


	&lt;h4&gt;Skynet &amp; Rails&lt;/h4&gt;


	&lt;p&gt;Skynet can be used in conjunction with Rails for the following tasks:&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;send an e-mail&lt;/li&gt;
&lt;li&gt;to execute a migration&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;Annalisa&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/305161121" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/5/adam-pisoni-skynet-a-ruby-map-reduce-framework</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-04:7057</id>
    <published>2008-06-04T15:56:00Z</published>
    <updated>2008-06-04T16:01:45Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/304639032/lightening-tasks" rel="alternate" type="text/html" />
    <title>Lightening Tasks</title>
<content type="html">
            &lt;h3&gt;With Lightning Tasks it intends all the presentations that are non foreseen in the program to those that are granted a very limited space (10 minutes). Some followed projects/interesting ideas come out during these micro sessions:&lt;/h3&gt;


	&lt;h4&gt;Saturday 31 May 2008&lt;/h4&gt;


	&lt;p&gt;Between the most interesting sessions in this day &lt;a href='http://rubyforge.org/'&gt;&lt;span class='caps'&gt;RAD&lt;/span&gt;&lt;/a&gt; is surely mentioned, a framework that allows you to use Ruby to &lt;a href='http://www.arduino.cc/'&gt;Arduino&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;The guys from &lt;a href='http://www.fozworks.com/'&gt;FozWorks&lt;/a&gt; have presented and preview of a patch for &lt;a href='http://www.sphinxsearch.com/'&gt;Sphinx&lt;/a&gt; that makes it possible to search based on the geographical distance between the two or more objects.&lt;/p&gt;


	&lt;p&gt;In conclusion it was very appreciated also the intervention of &lt;a href='http://blog.pastie.org/'&gt;Josh Goebel&lt;/a&gt; the creator of the famous  &lt;a href='http://pastie.caboo.se/'&gt;Pastie&lt;/a&gt; that entertained the audience speaking about the advanced functionality of the application, like integrating with textmate, vim and the Pastie bot for &lt;span class='caps'&gt;IRC&lt;/span&gt;.&lt;/p&gt;


	&lt;h4&gt;Sunday 1 June 2008&lt;/h4&gt;


	&lt;p&gt;From the proposals of the sessions of Sunday, the following must be mentioned:&lt;/p&gt;


	&lt;p&gt;&lt;a href='http://github.com/djwonk/method_trails/tree/master'&gt;MethodTrails&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;It is an application for Ruby 1.9, visualized and printed in a graph all the internal relationships of a Rails application (the relations between the various methods).&lt;/p&gt;


	&lt;p&gt;Plugin: &lt;span class='caps'&gt;RESTFUL&lt;/span&gt; workflow
A plugin to create a workflow similar to that of an interview that allows you to create a wizard of n-pages with saving the data at the end. The workflow is defined from a &lt;span class='caps'&gt;DSL&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;a href='http://www.onethirtyseven.com/'&gt;Dave Woodward&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;He presented a &lt;span class='caps'&gt;REST&lt;/span&gt; interface through that a Rails application can have a dialogue with Jabber.&lt;/p&gt;


	&lt;p&gt;Last but not least, an expected RSpec Story Runner bundle with Textmate was presented (personally).&lt;/p&gt;


	&lt;p&gt;Annalisa&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/304639032" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/4/lightening-tasks</feedburner:origLink></entry>
  <entry xml:base="http://www.railsonwave.com/railsonwave/">
    <author>
      <name>Annalisa Afeltra</name>
    </author>
    <id>tag:www.railsonwave.com,2008-06-04:7056</id>
    <published>2008-06-04T14:44:00Z</published>
    <updated>2008-06-04T14:47:21Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/Railsonwave-Home/~3/304598074/obie-fernandez-ruby-coding-best-practices" rel="alternate" type="text/html" />
    <title>Obie Fernandez: Ruby coding best practices</title>
<content type="html">
            &lt;h3&gt;Through examples e fragments of code Obie show the practices to avoid when developing in Rails.&lt;/h3&gt;


	&lt;p&gt;Obie: You need to know the basis of ruby before you can declare yourself a Rails developer. David Black has published a book for those who would like to learn ruby knowing only Rails.&lt;/p&gt;


	&lt;p&gt;Those who do not know Ruby can construct a very complicated construction when you could use ‘shortcut’ offered by Ruby; we don’t reinvent things that Ruby has already created and optimized. (for example there exists a function include? to control if an element is in an array without creating a cycle).&lt;/p&gt;


	&lt;h4&gt;It is important to use the routes and the dynamic associations&lt;/h4&gt;


	&lt;p&gt;On the screen appeared a method that before carries out a query on all the photos to choose a random id and retrieve with another query 
that photo, clearly not a good programming example.&lt;/p&gt;


	&lt;h4&gt;At times the laziness easily takes the programmer to make various errors.&lt;/h4&gt;


	&lt;p&gt;It is important to use various methods that follow simple actions, not to create methods that make many diverse things!&lt;/p&gt;


	&lt;p&gt;The speaker in front now ironically defines some errors “Premature DeOptimization” that are centered on generating code that decreases the execution of the application, also to generate actions directly in the ApplicationController is not a good idea.&lt;/p&gt;


	&lt;p&gt;Abuse of the database, happens when we use without too much reflection the functionality  of ActiveRecord (like for example we use with light association dynamically inside the cycle).&lt;/p&gt;


	&lt;p&gt;Also to use the cache in a way that is wrong and dangerous. You don’t cache anymore putting the data inside the global constants/variables in how much it finishes all the &lt;span class='caps'&gt;RAM&lt;/span&gt;.&lt;/p&gt;


	&lt;h4&gt;Don’t create controllers that are too long.&lt;/h4&gt;


	&lt;p&gt;On the screen appeared a long action (about a hundred lines) that at the end of the process has ‘return true’, applauding and laughs came from the room. It is important that you encapsulate all the logic of the business in the models following the thin controller principle, fat models.&lt;/p&gt;


	&lt;p&gt;We must also be careful to maintain the code created always readable, not to be tempted to “compress” the code too much.&lt;/p&gt;


	&lt;p&gt;The RESTful architecture must be used correctly (on the screen compiles a controller attached to a shopping site with various procedures, that are for nothing RESTful)&lt;/p&gt;


	&lt;p&gt;We need to always try to use diverse plugins that make the same thing to understand which is the most functional and performance the best.&lt;/p&gt;


	&lt;p&gt;When the &lt;span class='caps'&gt;HTML&lt;/span&gt; helper degenerates: on the screen appeared a helper to generate a frame and inside a photo, the helper is hundreds of rows long and the speaker shows how difficult it is to maintain a function of this type. In this case what does it verify, says the speaker, it is good to know that it is needed to generate a new level of extraction to manage the problem (for example to create a ad-hoc model).&lt;/p&gt;


	&lt;p&gt;We create a methods with constant names, that are most possibly self explanatory (on the screen appears a method that is called finderer that returns a set of options for a method find, difficult to extrapolate without reading the comments).&lt;/p&gt;


	&lt;p&gt;We cancel the commented code, in any case we use &lt;span class='caps'&gt;SVN&lt;/span&gt; or &lt;span class='caps'&gt;GIT&lt;/span&gt; that keeps track of these things….&lt;/p&gt;


	&lt;p&gt;On the screen appears the UsersController, an complete application all in a controller, the curse of best practice, applauding and laughs came from the audience.&lt;/p&gt;


	&lt;h4&gt;Conclusions&lt;/h4&gt;


&lt;ul&gt;
    &lt;li&gt;learn the fundamentals (of Ruby, of Rails) Rails is not a magic language that makes programmers those who don’t know, it is faster to establish on the conventions but it is necessary to know how to use them!&lt;/li&gt;
    &lt;li&gt;learn to learn from people that know more than us, if it is maybe possible to program together with people (pair programming). (the best would, says Obie would be to take SmallTalk programmers with years of experience)&lt;/li&gt;
    &lt;li&gt;Read books about the subject.&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;Annalisa&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Railsonwave-Home/~4/304598074" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.railsonwave.com/railsonwave/2008/6/4/obie-fernandez-ruby-coding-best-practices</feedburner:origLink></entry>
</feed>
