<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>AkitaOnRails.com</title><link>http://www.akitaonrails.com/posts</link><language>en-US</language><managingEditor>fabioakita@gmail.com (Fabio Akita)</managingEditor><lastBuildDate>Wed, 04 Nov 2009 15:21:41 PST</lastBuildDate><generator>AkitaOnRails http://www.akitaonrails.com</generator><description></description><meta xmlns="http://pipes.yahoo.com" name="pipes" content="noprocess" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AkitaOnRails" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/AkitaOnRails" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FAkitaOnRails" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:browserFriendly>Dedicated to all free thinker skeptical inquirer out there.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>[Off-Topic] O problema das credenciais</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/N8TtAf_pwCM/off-topic-o-problema-das-credenciais</link><pubDate>Wed, 04 Nov 2009 15:21:41 PST</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5221</guid><description>&lt;div style="float: right; margin: 4px"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/11/4/logical-fallacy1_original.jpg?1257376626" alt="" /&gt;&lt;/div&gt;&lt;p&gt;Não é de hoje que todos sabem que eu sou um forte proponente &lt;a href="/2008/04/19/off-topic-vamos-todos-impedir-a-regulamenta-o-da-profiss-o-de-analista-de-sistema"&gt;contra certificações&lt;/a&gt;, especificamente na área de Informática. Apesar da intenção em si ser boa, o efeito prático é mais danoso que os benefícios. Como dizem, &lt;em&gt;&amp;#8220;de boas intenções o inferno está cheio.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Porém, eu iria mais longe e colocaria um termo guarda-chuva. Na realidade eu sou totalmente contra &lt;em&gt;&amp;#8220;Credenciais&amp;#8221;&lt;/em&gt;, em geral, particularmente fora de contexto. E além disso, eu também gosto de argumentar sobre argumentação. Não é de hoje que menciono sobre falácias sempre que posso. Estou muito longe de um entendimento mais amplo, mas estou sempre tentando expandir essa compreensão e acho que todos deveriam.&lt;/p&gt;
&lt;p&gt;Um exemplo simples: eu adoro o trabalho de um Martin Fowler, ou de um Robert Martin. Acho que seus insights são muito valiosos, suas recomendações são excelentes. Com certeza são pessoas que se esforçam para serem acima da média. Porém &amp;#8211; e aqui vem o problema &amp;#8211; eles também são seres humanos e, como tais, tem defeitos. Isso é um fato, indiscutível, que precisamos assumir em toda argumentação. Simplesmente porque um Uncle Bob disse alguma coisa, isso não configura automaticamente verdade.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/11/4/circular-reasoning1_original.jpg?1257376638" alt="" /&gt;&lt;/p&gt;&lt;p&gt;Deveria ser óbvio, mas muitas pessoas se &amp;#8220;deslumbram&amp;#8221; com celebridades. Sério, viram literalmente &amp;#8220;cheerleaders&amp;#8221;. Ou seja, porque o cidadão trabalhou em alguma empresa de renome, ou porque escreveu um livro, ou simplesmente porque é um gringo, qualquer coisa que ele disser passa a ter peso de verdade. E isso é um enorme perigo. Tudo que os grandes nomes falam precisam passar pelo mesmo escrutínio que alguém sem renome diga. Sem exceções. Eu repito muitas das coisas que um Fowler diz, não porque o considero &amp;#8220;a autoridade suprema&amp;#8221; no assunto, mas porque o que ele diz efetivamente faz sentido, pode ser experimentado, discutido e, mais importante, abre caminho para ser refinado e evoluído.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/11/4/cheerleader_original.jpg?1257377862" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Isso é nada mais, nada menos do que a falácia de &lt;a href="http://en.wikipedia.org/wiki/Appeal_to_authority"&gt;argumentação por autoridade&lt;/a&gt;. Por que A disse B; e porque A é considerada uma autoridade; portanto B é verdade. Prestem atenção: usa-se isso todos os dias. Isso e mais uma dezena de outras falácias (vide lista abaixo) são usadas diariamente e nós caímos nelas o tempo todo.&lt;/p&gt;
&lt;p&gt;O contrário também é verdade, só porque o Philippe Kruchten ajudou a criar o &lt;span class="caps"&gt;RUP&lt;/span&gt; não quer dizer que ele seja ruim (brincadeira, o cara é muito bom). Aliás, isso é outra coisa que me incomoda muito: atacar alguma tecnologia, prática ou coisa assim atacando o seu criador ou participante. Por exemplo, &lt;em&gt;&amp;#8220;Rails é ruim porque o David é arrogante&amp;#8221;&lt;/em&gt;. Isso é uma falácia e é bem conhecida em inglês como falácia &lt;a href="http://en.wikipedia.org/wiki/Straw_man"&gt;Strawman&lt;/a&gt; (&amp;#8220;homem-de-palha&amp;#8221;) que em forma mais genérica é falar de um assunto irrelevante para tirar a atenção de discutir o assunto principal.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/11/4/strawman-240x300_original.jpg?1257376657" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Ambos os casos são ruins. Isso nos leva à tendência também de ignorar as pessoas sem renome, seu funcionário mais experiente, que efetivamente entende do problema, às vezes é ignorado, porque alguém de mais renome &amp;#8211; mas totalmente fora do contexto &amp;#8211; lançou certas &amp;#8220;verdades&amp;#8221;. Agora essa &amp;#8220;verdade&amp;#8221; é a lei. Sem mais perguntas. E, claro, o contrário também existe: você só acredita no seu funcionário mais antigo justamente porque é o mais antigo. Nada disso são boas justificativas. O importante sempre é: não interessa a pessoa, interessa sim seus argumentos. E argumentos que sigam o método científico.&lt;/p&gt;
&lt;p&gt;O fato é que a maioria de nós temos preguiça de pensar. Pura e simples preguiça. Além disso, a forma como fomos criados sempre trás figuras de autoridade e essa figura sempre tem mais razão do que nós &amp;#8211; um sinal de baixa auto-estima, eu diria. Portanto, quando vemos alguém em posição de autoridade, a tendência é aceitar o que vem dela, especialmente se estamos confortáveis com seu entendimento &amp;#8211; o velho problema de sair da zona de conforto. A maioria das pessoas não foi treinada para mudanças, foi treinada para estabilidade, por isso qualquer coisa diferente sempre é vista com maus olhos. A maioria apenas ouve aquilo que quer ouvir, só vê aquilo que quer ver. Ninguém de fora consegue mudar isso facilmente em outra pessoa, o que é bem triste.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;a href="http://www.fallacyfiles.org/taxonomy.html"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/11/4/TaxonomyC_original.png?1257376665" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Veja alguns artigos da Wikipedia sobre o assunto de argumentação:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Argument"&gt;Argumento&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Argumentation_theory"&gt;Teoria da Argumentação&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Burden_of_proof"&gt;Ônus da Prova&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_fallacies"&gt;Lista de Falácias&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Uma pessoa que não gosta de argumentar, por definição, não pode jamais ser tomadora de decisões. Muitos usam de credibilidade dos outros de forma inadequada (&lt;em&gt;&amp;#8220;porque fulano disse &amp;#8211; fora de contexto, mas disse &amp;#8230;&amp;#8221;&lt;/em&gt;). Mas o pior é quando uma decisão é tomada no grito, por força do cargo, por exemplo. Essa é a atitude de um indivíduo com claras incapacidades de argumentação e, portanto, de compreensão do assunto.&lt;/p&gt;
&lt;p&gt;Claro, em muitas ocasiões somos forçados a decidir alguma coisa &amp;#8220;por instinto&amp;#8221;. Se ficássemos o dia todo argumentando cada pequena decisão realmente não faríamos nada. Imagine argumentar se devo vestir a camisa vermelha ou amarela e porque. Não estou falando de micro-argumentação (que, assim como micro-gerenciamento, não funciona). Porém, decisões que envolvem pessoas, pontos de vista divergentes, devem ser analisados com mais calma. Se mesmo depois da argumentação ainda não for possível tirar uma conclusão lógica de nenhuma das duas premissas, no fim é o instinto que vai acabar guiando a possível solução. Argumentação não é uma ciência-exata, é humanas utilizando princípios científicos para uma melhor formulação de argumentos.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/11/4/humor-penguin-logic_original.jpg?1257376650" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;E ainda no caso de falácia, muitos ainda acreditam na &amp;#8220;ditadura da maioria&amp;#8221; ou &lt;em&gt;&amp;#8220;porque a maioria disse que algo é verdade é porque deve ser&amp;#8221;&lt;/em&gt;. Uma das formas falaciosas é descrita como &lt;a href="http://en.wikipedia.org/wiki/Argumentum_ad_populum"&gt;argumentum ad populum&lt;/a&gt;, ou aquele jeito malicioso de se começar uma frase: &lt;em&gt;&amp;#8220;Todo mundo sabe que &amp;#8230;&amp;#8221;&lt;/em&gt; Eu sempre digo que admiro os pais fundadores da América por terem tido insights avançados para a época que até hoje as pessoas não entendem direito. Citando Thomas Jefferson, temos:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Todos, também, devem ter em mente este princípio sagrado, que embora a vontade da maioria deva prevalecer em todos os casos, essa vontade de ser correto deve ser razoável; que a minoria possui direitos iguais, que leis iguais devem proteger, e violar isso seria opressão.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Portanto, também não é &lt;em&gt;&amp;#8220;em todos os casos a maioria vence&amp;#8221;&lt;/em&gt; mas sim &lt;em&gt;&amp;#8220;em todos os casos que não violam os direitos da minoria, a maioria vence&amp;#8221;&lt;/em&gt;. Isso é sutil. Por exemplo, porque a maioria decidiu que devemos tirar sua propriedade, portanto isso está correto. Não, porque cada indivíduo tem o direito à sua própria propriedade e o governo deve protegê-la. Assim, a vontade da maioria de retirar a propriedade de alguém é revogada pelo fato de um direito fundamental estar sendo violado, o que se configura, por definição, como opressão, não como democracia.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/11/4/sci_original.gif?1257376644" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Pensar é difícil, demanda estudo, demanda cultura, demanda prática. Pensar com afinco não é algo que a maioria das pessoas &amp;#8220;ocupadas&amp;#8221; tem vontade de fazer. A maioria prefere que lhe dêem as respostas prontas e enlatadas, ou então prefere escolher qualquer coisa rapidamente &amp;#8220;por instinto&amp;#8221;, ou &lt;em&gt;&amp;#8220;porque eu já escolhi certo antes, portanto vou escolher certo sempre&amp;#8221;&lt;/em&gt; ou ainda &lt;em&gt;&amp;#8220;porque já funcionou antes em algum lugar, deve funcionar aqui também&amp;#8221;&lt;/em&gt;, o que, obviamente é uma falácia, a boa e valha &lt;a href="http://en.wikipedia.org/wiki/Post_hoc_ergo_propter_hoc"&gt;Post hoc ergo propter hoc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Aliás, a &amp;#8220;Post hoc ergo propter hoc&amp;#8221; é o motivo de porque livros de auto-ajuda, livros com metodologias mágicas, receitas &amp;#8220;avançadas&amp;#8221; e todo tipo de procedimento enlatado vende tanto: porque retira o trabalho de pensar das pessoas, lhes dando respostas prontas, &amp;#8220;que já funcionaram em dúzias de lugares&amp;#8221;, ou coisa parecida.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/11/4/I_detect_fail-1_original.jpg?1257376676" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Algumas efetivamente, depois de pesquisa e experimentação prudente, são boas mesmo. A maioria, no entanto, me lembra uma alegoria, sobre de medicina. Imagine, se todos os médicos agissem assim. Você entra no consultório do médico e diz:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;- Doutor, estou com muitas dores.&lt;/li&gt;
	&lt;li&gt;- Meu filho, tome este remédio todos os dias e a dor acaba. Pode ir embora.&lt;/li&gt;
	&lt;li&gt;- Mas Doutor, o senhor não vai nem me examinar, me diagnosticar?&lt;/li&gt;
	&lt;li&gt;- Pra que? Já dei este remédio para os últimos 3 pacientes que passaram e todos melhoraram, porque vai ser diferente com você?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Engraçado? Não deveria ser. Reveja as decisões que você toma, ou que pessoas ao seu redor tomam, e vai notar que elas se parecem &lt;strong&gt;muito&lt;/strong&gt; com essa alegoria. Aliás, se parecem muito com a maioria dos argumentos falaciosos que menciono neste artigo. Eu mesmo me pego caindo nesse tipo de truque, muitas vezes. Mesmo a pessoa mais policiada ainda cai. Argumentação é uma arte. Compreensão também.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/11/4/Logical-Fallacies_original.jpg?1257376609" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Portanto, a única coisa a se fazer é o que eu digo o tempo todo: &lt;del&gt;&lt;strong&gt;Seja Cético.&lt;/strong&gt;&lt;/del&gt; &lt;strong&gt;Questione, sempre, o Status Quo.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Eze26cXTtR59hsRZGjg2SQ4RAao/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Eze26cXTtR59hsRZGjg2SQ4RAao/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Eze26cXTtR59hsRZGjg2SQ4RAao/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Eze26cXTtR59hsRZGjg2SQ4RAao/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=N8TtAf_pwCM:MMicCqsE4mk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=N8TtAf_pwCM:MMicCqsE4mk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=N8TtAf_pwCM:MMicCqsE4mk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=N8TtAf_pwCM:MMicCqsE4mk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=N8TtAf_pwCM:MMicCqsE4mk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=N8TtAf_pwCM:MMicCqsE4mk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=N8TtAf_pwCM:MMicCqsE4mk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/N8TtAf_pwCM" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/11/04/off-topic-o-problema-das-credenciais</feedburner:origLink></item><item><title>[Off-Topic] Saúde</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/2hOQcQL9WJw/off-topic-saude</link><pubDate>Sun, 01 Nov 2009 18:17:58 PST</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5220</guid><description>&lt;p&gt;&lt;strong&gt;Atualização: 03/11&lt;/strong&gt;&lt;/p&gt;
&lt;div style="float: right; margin: 5px"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/11/2/musculacao2_original.jpg" alt="" /&gt;&lt;/div&gt;&lt;p&gt;Finalmente, depois de mais de 5 anos sem atividade física significativa, terminei minha primeira sessão de exercícios físicos aqui em casa. O equivalente a 6Km em corrida a passo médio no meu elíptico, depois uma sessão anaeróbica com halteres pros braços. Ainda estou suando.&lt;/p&gt;
&lt;p&gt;Este último ano me deixou fisicamente e psicologicamente quebrado, quase sem eu perceber. Nunca fiz tanta pesquisa, e a parte frustrante de pesquisa é que para chegar a uma conclusão de um parágrafo, às vezes isso significa meses de noites mal dormidas, lendo, lendo, lendo.&lt;/p&gt;
&lt;p&gt;Isso sem contar as dezenas de eventos que participei este ano. A grande maioria das minhas palestras &amp;#8211; que não deixam de ser parte da minha pesquisa &amp;#8211; consumiram quase todos os meus fins de semana e feriados. Foram alguns poucos dias que usei durante o horário comercial para terminá-las.&lt;/p&gt;
&lt;p&gt;Com isso, meu ritmo diário ficou em torno de dormir diariamente lá pelas 4 da manhã, acordar lá pelas 9 ou 10 horas, 7 dias por semana. Sem contar os episódios de varar noite, que foram alguns durante o ano. Esse ritmo tem apertado bastante nos últimos 3 anos.&lt;/p&gt;&lt;h2&gt;Sit mens sana in corpore sano&lt;/h2&gt;
&lt;p&gt;Hoje estou com mais de 75kg e 1.72m de altura. Não preciso de um índice pra saber que estou fora de forma. Os &amp;#8220;pneus&amp;#8221; já se acumularam, os músculos estão fracos, a resistência física em geral está baixa. Até 2003 eu era mais pesado e mais fora de forma, estava com 78kg para mais. Em 6 meses de esteira diária, média de 6km por dia, mais exercícios anaeróbicos, otimização na alimentação &amp;#8211; redução drástica de gordura, carboidratos &amp;#8211; eu cheguei a menos de 70kg. Literalmente precisei refazer meu guarda-roupa.&lt;/p&gt;
&lt;p&gt;Porém, depois de 2004 esse ritmo já decaiu, o trabalho na consultoria ficou mais pesado, os clientes ficaram mais estressantes, e no fim de 2005 ainda resolvi começar com esse negócio de &amp;#8220;Rails&amp;#8221; :-) Aí já era.&lt;/p&gt;
&lt;p&gt;Mas agora já foi longe demais. Minha meta é, até o fim deste ano, voltar perto dos 72kg. Só que não é &amp;#8220;apenas&amp;#8221; perder 3kg. 3 é um saldo. Eu preciso perder muito mais do que isso de gordura ao mesmo tempo que substituo por músculo. Em breve preciso regular a dosagem diária de carboidratos e aumentar um pouco mais o consumo de aminoácidos, fora outros suplementos. Já fiz isso antes e acredito que não será tão difícil assim. O objetivo principal é melhorar a resistência física geral.&lt;/p&gt;
&lt;p&gt;Programadores, no geral, dão pouca atenção a isso. De fato, há tanta coisa que se pode fazer nas horas vagas, novos projetos open source, novos livros, blogs e mais blogs, artigos técnicos. Fora jogos, YouTube, Facebook. É &lt;strong&gt;bem&lt;/strong&gt; difícil se desconectar. Porém, o espelho vem me deixando mais e mais frustrado o que, por sua vez, piora o ciclo vicioso de me manter online. Programadores precisam ter vaidade para aumentar mais a auto-estima, e vaidade significa boa aparência, isso ajuda a retirar o ar introspecto e facilita a socialização. Inicia-se um ciclo virtuoso.&lt;/p&gt;
&lt;p&gt;Melhorar a forma física, novamente, não é algo que se faz com uma receita (como eu sempre digo, joguem fora as drogas como &amp;#8220;emagraça em 7 dias&amp;#8221;). Assim como a decisão de se tornar um bom programador, superando a média de aprendizado, também é preciso ter a atitude de querer superar as limitações físicas, ter sempre na cabeça o pensamento de &lt;em&gt;&amp;#8220;ainda falta mais, ainda preciso me esforçar mais.&amp;#8221;&lt;/em&gt; Como eu já passei por academias antes, já tive uma rotina de exercícios, ainda sei como regular meu ritmo. Se você nunca fez isso, acredite, vai doer, vai ser difícil, e depois de poucos dias a vontade de desistir é enorme. Desculpas começam a se amontoar e a maioria efetivamente se convence de que não precisa se esforçar tanto. É o que explica como as academias ganham dinheiro: faça o indivíduo assinar 6 meses, ele vai treinar por 2 semanas, depois vai desistir. Menos de 3 meses de rotina ainda é considerado tempo para desistência. Só quem consegue manter mais de 6 meses de rotina pode começar a imaginar que está conseguindo. E se exercitar de fim de semana não é exercício.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/11/2/honey-soy-salmon-with-carrot-swede-mash_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Hoje foi mais um primeiro dia para mim. Eu acho que já fiz isso umas 4 vezes nos últimos 10 anos. Estou começando a ganhar experiência nisso, o que não é exatamente razão de orgulho. Estes 2 últimos meses do ano serão um &amp;#8220;warm-up&amp;#8221;. O objetivo de 2010 é manter a rotina de exercícios diários o ano inteiro. Mas há um truque: acrescentar esta rotina de exercícios e aumentar minha rotina de pesquisa, ou seja, isso não poderá ser desculpa para diminuir meu trabalho em casa. Sem desafio não tem graça. Portanto o lance será otimizar mais meu tempo. Novamente, não há receita para isso. Nada de &lt;span class="caps"&gt;GTD&lt;/span&gt; ou receitas da moda desse tipo. Significa otimizar cada micro-decisão durante o dia.&lt;/p&gt;
&lt;p&gt;E, claro, &amp;#8220;bombas&amp;#8221; não funcionam. É como as metodologias da moda aplicadas da forma errada: dá efeito rápido, satisfação imediata, mas acumula efeitos colaterais de longo prazo que, também rapidamente, levam à destruição. Evite resultados rápidos. Por isso também virar um vegetariano ou vegan não é nem de longe uma opção. A opção é diminuir gorduras e aumentar proteínas, além de balancear as fontes de vitaminas. Nada mágico nisso. Da mesma forma, evite os &amp;#8220;gurus&amp;#8221;: nunca funcionam. Entenda os fundamentos e aplique os melhores exercícios às suas circunstâncias particulares. E para me forçar mais um pouco, eu sempre tenho o seguinte fundamento: &lt;em&gt;&amp;#8220;uma pessoa que não consegue sequer gerenciar sua própria forma física, não pode ter a pretensão de achar que pode gerenciar os outros.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Uma curiosidade para quem acompanha meus off-topics sobre gerenciamento: aumentar a massa muscular é um processo de destruição. Exercícios como levantamente de peso foram feitos para, literalmente, &amp;#8220;rasgar&amp;#8221; os músculos. Por isso mesmo, para quem está começando, recomenda-se fazer esse tipo de exercício em dias alternados. Num dia você destrói seus músculos, no outro ele se reconstrói e aumenta um pouco mais para aguentar a carga. Por isso também é importante melhorar o metabolismo de proteínas. Aumentar músculos, portanto, não é um processo de apenas acúmulo. É sim, um processo de pequenas destruições e reconstruções. Pense nisso.&lt;/p&gt;
&lt;p&gt;Finalmente, este blog post tem o único objetivo de me ajudar a focar no objetivo. Por alguma razão, dá impressão de que estou assinando um compromisso :-) Espero que consiga cumprí-lo.&lt;/p&gt;
&lt;p&gt;&lt;a name="esclarecimento"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Esclarecimento sobre &amp;#8220;Perda de Peso&amp;#8221;&lt;/h3&gt;
&lt;p&gt;Só para ficar mais claro: &amp;#8220;perder 3kg&amp;#8221; não é um objetivo. Um cuidado que precisa se tomar é que a frase &lt;em&gt;&amp;#8220;perder peso&amp;#8221;&lt;/em&gt; é &lt;strong&gt;muito&lt;/strong&gt; errado. O certo seria dizer: &lt;em&gt;&amp;#8220;perder gordura e aumentar massa magra&amp;#8221;&lt;/em&gt;, ou seja, queimar gordura e aumentar músculo. Normalmente as duas coisas juntas não combinam muito bem.&lt;/p&gt;
&lt;p&gt;Algumas coisas que são importantes: para quem é sedentário, completamente destreinado, ao começar a fazer exercícios já se tem uma satisfação imediata de perda de peso e um pouco de aumento de massa magra &amp;#8211; a menos que você tenha problemas hormonais ou coisa assim -, isso é natural, mas tende a diminuir e vai ficando cada vez mais difícil queimar gordura e aumentar músculo.&lt;/p&gt;
&lt;p&gt;Tem que se tomar cuidado porque gordura não é fácil de queimar (nosso organismo evoluiu milhares de anos para manter reservas de energia para épocas de escassez, queimar gordura, do ponto de vista do organismo, é algo &amp;#8220;ruim&amp;#8221;).&lt;/p&gt;
&lt;p&gt;Além disso, a primeira coisa que você queima nunca é gordura, e sim carboidratos. Em exercícios aeróbicos como correr, os primeiros 20 min iniciais são queimando carboidratos, só depois é que se começa a queimar gordura. E pior: massa muscular é mais fácil de queimar do que gordura. Para ter resultados realmente efetivos o correto é consultar um nutricionista e criar uma dieta controlada, além de um bom instrutor que saiba controlar seus exercícios aeróbicos e anaeróbicos, frequencia, carga, etc.&lt;/p&gt;
&lt;p&gt;Uma das primeiras coisas &amp;#8211; e agora é apenas opinião de leigo, consulte seu nutricionista &amp;#8211; é diminuir a quantidade de carboidratos, bastante (o mais difícil: massas, doces). Não é zerar, mas diminuir bem. Não precisa deixar de ingerir gorduras, basta não abusar. E precisa comer carnes para suprir proteínas. Fora as vitaminas e fibras. Além de dividir mais sua alimentação: pequenas quantidades 5 ou 6 vezes por dia. Eu mesmo ainda não vou conseguir seguir uma dieta mais rigorosa, vamos ver.&lt;/p&gt;
&lt;p&gt;A balança normal &lt;strong&gt;não é&lt;/strong&gt; um bom indicador de melhoras: diminuir de peso (o saldo) pode significar que você está desidratando (perdendo apenas água), perdendo massa magra (literalmente perdendo músculo). Por isso precisa entender um pouco mais dos princípios antes de simplesmente apenas fazer &lt;em&gt;qualquer&lt;/em&gt; exercício.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jpdzxS6PANuSUgQXTK1PrruOh14/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jpdzxS6PANuSUgQXTK1PrruOh14/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jpdzxS6PANuSUgQXTK1PrruOh14/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jpdzxS6PANuSUgQXTK1PrruOh14/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=2hOQcQL9WJw:ILhiGcKgQ8A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=2hOQcQL9WJw:ILhiGcKgQ8A:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=2hOQcQL9WJw:ILhiGcKgQ8A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=2hOQcQL9WJw:ILhiGcKgQ8A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=2hOQcQL9WJw:ILhiGcKgQ8A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=2hOQcQL9WJw:ILhiGcKgQ8A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=2hOQcQL9WJw:ILhiGcKgQ8A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/2hOQcQL9WJw" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/11/02/off-topic-saude</feedburner:origLink></item><item><title>[Rails Summit 2010] Commence Planning</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/K9CEc8F_P9k/rails-summit-2010-commence-planning</link><pubDate>Thu, 29 Oct 2009 21:39:14 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5219</guid><description>&lt;p&gt;Railers all around the globe, I am very happy to report that the Ruby on Rails community in Brazil is growing strong. Last 13, 14th of October we had &lt;a href="http://www.railssummit.com.br/en/home"&gt;Rails Summit Latin America&lt;/a&gt;, with 550+ attendees we had the 2nd edition of the second largest Rails conference in the world after the official RailsConf.&lt;/p&gt;
&lt;p&gt;This conference is possible thanks to &lt;a href="http://www.locaweb.com.br"&gt;Locaweb&lt;/a&gt;, the largest hosting company in South America. Together, we were able to organize two very successful events. When I started being a Rails activist back in 2006, with virtually no rubyists in Brazil, I never imagined how far we would be able to go. Now we have a healthy ecosystem, with some great recognized open source programmers, some small consultings starting to pop up, a few startups starting to show up, even some &amp;#8216;enterprisey&amp;#8217; companies coming to adopt it. The Brazilian Rails community is a force to be reckoned.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/29/_URA6555_original.JPG" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s a lot more to do though, and I am again counting on the international rubyists support to keep on going. The last 2 Rails Summits were real challenges, and we will strive to continue to deliver the best conference in South America. Up to this year&amp;#8217;s edition I had to have closed speakers list, but for 2010 I will finally be able to have an open Call for Participation, and I hope Railers all around the world show interest to come visit Brazil, get to know our beautiful country and meet our friendly people. I will let you know the details next year, as soon as I can.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/29/_URA6631_original.JPG" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Rails Summit gets inspiration from the official RailsConf. The format of the conference comprises 2 full days, with 2 parallel tracks, a Lightning Talk session, real-time translation from English to Portuguese and Portuguese to English, rooms with power plugs and ubiquitous wireless internet access. Up to this year we used the Elis Regina auditorium, inside the Anhembi Convention Center area, in São Paulo City. For next year we will move it to &lt;a href="http://www.convencoesfreicaneca.com.br/Conteudo.asp"&gt;Frei Caneca Convention Center&lt;/a&gt;, which is also in São Paulo City, nearer the famous Paulista Ave. area, much more convenient to find hotels and entertainment areas. I think you will enjoy it. Prices will be around &lt;span class="caps"&gt;USD&lt;/span&gt; 140 for the same 2 full days of event. &lt;strong&gt;Above&lt;/strong&gt;, you can see 2 photos from one of the other conferences that Locaweb does in the Frei Caneca Convention Center.&lt;/p&gt;
&lt;p&gt;We recorded all the talks from this year&amp;#8217;s edition and I will release them as soon as possible, so you can see how it was. &lt;a href="http://www.twitter.com/AkitaOnRails"&gt;Follow me&lt;/a&gt; on twitter or subscribe to this &lt;a href="http://feeds.feedburner.com/AkitaOnRailsEnglish"&gt;blog&amp;#8217;s feed&lt;/a&gt;. I&amp;#8217;ll keep you posted.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D00qVXHdcC2glSCDo7OuGCB1GCY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D00qVXHdcC2glSCDo7OuGCB1GCY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D00qVXHdcC2glSCDo7OuGCB1GCY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D00qVXHdcC2glSCDo7OuGCB1GCY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=K9CEc8F_P9k:6mYuuceguSU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=K9CEc8F_P9k:6mYuuceguSU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=K9CEc8F_P9k:6mYuuceguSU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=K9CEc8F_P9k:6mYuuceguSU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=K9CEc8F_P9k:6mYuuceguSU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=K9CEc8F_P9k:6mYuuceguSU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=K9CEc8F_P9k:6mYuuceguSU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/K9CEc8F_P9k" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/10/30/rails-summit-2010-commence-planning</feedburner:origLink></item><item><title>[Rails Summit 2010] Iniciando o Planejamento</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/EA_oBFf58eA/rails-summit-2010-iniciando-o-planejamento</link><pubDate>Tue, 27 Oct 2009 16:36:52 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5218</guid><description>&lt;p&gt;&lt;strong&gt;Atualização 28/10:&lt;/strong&gt; atualizei a estatística e pensando melhor, as conclusões são um pouco diferentes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Atualização 29/10:&lt;/strong&gt; coloquei algumas fotos do Frei Caneca.&lt;/p&gt;
&lt;p&gt;Um evento do porte do &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit&lt;/a&gt; não se faz da noite para o dia. Em 2008 a Locaweb assumiu o risco e juntos fizemos um evento de escala internacional em apenas 3 meses. Isso facilmente se traduziria em suicídio, mas acho que conseguimos um excelente resultado, dadas as limitações logísticas.&lt;/p&gt;
&lt;p&gt;Para este ano, começamos meses atrás. O auditório Elis Regina foi alugado já no fim de 2008. Os palestrantes internacionais foram contactados logo depois da RailsConf 2009, em Las Vegas. Marketing, patrocínios, fornecedores, foi tudo planejado de antemão pela equipe de eventos da Locaweb. Por isso este ano, comparado com o ano passado, foi bem mais sossegado.&lt;/p&gt;
&lt;p&gt;Mas ainda temos algumas dúvidas não solucionadas. Por isso ontem lancei um &lt;a href="http://twitter.com/AkitaOnRails/status/5208145984"&gt;twit&lt;/a&gt; com uma primeira mini-pesquisa. Ficamos surpresos que a reação foi bem rápida! Em meros 5 min mais de 100 respostas foram coletadas. Neste momento já temos mais de &lt;del&gt;330&lt;/del&gt; 464 respostas. Com isso, eu compilei este resultado parcial:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/28/Screen_shot_2009-10-28_at_9.12.34_PM_original.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;O Elis Regina é um excelente local, espaço amplo, bom para a comunidade socializar. Por outro lado ele é contra-mão para a maioria das pessoas. Fica longe do centro da cidade, ou seja, longe da maior parte dos hotéis. Fica longe dos pontos de baladas, bares. Fica longe do transporte público principal como metrô. Além de ser um dos locais mais caros de São Paulo para se fazer eventos.&lt;/p&gt;
&lt;p&gt;Em vista disso, estamos considerando o &lt;a href="http://www.freicanecashopping.com.br/convencoes/Espacos_auditorio.asp"&gt;Centro de Convenções do Shopping Frei Caneca&lt;/a&gt; que, para quem não conhece, fica no bairro Cerqueira César, uma região razoavelmente próxima à Avenida Paulista. Ou seja, próximo a metrô, a hotéis, bares, etc. Como fica no topo do Shopping Center, existe uma ampla praça de alimentação, o que nos economiza o problema de comida (vocês não tem idéia da dor de cabeça). Por outro lado, o espaço para socializar e fazer atividades paralelas como dojos, é menor.&lt;/p&gt;
&lt;p&gt;Outra coisa é sobre os dias do evento. Pessoalmente eu achava que os melhores dias seriam sexta e sábado, para ter domingo para descansar e para ficar mais fácil de convencer a empresa a liberar. Nós sempre fizemos no meio da semana, por experiência do pessoal de eventos. Mas olhando no gráfico vemos o seguinte: 1) quem já participou prefere durante a semana; 2) quem nunca participou prefere de sábado e domingo; 3) sexta e sábado perde nos dois. É quase um empate técnico entre dia de semana e sábado-domingo. Pensando melhor, acho que faremos durante a semana mesmo, preferencialmente numa &lt;strong&gt;quarta e quinta&lt;/strong&gt;, porque sexta sempre tem trânsito pior e as condições para um evento são piores, historicamente.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/27/4026602579_8ce8a84c53_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Eventos a preços baratos (próximo ou abaixo de R$ 50) são muito fáceis de encher. Mas eventos acima de R$ 200 já são considerados investimentos. Por isso mesmo ainda é complicado falar em sair de São Paulo. Dificilmente daria para encher mais de 500 pessoas a preços acima de R$ 200 fora daqui. Pelo menos não temos nenhum dado que indique o contrário.&lt;/p&gt;
&lt;p&gt;Por enquanto, consideramos fazer a conferência no Frei Caneca, provavelmente numa sexta e sábado. Ao preço de R$ 250 fixo, sem opção para estudantes (que é algo que só o Rails Summit fez, praticamente nenhum outro evento tem isso). A maioria não dá conta disso, mas R$ 400 é um preço &lt;strong&gt;muito abaixo&lt;/strong&gt; do preço de custo do evento. O Elis Regina, palestrantes internacionais, alimentação (2 almoços, 4 coffee-breaks), encarecem bastante o custo total. Essas mudanças todas ajudam a baixar bastante esse custo mantendo a qualidade geral.&lt;/p&gt;
&lt;p&gt;Não haverá mais preço especial para estudantes. Aliás, a maioria das conferências não tem isso, nos dois últimos anos eu pedi para colocar, mas não vale a pena. Fazendo no Frei Caneca, podemos reduzir o preço, isso já tornará o evento mais acessível e sem necessidade de mais descontos.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/28/Screen_shot_2009-10-28_at_9.56.46_PM_original.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Eu sei que muitos gostariam do evento em outros estados. Eu ouvi especialmente Rio de Janeiro e Porto Alegre. Pessoalmente, minha escolha é o Rio de Janeiro, sem sombra de dúvidas, pelas possibilidades de turismo e tudo mais. Mas, falando de forma realista, é muito difícil de justificar. Só de curiosidade, acima está o gráfico de participação relativa por estado. O que sabemos, comparando com outros eventos que participamos e organizamos, a logística é muito diferente. Fora de São Paulo, existem poucas alternativas de fornecedores, o custo para organizar é maior. Eventos menores são menos difíceis, mas um do porte do Summit é mais complicado.  E infelizmente é uma realidade que a população de São Paulo é pelo menos uma ordem de grandeza superior a qualquer outro lugar e esse tipo de conferência depende de uma quantidade maior de pessoas do que o normal. Somente eventos do tamanho de um &lt;span class="caps"&gt;FISL&lt;/span&gt; conseguem movimentar pessoas para fora de São Paulo.&lt;/p&gt;
&lt;p&gt;Além disso, eu ouvi e li diversos feedbacks e estou considerando tudo para melhorar ainda mais o conteúdo do ano que vem. Uma das coisas que finalmente vou conseguir fazer é um &lt;em&gt;Call for Participation&lt;/em&gt;, ou seja, alguns palestrantes eu mesmo vou pré-selecionar, mas a maioria dos slots serão preenchidos via propostas enviadas a mim por palestrantes de qualquer lugar do mundo. Daí eu farei a seleção e isso deve tornar a programação mais diversificada. Se você se interessa, comece a pensar no assunto. Ano que vem vou colocar as regras e datas no ar. E ainda teremos também a Desconferência, possivelmente de forma mais organizada e com tempo mais rígido que nos últimos dois anos (na RailsConf, o microfone é desligado por um timer, por exemplo).&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/29/_URA6555_original.JPG" alt="" /&gt;&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/29/_URA6631_original.JPG" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Acima estão algumas fotos do Encontro Locaweb que fizemos no Frei Caneca. Nesse caso estamos usando o auditório aberto, com 900 pessoas. Esse dá para ser dividido em 2 para fazer mais de uma sala.&lt;/p&gt;
&lt;p&gt;Bom, ainda é cedo. Estamos avaliando as opções. Ano que vem traremos as novidades o mais cedo possível.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jKw_HfGJIjMlupbjBD5YXUF_5FI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jKw_HfGJIjMlupbjBD5YXUF_5FI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jKw_HfGJIjMlupbjBD5YXUF_5FI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jKw_HfGJIjMlupbjBD5YXUF_5FI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=EA_oBFf58eA:pYgx9OjFRmg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=EA_oBFf58eA:pYgx9OjFRmg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=EA_oBFf58eA:pYgx9OjFRmg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=EA_oBFf58eA:pYgx9OjFRmg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=EA_oBFf58eA:pYgx9OjFRmg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=EA_oBFf58eA:pYgx9OjFRmg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=EA_oBFf58eA:pYgx9OjFRmg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/EA_oBFf58eA" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/10/27/rails-summit-2010-iniciando-o-planejamento</feedburner:origLink></item><item><title>[Rails Summit 2009] Retrospectiva</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/b4Hv3oy-r4Y/rails-summit-2009-retrospectiva</link><pubDate>Sat, 17 Oct 2009 16:06:16 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5217</guid><description>&lt;p&gt;Finalmente acabou, a segunda edição do Rails Summit 2009. Novamente tivemos aproximadamente 550 participantes, 20 palestrantes. Num ano de &amp;#8220;semi-crise&amp;#8221; (ou seja lá como estão chamando isso), foi um bom resultado.&lt;/p&gt;
&lt;p&gt;Tive a impressão que vieram mais pessoas de mais lugares fora de São Paulo. Claro, os cariocas vieram em peso, praticamente um arrastão :-) Foi ótimo ter todos eles juntos depois do #devinrio. O pessoal do Norte estava presente com o Paulo Fagiani, o Elomar e, claro, seu irmãozinho Aldo. Veio pessoal do Sul, do Nordeste, do Centro-Oeste. Além deles vieram meus amigos da Argentina, que não vejo desde o Locos x Rails que participei no começo do ano.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/17/4013425175_68b7b78b6f_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Os Brasileiros, novamente, deram um show de hospitalidade e camaradagem, teve #horaextra todos os dias. No primeiro dia foi no Bar Brahma, no segundo dia foi no Villa Vintém, eu sei que ontem ainda saíram novamente. É o tipo de coisa que não acontece nas RailsConf. Espero que todo mundo tenha aproveitado para fazer novos amigos, conseguir mais contatos e voltar mais inspirados em cada região para fortalecer as comunidades locais.&lt;/p&gt;&lt;h2&gt;Os Bastidores&lt;/h2&gt;
&lt;p&gt;Escolhemos o mesmo local do ano passado, o auditório Elis Regina, no Anhembi. Porém, ano passado as coisas foram feitas com muito mais pressa. Em 2008, começamos a organizar o evento em julho, para ser lançado em outubro, ou seja 3 meses efetivamente para fazer tudo. Foi bem difícil, mas a equipe de eventos da Locaweb fez um excelente trabalho. Este ano começamos a olhar isso com muito mais antecedência. Por exemplo, o website ficou pronto em julho, sendo que no ano passado ele só foi pro ar em setembro.&lt;/p&gt;
&lt;p&gt;Mesmo assim, os dias que escolhemos &amp;#8211; 13 e 14 de outubro &amp;#8211; foram difíceis de pegar. Tentamos já alugar em novembro do ano passado e mesmo assim a agenda de 2009 do anhembi já estava lotada, tinham poucos slots pra pegar. Ano passado concorremos na mesma semana do Microsoft TechEd e este ano concorremos com o Futurecom.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/17/4013423475_c59676970d_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Dos problemas do ano passado, resolvemos todos os principais:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;o calor do auditório B, que foi bem ruim no primeiro dia, mas resolvemos desta vez tendo de antemão nada menos do que 16 ar condicionados. Acredito que desta vez ninguém passou calor.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;o espaço apertado e o pé-direito baixo do auditório B foram resolvidos também, com uma sala que era quase o dobro do tamanho e altura do que o do ano passado. Para isso alugamos um espaço muito maior, o que também proporcionou um restaurante muito melhor e que gerou quase nenhuma fila na hora do almoço, nenhum aperto, e também muito menos calor.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;com o auditório B maior também conseguimos colocar uma cabine de tradução decente e tivemos tradução simultânea de português-inglês e inglês-português nos dois auditórios. Uma reclamação justa no ano passado foi a divisão de americanos no auditório maior e brasileiros no menor. O problema foi logístico mesmo. Pior porque ano passado tínhamos tradução para espanhol. Este ano eu resolvi não ter tradução pra espanhol (quem viaja até o Brasil pro Summit com certeza sabe inglês). Assim conseguimos dividir e colocar americanos também no auditório B.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/17/4013421709_e2f7a99ec5_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Cerca de 3 ou 4 meses antes do evento já estávamos em contato com todos os palestrantes internacionais para acelerar o processo de vistos que sempre é um problema. A intenção era que eles também se adiantassem, mas muitos deles empurraram com a barriga e deixaram para a última hora. Por isso tinha palestrante que só pegou o visto alguns dias antes do evento, seja porque demoraram, ou seja porque o consulado demorou mesmo.&lt;/p&gt;
&lt;p&gt;E ao contrário do ano passado, este ano tivemos muito mais problemas com os palestrantes internacionais. Primeiro o Justin Gehtland não conseguiu tirar o visto a tempo. No lugar dele deu tempo de colocar o Carlos Villela. O mesmo problema aconteceu com o Jason Seifer, mas felizmente ele ia palestrar em dupla com o Bruno Miranda e por isso deu pra manter a mesma palestra. Finalmente, na última hora, o Bryan Liles ficou com suspeita de gripe suína e também não pôde vir, mas como ele ia palestrar em paralelo comigo, acabei fazendo minha palestra ser um keynote.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/17/4008589268_7079c412a1_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Fora isso o Ilya Grigorik e o Chad Fowler tiveram problemas com atrasos nos vôos, mas pelo menos eles vieram antecipadamente. O Gregg Pollack aterrissou em São Paulo lá pelas 8 da manhã, sendo que ele ia palestrar às 10:30, então foi bem corrido. O Matt Aimonetti teve o vôo dele cancelado pela Delta Airlines! Felizmente ele conseguiu se virar e arranjar outro vôo e chegou na hora do almoço, sendo que a palestra dele ia fechar o primeiro dia! Haja coração!&lt;/p&gt;
&lt;p&gt;Este ano, felizmente, tivemos mais patrocinadores que o ano passado, também começamos a procurá-los com muito mais antecedência. Mais legal ainda porque tivemos três empresas que efetivamente usam Rails: a Caelum, a GoNow e a ThoughtWorks. Sem revelar valores, este ano conseguimos gastar menos do que o ano passado e ainda conseguimos entregar mais. Aprendemos muito. Mesmo assim, a Locaweb ainda foi a maior patrocinadora deste evento, pagando aproximadamente 1/3 do valor total. Para quem estava curioso, não, o evento não foi feito para dar lucro. Mas não significa que podemos gastar quanto quisermos &amp;#8211; não podemos -, por isso estamos já planejando o que podemos fazer para diminuir esse custo sem sacrificar muito da qualidade e ainda manter o evento viável.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/17/4013422701_3bf8169750_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/17/4014188680_c646e7583b_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Outro problema inesperado que não tivemos no ano passado foi o serviço dos terceirizados de som. No primeiro dia tivemos diversos problemas espalhados pelo dia, como chiado, microfonia, microfone que desligava do nada, etc. Vocês devem ter sentido parte desse problema, nos bastidores estava literalmente um &amp;#8220;pega-para-capar&amp;#8221;. Mas corremos para ajustar isso, e no segundo dia acho que não tivemos nenhum problema de microfones. O trabalho nos bastidores é bem pesado. Para que os participantes achem que tudo está correndo de forma suave, alguém está puxando muito peso por baixo dos panos :-) Eu só fiz isso agora no Summit, é preciso parabenizar a equipe de eventos da Locaweb que faz essa correria o ano inteiro.&lt;/p&gt;
&lt;h2&gt;Palestras&lt;/h2&gt;
&lt;p&gt;Ano passado algumas pessoas reclamaram porque as palestras focavam muito ou em testes ou em temas motivacionais. Eu acho importante que os keynotes sejam mais motivacionais. Por outro lado, foi por pura coincidência, mas de fato tivemos muitas palestras sobre o tema de testes. Este ano tentei tomar mais cuidado para escolher os palestrantes e acho que, no geral, deu uma boa mistura de temas para agradar à maioria.&lt;/p&gt;
&lt;p&gt;Tanto o Chad Fowler quanto o Obie Fernandez fizeram palestras especificamente direcionadas ao público brasileiro. O Chad levou em consideração que, diferente dos Estados Unidos, a adoção de Ruby on Rails está só começando aqui no Brasil. Por isso mesmo o tema foi sobre &amp;#8220;Insurgência Rails&amp;#8221;, ou seja, estratégias para tentar colocar Rails, gradualmente, dentro da sua empresa.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;embed src="http://blip.tv/play/AYGohSwC" type="application/x-shockwave-flash" width="480" height="390" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt; &lt;/p&gt;
&lt;p&gt;O Obie palestrou sobre um tema que eu particularmente gosto muito (e que palestrei bastante a respeito no começo do ano), que é sobre maestria. Em particular ele usou o tema do livro &amp;#8220;Outliers&amp;#8221; do Malcolm Gladwell, para explicar que talento é muito menos importante do que prática. Gladwell explica que, empiricamente, uma pessoa precisa de pelo menos 10 mil horas de prática antes de chegar ao estágio de mestre. Isso são 10 anos de esforço. Isso vai contra o &amp;#8220;bom senso&amp;#8221; de que &amp;#8220;basta se formar&amp;#8221; ou &amp;#8220;basta se certificar&amp;#8221; ou &amp;#8220;basta ter um cargo de sênior&amp;#8221; para se considerar bom em qualquer coisa. Novamente, um tema bastante comum atualmente para nós.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/17/4008587336_9347f99bcd_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Para falar especificamente de Rails 3, eu pedi ao Matt Aimonetti, um dos Rails Activists e ao José Valim, que participou do Google Summer of Code. O Ilya Grigorik e o Marcos Tapajós falaram de duas temas mais modernos, PubSubHubBub e CouchDB. As palestras um pouco mais técnicas ficaram a cargo do Leonardo Borges com JRuby, Arthur Zapparoli com Git, Glenn Vanderburg com Testes Fuzz, David Chelimsky com RSpec e Cucumber, o Carlos Brando falou sobre criar um framework web com Ruby, o Gregg Pollack e o Pratik Naik nos mostraram diversas bibliotecas e técnicas que muitos desconheciam, e o Fabio Kung mostrou todo o poder da magia negra da metaprogramação Ruby, codificando uma &lt;span class="caps"&gt;DSL&lt;/span&gt; ao vivo!&lt;/p&gt;
&lt;p&gt;Especificamente sobre Ruby, tivemos Rich Kilmer dando uma introdução ao Macruby e o Nando Vieira mostrando as novidades do Ruby 1.9. O Bruno Miranda falou sobre o case Cyloop, mais um exemplo de quão longe o Rails pode escalar. O Carlos Villela nos contou sobre a experiência da Thoughtworks em projetos de Ruby e, finalmente, o grande Vinícius Teles deu um show com um tema à la &lt;em&gt;Getting Real&lt;/em&gt; da 37signals, falando sobre sua própria experiência como empreendedor e dando dicas valiosas para quem quer começar seu próprio negócio. De longe uma das palestras mais aplaudidas do Summit.&lt;/p&gt;
&lt;p&gt;No primeiro dia ainda tivemos a famosa Desconferência, com várias boas palestras curtas. O pessoal do Guru-SP e RubyInside se apresentou. O pessoal da Plataforma Tec mostrou um plugin novo de autenticação, o Devise. O Cipriani deu um show técnico mostrando sistemas de comunicação em real-time usando Rails, &lt;span class="caps"&gt;AMPQ&lt;/span&gt;, etc. A galera do Rio, que veio em peso, falou de todas as atividades cariocas como o Dojo, o #horaextra, o Dev in Rio. O pessoal de Natal falou sobre eventos e do Oxente Rails 2010. Mas um dos pontos altos foi o Aldo Filho, irmão do Elomar, que fez uma palestra codificando ao vivo, com apenas 11 anos, demonstrando muito controle no que estava fazendo e falando tão bem quanto um profissional do palco. Dêem uma olhada:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;embed src="http://blip.tv/play/AYGnlTEC" type="application/x-shockwave-flash" width="480" height="390" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt; &lt;/p&gt;
&lt;p&gt;Eu fiquei particularmente contente com a diversidade de assuntos e mais: como os brasileiros estão envolvidos em assuntos avançados. Espero que todos sigam os exemplos deles. Aliás, antes que eu me esqueça, dia 13, o primeiro dia do evento foi aniversário do José Valim e eu esqueci de dar os parabéns a ele! Sorry!!&lt;/p&gt;
&lt;h2&gt;Minha Palestra&lt;/h2&gt;
&lt;p&gt;Propositalmente, com tantos excelentes Railers e Rubistas presentes dando excelentes palestras, eu me dei ao luxo de palestrar sobre algo fora de Rails. Foi a segunda versão do tema &amp;#8220;Além do Caos&amp;#8221;. É uma palestra sobre agilidade que não fala especificamente sobre o que a maioria pensa sobre uma apresentação sobre metodologias Ágeis. Portanto nada de ficar pregando &amp;#8220;farás &lt;span class="caps"&gt;TDD&lt;/span&gt;&amp;#8221;, ou &amp;#8220;farás pair-programming&amp;#8221; ou qualquer outro tipo de dogmatização dessa maneira.&lt;/p&gt;
&lt;p&gt;Partindo da premissa que, sim, metodologias ágeis funcionam &amp;#8220;para quem pratica da forma correta&amp;#8221; eu quero encontrar as razões de porque as coisas funcionam. O &amp;#8220;porque&amp;#8221; sempre é mais importante do que o &amp;#8220;como&amp;#8221;, porque o segundo é consequência do primeiro. Sem entender os fundamentos, jamais saberemos quando estamos indo na direção correta, jamais saberemos como decidir quando encontramos bifurcações. Em vez de ficar apenas com as anedotas, o &amp;#8220;para ele funcionou então para mim deve funcionar&amp;#8221;, o folclore, eu preciso entender os princípios.&lt;/p&gt;
&lt;p&gt;Porém, mesmo depois de mais de um ano pesquisando a respeito em áreas como física, psicologia, sociologia, biologia, etc eu ainda não tenho um modelo unificado que explica todos os aspectos. Por isso o subtítulo da palestra é &amp;#8220;Pensamentos Aleatórios sobre Agilidade&amp;#8221;.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/17/4008267467_fb07b46c60_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Alguns recados importantes que eu queria passar: 1) nós estamos acostumados demais a apenas dogmatizar e apresentar as coisas como &amp;#8220;tudo funciona, basta fazer direito&amp;#8221;, isso pode ser bom num curto primeiro momento, mas não se sustenta; 2) sim, agilidade funciona mas se mantê-la estática ela deixará de funcionar rapidamente, por isso é preciso entender os princípios para adaptá-la e evoluir; 3) agilidade não é o fim da linha, é apenas mais um passo evolutivo, existem mais caminhos à frente que alguns já desbravaram; 4) ninguém tem uma resposta exata ainda, por isso apenas discutir o sexo dos anjos não nos levará a lugar algum.&lt;/p&gt;
&lt;p&gt;Nós, da organização do Rails Summit, gravamos todas as palestras. Eu ainda não sei como ficou porque o terceiro que ficou responsável por isso ainda não terminou de editar tudo. Assim que estiver tudo certo, vou publicar no site oficial do evento. Enquanto isso, alguns participantes gravaram algumas palestras, então vocês já podem se adiantar e assistir a minha por exemplo:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;object width="600" height="450"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7099091&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=7099091&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="450"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/7099091"&gt;Além do Caos &amp;#8211; Pensamentos Aleatórios sobre Agilidade&lt;/a&gt; from &lt;a href="http://vimeo.com/locaweb"&gt;Locaweb&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;
&lt;h2&gt;Comunidade&lt;/h2&gt;
&lt;p&gt;A melhor parte do evento, sempre, é a participação da comunidade, e vocês não decepcionaram. Muitos Railers, todo mundo reunido, trocando idéias, experiências, essa é a idéia do evento. Assistir as palestras é apenas uma pequena parte. E isso é bem claro no pós-evento. Tanto no primeiro quanto no segundo dia, uma quantidade enorme de pessoas continuaram reunidas, socializando. No primeiro dia demos Denial of Service no Bar Brahma do Aeroclube, no segundo dia foi a vez de um stack overflow no bar Vila Vintém.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/17/4013422197_f5cd323c1f_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Este deve ser o único evento de tecnologia que dá ressaca depois :-) Enquanto todos se recuperam, alguns já começaram a reportar como foi o evento. Então lá vão alguns dos links mais recentes.&lt;/p&gt;
&lt;p&gt;Quem quiser ver as fotos do evento, vejam estes álbuns:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.flickr.com/photos/danicuki/sets/72157622452350763/"&gt;Daniel Cukier&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.flickr.com/photos/levycarneiro/sets/72157622594891438/"&gt;Levy Carneiro&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://galeria.tapajos.me/fotos/72157622604025186/1"&gt;Marcos Tapajós&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.flickr.com/photos/plentz/sets/72157622607530412/"&gt;Diego Plentz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quem quiser assistir vídeos do evento, aqui vai:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Agaelebe: &lt;a href="http://agaelebe.blip.tv/"&gt;Blip.tv&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://vimeo.com/tag:railssummit"&gt;Vimeo&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.youtube.com/results?search_type=videos&amp;amp;search_query=railssummit+2009&amp;amp;search_sort=video_date_uploaded"&gt;YouTube!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finalmente, os blog posts:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Alexandre Gazzola: &lt;a href="http://alexandregazola.wordpress.com/2009/10/14/rails-summit-latin-america-summary-of-the-first-day/"&gt;Primeiro Dia&lt;/a&gt; e &lt;a href="http://alexandregazola.wordpress.com/2009/10/17/rails-summit-latin-america-summary-of-the-second-day/"&gt;Segundo Dia&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://andrefaria.com/2009/10/15/rails-summit-2009-chad-fowler/"&gt;André Faria Gomes&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Leonardo Faria: &lt;a href="http://leonardofaria.net/2009/10/13/rails-summit-resumo-do-primeiro-dia/"&gt;Primeiro Dia&lt;/a&gt;, &lt;a href="http://leonardofaria.net/2009/10/14/rails-summit-resumo-do-segundo-dia/"&gt;Segundo Dia&lt;/a&gt; e &lt;a href="http://leonardofaria.net/2009/10/15/o-ecossistema-rails/"&gt;Ecossistema&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Carlos Brando: &lt;a href="http://www.nomedojogo.com/2009/10/13/os-slides-da-minha-apresentacao-no-rails-summit-latin-america-2009/"&gt;slides&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Nando Vieira: &lt;a href="http://simplesideias.com.br/rails-summit-o-que-mudou-no-ruby-1-9/"&gt;slides&lt;/a&gt; and &lt;a href="http://merbist.com/2009/10/23/railssummit-2009/"&gt;summary of the event&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Matt Aimonetti: &lt;a href="http://www.slideshare.net/mattetti/future-of-ruby-and-rails-2223913"&gt;slides&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Pratik Naik: &lt;a href="http://www.railsfire.com/article/railssummit-slides"&gt;slides&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://infoether.com/articles/mark/keynoting-at-rails-summit-latin-america-brazil"&gt;InfoEther&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;José Valim e Plataforma Tec: &lt;a href="http://feedproxy.google.com/~r/PlataformaBlog/~3/xTvItvrfC18/"&gt;slides&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Cairo Noleto: &lt;a href="http://caironoleto.com/2009/10/16/rails-summit-2009-e-o-lancamento-do-trendti-me/"&gt;TrendTi.me&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Blue Soft: &lt;a href="http://bluesoft.wordpress.com/2009/10/15/manifesto-2-0-por-alexandre-gomes-no-rails-summit-2009/"&gt;Manifesto 2.0&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.areacriacoes.com.br/2009/10/15/rails-summit"&gt;Área Criações&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://sharpshooting.com.br/2009/10/13/rails-summit-latin-america-2009/"&gt;SharpShooting&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://pothix.com/blog/events/rails-summit-2009"&gt;Willian Molinari&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://carlosantoniodasilva.wordpress.com/2009/10/19/rails-summit-latin-america-2009/"&gt;Carlos Antônio&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.madrugaonrails.com.br/2009/10/18/rails-summit-simplesmente-Otimo"&gt;Madruga on Rails&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Alexandre Gomes: &lt;a href="http://blog.seatecnologia.com.br/2009/10/16/sinform-agiles-e-railssummit"&gt;blog da &lt;span class="caps"&gt;SEA&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://hgfischer.com.br/2009/10/resumao-rails-summit-2009/"&gt;Herbert Fischer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Espero que todos tenham aproveitado o evento. Não deixem de blogar, publicar suas fotos e vídeos, compartilhar o que aprenderam, novas inspirações, novas idéias. Obrigado a todos que participaram, espero revê-los até o ano que vem!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LGm1oDj9NmSz4Qj0Z1Hv6y_FNC4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LGm1oDj9NmSz4Qj0Z1Hv6y_FNC4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LGm1oDj9NmSz4Qj0Z1Hv6y_FNC4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LGm1oDj9NmSz4Qj0Z1Hv6y_FNC4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=b4Hv3oy-r4Y:s8MyvBnEc5o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=b4Hv3oy-r4Y:s8MyvBnEc5o:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=b4Hv3oy-r4Y:s8MyvBnEc5o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=b4Hv3oy-r4Y:s8MyvBnEc5o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=b4Hv3oy-r4Y:s8MyvBnEc5o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=b4Hv3oy-r4Y:s8MyvBnEc5o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=b4Hv3oy-r4Y:s8MyvBnEc5o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/b4Hv3oy-r4Y" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/10/17/rails-summit-2009-retrospectiva</feedburner:origLink></item><item><title>[Rails Summit 2009] ThoughtWorks pousa no Brasil</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/tQJ-BMk9FbM/rails-summit-2009-thoughtworks-pousa-no-brasil</link><pubDate>Thu, 08 Oct 2009 14:55:34 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5216</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;English readers:&lt;/strong&gt; click &lt;a href="/2009/10/08/rails-summit-2009-thoughtworks-pousa-no-brasil#thoughtworks_english"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Como eu &lt;a href="http://twitter.com/AkitaOnRails/statuses/4687822234"&gt;twitei ontem&lt;/a&gt;, estamos muito orgulhos de anunciar que a &lt;a href="http://www.thoughtworks.com"&gt;ThoughtWorks&lt;/a&gt; se juntou como patrocinador da conferência na última hora. Inclusive eles resolveram dar um presente à comunidade: patrocinar metade de &lt;strong&gt;30 ingressos&lt;/strong&gt; para o Rails Summit, promoção que começou algumas horas atrás e ficará no ar até acabarem os ingressos patrocinados. Não percam!&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/8/TW_Logo_original.gif" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Mais ainda, você deve ter ouvido rumores sobre isso. Roy Singham, fundador da ThoughtWorks, soltou o anúncio na conferência &lt;a href="http://agiles2009.org"&gt;Agiles 2009&lt;/a&gt; acontecendo em Florianópolis, SC alguns minutos atrás. Estou muito contente de confirmar que sim, os rumores eram verdade: a ThoughtWorks decidiu aterrissar no Brasil. Eles estabelecerão seu quartel-general em Porto Alegre, RS, começando este ano.&lt;/p&gt;
&lt;p&gt;Agora, eles tem intenções de começar a contratar desenvolvedores de software brilhantes imediatamente. Eles estarão no Rails Summit para falar com &lt;strong&gt;você&lt;/strong&gt;, procurando grandes pessoas para embarcarem nessa empreitada.&lt;/p&gt;
&lt;p&gt;A ThoughtWorks é muito conhecida como uma força no mundo de desenvolvimento de software, com diversos escritórios pelo mundo. Eles tem grandes e conhecidos engenheiros, arquitetos trabalhando lá, redefinindo a maneira como fazemos software, como Martin Fowler.&lt;/p&gt;
&lt;p&gt;Não percam essa oportunidade de vir conhecê-los, pessoalmente. Estaremos esperando por você no &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit 2009&lt;/a&gt;, semana que vem!&lt;/p&gt;&lt;p&gt;&lt;a name="thoughtworks_english"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;ThoughtWorks lands in Brazil&lt;/h2&gt;
&lt;p&gt;As I &lt;a href="http://twitter.com/AkitaOnRails/statuses/4687822234"&gt;twitted yesterday&lt;/a&gt;, we are very proud to announce that &lt;a href="http://www.thoughtworks.com"&gt;ThoughtWorks&lt;/a&gt; joined us as sponsor for the conference at the last moment.&lt;/p&gt;
&lt;p&gt;Moreover, you may have heard rumors about this. Roy Singham, founder of ThoughtWorks,  just released the announcement at the &lt;a href="http://www.agiles2009.org"&gt;Agiles 2009&lt;/a&gt; conference in Florianópolis, SC a few minutes ago. I am very happy to confirm that yes, the rumors are true: ThoughtWorks decided to land in Brazil. They will establish their head-quarters in Porto Alegre &amp;#8211; RS, starting this year.&lt;/p&gt;
&lt;p&gt;Now, they have intentions to start hiring bright and insightful software developers right away. They will be at Rails Summit to talk to &lt;strong&gt;you&lt;/strong&gt;, searching for matches to sign up for their enterprise.&lt;/p&gt;
&lt;p&gt;ThoughtWorks is a well known software development powerhouse, with offices around the globe. There are several great and well known engineers, architects working there, redefining the way we do software, such as Martin Fowler.&lt;/p&gt;
&lt;p&gt;Don&amp;#8217;t miss this opportunity to come and get to know them, in person. We will be awaiting you at &lt;a href="http://www.railssummit.com.br/en/home"&gt;Rails Summit 2009&lt;/a&gt;, next week!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W8ETIjaNSSh0X2jyYiIOMNEIA6c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W8ETIjaNSSh0X2jyYiIOMNEIA6c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W8ETIjaNSSh0X2jyYiIOMNEIA6c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W8ETIjaNSSh0X2jyYiIOMNEIA6c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=tQJ-BMk9FbM:gkqw8nTlhMs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=tQJ-BMk9FbM:gkqw8nTlhMs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=tQJ-BMk9FbM:gkqw8nTlhMs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=tQJ-BMk9FbM:gkqw8nTlhMs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=tQJ-BMk9FbM:gkqw8nTlhMs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=tQJ-BMk9FbM:gkqw8nTlhMs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=tQJ-BMk9FbM:gkqw8nTlhMs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/tQJ-BMk9FbM" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/10/08/rails-summit-2009-thoughtworks-pousa-no-brasil</feedburner:origLink></item><item><title>[Rails Summit 2009] Palestrante Arthur Zapparoli</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/gJZmv2SiZtw/rails-summit-2009-palestrante-arthur-zapparoli</link><pubDate>Tue, 06 Oct 2009 08:03:42 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5215</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;English translation:&lt;/strong&gt; click &lt;a href="/2009/10/06/rails-summit-2009-palestrante-arthur-zapparoli#arthur_english"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;div style="float: right; margin: 3px"&gt;&lt;a href="http://railssummit.locaweb.com.br/pt-BR/speakers#arthur_zapparoli"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/19/original/arthur.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Arthur é Desenvolvedor de Softwares, trabalha com Ruby e Rails desde 2006. Atualmente trabalha para a startup brasileira &lt;a href="http://spix.info/"&gt;Spix&lt;/a&gt;. É conhecido como &lt;a href="http://twitter.com/arthurgeek"&gt;@ArthurGeek&lt;/a&gt; na comunidade e publica artigos no seu &lt;a href="http://arthurgeek.net/"&gt;blog&lt;/a&gt; no qual fala sobre assuntos relacionados à desenvolvimento.&lt;/p&gt;
&lt;p&gt;Ele foi um dos que começou a evangelizar mais o &lt;a href="http://merb-br.org/"&gt;Merb&lt;/a&gt; na comunidade brasileira, assim como o &lt;strong&gt;Git&lt;/strong&gt; como versionador de controle.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Como você encontrou Ruby/Rails, o que foi que mais te atraiu?&lt;/p&gt;
&lt;p&gt;Conheci Rails na época da versão 0.13. Eu já trabalhava com Python, e adorava os recursos de uma linguagem dinâmica. Quando conheci o Rails, não me apaixonei por ele de cara, ainda gostava mais do Python. Nessa época, me envolvi com alguns &amp;#8220;clones&amp;#8221; do Rails para o Python (ironicamente, nenhum deles deu certo). Porém, como precisava de algo pronto para ser usado, acabei usando o Rails nos projetos da empresa onde trabalhava, e, com isso, precisei estudar Ruby da maneira certa. Depois disso, me apaixonei por Ruby e estou nessa até hoje. Claro que não abandonei o Python, mas hoje posso dizer que Ruby é minha linguagem favorita.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Quais assuntos mais te interessam atualmente e porque?&lt;/p&gt;
&lt;p&gt;Tenho um grande interesse pelo Rails 3, já que sempre gostei do Merb. Ruby 1.9 é algo que utilizo nos dias de hoje e estou sempre de olho nas novidades com relação à isto. Fora do mundo Ruby/Rails, me interesso bastante pelos &amp;#8220;Document based databases&amp;#8221; como CouchDB, e, principalmente o MongoDB. Tanto o Ruby 1.9 quanto o MongoDB é algo que utilizamos no dia-a-dia da empresa onde trabalho.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Sobre o que trata a sua palestra e para que tipos de desenvolvedores é mais indicado?&lt;/p&gt;
&lt;p&gt;A palestra se chama: &amp;#8220;Git: Controle de versões do jeito certo&amp;#8221; e abordará temas básicos, diferentes workflows e algumas dicas mais avançadas. É indicada para desenvolvedores que não usam nenhum controle de versões ou para aqueles que querem saber mais sobre como o Git pode ajudar no dia-a-dia de seu trabalho.&lt;/p&gt;&lt;p&gt;&lt;a name="arthur_english"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Speaker Arthur Zapparoli&lt;/h2&gt;
&lt;div style="float: right; margin: 3px"&gt;&lt;a href="http://railssummit.locaweb.com.br/en/speakers#arthur_zapparoli"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/19/original/arthur.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Arthur is a Software Developer, works with Ruby and Rails since 2006. He currently works for a Brazilian startup &lt;a href="http://spix.info/"&gt;Spix&lt;/a&gt;. He is known as &lt;a href="http://twitter.com/arthurgeek"&gt;@ArthurGeek&lt;/a&gt; in the community and posts articles in his &lt;a href="http://arthurgeek.net/"&gt;blog&lt;/a&gt;, talking about topics related to software development.&lt;/p&gt;
&lt;p&gt;He also began helping to evangelize more &lt;a href="http://merb-br.org/"&gt;Merb&lt;/a&gt; in the Brazilian community as well as the &lt;strong&gt;Git&lt;/strong&gt; version control system.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; How did you find Ruby / Rails, what attracted you the most?&lt;/p&gt;
&lt;p&gt;I got to know Rails at the time of version 0.13. I&amp;#8217;ve worked with Python, and loved the features of a dynamic language. When I met Rails, I didn&amp;#8217;t fall in love with it right away, I still liked Python more. At that time, I got involved with some &amp;#8220;clones&amp;#8221; of Rails for Python (ironically, none of them worked for me). However, as I needed something ready to be used, I ended up using Rails in projects for the company where I worked, and, therefore, I had to study Ruby the right way. After that, I fell in love with Ruby and I&amp;#8217;m with it today. Of course not I&amp;#8217;ve not abandoned Python, but today I can say that Ruby is my favorite language.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What topics interest you the most today and why?&lt;/p&gt;
&lt;p&gt;I have great interest in Rails 3, as I always liked Merb. Ruby 1.9 is something that I use today and I&amp;#8217;m always on the lookout for news regarding this. Outside the Ruby / Rails world, I&amp;#8217;m very interested by &amp;#8220;Document based databases&amp;#8221; such as CouchDB, and especially MongoDB. Both Ruby 1.9 and MongoDB are things we use in a daily basis at the company where I work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What is your talk about and what kind of developers will benefit the most?&lt;/p&gt;
&lt;p&gt;The talk is called &amp;#8220;Git: Version control the correct way&amp;#8221; and will address key topics, different workflows and some more advanced tips. It is recommended for developers who do not use any version control or for those who want to learn more about how Git can help in your daily workflow.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tEDdNF7fuYbbCTDpSjayugPqHKc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tEDdNF7fuYbbCTDpSjayugPqHKc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tEDdNF7fuYbbCTDpSjayugPqHKc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tEDdNF7fuYbbCTDpSjayugPqHKc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=gJZmv2SiZtw:M_lQAqC2Wjw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=gJZmv2SiZtw:M_lQAqC2Wjw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=gJZmv2SiZtw:M_lQAqC2Wjw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=gJZmv2SiZtw:M_lQAqC2Wjw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=gJZmv2SiZtw:M_lQAqC2Wjw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=gJZmv2SiZtw:M_lQAqC2Wjw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=gJZmv2SiZtw:M_lQAqC2Wjw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/gJZmv2SiZtw" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/10/06/rails-summit-2009-palestrante-arthur-zapparoli</feedburner:origLink></item><item><title>[Off-Topic] Windows and Unix: Promiscuidade</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/I6aSP6hQtGc/off-topic-windows-and-unix-promiscuidade</link><pubDate>Sun, 04 Oct 2009 16:33:22 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5214</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Desde que o &lt;a href="http://en.wikipedia.org/wiki/Windows_NT"&gt;Windows NT&lt;/a&gt; 3.1 foi lançado em 1993, ele sempre teve algum suporte a sub-sistemas. Os bons engenheiros contratados da &lt;span class="caps"&gt;DEC&lt;/span&gt;, que efetivamente desenvolveram o NT, levaram à Redmond tecnologias e conceitos desconhecidos a eles como portabilidade (na época ele rodava em processadores PowerPC, &lt;span class="caps"&gt;MIPS&lt;/span&gt;, etc), access control lists, microkernel, multi-tarefa preemptiva, etc. O NT suportava, além do sub-sistema Win32, também OS/2 e um ambiente mínimo &lt;a href="http://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem"&gt;&lt;span class="caps"&gt;POSIX&lt;/span&gt;.1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;De qualquer forma, esse suporte era bem rudimentar. Ele foi substituído anos depois pelo &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX"&gt;Services for Unix&lt;/a&gt; 1.0 em 1999 no NT 4.0 SP3+. Mas foi só no &lt;span class="caps"&gt;SFU&lt;/span&gt; 3.5, lançado em 2004, que esse suporte finalmente amadureceu a ponto de ser minimamente usável. Eu me lembro de usar o &lt;span class="caps"&gt;SFU&lt;/span&gt; 3.5 no meu desktop em vez do Cygwin (embora o Cygwin ainda pareça ter mais aplicativos e mais flexibilidade), mas pelo menos era um suporte &amp;#8220;oficial&amp;#8221; da Microsoft &amp;#8211; se isso significa alguma coisa.&lt;/p&gt;
&lt;p&gt;Junto ao &lt;span class="caps"&gt;SFU&lt;/span&gt; temos o suporte opcional da &lt;a href="http://www.interix.com/"&gt;Interix&lt;/a&gt;, que completa esse suporte com um ambiente &lt;span class="caps"&gt;GNU&lt;/span&gt; mais completo, incluindo SDKs para recompilar ferramentas Unix para Windows com &lt;span class="caps"&gt;SFU&lt;/span&gt;. Com ele conseguimos finalmente ter ferramentas úteis no mundo Windows, como acesso ao OpenSSH.&lt;/p&gt;
&lt;p&gt;Para os puristas, que não gostam de instalar nada que não seja &amp;#8220;default&amp;#8221; da Microsoft, saibam que no próprio &lt;em&gt;Add and Remove Programs&lt;/em&gt; (no Windows 2003) como no &lt;em&gt;Add Feature&lt;/em&gt; (no Windows 2008) você tem a opção &lt;em&gt;Subsystem for &lt;span class="caps"&gt;UNIX&lt;/span&gt;-based Applications&lt;/em&gt;, também conhecido agora como &lt;a href="http://suacommunity.com/"&gt;&lt;strong&gt;&lt;span class="caps"&gt;SUA&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;. Primeiro você precisa instalar esse sub-sistema.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/4/Screen_shot_2009-10-04_at_7.48.52_PM_original.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;Feito isso, você precisa baixar o &lt;em&gt;Utilities and &lt;span class="caps"&gt;SDK&lt;/span&gt;&lt;/em&gt; para o &lt;a href="http://u.akitaonrails.com/RH8C"&gt;Windows XP/2003&lt;/a&gt; ou &lt;a href="http://u.akitaonrails.com/vT11"&gt;Windows Vista/2008&lt;/a&gt;, eles pesam uns 190Mb e 490Mb, respectivamente. A instalação deles é demorada, e a única coisa a se lembrar é:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Escolha a opção &amp;#8220;Custom Installation&amp;#8221; e não &amp;#8220;Stantard&amp;#8221;. Daí escolha todos os &amp;#8220;opcionais&amp;#8221; desmarcados, você precisará deles.&lt;/li&gt;
	&lt;li&gt;Quando aparecer opções como setuid, sutoroot, case-insensitive, também marque todas as opções.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/4/Screen_shot_2009-10-04_at_7.24.41_PM_original.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Terminada a instalação, no caso do Windows 2008, você pode diretamente já baixar um dos &lt;a href="http://www.suacommunity.com/Default.htm#bundles"&gt;bundles&lt;/a&gt; que já vem com todas as ferramentas que você precisa. Selecione o link correto para W2K8 e já baixe de uma vez o &amp;#8220;Complete Toolset&amp;#8221; para facilitar.&lt;/p&gt;
&lt;p&gt;No Windows 2003, por alguma razão estranha &amp;#8211; não sei se é somente na minha máquina &amp;#8211; a instalação do bundle não funcionou. Em vez disso precisei baixar e instalar o &lt;a href="http://www.suacommunity.com/pkg_install.htm"&gt;Bootstrap Installer 3.5&lt;/a&gt;. No Windows 2008, se não quiser o bundle e quiser escolher os pacotes manualmente, nessa mesma página, baixe o &lt;a href="http://www.suacommunity.com/pkg_install.htm"&gt;Bootstrap Installer 6.0&lt;/a&gt;. Em todo caso esse é o mínimo para ter um Package Manager. Ele te dará condições de instalar pacotes mais ou menos como num Ubuntu você consegue fazer &amp;#8220;apt-get install apache2&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Ele provavelmente pedirá que você reboote a máquina, pelo menos no caso do Windows 2003. Depois, as duas primeiras coisas que eu instalei foram:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;pkg_update -L bash&lt;tt&gt;
&lt;/tt&gt;pkg_update -L openssh&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Pode parecer estranho o comando se chamar &amp;#8220;pkg_update&amp;#8221; mas existe um &amp;#8220;pkg_add&amp;#8221; que parece que é antigo e eles recomendam o primeiro. Outro detalhe: eu executei esses comandos via o &amp;#8220;C Shell&amp;#8221; que tem link no Start Menu. No Windows 2008, depois de instalar o Bash eu ganho um novo atalho, mas no Windows 2003 deu algum problemas e eu criei o atalho manualmente copiando a partir do &amp;#8220;C Shell&amp;#8221; e editando o caminho para executar &amp;#8220;/usr/local/bin/bash -l&amp;#8221;.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/4/Screen_shot_2009-10-04_at_8.30.08_PM_original.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Para iniciar o daemon do OpenSSH basta fazer:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;/etc/init.d/sshd start&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Pelo visto o &lt;span class="caps"&gt;SUA&lt;/span&gt; reinicia automaticamente os daemons configurados no /etc/init.d, como deveria mesmo. Isso lhe dá outras coisas como um daemon de cron, sendmail, dentre outros. Para acessar o sshd, não se esqueça de liberar &lt;em&gt;incoming connections&lt;/em&gt; na porta 22 no Firewall do Windows (que vem ativado por padrão no 2008 e desligado no 2003).&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/4/Screen_shot_2009-10-04_at_8.31.55_PM_original.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Se você cair em algum problema de core dumps, segmentation faults, talvez você precise desligar o &lt;span class="caps"&gt;DEP&lt;/span&gt;. Para isso edite o arquivo C:\boot.ini e troque a opção &lt;em&gt;&amp;#8220;/NoExecute=&amp;#8230;&amp;#8221;&lt;/em&gt; por &lt;em&gt;&amp;#8220;/NoExecute=AlwaysOff&amp;#8221;&lt;/em&gt;. Isso deve resolver esses problemas.&lt;/p&gt;
&lt;p&gt;Finalmente, você precisa &lt;a href="http://support.microsoft.com/kb/310519"&gt;configurar uma variável de ambiente&lt;/a&gt; chamada &amp;#8220;&lt;span class="caps"&gt;HOME&lt;/span&gt;&amp;#8221; apontando para seu diretório padrão. No Windows 2003 foi &amp;#8220;C:\&lt;span class="caps"&gt;DOCUME&lt;/span&gt;~1\&lt;span class="caps"&gt;ADMINI&lt;/span&gt;~1&amp;#8221; e no 2008 foi &amp;#8220;C:\Users\Administrator&amp;#8221;. Feito isso, a partir do meu Mac, conectei nos Windows via &lt;span class="caps"&gt;SSH&lt;/span&gt; normalmente. Ele me pediu senha e me jogou no meu diretório com shell Bash. Até parecia que eu havia conectado num Unix normal.&lt;/p&gt;
&lt;p&gt;Para ficar mais padrão, eu criei symbolic links para a pasta &amp;#8216;home&amp;#8217;:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;# Windows 2003:&lt;tt&gt;
&lt;/tt&gt;ln -s /dev/fs/C/Documents\ and\ Settings /home&lt;tt&gt;
&lt;/tt&gt;# Windows 2008:&lt;tt&gt;
&lt;/tt&gt;ln -s /dev/fs/C/Users /home&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Então, eu criei um projeto Rails básico, sem nada. Rodei o meu &lt;a href="http://github.com/akitaonrails/locarails"&gt;Locarails&lt;/a&gt; para gerar uma receita básica de capistrano. Editei o &amp;#8220;config/environment.rb&amp;#8221; criado e comentei as linhas 74 e 88:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;#run &amp;quot;cd #{release_path} &amp;amp;&amp;amp; rake db:migrate RAILS_ENV=production&amp;quot;&lt;tt&gt;
&lt;/tt&gt;#run &amp;quot;ln -s #{deploy_to}/current/public #{public_html}/#{application}&amp;quot;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Lembrando que as configurações são case-sensitive e, no meu caso, estava testando com usuário &amp;#8220;Administrator&amp;#8221; (com &amp;#8220;A&amp;#8221; maiúsculo):&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;set :user, &amp;quot;Administrator&amp;quot;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Fiz um &amp;#8220;cap deploy:setup&amp;#8221;, depois um &amp;#8220;cap deploy&amp;#8221; e, &lt;em&gt;voilá&lt;/em&gt; funcionou! Ele foi capaz de se conectar via &lt;span class="caps"&gt;SSH&lt;/span&gt; e realizar operações básicas como mkdir, ln, test e inclusive foi capaz de fazer upload dos arquivos via &lt;span class="caps"&gt;SCP&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Esse sub-sistema deveria vir instalado por padrão nos Windows, isso os tornaria mais úteis e incentivaria existir mais serviços como Capistrano que conseguem se comunicar com sistemas &lt;span class="caps"&gt;POSIX&lt;/span&gt;. No Windows tirando shares de rede (inseguro), &lt;span class="caps"&gt;RDP&lt;/span&gt; (inseguro), &lt;span class="caps"&gt;RPC&lt;/span&gt; (inseguro), &lt;span class="caps"&gt;FTP&lt;/span&gt; (inconveniente e inseguro) não sobra muita coisa para integrar. Com OpenSSH ganhamos um canal seguro, com autenticação simplificada graças ao sistema de troca de chaves e um ambiente &lt;span class="caps"&gt;POSIX&lt;/span&gt; onde podemos executar scripts e comandos para administrar as máquinas remotamente.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="http://www.akitaonrails.com/assets/2009/10/4/Screen_shot_2009-10-04_at_8.38.12_PM_original.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Vou fazer mais brincadeiras com esse ambiente, talvez coisas como Puppet, Chef, AutomateIt consigam fazer tarefas básicas em servidores Windows também. Outro detalhe: a conexão &lt;span class="caps"&gt;SSH&lt;/span&gt; só lhe dá acesso ao Bash ou outro shell Unix, mas não ao Command Prompt ou Powershell do Windows. Para isso você precisa de um &lt;a href="http://serverfault.com/questions/8411/what-is-a-good-ssh-server-to-use-on-windows"&gt;servidor &lt;span class="caps"&gt;SSH&lt;/span&gt; comercial&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;em&gt;&amp;#8220;Click e click Não é administração de sistemas. Um bom sysadmin tem intimidade com o console/shell.&amp;#8221;&lt;/em&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kh3Ak585NilnERmsyeLjg_ZuEis/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kh3Ak585NilnERmsyeLjg_ZuEis/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kh3Ak585NilnERmsyeLjg_ZuEis/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kh3Ak585NilnERmsyeLjg_ZuEis/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=I6aSP6hQtGc:1cBKkICfHy8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=I6aSP6hQtGc:1cBKkICfHy8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=I6aSP6hQtGc:1cBKkICfHy8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=I6aSP6hQtGc:1cBKkICfHy8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=I6aSP6hQtGc:1cBKkICfHy8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=I6aSP6hQtGc:1cBKkICfHy8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=I6aSP6hQtGc:1cBKkICfHy8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/I6aSP6hQtGc" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/10/04/off-topic-windows-and-unix-promiscuidade</feedburner:origLink></item><item><title>[Rails Summit 2009] Palestrante Nando Vieira</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/Gwl6RIuk-gk/rails-summit-2009-palestrante-nando-vieira</link><pubDate>Thu, 01 Oct 2009 08:32:35 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5213</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;English translation:&lt;/strong&gt; click &lt;a href="/2009/10/01/rails-summit-2009-palestrante-nando-vieira#nando_english"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;div style="float: left; margin: 3px"&gt;&lt;a href="http://www.railssummit.com.br"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/20/original/nando.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://railssummit.locaweb.com.br/pt-BR/speakers#nando_vieira"&gt;Nando Vieira&lt;/a&gt; é um dos rubistas mais antigos da nossa comunidade. Ele bloga no &lt;a href="http://simplesideias.com.br/"&gt;Simples Ideias&lt;/a&gt;, um dos blogs mais conhecidos sobre Ruby on Rails do Brasil. Trabalha atualmente como desenvolvedor web na Abril Digital, utilizando Rails. É também o fundador do &lt;a href="http://spesa.com.br/"&gt;Spesa&lt;/a&gt;, além de manter dezenas de &lt;a href="http://github.com/fnando"&gt;projetos Open-source&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Recentemente lançou um e-Book da sua série &lt;a href="http://howto.simplesideias.com.br/"&gt;&lt;span class="caps"&gt;HOWTO&lt;/span&gt;&lt;/a&gt; entitulado &lt;a href="http://simplesideias.com.br/pdf-o-que-mudou-no-ruby-1-9/"&gt;O que mudou no Ruby 1.9&lt;/a&gt;. Da mesma série você pode baixar o e-Book gratuito &lt;a href="http://howto.simplesideias.com.br/rails-application-templates"&gt;Rails Application Templates&lt;/a&gt; que ele também escreveu.&lt;/p&gt;
&lt;p&gt;Venha conhecê-lo no &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit Latin America&lt;/a&gt;, que acontece nos dias 13 e 14 de Outubro. Estamos chegando perto. Você já se inscreveu?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Como você encontrou Ruby/Rails, o que foi que mais o atraiu?&lt;/p&gt;
&lt;p&gt;Conheci o Rails ainda na versão 0.13. Na época, não tinha quase nenhum blog em português sobre o tema e decidi criar o meu! Tinha visto algum artigo falando sobre ele e sobre como era fácil criar aplicativos e fui conferir. Por coincidência, estava querendo conhecer uma nova linguagem e quando vi a sintaxe do Ruby, decidi que era ela que eu iria aprender! E nessa estou até hoje!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; O que você tem estudado ou desenvolvido recentemente, seja em projetos particulares ou open source?&lt;/p&gt;
&lt;p&gt;Tenho visto bastante coisa sobre o Ruby 1.9, principalmente para poder adequar meus projetos a esta versão. Além disso, tenho me interessado bastante sobre testes em geral, principalmente Javascript (&lt;a href="http://visionmedia.github.com/jspec/"&gt;JSpec&lt;/a&gt; e &lt;a href="http://pivotallabs.com/users/nick/blog/articles/433-screw-unit-a-new-js-testing-framework-version-0-1"&gt;Screw Unit&lt;/a&gt;) e Aceitação (Cucumber).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Sobre o que trata a sua palestra e para quais tipos de desenvolvedores é mais indicado?&lt;/p&gt;
&lt;p&gt;Irei abordar as mudanças do Ruby 1.9 em relação à versão 1.8, com exemplos mostrando as novas funcionalidades e como corrigir comportamentos que deixaram de funcionar. É um assunto indicado para todos os programadores, pois cedo ou tarde, esta será a versão recomendada!&lt;/p&gt;&lt;p&gt;&lt;a name="nando_english"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Speaker Nando Vieira&lt;/h2&gt;
&lt;div style="float:left; margin: 3px"&gt;&lt;a href="http://www.railssummit.com.br/en/home"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/20/original/nando.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://railssummit.locaweb.com.br/en/speakers#nando_vieira"&gt;Nando Vieira&lt;/a&gt; is one of the luminaries of the Brazilian Ruby Community. He blogs at &lt;a href="http://simplesideias.com.br/"&gt;Simples Idéias&lt;/a&gt;, one of the most popular blogs about Ruby on Rails in Brazil. He currently works as web developer for April Digital, using Rails. He&amp;#8217;s also the founder of &lt;a href="http://spesa.com.br/"&gt;Spesa&lt;/a&gt;, and maintains dozens of &lt;a href="http://github.com/fnando"&gt;Open-source projects&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;He recently released an e-book of his &lt;a href="http://howto.simplesideias.com.br/"&gt;&lt;span class="caps"&gt;HOWTO&lt;/span&gt;&lt;/a&gt; series titled &lt;a href="http://howto.simplesideias.com.br/o-que-mudou-no-ruby-19/"&gt;What has changed in Ruby 1.9&lt;/a&gt;. In the same series you can download the free e-Book &lt;a href="http://howto.simplesideias.com.br/rails-application-templates"&gt;Rails Application Templates&lt;/a&gt; which he also wrote.&lt;/p&gt;
&lt;p&gt;Come meet him at &lt;a href="http://www.railssummit.com.br/en/home"&gt;Rails Summit Latin America&lt;/a&gt;, on October 13th and 14th. We&amp;#8217;re getting close. Have you registered already?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; How did you find Ruby/Rails, what attracted you the most?&lt;/p&gt;
&lt;p&gt;I found Rails when it was still in version 0.13. At the time, there was nearly zero blogs in Portuguese about the subject and I decided to create my own! I had seen an article talking about how easy it was to create applications with it and I decided to give it a shot. Coincidentally, I was thinking of learning a new language and when I saw the syntax of Ruby, it was decided that I would learn it! And I continued up to this day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What have you studied or developed recently, for private projects or open source?&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve seen quite a lot about Ruby 1.9, mainly in order to tailor my projects to this version. Also, I have been concerned enough about testing in general, especially Javascript (&lt;a href="http://visionmedia.github.com/jspec/"&gt;JSpec&lt;/a&gt; and &lt;a href="http://pivotallabs.com/users/nick/blog/articles/433-screw-unit-a-new-js-testing-framework-version-0-1"&gt;Screw Unit&lt;/a&gt;) and Acceptance Testing (Cucumber).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What is your talk about and what kinds of developers are going to benefit the most?&lt;/p&gt;
&lt;p&gt;I will address the changes in Ruby 1.9 from version 1.8, with examples showcasing the new features and how to fix the behaviors that no longer work. It is a subject recommended for all developers, because sooner or later, this will become the mainstream version!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4k8X_tbVZ9u02Hdj9VhPruShAG8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4k8X_tbVZ9u02Hdj9VhPruShAG8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4k8X_tbVZ9u02Hdj9VhPruShAG8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4k8X_tbVZ9u02Hdj9VhPruShAG8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Gwl6RIuk-gk:GiLVKM1oS4Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Gwl6RIuk-gk:GiLVKM1oS4Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Gwl6RIuk-gk:GiLVKM1oS4Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=Gwl6RIuk-gk:GiLVKM1oS4Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Gwl6RIuk-gk:GiLVKM1oS4Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=Gwl6RIuk-gk:GiLVKM1oS4Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Gwl6RIuk-gk:GiLVKM1oS4Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/Gwl6RIuk-gk" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/10/01/rails-summit-2009-palestrante-nando-vieira</feedburner:origLink></item><item><title>[Rails Summit 2009] Palestrante Ilya Grigorik</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/-wnKnUPVL9Y/rails-summit-2009-palestrante-ilya-grigorik</link><pubDate>Sun, 27 Sep 2009 19:18:40 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5212</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;English translation:&lt;/strong&gt; click &lt;a href="/2009/09/27/rails-summit-2009-palestrante-ilya-grigorik#ilya_english"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;div style="float: left; margin: 3px"&gt;&lt;a href="http://railssummit.locaweb.com.br/en/speakers#ilya_grigorik"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/11/original/Ilya.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://railssummit.locaweb.com.br/en/speakers#ilya_grigorik"&gt;Ilya Grigorik&lt;/a&gt; é um desenvolvedor Ruby bem conhecido, especialmente por causa do seu blog &lt;a href="http://igvita.com"&gt;Igvita.com&lt;/a&gt; onde encontramos alguns dos artigos tecnicamente mais ricos e ainda assim de fácil compreensão, não só em torno de aplicações Rails, mas tudo que se relaciona com ele, incluindo drivers de banco de dados, análise de desempenho, integração de serviços e muito mais. Por causa disso ele foi premiado como &lt;a href="http://weblog.rubyonrails.org/2009/2/18/2009-ruby-hero-awards"&gt;Ruby Hero&lt;/a&gt; na RailsConf 2008 em Portland.&lt;/p&gt; 
&lt;p&gt;Ele também é o fundador do &lt;a href="http://www.postrank.com/"&gt;PostRank&lt;/a&gt;, um sistema de monitoramento em tempo real de  engajamento social de mídia e plataforma de análise. Ele acabou de lançar um outro produto complementar chamado &lt;a href="http://analytics.postrank.com/"&gt;Analytics&lt;/a&gt;, outra ótima maneira de controlar os seus relacionamentos.&lt;/p&gt;
&lt;p&gt;Você terá uma grande oportunidade de conhecê-lo no &lt;a href="http://www.railssummit.com.br/en/home"&gt;Rails Summit Latin America&lt;/a&gt; este ano. Não esqueça de se inscrever logo! Estamos apenas a mais alguns dias de distância!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; O que você mais gosta sobre a linguagem Ruby, o recurso ou conceito que &amp;#8220;clica&amp;#8221; para você?&lt;/p&gt;
&lt;p&gt;Eu não consigo escolher apenas um atributo, pois como a maioria das coisas, geralmente é a soma das partes que compõe a experiência. E, na verdade, é o que eu mais gosto sobre Ruby: todas as peças &amp;#8220;clicam&amp;#8221; juntas. As decisões de design por trás da linguagem Ruby dão uma natureza incrivelmente maleável: é fácil estendê-lo, é fácil modificá-lo, é fácil fazê-lo funcionar da maneira que você precisa para trabalhar na sua aplicação. Rails é o principal exemplo disso, mas as centenas de outras estruturas construídas em cima de Ruby são todos exemplos dessa propriedade.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Como um desenvolvedor Rails, o que é a coisa que você realmente gosta quando está codificando aplicações web?&lt;/p&gt;
&lt;p&gt;A capacidade de ir do nada para um protótipo totalmente operacional, em uma xícara de café. Se você está olhando para uma aplicação Rails, ou uma rápida em Sinatra / Rails Metal, a enorme quantidade de recursos e plugins torna o processo divertido e imediatamente gratificante.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Qual é a sua mais recente pesquisa ou interesse em desenvolvimento?&lt;/p&gt;
&lt;p&gt;Muito do meu tempo é dedicado à investigação e criação de protótipos de instrumentos e abordagens de arquiteturas de software distribuído &amp;#8211; desde mensagens, para balanceamento de carga, a bancos de dados. Combinado com o fato de que a maioria dos serviços que implantamos no &lt;a href="http://www.postrank.com"&gt;PostRank&lt;/a&gt; são escritos em Ruby, significa também se aprofundar mais na compreensão das partes internas do Ruby, tentando otimizar a VM para uma arquitetura distribuída.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Sobre o que é a sua palestra para o Rails Summit e quem são os tipos de desenvolvedores que se beneficiarão mais?&lt;/p&gt;
&lt;p&gt;Nesta palestra vou cobrir as tecnologias emergentes por trás da &amp;#8220;Real-Time Web&amp;#8221; (&lt;span class="caps"&gt;XMPP&lt;/span&gt;, &lt;span class="caps"&gt;AMQP&lt;/span&gt;, &lt;span class="caps"&gt;PSHB&lt;/span&gt;, Webhooks). A adoção do Rails ao modelo RESTful liberou os dados dos aplicativos e nos permitiu definir serviços que poderiam facilmente falar uns com os outros, a Real-Time Web está indo um passo além: em vez de diferentes web-services se consultando o tempo todo, conectá-los através de interfaces &lt;em&gt;push&lt;/em&gt;. Esta palestra terá início a partir do início e fornecerá uma visão geral de alto nível das tecnologias subjacentes. Saindo dela, você deve ser capaz de diferenciar e decidir sobre qual tecnologia se adaptará melhor às suas necessidades (não são todos iguais!).&lt;/p&gt;&lt;p&gt;&lt;a name="ilya_english"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Speaker Ilya Grigorik&lt;/h2&gt;
&lt;div style="float: left; margin: 3px"&gt;&lt;a href="http://railssummit.locaweb.com.br/en/speakers#ilya_grigorik"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/11/original/Ilya.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://railssummit.locaweb.com.br/en/speakers#ilya_grigorik"&gt;Ilya Grigorik&lt;/a&gt; is a very well known Ruby developer, specially from his blog &lt;a href="http://igvita.com"&gt;Igvita.com&lt;/a&gt; where one can find some of the most technically rich yet easily understandable articles surrounding not only Rails apps but everything that goes with it, including database drivers, performance analysis, services integration and much more. Because of that he was awarded &lt;a href="http://weblog.rubyonrails.org/2009/2/18/2009-ruby-hero-awards"&gt;Ruby Hero&lt;/a&gt; at RailsConf 2008 in Portland.&lt;/p&gt;
&lt;p&gt;He is also the founder of &lt;a href="http://www.postrank.com"&gt;PostRank&lt;/a&gt;, a real-time social media engagement monitoring and analytics platform. He just released another companion product called &lt;a href="http://analytics.postrank.com/"&gt;Analytics&lt;/a&gt;, another great way to keep track of your online engagements.&lt;/p&gt;
&lt;p&gt;You will have a great opportunity to get to know him at &lt;a href="http://www.railssummit.com.br/en/home"&gt;Rails Summit Latin America&lt;/a&gt; this year. Don&amp;#8217;t forget to Register! We&amp;#8217;re just a few more days away!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What do you like the most about the Ruby language, what feature or concept really &amp;#8220;clicks&amp;#8221; for you?&lt;/p&gt;
&lt;p&gt;I can never pick any one attribute because as with most things, it is usually the sum of parts that makes up the experience. And in fact, that&amp;#8217;s what I enjoy most about Ruby: all the parts click together. The design decisions behind the language give Ruby an incredibly malleable nature: it is easy to extend it, it is easy to modify it, it is easy to make it work in just the way you need it to work for your application. Rails is the premier example of this, but the hundreds of other frameworks built on top of Ruby are all examples of this property.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; As a Rails developer, what is the thing you really enjoy when you&amp;#8217;re coding web apps?&lt;/p&gt;
&lt;p&gt;The ability to go from nothing to a fully operational prototype with one cup of coffee. Whether you&amp;#8217;re looking at a fully fledged Rails application, or a quick Sinatra / Rails Metal app, the sheer amount of resources, and plugins makes the process both fun and immediately rewarding.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What are your most recent research or development interests?&lt;/p&gt;
&lt;p&gt;A lot of my time is always dedicated to research and prototyping of tools and approaches for distributed software architectures &amp;#8211; anything from messaging, to load balancing, to databases. Combined with the fact that most of the services we deploy at &lt;a href="http://www.postrank.com"&gt;PostRank&lt;/a&gt; are written in Ruby, it also means delving deeper into understanding the internals of Ruby, and trying to optimize the VM for the distributed architecture.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What is your Rails Summit talk about and who are the kind of developers that will benefit the most?&lt;/p&gt;
&lt;p&gt;In this talk I will cover the emerging technologies behind the &amp;#8217;Real-Time Web&amp;quot; (&lt;span class="caps"&gt;XMPP&lt;/span&gt;, &lt;span class="caps"&gt;AMQP&lt;/span&gt;, &lt;span class="caps"&gt;PSHB&lt;/span&gt;, Webhooks). Rails adoption of the RESTful model liberated the data from the app and allowed us to define services that could easily talk to each other, the Real-Time Web is looking to go one step beyond that: instead of polling different web-services, it aims to connect them via push interfaces. This talk will start from the beginning and will provide a high-level overview of the underlying technologies. Coming out of it, you should be able to differentiate and decide on which technology suits your needs best (they are not all the same!).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Wtpg31KE-HcPCSeIn3GKv3vyVZQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wtpg31KE-HcPCSeIn3GKv3vyVZQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Wtpg31KE-HcPCSeIn3GKv3vyVZQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wtpg31KE-HcPCSeIn3GKv3vyVZQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=-wnKnUPVL9Y:98vWv9JUI6c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=-wnKnUPVL9Y:98vWv9JUI6c:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=-wnKnUPVL9Y:98vWv9JUI6c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=-wnKnUPVL9Y:98vWv9JUI6c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=-wnKnUPVL9Y:98vWv9JUI6c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=-wnKnUPVL9Y:98vWv9JUI6c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=-wnKnUPVL9Y:98vWv9JUI6c:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/-wnKnUPVL9Y" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/27/rails-summit-2009-palestrante-ilya-grigorik</feedburner:origLink></item><item><title>[Off-Topic] Procurar Raciocionar Faz Bem</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/Il8zLI32whk/off-topic-procurar-raciocionar-faz-bem</link><pubDate>Sat, 26 Sep 2009 18:17:54 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5211</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esta semana surgiram alguns artigos interessantes, todos relacionados de alguma forma ao pensamento &amp;#8220;Agile&amp;#8221; de desenvolvimento de software.&lt;/p&gt;
&lt;div style="float: right; margin: 3px"&gt;&lt;img src="/assets/2009/9/26/Screen_shot_2009-09-26_at_6.51.42_PM_original.png" alt="" /&gt;&lt;/div&gt;&lt;p&gt;O primeiro, que eu achei muito bom, foi o &lt;a href="http://blog.obiefernandez.com/content/2009/09/10-reasons-pair-programming-is-not-for-the-masses.html"&gt;10 razões porque Pair Programming não é para as massas&lt;/a&gt; que o Obie Fernandez escreveu a respeito de sua própria experiência com programação pareada e porque ela é difícil de ser implementada na maioria dos lugares.&lt;/p&gt;
&lt;p&gt;Esses pontos se resumem em limitações físicas (cubículos são tão século XX &amp;#8230;), convencionalismos corporativos ainda em voga (entrevistas feitas por RH baseado em currículo, primando por certificação, por exemplo). Para mim, dois dos pontos mais importantes são o 6o. e o 2o. Como qualquer conceito, interpretado da forma errada, dará resultados errados.&lt;/p&gt;
&lt;p&gt;A primeira coisa que um programador precisa entender sobre programação pareada é que existem sempre piloto e co-piloto. Há a imagem de que o piloto é o indivíduo produtivo naquele instante e o co-piloto apenas olha e acompanha, passivo, silencioso. De jeito nenhum: esta é a forma errada de se parear e é a forma que, corretamente, os não-programadores (gerentes, etc) imaginam estar pagando 2 pessoas mas tendo apenas o serviço de 1. Em programação pareada, &lt;strong&gt;ambos&lt;/strong&gt; precisam obrigatoriamente estar participando. O co-piloto deve estar atento aos erros do piloto. O co-piloto deve estar pensando à frente, já imaginando alternativas melhores, eles devem estar ambos engajados em encontrar as melhores soluções. Mais do que isso: o teclado e o mouse devem conseguir trocar de mãos constantemente. Não existe pareamento onde o co-piloto fica o dia inteiro apenas observando. Se o co-piloto é passivo e silencioso, o piloto está pilotando sozinho, é como se ele estivesse sozinho, ponto.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/26/ying_eric_pair_programming_original.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;Existem pelo menos dois tipos de pares: onde ambos são razoavelmente equivalentes em termos de capacidades ou onde um dos dois é menos experiente ou tem capacidades um pouco diferentes. No primeiro caso, a dinâmica deve ser mais óbvia, as idéias vão bater mais vezes, eles vão conseguir decidir coisas mais rapidamente. No segundo caso, um deles tem o objetivo de aprender rápido. Mais do que isso, o que sabe menos tem a obrigação de arriscar mais, sempre sob a supervisão do mais experiente. E jamais deve ser passivo, ele deve buscar conhecimento fora, quando não estão pareando, e nunca deve esperar que tudo o que ele vai aprender é o piloto quem tem a obrigação de ensinar. Isso é errado: quem sabe menos é quem sempre tem a obrigação de correr atrás, ou então assumir que não vai conseguir e abdicar da posição.&lt;/p&gt;
&lt;p&gt;Lembrando que o valor fundamental da Agilidade se chama &lt;em&gt;&amp;#8220;Accountability&amp;#8221;&lt;/em&gt;, não consigo traduzir isso ao pé-da-letra em português, mas seria algo além do que &amp;#8220;responsável&amp;#8221;. Uma equipe Ágil é uma equipe conscientemente &amp;#8220;accountable&amp;#8221; pelo que faz. Quando eles se decidem, junto com o cliente, o product owner, sobre o Sprint Backlog, por exemplo, eles não estão recebendo &amp;#8220;ordens&amp;#8221; do tipo &lt;em&gt;&amp;#8220;este sprint terá estas 10 user stories porque o chefe mandou.&amp;#8221;&lt;/em&gt; Não, a equipe que se compromete com 10 stories está de fato se &amp;#8220;comprometendo&amp;#8221;, ou seja, ela tem consciência da sua velocidade, das suas capacidade e das suas fraquezas e toma uma decisão racional baseada nisso. Uma equipe que depois diz &lt;em&gt;&amp;#8220;não deu para entregar porque pediram demais,&amp;#8221;&lt;/em&gt; está se esquivando da sua responsabilidade. Ela deveria ter dito, no começo, &lt;em&gt;&amp;#8220;não, só conseguiremos fazer 8 dessas user stories, 10 é demais.&amp;#8221;&lt;/em&gt; Combinado não sai caro. É tudo uma questão de acertar expectativas e negociar, colaborar em buscar a melhor solução, não &amp;#8220;qualquer&amp;#8221; solução.&lt;/p&gt;
&lt;p style="text-align: center; margin: 3px"&gt;&lt;img src="/assets/2009/9/26/pair_programming_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;O mesmo vale no mundo reduzido entre 2 programadores pareando. Ambos precisam estar comprometidos com o que estão produzindo e com o colega. Se um deles é menos experiente, ele não deve ser o peso morto. Por outro lado, claro, se o mais experiente vê que o outro está tentando, ele deve ajudá-lo. Há um limite, claro, entre &amp;#8220;ajudar&amp;#8221; e &amp;#8220;carregar nas costas&amp;#8221;. Aqui vale a honestidade, e por isso existe uma fase no fim do Sprint chamado &amp;#8220;Retrospectiva&amp;#8221;, é exatamente o momento para se discutir isso e deixar tudo aberto, às claras. &lt;em&gt;&amp;#8220;Eu não gosto do fato de estar produzindo sozinho, enquanto meu par não está ajudando.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Programação em Par, por si só, é apenas uma técnica. Mas lembrem-se que antes disso existem os valores do &lt;a href="http://agilemanifesto.org/"&gt;Manifesto Ágil&lt;/a&gt;. Todos sempre se esquecem: &lt;em&gt;&amp;#8220;Indivíduos e Interações mais do que Processos e Ferramentas.&amp;#8221;&lt;/em&gt; Se você está ainda se perguntando &amp;#8220;quais das técnicas Ágeis eu devo escolher usar&amp;#8221;, você ainda não entendeu. Antes de mais nada: você está comprometido com seu projeto? Sua equipe está comprometida com o projeto e com seus pares? Quais são os problemas que você quer resolver? Agilidade, por si só, não é uma receita mágica. Ela tem propósitos, se você não está mirando nesses propósitos, mas apenas escolhendo aleatoriamente 2 ou 3 práticas, isso não o torna Ágil, isso apenas o torna aleatório.&lt;/p&gt;
&lt;div style="float: right; margin: 3px"&gt;&lt;img src="/assets/2009/9/26/493px-Joel_spolsky_on_20_sept_2007_original.jpg" alt="" /&gt;&lt;/div&gt;&lt;p&gt;Daí vem o artigo do Joel Spolsky, sobre &lt;a href="http://www.joelonsoftware.com/items/2009/09/23.html"&gt;O Programador Fita Adesiva&lt;/a&gt;. Nesse artigo ele celebra um programador chamado Jamie Zawinski, de fato um grande programador, que trabalhou na Netscape produzindo software que ajudou a mudar o mundo, literalmente. Zawinski, segundo Spolsky, é do tipo &lt;em&gt;&amp;#8220;vamos lançar software o mais rápido possível, não importa como.&amp;#8221;&lt;/em&gt; e também do tipo &lt;em&gt;&amp;#8220;testes unitários são bonitos, mas quando o prazo aperta, o que importa é fazer rápido, e testes atrapalham.&amp;#8221;&lt;/em&gt; Lido da maneira errada, ela se torna uma desculpa para maus programadores dizerem: &lt;em&gt;&amp;#8220;Viva! Estou confirmado! Joel Spolsky disse que é bonito ser um programador cowboy!&amp;#8221;&lt;/em&gt; Pior ainda: &lt;em&gt;&amp;#8220;Joel Spolsky disse que eu não preciso me preocupar com testes.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Antes de pular para alguma conclusão precipitada &amp;#8211; maldita geração &amp;#8220;fast-food&amp;#8221; &amp;#8211; leia a resposta a esse post escrita pelo bom e velho &lt;a href="http://blog.objectmentor.com/articles/2009/09/24/the-duct-tape-programmer"&gt;Uncle Bob Martin&lt;/a&gt; onde ele refuta esses argumentos. Na realidade Spolsky e Bob já andaram se &amp;#8220;pegando&amp;#8221; algumas vezes no passado quando num podcast o &lt;a href="http://www.infoq.com/news/2009/02/spolsky-vs-uncle-bob"&gt;Spolsky menosprezou &lt;span class="caps"&gt;TDD&lt;/span&gt; e os princípios &lt;span class="caps"&gt;SOLID&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Robert Martin, que se você não conhece, foi quem originou a reunião de uns 10 anos atrás, junto com os principais pensadores em desenvolvimento de software como Kent Beck, Martin Fowler, Dave Thomas, Jeff Sutherland, dentre tantos outros, que deu origem ao Manifesto Ágil. Ele que é programador ativo desde antes ainda de qualquer um de nós ter nascido e que ainda programa até hoje. E não estou dizendo um sênior que ainda só programa em Cobol, muito pelo contrário, que já passou pelas principais plataformas tecnológicas, entende orientação a objetos como ninguém, programa em Java, e é um defensor de &lt;a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882"&gt;Código Limpo&lt;/a&gt;. Aliás, se você é usuário do Github, pode encontrar alguns &lt;a href="http://github.com/unclebob"&gt;projetos do Bob&lt;/a&gt; por lá também.&lt;/p&gt;
&lt;p&gt;Algum tempo atrás, eu provavelmente estaria &lt;a href="/2006/9/27/flame-war-joel-spolsky-vs-rails"&gt;xingando e amaldiçoando&lt;/a&gt; o Spolsky, porém eu acho que entendo a posição dele. Dando o contexto, o Spolsky é de fato um grande empresário, tem uma empresa bem sucedida, com produtos de nicho bem sucedidos, não deixa de ser uma 37signals da geração anterior. Ex-funcionário da Microsoft, ele foi um dos responsáveis pela existência do Visual Basic for Applications, que até hoje é o coração do Excel e a menina-dos-olhos de qualquer contador, analista, etc que basicamente não vivem sem as macros do Excel. Junto com Jeff Atwood ele mantém o famoso site &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;. Além disso tem o excelente livro &lt;a href="http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898"&gt;Joel on Software&lt;/a&gt;.&lt;/p&gt;
&lt;div style="float: left; margin: 3px"&gt;&lt;img src="/assets/2009/9/26/photo_martin_r_original.jpg" alt="" /&gt;&lt;/div&gt;&lt;p&gt;Neste ponto eu estou assumindo que não preciso lhes explicar o que é &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;Agilidade&lt;/a&gt;, nem quais são algumas das principais boas práticas de &lt;a href="http://www.extremeprogramming.org/"&gt;Extreme Programming&lt;/a&gt;, nem o que são os &lt;a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod"&gt;princípios &lt;span class="caps"&gt;SOLID&lt;/span&gt;&lt;/a&gt; do Bob Martin. Também estou assumindo que você já leu pelo menos alguns dos &lt;a href="http://www.joelonsoftware.com/"&gt;artigos&lt;/a&gt; do Spolsky para ter uma idéia do que ele costuma falar.&lt;/p&gt;
&lt;p&gt;Normalmente um agilista parece que está numa posição de &amp;#8220;convencer&amp;#8221; os outros de porque ser ágil é melhor. Mais do que isso: de que ser &amp;#8220;ágil&amp;#8221; e ser &amp;#8220;rápido&amp;#8221; não são sinônimos. Ser rápido é um efeito colateral de ser ágil. Essas interpretações são sutis.&lt;/p&gt;
&lt;p&gt;Por isso mesmo o que eu amaldiçôo é a geração fast-food: uma geração que se acostumou a pensar que as coisas são simples e superficiais. Que basta comprar um livro de &amp;#8220;emagreça em 7 dias&amp;#8221; para realmente emagrecer. Surpresa: se esse tipo de coisa realmente funcionasse, não haveria obesos no mundo. Duh.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/26/BurningTheWitch_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Essa mesma geração lê o que o Spolsky fala e, superficialmente, chega às conclusões que falei acima: &lt;em&gt;&amp;#8220;o Spolsky concorda que eu devo ser cowboy.&amp;#8221;&lt;/em&gt; E eu acho que muitos de nós, agilistas, somos vítimas disso também. Na ânsia de responder à essa superficialidade, acabamos até ultrapassando a linha. O Bob Martin, por exemplo, poderia simplesmente ter ignorado esse post em vez de ter respondido.&lt;/p&gt;
&lt;p&gt;Pessoas passivas, conformistas, esperam ser validadas. Elas não entendem porque fazem o que fazem, apenas fazem. Claro, fazem o que lhes parece mais simples, mais fácil, mais seguro, e não o que tem chances de ser melhor, que pode trazer mais benefícios, ou que seja novo. Elas querem que as pessoas gostem delas. Não importa se estão fazendo as coisas certas ou não. Não importa se há maneira melhor. Por isso essa ânsia em validação. Foi sobre isso que traduzi no artigo &lt;a href="/2009/09/08/off-topic-o-culto-da-moral-cinzenta"&gt;Culto da Moral Cinzenta&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Quando alguém do &amp;#8220;calibre&amp;#8221; &amp;#8211; pelo menos do &amp;#8220;calibre&amp;#8221; perceptível &amp;#8211; de um Spolsky lança um post como esse, milhares de programadores nitidamente ruins ao redor do mundo se sentem validadas, justificadas. É um cenário triste.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/26/BRILLIANT_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;E o Spolsky não está errado. O que ele coloca em cada um de seus artigos são pedaços de sua própria experiência. Cada pedaço, individualmente, não significa absolutamente nada. E não deve ser levado ao pé-da-letra. Aliás, nem mesmo o que o Bob Martin escreve num artigo. Nem mesmo o que eu escrevo num artigo. O resultado da soma das partes é ordens de grandeza maior do que a simples soma dos valores individuais de cada parte. É assim que funciona o caos.&lt;/p&gt;
&lt;p&gt;Ambos, Spolsky e Bob, não são antagônicos. O que um diz não invalida o que o outro diz. Esse é o truque. Ambos são &amp;#8220;pragmáticos&amp;#8221;, pelo menos segundo a definição de Pragmatismo de William James, onde algo é verdade para uma pessoa se ela tem utilidade para ela, independente se essa verdade continua sendo verdade para outra pessoa. (claro, ainda existe a interpretação de pragmatismo de Peirce e Dewey, mas isso é outra história). Ambos tentam explicar o que fazem que funcionam para eles. Dentro de um contexto, dentro do entendimento das premissas, dentro do entendimento dos valores, isso pode talvez funcionar para você também.&lt;/p&gt;
&lt;p&gt;O que quero dizer é que o que o Spolsky diz faz sentido para ele. O que Bob Martin diz faz sentido para ele. Se o que eles dizem fazem sentido para mim, ou para você, isso &lt;strong&gt;não&lt;/strong&gt; é problema deles, não é culpa deles, não deveria ser sequer do interesse deles. Da mesma forma, não usem o nome deles para justificar o que você faz ou diz sem entender porque está dizendo isso. &lt;em&gt;&amp;#8220;Eu faço &lt;span class="caps"&gt;TDD&lt;/span&gt; porque o Kent Beck disse que é bom&amp;#8221;&lt;/em&gt; é tão ruim de se dizer quanto &lt;em&gt;&amp;#8220;Eu faço código-grude porque o Zawinski disse que é melhor.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Você deve dizer: &lt;em&gt;&amp;#8220;Eu faço &lt;span class="caps"&gt;TDD&lt;/span&gt; porque eu &lt;strong&gt;sei&lt;/strong&gt; quais são os benefícios que isso trás para mim.&amp;#8221;&lt;/em&gt; Ou, &lt;em&gt;&amp;#8220;Eu faço código-grude de vez em quando porque tenho &lt;strong&gt;consciência&lt;/strong&gt; das consequências que isso vai me trazer e aceito pagar o preço por isso.&amp;#8221;&lt;/em&gt; Ou, &lt;em&gt;&amp;#8220;Eu não faço programação em par o tempo todo porque eu já &lt;strong&gt;analisei&lt;/strong&gt; e concluí que no meu caso isso não funciona muito bem.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Aliás, tudo que eu digo aqui &amp;#8211; no meu blog &amp;#8211; são elocubrações, reflexões pessoais, que porventura encontram seu caminho na forma escrita. Alguns acham que eu &amp;#8220;me acho o dono da verdade&amp;#8221;. Pois bem, isso é um problema de quem acha isso, não meu.&lt;/p&gt;
&lt;p&gt;Verdade seja dita: assim como o Bob diz no artigo dele, eu também não faço testes o tempo todo, muito menos testes primeiro como dita o &lt;span class="caps"&gt;TDD&lt;/span&gt;. Conheci as práticas de Extreme Programming apenas muitos anos depois que comecei como programador. Fui um programador extremamente cowboy a maior parte da minha carreira. E, mesmo entendendo porque todas as práticas ágeis são boas e porque eu deveria usá-las, eu ainda raciocino onde e quando devo usar o que. Quer dizer, eu entendo os princípios, as premissas e os resultados esperados. Caso contrário isso seria &lt;a href="http://en.wikipedia.org/wiki/Dogma"&gt;dogmatização&lt;/a&gt; e, por definição, tudo que é dogmatizado é ruim. &lt;strong&gt;Dogmas são a origem de todo o mal&lt;/strong&gt;. Tudo deve ser questionado, experimentado, medido, analisado e só então alguma conclusão pode surgir e, mesmo assim, pode ser refutado no futuro por novas evidências. O oposto de Dogma ou mesmo Cargo Cult é o &lt;a href="/2008/12/16/off-topic-m-todo-cient-fico-vs-cargo-cult"&gt;Método Científico&lt;/a&gt; como eu já expliquei anteriormente.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/26/world-trade-center_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Só porque foi o Martin Fowler quem falou, não torna isso uma verdade incontestável. Só porque o &lt;a href="http://en.wikipedia.org/wiki/Ward_Cunningham"&gt;Ward Cunningham&lt;/a&gt; falou não é verdade absoluta. Todos eles, todos nós, somos seres humanos e, como tal, somos muito falíveis. Nós falhamos, e falhamos muito mais do que gostaríamos.&lt;/p&gt;
&lt;p&gt;Num mundo onde as pessoas falham, o que funciona melhor é o conhecimento coletivo, onde a possibilidade do erro de um é compensada pela inteligência complementar do outro. Por isso mesmo comunidades &amp;#8211; apenas as que primam pelo conhecimento e evolução, claro &amp;#8211; tendem a ser ordens de grandeza menos falíveis do que um único indivíduo.&lt;/p&gt;
&lt;p&gt;Se um indivíduo tem o conhecimento &amp;#8220;A&amp;#8221;, se outro indivíduo tem o conhecimento &amp;#8220;B&amp;#8221;, nenhum dos dois tem o conhecimento &amp;#8220;total&amp;#8221;, mas o conjunto dos dois, a &amp;#8220;comunidade&amp;#8221;, tem ambos os conhecimentos. Sozinhos eles sabem apenas parte da informação. Porém a &amp;#8220;entidade&amp;#8221; chamada &amp;#8220;comunidade&amp;#8221; é o mais próximo que conseguiremos chegar de &lt;a href="http://rubyurl.akitaonrails.com/SiAN"&gt;omnisciência&lt;/a&gt;.&lt;/p&gt;
&lt;div style="float: left; margin: 3px"&gt;&lt;img src="/assets/2009/9/26/charles_darwin_l_original.jpg" alt="" /&gt;&lt;/div&gt;&lt;p&gt;Por acaso, compartilhar conhecimento com os outros nos trás benefícios, e é por isso que o fazemos, não porque somos puramente altruístas. Dar sem ter nada para receber não faz sentido, muitos dão simplesmente porque isso lhes trás &amp;#8220;paz de espírito&amp;#8221; ou &amp;#8220;satisfação pessoal&amp;#8221;. Muito bem, isso é um tipo de retorno, também funciona. Pessoas como Kent Beck, Martin Fowler, Ken Schwaber, não estão &amp;#8220;dando&amp;#8221; nada. Elas estão compartilhando, ao ajudar a fomentar os valores ágeis, eles recebem de volta, seja na forma de mais conhecimento, mais reconhecimento, mais oportunidades, etc. Isso nos leva à boa e velha evolução darwinista, a única coisa que efetivamente funciona para melhoria contínua.&lt;/p&gt;
&lt;p&gt;O objetivo não é &amp;#8220;vender&amp;#8221; Ágil. Quando eu evangelizo a filosofia Ágil, não tenho nenhuma intenção de convencer ninguém a usar. Não ganho dividendos se mais pessoas usarem. Alguns até me cobram: &lt;em&gt;&amp;#8220;se eu usar Ágil, você me garante que vou ter resultados melhores?&amp;#8221;&lt;/em&gt; E eu respondo, &lt;em&gt;&amp;#8220;claro que não, eu não garanto nada.&amp;#8221;&lt;/em&gt; Eu compartilho o que funciona para mim, se isso vai funcionar para os outros realmente não é problema meu. O que eu espero, sim, é que quem esteja usando e descubra coisas novas, que compartilhe para que eu possa melhorar mais também. E, claro, se alguém me der um código mal feito, cheio de fita adesiva, sem nenhum teste, e espera que eu conviva com isso em silêncio, está redondamente enganado, porque isso não funciona para mim e eu não vou ficar quieto. Concordando com o Bob Martin, &lt;a href="http://blog.objectmentor.com/articles/2009/09/22/a-mess-is-not-a-technical-debt"&gt;Bagunça não é Dívida Técnica, é apenas Bagunça&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/26/10commandments_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Algumas dicas: qualquer coisa que é &lt;em&gt;&amp;#8220;escrita em pedra&amp;#8221;&lt;/em&gt;, ou seja, algo que um dia foi o resumo do conhecimento coletivo de um grupo, mas que foi imortalizado na forma de um dogma, é ruim. Porque isso, sem dúvida, foi útil para as pessoas da época em que foi escrito, mas possivelmente não vale mais hoje. Por exemplo, se ainda seguimos os dogmas de desenvolvimento de software de 50 anos atrás, possivelmente estamos deixando de fazer as coisas da forma que a tecnologia e o conhecimento atual permitem. Por outro lado, um corpo de conhecimento que se permite evoluir, refinar, jogar fora o que não funciona mais, adicionar o que se aprende de novo, tem muito mais chances de estar certo. A comunidade Ágil funciona mais ou menos assim. A comunidade Open Source funciona mais ou menos assim. Nenhuma delas é perfeita, mas é a busca pela perfeição que torna o caminho mais interessante.&lt;/p&gt;
&lt;p&gt;Seja cético.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pPp7SGw_xU0SkJ1E4QZHfhLP6oo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pPp7SGw_xU0SkJ1E4QZHfhLP6oo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pPp7SGw_xU0SkJ1E4QZHfhLP6oo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pPp7SGw_xU0SkJ1E4QZHfhLP6oo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Il8zLI32whk:XziZ1aFaeCQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Il8zLI32whk:XziZ1aFaeCQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Il8zLI32whk:XziZ1aFaeCQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=Il8zLI32whk:XziZ1aFaeCQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Il8zLI32whk:XziZ1aFaeCQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=Il8zLI32whk:XziZ1aFaeCQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Il8zLI32whk:XziZ1aFaeCQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/Il8zLI32whk" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/26/off-topic-procurar-raciocionar-faz-bem</feedburner:origLink></item><item><title>[Rails Summit 2009] Palestrante Matt Aimonetti</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/IfbPdUIWoME/rails-summit-2009-palestrante-matt-aimonetti</link><pubDate>Wed, 23 Sep 2009 17:13:12 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5210</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;English translation:&lt;/strong&gt; click &lt;a href="/2009/09/23/rails-summit-2009-palestrante-matt-aimonetti#matt_english"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;div style="float: left; margin: 4px"&gt;&lt;a href="http://railssummit.locaweb.com.br/pt-BR/speakers#matt_aimonetti"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/36/original/matt.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://merbist.com/"&gt;Matt Aimonetti&lt;/a&gt; é um ativista Rails, ele começou como evangelista de Merb e se envolveu na já famosa junção do Rails + Merb. Ele também é ativo na área de MacRuby e HotCocoa. Ele mora em San Diego, onde dirige sua  própria &lt;a href="http://ma-agile.com/"&gt;consultoria&lt;/a&gt;, fazendo projetos e treinamentos relacionados com Ruby, e ele também é um palestrante conhecido em eventos. Nós nos encontramos pela primeira vez no ano passado, na QCon de São Francisco. Você pode ouvir a entrevista que gravamos naquela época &lt;a href="/2008/11/21/rails-podcast-brasil-qcon-special-john-straw-yellowpages-com-and-matt-aimonetti-merb"&gt;aqui&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Ele estará conosco no &lt;a href="http://www.railssummit.com.br/"&gt;Rails Summit Latin America 2009&lt;/a&gt;. Não esqueça de se inscrever!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; O que você mais gosta na linguagem Ruby, qual recurso ou conceito te atrai?&lt;/p&gt;
&lt;p&gt;Acho que o Ruby é a melhor linguagem de programação para expressar o que eu quero no meu código. É tão natural que parece mesmo &amp;#8220;certo&amp;#8221;. As pessoas são, como o falecido Guy Decoux era, capaz de se comunicar apenas em &lt;a href="http://www.ruby-forum.com/topic/166658"&gt;código Ruby&lt;/a&gt; e isso significa muito para mim. Mas há mais do que a fantástica sintaxe. Ruby tem uma maravilhosa comunidade e valores fortes, tais como testes, refatoramento, melhores práticas, open source etc.&lt;/p&gt;
&lt;p&gt;Eu estou realmente empolgado vendo empresas como a Apple e a Microsoft apostando fortemente na linguagem Ruby e sua comunidade.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Qual é a coisa que você mais gosta sobre Rails quando codifica aplicações web?&lt;/p&gt;
&lt;p&gt;O que eu mais gosto quando escrevo uma aplicação Rails está em usar Ruby. Eu tentei usar outros clones de Rails em outras línguas e nenhuma chegou perto da mesma experiência, devido à linguagem de programação subjacente. Mas além do Ruby, minha segunda coisa favorita sobre o Rails é a seqüência de uso de convenções inteligentes. Eu posso ver qualquer projeto Rails e compreender imediatamente o que está acontecendo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Qual é o seu interesse mais recente de pesquisa ou desenvolvimento?&lt;/p&gt;
&lt;p&gt;Eu aprendi muito sobre Ruby, trabalhando em MacRuby. Como se vê, há um monte de coisas no Ruby e suas bibliotecas-padrão que muito raramente uso. Eu também estou experimentando com pequenos jogos 2D escrito em Ruby. É uma mudança agradável de desenvolvimento web. Finalmente, eu ainda estou trabalhando com CouchDB e armazenamento de dados alternativos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Sobre o que é sua palestra para o Rails Summit e quem são os tipos de desenvolvedores que irão se beneficiar mais?&lt;/p&gt;
&lt;p&gt;Minha palestra é sobre o futuro do Ruby on Rails e concretamente o que isso significa para os desenvolvedores. Não será uma palestra sobre o encanamento interno, mas mais sobre uma perspectiva de alto nível com exemplos de nível mais elevado de código e exemplos concretos de coisas novas impressionantes que estarão disponíveis para os desenvolvedores Ruby.&lt;/p&gt;
&lt;p&gt;As pessoas que estão interessadas no que está chegando, os céticos e pessoas considerando usar Ruby/Rails pela primeira vez provavelmente acharão isso interessante.&lt;/p&gt;
&lt;p&gt;Além disso, se você gosta de &amp;#8220;futebol&amp;#8221;, deveria vir assistir minha palestra ;)&lt;/p&gt;&lt;p&gt;&lt;a name="matt_english"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Speaker Matt Aimonetti&lt;/h2&gt;
&lt;div style="float: left; margin: 4px"&gt;&lt;a href="http://railssummit.locaweb.com.br/en/speakers#matt_aimonetti"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/36/original/matt.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://merbist.com/"&gt;Matt Aimonetti&lt;/a&gt; is a Rails Activist, he started as a Merb evangelist and was involved in the now famous Rails + Merb merge. He is also active in the MacRuby arena with HotCocoa. He lives in San Diego where he runs his own &lt;a href="http://ma-agile.com/"&gt;consultancy&lt;/a&gt;, doing Ruby related projects and training, and he is also a well known speaker in events. We met for the first time at last year&amp;#8217;s San Francisco QCon. You can listen to an interview we recorded back then &lt;a href="/2008/11/21/rails-podcast-brasil-qcon-special-john-straw-yellowpages-com-and-matt-aimonetti-merb"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;He will be with us at &lt;a href="http://www.railssummit.com.br/en/home"&gt;Rails Summit Latin America 2009&lt;/a&gt;. Don&amp;#8217;t forget to register soon and make reservations for hotel and city tour (it will be a great opportunity to also get to know São Paulo City).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What do you like the most about the Ruby language, what feature or concept really &amp;#8220;clicks&amp;#8221; for you?&lt;/p&gt;
&lt;p&gt;I found Ruby to be the best programming language to express what I want my code to do. It is so natural that it feels &amp;#8220;right&amp;#8221;. People are, like the late Guy Decoux was, able communicate only in &lt;a href="http://www.ruby-forum.com/topic/166658"&gt;Ruby code&lt;/a&gt; and that means a lot to me. But there is more to it than the awesome syntax. Ruby has an awesome community and strong values such as testing, refactoring, best practices, &lt;span class="caps"&gt;OSS&lt;/span&gt; etc..&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m really psyched to see companies like Apple and Microsoft bet heavily on the Ruby language and community.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What is the thing you really enjoy about Rails when you&amp;#8217;re coding web apps?&lt;/p&gt;
&lt;p&gt;What I enjoy the most when writing a Rails app is using Ruby. I tried using other Rails clones in other languages and none came close to the user experience due to the underlying programming language. But apart from Ruby, my second favorite thing about Rails is the string use of smart conventions. I can take almost any Rails projects and understand right away what&amp;#8217;s going on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What are your most recent research or development interests?&lt;/p&gt;
&lt;p&gt;I learned so much about Ruby by working on MacRuby. As it turns out, there are a lot of goodies in Ruby and its standard libraries that we very rarely use. I&amp;#8217;m also experimenting with small 2D video games written in Ruby. It is a nice change from web development. Finally, I&amp;#8217;m still working with CouchDB and alternative data storage.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What is your Rails Summit talk about and who are the kind of developers that will benefit the most?&lt;/p&gt;
&lt;p&gt;My talk is about the future of Ruby and Rails and what it concretely means for developers. It&amp;#8217;s not going to be a talk about the inner plumbing but more about the big picture with higher level code examples and concrete examples of awesome new things that are going to be available to Ruby developers.&lt;/p&gt;
&lt;p&gt;People who are interested in what&amp;#8217;s coming up, skeptics and people considering using Ruby/Rails for the first time will hopefully find the talk interesting.&lt;/p&gt;
&lt;p&gt;Also, if you like &amp;#8220;futebol&amp;#8221; you should definitely come check out my talk ;)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YQ2rfCkJT7vjxD6qBrsVOTk6A2o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YQ2rfCkJT7vjxD6qBrsVOTk6A2o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YQ2rfCkJT7vjxD6qBrsVOTk6A2o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YQ2rfCkJT7vjxD6qBrsVOTk6A2o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=IfbPdUIWoME:JOgSBboX7Gc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=IfbPdUIWoME:JOgSBboX7Gc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=IfbPdUIWoME:JOgSBboX7Gc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=IfbPdUIWoME:JOgSBboX7Gc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=IfbPdUIWoME:JOgSBboX7Gc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=IfbPdUIWoME:JOgSBboX7Gc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=IfbPdUIWoME:JOgSBboX7Gc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/IfbPdUIWoME" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/23/rails-summit-2009-palestrante-matt-aimonetti</feedburner:origLink></item><item><title>[Rails Summit 2009] Palestrante Carlos Brando</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/WoqGsPqvW14/rails-summit-2009-palestrante-carlos-brando</link><pubDate>Mon, 21 Sep 2009 06:18:29 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5209</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;English translation:&lt;/strong&gt; click &lt;a href="/2009/09/21/rails-summit-2009-palestrante-carlos-brando#carlos-brando-english"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;div style="float: left; margin: 3px"&gt;&lt;a href="http://railssummit.locaweb.com.br/pt-BR/speakers#carlos_brando"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/21/original/brando.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;O &lt;strong&gt;Carlos Brando&lt;/strong&gt; acho que dispensa apresentações :-) Todos já o conhecem pelo blog &lt;a href="http://nomedojogo.com"&gt;Nome do Jogo&lt;/a&gt;, pelo e-book &lt;a href="http://www.nomedojogo.com/2008/06/09/new-free-book-ruby-on-rails-21-whats-new/"&gt;Rails 2.1&lt;/a&gt; e por &lt;a href="http://github.com/carlosbrando/"&gt;projetos open-source&lt;/a&gt; como o &lt;a href="http://www.nomedojogo.com/2008/11/18/shoulda-for-rspec-is-remarkable/"&gt;Remarkable&lt;/a&gt;. Dentre suas colaborações mais recentes, está a tradução do excelente livro do _why, o &lt;a href="http://why.nomedojogo.com/"&gt;Poignant Guide to Ruby&lt;/a&gt;; e o lançamento da versão nacional do site britânico &lt;a href="http://www.rubyinside.com.br"&gt;Ruby Inside&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Na sua &lt;a href="http://www.nomedojogo.com/sobre/"&gt;própria descrição&lt;/a&gt;, ele é viciado em programação e atualmente é diretor de tecnologia da &lt;a href="http://amanaie.com.br/"&gt;Amanaiê&lt;/a&gt;, uma empresa que cria, produz e distribui aplicativos sociais. Atua na área de desenvolvimento de softwares há mais de doze anos, tendo trabalhado com Visual Basic, C, C++, Java, C# e agora &lt;strong&gt;Ruby&lt;/strong&gt;. Já trabalhou em várias companhias brasileiras e estrangeiras como Portugal Telecom Group, AT&amp;amp;T Latin America, DirecTV, &lt;span class="caps"&gt;SKY&lt;/span&gt;, &lt;span class="caps"&gt;VISA&lt;/span&gt; e &lt;a href="http://surgeworks.com/"&gt;Surgeworks Inc&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Já se apresentou em vários eventos brasileiros relacionados com Ruby, incluindo a edição do ano passado do &lt;a href="http://www.railssummit.com.br/"&gt;Rails Summit Latin America&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Além de suas atividades profissionais, Carlos e sua esposa trabalham como voluntários dando aulas para deficientes auditivos. Ele regularmente ensina língua de sinais e atua como interprete.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Como você encontrou Ruby/Rails, o que foi que mais te atraiu?&lt;/p&gt;
&lt;p&gt;Eu já trabalhava há 12 anos como programador e pelo menos 7 principalmente com tecnologia Microsoft e estava um pouco cansado de fazer as mesmas coisas todos os dias, literalmente tinha perdido o prazer no meu trabalho. Foi quando ouvi falar do Rails pela primeira vez, mas sem entender do que se tratava, simplesmente o ignorei. Alguns meses depois li um artigo no blog do Chad Fowler onde ele mencionava o Ruby e como estava feliz em trabalhar com esta linguagem e isto me fez voltar a olhar para o Rails.&lt;/p&gt;
&lt;p&gt;Comecei estudando por conta própria e comprei o livro &amp;#8220;Repensando a web com Rails&amp;#8221; do Fábio Akita e o &lt;a href="http://www.amazon.com/Ruby-Way-Second-Techniques-Programming/dp/0672328844"&gt;The Ruby Way&lt;/a&gt; de Hal Fulton. Em duas semanas eu já tinha montado meu primeiro site em Rails, o extinto CarreiraTI, um site de empregos para profissionais da área de tecnologia. Seis meses depois fui convidado para fazer parte da equipe da Surgeworks, onde trabalhei por quase 2 anos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails&lt;/strong&gt;: Quais assuntos mais te interessam atualmente e por quê?&lt;/p&gt;
&lt;p&gt;Tenho me interessado muito pelas entranhas da linguagem, entender como o Ruby funciona por dentro. Aos poucos estou deixando o Rails cada vez mais de lado, e me envolvendo mais com o Ruby.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails&lt;/strong&gt;: Sobre o que trata sua palestra e para que tipos de desenvolvedores é mais indicado?&lt;/p&gt;
&lt;p&gt;Atualmente fui contratado por uma startup brasileira chamada Amanaiê, que desenvolve aplicativos para redes sociais. Depois de passar um tempo fazendo software para estas plataformas, estou trabalhando especificamente no desenvolvimento de um framework para acelerar a criação de projetos deste tipo. Durante muito tempo acompanhei de perto o desenvolvimento do Rails, o que me rendeu dois livros. Este conhecimento é o que tem me ajudado a repensar algumas coisas e criar um novo framework baseado no Ruby.&lt;/p&gt;
&lt;p&gt;Minha palestra no Rails Summit tratará exatamente deste tema: o processo de construção de um framework utilizando Ruby. Se você realmente quer entender como o Rails funciona, então crie o seu próprio framework. Nesta palestra vou comentar sobre algumas das dificuldades que encontrei durante este projeto e quais as soluções encontradas. O processo de renderização, geradores de códigos, helpers e banco de dados estão entre os assuntos que serão tratados. Acredito que ao analisar este tópicos de um ponto de vista mais simplista fará com que você entenda melhor como algumas coisas funcionam internamente no Rails.&lt;/p&gt;
&lt;p&gt;&lt;a name="carlos-brando-english"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Speaker Carlos Brando&lt;/h2&gt;
&lt;div style="float:left; margin: 3px"&gt;&lt;a href="http://railssummit.locaweb.com.br/en/speakers#carlos_brando"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/21/original/brando.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;I think &lt;strong&gt;Carlos Brando&lt;/strong&gt; needs no introduction :-) Everyone knows his blog &lt;a href="http://nomedojogo.com"&gt;Nome do Jogo&lt;/a&gt;, the e-book &lt;a href="http://www.nomedojogo.com/2008/06/09/new-free-book-ruby-on-rails-21-whats-new/"&gt;Rails 2.1&lt;/a&gt;, his &lt;a href="http://github.com/carlosbrando/"&gt;open-source projects&lt;/a&gt; such as &lt;a href="http://www.nomedojogo.com/2008/11/18/shoulda-for-rspec-is-remarkable/"&gt;Remarkable&lt;/a&gt;. Among his most recent collaborations, there&amp;#8217;s the translation of the excellent book from _why, the &lt;a href="http://why.nomedojogo.com/"&gt;Poignant Guide to Ruby&lt;/a&gt;; and the launch of the Brazilian version of the British website &lt;a href="http://www.rubyinside.com"&gt;Ruby Inside&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;In his &lt;a href="http://www.nomedojogo.com/sobre/"&gt;own words&lt;/a&gt;, he is addicted to programming and is currently chief technology officer for &lt;a href="http://amanaie.com.br/"&gt;Amanaiê&lt;/a&gt;, a Brazilian company that creates, produces and distributes social applications. He is in the software development field for over twelve years, having worked with Visual Basic, C, C++, Java, C# and now Ruby. He has worked in several Brazilian and foreign companies like Portugal Telecom Group, AT&amp;amp;T Latin America, DirecTV, &lt;span class="caps"&gt;SKY&lt;/span&gt;, &lt;span class="caps"&gt;VISA&lt;/span&gt; and &lt;a href="http://surgeworks.com/"&gt;Surgeworks Inc&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;He has performed in several events related to Ruby in Brazil, including last year&amp;#8217;s edition of &lt;a href="http://www.railssummit.com.br/"&gt;Rails Summit Latin America&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In addition to his professional activities, Carlos and his wife volunteer teaching to deaf people. He regularly teaches sign language and acts as interpreter.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails&lt;/strong&gt;: How did you find Ruby / Rails, what most attracted you?&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been working 12 years as a programmer and at least 7 of them primarily with Microsoft technologies; and I was a bit tired of doing the same things over and over. I&amp;#8217;ve literally lost the pleasure in my work. When I heard about Rails for the first time &amp;#8211; without understanding what it was &amp;#8211; I simply ignored it. A few months later I read an article in Chad Fowler&amp;#8217;s blog where he mentioned how happy he was to work with Ruby, and this made me take a second look at Rails.&lt;/p&gt;
&lt;p&gt;I started studying on my own and bought &amp;#8220;Rethinking the web with Rails&amp;#8221; book by Fabio Akita and &lt;a href="http://www.amazon.com/Ruby-Way-Second-Techniques-Programming/dp/0672328844"&gt;The Ruby Way&lt;/a&gt; by Hal Fulton. In two weeks I had set up my first site in Rails, the now extinct CarreiraTI, a job site for professionals in technology. Six months later I was invited to join the Surgeworks team, where I worked for almost 2 years.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails&lt;/strong&gt;: What subjects interest you the most nowadays and why?&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been very interested in the inner plumbings of the language, to understand how Ruby works from the inside. I am gradually leaving Rails aside, and getting more involved with Ruby.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails&lt;/strong&gt;: What is your talk at Rails Summit about, and what kind of developers will benefit the most?&lt;/p&gt;
&lt;p&gt;I am currently hired by a Brazilian startup called Amanaiê, which develops social network applications. After spending time making software for these platforms, I&amp;#8217;m working specifically on developing a framework to speed up the creation of such projects. For a long time I closely followed the development of Rails, which resulted in two books. This knowledge is what helped me to rethink some things and create a new framework based on Ruby.&lt;/p&gt;
&lt;p&gt;My talk at Rails Summit will address exactly this issue: the process of building a framework using Ruby. If you really want to understand how Rails works, then create your own framework. In this talk I comment on some of the difficulties I found during this project and what were solutions I used. The process of rendering, code generators, helpers and database are among the subjects to be treated. I believe that in examining this topic from a  more simplistic standpoint will make you better understand how things work internally in Rails.&lt;/p&gt;
&lt;p&gt;Rails Summit will have Portuguese to English translator, so you can watch Carlos talk too! &lt;a href="http://www.railssummit.com.br/en/home"&gt;Register now!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LkxSF6alofzLKeGSboL5H7aeIHs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LkxSF6alofzLKeGSboL5H7aeIHs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LkxSF6alofzLKeGSboL5H7aeIHs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LkxSF6alofzLKeGSboL5H7aeIHs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=WoqGsPqvW14:gnP5AseQqCs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=WoqGsPqvW14:gnP5AseQqCs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=WoqGsPqvW14:gnP5AseQqCs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=WoqGsPqvW14:gnP5AseQqCs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=WoqGsPqvW14:gnP5AseQqCs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=WoqGsPqvW14:gnP5AseQqCs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=WoqGsPqvW14:gnP5AseQqCs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/WoqGsPqvW14" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/21/rails-summit-2009-palestrante-carlos-brando</feedburner:origLink></item><item><title>[Off-Topic] Meu Backup Pessoal (Drobo/Time Capsule)</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/DhOxHdSE8ZE/off-topic-meu-backup-pessoal-drobo-time-capsule</link><pubDate>Sat, 19 Sep 2009 15:16:21 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5208</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Eu não sou muito paranóico com backup mas tomo meus cuidados. Por exemplo, eu não tenho 100% de confiança em storages remoto, seja ele Gmail, Amazon S3, Dropbox ou qualquer coisa desse tipo. Esse tipo de serviço é uma ajuda extra, mas jamais deve ser o storage primário. Meus e-mails, calendários, contatos estão todos centralizados no &lt;a href="http://www.me.com"&gt;Mobile Me&lt;/a&gt;, meu Gmail faz forward de tudo pro Mobile Me servindo basicamente como um bom filtro de spam.&lt;/p&gt;
&lt;p&gt;Eu tenho uma cópia de tudo isso sincronizado no meu Macbook, e tudo no meu Macbook está guardado no &lt;a href="http://www.apple.com/timecapsule/"&gt;Time Capsule&lt;/a&gt; de 1TB, via &lt;a href="http://www.apple.com/macosx/what-is-macosx/time-machine.html"&gt;Time Machine&lt;/a&gt;. Portanto eu tenho pelo menos 3 cópias de todos os meus dados mais importantes.&lt;/p&gt;
&lt;p&gt;Para outros dados menos voláteis como vídeos, programas, projetos antigos e coisas desse tipo eu tinha dois discos externos ligados, um de 400GB e outro de 500GB, via &lt;span class="caps"&gt;USB&lt;/span&gt; 2 no meu Mac Mini de casa. Eles faziam &lt;a href="http://everythinglinux.org/rsync/"&gt;rsync&lt;/a&gt; entre si todos os dias às 4 da manhã. Eu deixo meu Mac Mini ligado o tempo todo, ele não consome muita energia, e é silencioso ao nível de parecer que está desligado, o que é muito importante. Ele próprio também faz backup de si no mesmo Time Capsule. Desta forma todos os meus dados tem pelo menos um backup.&lt;/p&gt;
&lt;p&gt;Para o dia-a-dia carrego outro disco externo &lt;a href="http://www.lacie.com/products/product.htm?pid=11084"&gt;LaCie de 500GB&lt;/a&gt;. Todo dado importante nele tem uma cópia nos discos externos de casa, ele serve apenas para transporte. Porém, essa configuração ainda é muito ruim. Primeiro porque esses cases de disco externo tem cada um uma fonte de energia e um cabo &lt;span class="caps"&gt;USB&lt;/span&gt;. É muito cabo bagunçado. Segundo, eles não   foram feitos para ficar ligados o tempo todo, não tem inteligência e consomem muita energia, são muito barulhentos, acumulam muito pó, enfim, são péssimos para esse propósito. O próprio rsync uma vez por dia não é adequado, pois eu fico com uma janela de 24 horas descoberto.&lt;/p&gt;
&lt;p&gt;Redundância é extremamente importante. Eu já me vi pensando &lt;em&gt;&amp;#8220;que desperdício, tenho 2 discos que somam quase 1TB mas só posso usar 400GB.&amp;#8221;&lt;/em&gt; Mas esse é o &amp;#8216;seguro&amp;#8217; que se deve pagar. De nada adianta usar 1TB e depois um dos discos quebra e você perde metade dos seus dados. Por isso há pelo menos 2 coisas que se pode fazer: um mirror bem caseiro com rsync como eu fiz, ou montar um micro caseiro com &lt;span class="caps"&gt;RAID&lt;/span&gt; via software.&lt;/p&gt;
&lt;p&gt;Há alguns anos uma empresa chamada Data Robotics apareceu em cena e lançou um dos produtos que está na minha lista de compra faz quase 3 anos: o Drobo. Ele é literalmente um robô.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/19/IMG_0103_original.JPG" alt="" /&gt;&lt;/p&gt;&lt;p&gt;Como diz a definição da Wikipedia:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Um robô é um agente artificial virtual ou mecânico. Na prática, é normalmente uma máquina eletro-mecânica que é guiada por um computador ou programação eletrônica e, portanto, é capaz de realizar tarefas sozinho.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;É exatamente isso que ele faz. Ele é um &amp;#8220;enclosure&amp;#8221;, uma caixa-preta, onde você pode encaixar facilmente até 4 discos &lt;span class="caps"&gt;SATA&lt;/span&gt;. Ele inteligentemente sabe como gerenciá-los sem precisar se preocupar em configurar partições, volumes, etc. Basta encaixar os drives e ele faz todo o resto. Internamente, ele faz a configuração que for necessária para otimizar o uso do espaço, seja um mirror simples se houver apenas 2 drives até algo parecido com um &lt;span class="caps"&gt;RAID&lt;/span&gt;-5 quando se tem pelo menos 3 drives. Mas nada disso é visível, ele apenas &amp;#8220;faz&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Claro, existem opções muito mais &amp;#8220;baratas&amp;#8221; em termos de custo de material. Como já disse, qualquer PC velho com software no estilo do &lt;a href="http://www.freenas.org/"&gt;FreeNAS&lt;/a&gt; ou mesmo um Linux normal onde você configura &lt;span class="caps"&gt;RAID&lt;/span&gt; via software manualmente serviria. A chave aqui é não pensar só no &amp;#8220;agora&amp;#8221; e pensar no &amp;#8220;daqui a pouco&amp;#8221;. Os cenários que um storage desse tipo (seja feito em casa, um drive externo como o LaCie, um Windows Home Server ou coisa do tipo) é justamente &lt;strong&gt;rápida&lt;/strong&gt; recuperação quando um dos drives falha, de preferência o mais próximo possível de &lt;strong&gt;downtime Zero&lt;/strong&gt; e fácil expansão: quando eu comprar um drive maior, quero somente encaixá-lo e quero que o sistema se vire para fazer tudo funcionar.&lt;/p&gt;
&lt;p&gt;Nenhuma das alternativas, montadas em casa ou comerciais, tem capacidade para garantir downtime zero e expansão flexível inteligente. Este é o diferencial do Drobo, que atualmente simplesmente não tem nenhum equivalente no mercado. Ele é literalmente à prova de &lt;a href="http://br.answers.yahoo.com/question/index?qid=20090714112916AAweN3S"&gt;&lt;span class="caps"&gt;BIOS&lt;/span&gt;&lt;/a&gt;, ou mais adequadamente &amp;#8220;Zero Configuration&amp;#8221;: você liga na tomada, liga o cabo Firewire 800 ou &lt;span class="caps"&gt;USB&lt;/span&gt; 2 no micro e pronto, ele faz o resto.&lt;/p&gt;
&lt;p&gt;Assista este vídeo com a Cali Lewis, é tudo que você precisa saber sobre o funcionamento dele:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/05yqvb5n36M&amp;hl=en&amp;fs=1&amp;color1=0x5d1719&amp;color2=0xcd311b"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/05yqvb5n36M&amp;hl=en&amp;fs=1&amp;color1=0x5d1719&amp;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;É apenas isso mesmo. Veja mais detalhes no &lt;a href="http://www.drobo.com"&gt;site oficial dele&lt;/a&gt;. Sim, o preço dele é &amp;#8220;salgado&amp;#8221;, não sai por menos de &lt;strong&gt;&lt;span class="caps"&gt;USD&lt;/span&gt; 400&lt;/strong&gt;, isso sem contar os drives. Se considerar com mais 2 drives de 1TB cada (ele precisa de pelo menos 2 drives, de qualquer tamanho), o conjunto não sai por menos de &lt;span class="caps"&gt;USD&lt;/span&gt; 600. E junte a isso, claro, a taxa do seu &amp;#8220;importador&amp;#8221;.&lt;/p&gt;
&lt;h2&gt;Disclaimer&lt;/h2&gt;
&lt;p&gt;Antes que alguém comece, não, não estou dizendo que soluções caseiras de &lt;span class="caps"&gt;RAID&lt;/span&gt; são ruins. Se o Drobo não existisse seria exatamente o que eu faria: compraria um micro com gabinete pequeno, um controlador &lt;span class="caps"&gt;RAID&lt;/span&gt;, instalaria um FreeNAS ou algo assim e pronto. Porém, dado que o Drobo existe esta é a solução que eu pessoalmente preferi.&lt;/p&gt;
&lt;p&gt;O preço é bem mais caro, pelo menos 2 ou 3 vezes mais, sem sombra de dúvidas, mas a comodidade e segurança de longe compensam. Não é o tipo de coisa que você decide comprar num piscar de olhos. Eu esperei quase 3 anos antes de finalmente comprar.&lt;/p&gt;
&lt;p&gt;Qualquer solução que: 1) possibilitar downtime zero de recuperação e; 2) expansão elástica com drives de diferentes capacidades, também com downtime zero; será uma alternativa tão boa quanto o Drobo.&lt;/p&gt;
&lt;p&gt;Para começar, veja o tamanho dele comparado ao meu Mac Mini:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/19/IMG_0112_original.JPG" alt="" /&gt;&lt;/p&gt;
&lt;h2&gt;Minha experiência até aqui&lt;/h2&gt;
&lt;p&gt;Meu Drobo está em funcionamento a menos de 24 horas ainda. Mas até agora ele é exatamente o que eu esperava. A primeira coisa que fiz foi ligá-lo na tomada, instalar o Drobo Dashboard (que pode ser &lt;a href="http://www.drobo.com/support/updates.php"&gt;baixado&lt;/a&gt; do site). Na primeira vez ele pede para formatar os discos e gerar o volume. Depois disso ele já aparece no meu desktop como mais um volume montado.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/19/IMG_0102_original.JPG" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Daí eu transferi todo meu conteúdo dos drives externos para ele. Fiz isso via rsync mesmo (caso a transferência parasse no meio). Foram quase 400GB de conteúdo que levou mais de 10 horas durante a noite transferindo (&lt;span class="caps"&gt;USB&lt;/span&gt; 2 não é exatamente a coisa mais rápida do mundo).&lt;/p&gt;
&lt;p&gt;Isso pronto, pela manhã eu já pude retirar os drives externos. Só isso já me deu um enorme alívio: foram toneladas de cabos a menos embaixo da minha mesa, cabos &lt;span class="caps"&gt;USB&lt;/span&gt; em cima e aqueles cases feios e empoeirados. Minha mulher agradece. Veja como o case estava acumulando muita poeira:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/19/IMG_0105_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Retirei os drives dos cases, limpei e imediatamente inseri nos dois slots sobrando do Drobo. Ele imediatamente reconheceu os novos drives e, sem precisar desmontar o volume ou parar de copiar arquivos para ele, o espaço disponível aumentou dinamicamente. Essa é a facilidade inegável dessa arquitetura: agora tenho 2 drives de 1TB cada, um de 500GB e outro de 400GB formando um espaço útil de quase 1.7TB redundantes.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/19/IMG_0107_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Claro, a brincadeira não estaria terminada se eu não pudesse testar a maior funcionalidade dele: retirar e recolocar drives dinamicamente sem perder acesso do micro ao volume. Foi o que eu fiz: retirei um dos discos, enquanto tudo estava ligado, para simular um drive com falha. Meu Mac Mini nem pestanejou e para ele o volume continuava ali, intacto, e eu conseguia acessar os dados sem problemas. Recoloquei o drive e após alguns segundos todas as luzes já estavam verdes novamente.&lt;/p&gt;
&lt;p&gt;Veja a quantidade irritante de cabos que tinha no chão embaixo da mesa:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/19/IMG_0111_original.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;A principal vantagem se chama paz de espírito: eu sei que na hora de um aperto, quando um dos drives falhar (e um deles vai, eles sempre falham) será tão simples quanto comprar um novo drive e espetar no lugar. Ainda tem tempo para encher esses 1.7TB, mas se encher, basta comprar um drive maior e espetar no lugar do drive mais velho. E assim por diante.&lt;/p&gt;
&lt;p&gt;Em termos visuais, o fato de ter tirado aquele monte de coisas atrapalhando da mesa e colocado um monolito elegante e simples é uma grande ajuda. Ele é um produto que foi feito com cuidado: nada de parafusos aparecendo, ventoinhas barulhentas. É um monolito negro, e com ótimo acabamento. Inclusive a tampa da frente, que dá acesso aos drives, é anexado magneticamente, também dispensando a necessidade de uma chave de fenda. São detalhes desse tipo que demonstram o cuidado que um fabricante tem com seu produto.&lt;/p&gt;
&lt;p&gt;Agora, veja como minha mesa ficou muito mais agradável:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/19/IMG_0113_original.JPG" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Tem tudo que um bom produto precisa: é efetivamente funcional, extremamente simples de usar, transmite segurança, e tem um excelente acabamento, é bonito. O software também é simples, tem o suficiente para informar e operar tudo que preciso &amp;#8211; e na grande maioria do tempo ele vai ficar desligado &amp;#8211; além disso o hardware em si é eficiente em mostrar as informações mais importantes como o estado dos drives (luzes verde, vermelha e laranja) e um indicador azul onde cada led aceso indica 10% do espaço físico real já utilizado. Ou seja, basta olhar para ele para saber o que fazer.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img src="/assets/2009/9/19/Captura_de_tela_2009-09-19_às_13.51.16_original.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;O Drobo em si não é um &lt;a href="http://en.wikipedia.org/wiki/Network-attached_storage"&gt;&lt;span class="caps"&gt;NAS&lt;/span&gt;&lt;/a&gt; (Network Attached Storage &amp;#8211; Storage anexado à rede). Para torná-lo um &lt;span class="caps"&gt;NAS&lt;/span&gt; é necessário outro produto chamado &lt;a href="http://www.drobo.com/Products/droboshare.php"&gt;DroboShare&lt;/a&gt; que é basicamente um mini-computador, num design bem pequeno, que permite compartilhar o Drobo à uma rede. Você pode adquirir esse produto ou simplesmente ligá-lo a qualquer computador na rede. No meu caso, o Mac Mini é um excelente micro para ser um servidor caseiro. É pequeno, silencioso, consumo adequado de energia, e por isso vou manter os dois conectados e ligados o tempo todo. Com recursos com o &lt;a href="http://www.apple.com/mobileme/features/mac.html"&gt;Back to My Mac&lt;/a&gt; que vem no Mobile Me, consigo ter acesso a ele, de forma segura usando um canal encriptado, de qualquer lugar a partir do meu Macbook, seja do escritório, seja de algum hotel, aeroporto, etc. Muito conveniente.&lt;/p&gt;
&lt;p&gt;Ainda tem pouco tempo de uso, esse tipo de produto precisa de meses para realmente começar a mostrar seu valor, mas para mim já valeu a pena o investimento.&lt;/p&gt;
&lt;h2&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;Definitivamente estou muito contente com esta solução. Com o tempo esse tipo de solução deve ficar mais barata. Já está mais acessível do que era quando foi lançado, se não me engano era na faixa dos &lt;span class="caps"&gt;USD&lt;/span&gt; 500 ou mais. Além disso discos de 1TB há 3 anos eram muito caros. Hoje os discos de 2TB estão ficando acessíveis.&lt;/p&gt;
&lt;p&gt;Ou seja, discos, assim como memória &lt;span class="caps"&gt;RAM&lt;/span&gt; e pendrives, estão literalmente baratos. São ítens que já foram bastante comoditizados. Pensando que a velocidade dos provedores deve crescer, que o nível de downloads deve aumentar, que o preço dos drives está caindo, a dinâmica de trocar de drives deve ser mais comum e a preocupação em manter tanto volume sem redundância é muito pior. É exatamente esse tipo de proteção contra o tempo que o Drobo vende. É isso que estou pagando.&lt;/p&gt;
&lt;p&gt;Esta solução é mais do que adequada para uma pessoa física, como um storage para residências. Deve também ser mais do que suficiente para micro-empresas que precisam de storage para um servidor compartilhado de arquivos. Para pequenas empresas que lidam com volumes maiores de dados como estúdios, produtoras, vocês vão querer o &lt;a href="http://www.drobo.com/products/drobopro/"&gt;Drobo Pro&lt;/a&gt;. É a mesma coisa mas em vez de 4 slots ele tem espaço para até 8 drives paralelos, permitindo inclusive montar o storage usando iSCSI via Gigabit Ethernet.&lt;/p&gt;
&lt;p&gt;Para empresas média ou grandes, claro, não é esta a solução que você precisa. Procure storages de verdade, de grande porte, com hardware especializado. Além disso, lembrar que o Drobo não é a mesma categoria de produto que um HP Mediasmart. As características que mencionei no &amp;#8220;Disclaimer&amp;#8221; acima não se aplicam a quase nenhum outro produto. A maioria dos &amp;#8220;storages&amp;#8221; vendidos ao consumidor não são mais do que um HD &lt;span class="caps"&gt;SATA&lt;/span&gt; com um case glorificado. Pior ainda quando eles vendem um case com 2 HDs configurados em mirror como um striped set, onde se você perde um drive, perde todos os dados.&lt;/p&gt;
&lt;p&gt;Finalmente, esta solução ainda não é completa. É o suficiente para uma residência. Mas se você tem uma micro-empresa e tem dados valiosos, você vai querer backup on-site e off-site (ou seja, guardado fisicamente fora do seu escritório). De nada adianta um backup onsite se seu escritório pegar fogo, ou se sofrer um roubo e ele for levado embora. Sempre garanta que seus dados estejam seguros fora daqui. No meu caso, residencial, é por isso que eu pago por um Mobile Me, para que meus dados mais importantes como meus e-mails estejam off-site, como contingência.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Qhfp0giU6suKGpKQH-VDLSPuEQY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Qhfp0giU6suKGpKQH-VDLSPuEQY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Qhfp0giU6suKGpKQH-VDLSPuEQY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Qhfp0giU6suKGpKQH-VDLSPuEQY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=DhOxHdSE8ZE:Ery2VZH4Mec:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=DhOxHdSE8ZE:Ery2VZH4Mec:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=DhOxHdSE8ZE:Ery2VZH4Mec:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=DhOxHdSE8ZE:Ery2VZH4Mec:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=DhOxHdSE8ZE:Ery2VZH4Mec:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=DhOxHdSE8ZE:Ery2VZH4Mec:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=DhOxHdSE8ZE:Ery2VZH4Mec:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/DhOxHdSE8ZE" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/19/off-topic-meu-backup-pessoal-drobo-time-capsule</feedburner:origLink></item><item><title>[Rails Summit 2009] Palestrante Bryan Liles</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/FxUZIA4vPMw/rails-summit-2009-palestrante-bryan-liles</link><pubDate>Fri, 18 Sep 2009 09:29:47 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5207</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;English translation:&lt;/strong&gt; click &lt;a href="/2009/09/18/rails-summit-2009-palestrante-bryan-liles#en_bryan_liles"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://railssummit.locaweb.com.br/pt-BR/pages/speakers#bryan_liles"&gt;Bryan Liles&lt;/a&gt; ficou bastante conhecido depois do Ruby Hoedown de 2008 com sua palestra &lt;a href="http://rubyhoedown2008.confreaks.com/05-bryan-liles-lightning-talk-tatft-test-all-the-f-in-time.html"&gt;Test All the Fucking Time&lt;/a&gt; cunhando o termo &amp;#8220;&lt;span class="caps"&gt;TATFT&lt;/span&gt;&amp;#8221;.&lt;/p&gt;
&lt;p style="text-align:center"&gt;&lt;object width="600" height="345"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4544115&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=4544115&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="345"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/4544115"&gt;RailsConf 2009 &amp;#8211; Mensagem de Bryan Liles para Brasileiros&lt;/a&gt; from &lt;a href="http://vimeo.com/akitaonrails"&gt;Fabio Akita&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;Ele virá falar sobre boas práticas de programação, baseado numa séria que começou recentemente no seu blog &lt;a href="http://smartic.us/"&gt;Smartic.us&lt;/a&gt;, chamado &lt;a href="http://smartic.us/category/yerdoinitwrong/"&gt;#yerdoinitwrong&lt;/a&gt; (literalmente, &amp;#8220;voceestafazendoerrado&amp;#8221;). Veja a apresentação da série:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;object width="600" height="405"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6581783&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=6581783&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6581783"&gt;#yerdoinitwrong intro&lt;/a&gt; from &lt;a href="http://vimeo.com/bryanl"&gt;Bryan Liles&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;O &lt;a href="http://smartic.us/2009/09/16/yerdoinitwrong-episode-1-logging-with-syslog/"&gt;primeiro episódio&lt;/a&gt; fala sobre enviar os logs do Rails para um servidor remoto usando syslog, e recomenda o excelente Splunk, que eu também gosto. Não perca os episódios.&lt;/p&gt;
&lt;p&gt;Não deixe de trocar figurinhas com ele durante o Rails Summit! &lt;a href="http://www.railssummit.com.br"&gt;Inscreva-se já!&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="en_bryan_liles"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Speaker Bryan Liles&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://railssummit.locaweb.com.br/en/pages/speakers#bryan_liles"&gt;Bryan Liles&lt;/a&gt; became very well known after his talk &lt;a href="http://rubyhoedown2008.confreaks.com/05-bryan-liles-lightning-talk-tatft-test-all-the-f-in-time.html"&gt;Test All the Fucking Time&lt;/a&gt; at Ruby Hoedown 2008, coining the term &amp;#8220;&lt;span class="caps"&gt;TATFT&lt;/span&gt;&amp;#8221;.&lt;/p&gt;
&lt;p style="text-align:center"&gt;&lt;object width="600" height="345"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4544115&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=4544115&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="345"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/4544115"&gt;RailsConf 2009 &amp;#8211; Bryan Liles message to Brazilians&lt;/a&gt; from &lt;a href="http://vimeo.com/akitaonrails"&gt;Fabio Akita&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;He&amp;#8217;ll come to talk about best practices in software development, based on the series he recentely started at his blog &lt;a href="http://smartic.us/"&gt;Smartic.us&lt;/a&gt; called &lt;a href="http://smartic.us/category/yerdoinitwrong/"&gt;#yerdoinitwrong&lt;/a&gt;. Watch his introduction to the series:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;object width="600" height="405"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6581783&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=6581783&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6581783"&gt;#yerdoinitwrong intro&lt;/a&gt; from &lt;a href="http://vimeo.com/bryanl"&gt;Bryan Liles&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://smartic.us/2009/09/16/yerdoinitwrong-episode-1-logging-with-syslog/"&gt;first episode&lt;/a&gt; talks about sending your Rails logs to a remote server using syslog, and he even recommends the excellent Splunk, which I like as well. Don&amp;#8217;t miss his episodes.&lt;/p&gt;
&lt;p&gt;And come to the Rails Summit to talk and exchange information with him! &lt;a href="http://www.railssummit.com.br/en/home"&gt;Register now!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vdeFE8x0KCzFoNcxWGjKI2sxz_0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vdeFE8x0KCzFoNcxWGjKI2sxz_0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vdeFE8x0KCzFoNcxWGjKI2sxz_0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vdeFE8x0KCzFoNcxWGjKI2sxz_0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=FxUZIA4vPMw:rsXs8v8cwoA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=FxUZIA4vPMw:rsXs8v8cwoA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=FxUZIA4vPMw:rsXs8v8cwoA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=FxUZIA4vPMw:rsXs8v8cwoA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=FxUZIA4vPMw:rsXs8v8cwoA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=FxUZIA4vPMw:rsXs8v8cwoA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=FxUZIA4vPMw:rsXs8v8cwoA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/FxUZIA4vPMw" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/18/rails-summit-2009-palestrante-bryan-liles</feedburner:origLink></item><item><title>[Rails Summit 2009] Palestrante Leonardo Borges</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/M8DBu9G7OtU/rails-summit-2009-palestrante-leonardo-borges</link><pubDate>Thu, 17 Sep 2009 15:51:48 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5206</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;English translation:&lt;/strong&gt; click &lt;a href="/2009/09/17/rails-summit-2009-palestrante-leonardo-borges#leonardo-borges-english"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A partir de hoje vou colocar alguns posts sobre alguns dos palestrantes do &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit Latin America 2009&lt;/a&gt;. Não deixe de se inscrever! Dias 13 e 14 de Outubro, em São Paulo.&lt;/p&gt;
&lt;div style="float: left; margin: 3px"&gt;&lt;a href="http://railssummit.locaweb.com.br/pt-BR/speakers"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/5/original/leonardo.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Leonardo Borges&lt;/strong&gt; é desenvolvedor com 9 anos de experiência, já trabalhou em empresas de portes variados criando aplicações corporativas especialmente em Java. Atualmente vive em Madrid e trabalha com Ruby On Rails na &lt;a href="http://www.miraiespana.com/"&gt;Mirai España&lt;/a&gt; onde, dentre outros projetos, participa da iniciativa JRuby de integrar código legado com Rails. Escreve no &lt;a href="http://www.leonardoborges.com/"&gt;seu blog&lt;/a&gt; sobre desenvolvimento de software e temas relacionados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Como você encontrou Ruby/Rails, o que foi que mais te atraiu?&lt;/p&gt;
&lt;p&gt;Foi no início de 2007. Lendo blogs e notícias na internet cheguei no site oficial do Rails e vi o famoso vídeo &lt;a href="http://www.rubyonrails.pro.br/apresentacoes"&gt;Creating a weblog in 15 minutes&lt;/a&gt;. Fiquei impressionado! Aquele vídeo foi capaz de vender nao só a produtividade que o Rails proporciona, mas o nível de expressividade ao qual podemos chegar em Ruby.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Quais assuntos mais te interessa atualmente e por quê?&lt;/p&gt;
&lt;p&gt;Devido à natureza dos projetos aqui na empresa &amp;#8211; um mix de Ruby e Java &amp;#8211; tenho me interessado bastante em JRuby e a &lt;span class="caps"&gt;JVM&lt;/span&gt; de uma maneira geral, estudando também alternativas como Scala.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; Sobre o que trata sua palestra e para que tipos de desenvolvedores é mais indicado?&lt;/p&gt;
&lt;p&gt;Eu acredito que JRuby veio pra ficar e que uma de suas maiores forças está em atrair empresas/desenvolvedores já acostumados ao mundo Java. Para isso uma integração precisa e simples entre Ruby e Java deve ser possível.&lt;/p&gt;
&lt;p&gt;Na minha palestra &amp;#8220;JRuby no mundo corporativo&amp;#8221; vou mostrar como essa integração pode ser feita para dar uma nova roupagem a um sistema legado usando JRuby on Rails.&lt;/p&gt;
&lt;p&gt;Essa sessão é para qualquer desenvolvedor Ruby interessado em rodar suas applicaçoes na &lt;span class="caps"&gt;JVM&lt;/span&gt;. No entanto, se você está trabalhando com Java no momento e está pensando como pode introduzir Ruby na sua empresa, essa palestra pode ser particularmente útil.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;AVISO&lt;/span&gt;: Você verá fontes Java e &lt;span class="caps"&gt;XML&lt;/span&gt; nessa sessão! :P&lt;/p&gt;
&lt;h3&gt;Links&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Blog do Leonardo: &lt;a href="http://leonardoborges.com/"&gt;http://leonardoborges.com/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Site oficial do JRuby: &lt;a href="http://www.jruby.org/"&gt;http://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;JRubyConf, primeiro evento específico de JRuby em São Francisco, pela Engine Yard: &lt;a href="http://www.jrubyconf.com/"&gt;http://www.jrubyconf.com/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Blog do Charles Nutter, principal mantenedor: &lt;a href="http://blog.headius.com/"&gt;http://blog.headius.com/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Jetty-Rails, uma das melhores formas de desenvolver JRuby on Rails: &lt;a href="http://jetty-rails.rubyforge.org/"&gt;http://jetty-rails.rubyforge.org/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;JTestR, testando Java usando ferramentas Ruby como RSpec: &lt;a href="http://jtestr.codehaus.org/"&gt;http://jtestr.codehaus.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a name="leonardo-borges-english"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Speaker Leonardo Borges&lt;/h2&gt;
&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Starting off today, I&amp;#8217;ll post about some of the speakers for &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit Latin America 2009&lt;/a&gt;. Register today! It&amp;#8217;s gonna be at São Paulo, Brazil, October 13th and 14th.&lt;/p&gt;
&lt;div style="float: left; margin: 3px"&gt;&lt;a href="http://railssummit.locaweb.com.br/pt-BR/speakers"&gt;&lt;img src="http://railssummit.locaweb.com.br/imgs/5/original/leonardo.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Leonardo Borges&lt;/strong&gt; is a developer with 9 years of experience. He&amp;#8217;ve been working for several companies creating enterprise applications specially with Java. He currently lives in Madrid, where he works with Ruby on Rails at &lt;a href="http://www.miraiespana.com/"&gt;Mirai España&lt;/a&gt; where, among other projects, colaborates in the JRuby initiative to integrate legacy code with Rails. He writes in &lt;a href="http://www.leonardoborges.com/"&gt;his blog&lt;/a&gt; about software development and related subjects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; How did you find Ruby/Rails, what attracted you the most?&lt;/p&gt;
&lt;p&gt;It was in the beginning of 2007. By reading blogs and news on the internet I arrived at the Rails official website where I saw the famous &lt;a href="http://rubyonrails.org/screencasts"&gt;Creating a weblog in 15 minutes&lt;/a&gt; screencast. I was impressed! That video was able to sell not only the productivity that Rails delivers, but also the level of expressiveness where we can achieve in Ruby.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What subjects most interest you and why?&lt;/p&gt;
&lt;p&gt;Due to the nature of the projects I have in my company &amp;#8211; a mixture of Ruby and Java &amp;#8211; I&amp;#8217;ve very interested in JRuby and the &lt;span class="caps"&gt;JVM&lt;/span&gt; in general, studying alternatives such as Scala as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AkitaOnRails:&lt;/strong&gt; What is the subject of your talk and what kind of developers will benefit the most?&lt;/p&gt;
&lt;p&gt;I believe that JRuby will stay for a long time and one of its major strengths is to attract companies/developers already used to the Java world. For that end, a precise and simple integration between Ruby and Java is necessary.&lt;/p&gt;
&lt;p&gt;In my talk &amp;#8220;JRuby in the enterprise&amp;#8221; I&amp;#8217;ll show how that integration can be achieved to bring new life to a legacy system using JRuby on Rails.&lt;/p&gt;
&lt;p&gt;This session is recommended to any Ruby developer interested in running his applications on the &lt;span class="caps"&gt;JVM&lt;/span&gt;. On the other hand, if you&amp;#8217;re currently working with Java and trying to figure out how to introduce Ruby in your company, this talk can be particularly useful.&lt;/p&gt;
&lt;p&gt;Warking: You&amp;#8217;ll see lots of Java and &lt;span class="caps"&gt;XML&lt;/span&gt; source code in this talk! :P&lt;/p&gt;
&lt;h3&gt;Links&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Leonardo&amp;#8217;s Blog: &lt;a href="http://leonardoborges.com/"&gt;http://leonardoborges.com/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;JRuby official website: &lt;a href="http://www.jruby.org/"&gt;http://www.jruby.org/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;JRubyConf, the first specific event for JRuby, in San Francisco, by Engine Yard: &lt;a href="http://www.jrubyconf.com/"&gt;http://www.jrubyconf.com/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Charles Nutter&amp;#8217;s Blog, the main maintainer: &lt;a href="http://blog.headius.com/"&gt;http://blog.headius.com/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Jetty-Rails, one of the best ways to develop with JRuby on Rails: &lt;a href="http://jetty-rails.rubyforge.org/"&gt;http://jetty-rails.rubyforge.org/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;JTestR, testing Java using Ruby tools such as RSpec: &lt;a href="http://jtestr.codehaus.org/"&gt;http://jtestr.codehaus.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MXc0IXmmiaaEG_ABM1HRzteMgtg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MXc0IXmmiaaEG_ABM1HRzteMgtg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MXc0IXmmiaaEG_ABM1HRzteMgtg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MXc0IXmmiaaEG_ABM1HRzteMgtg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=M8DBu9G7OtU:Amb1C1AGc0M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=M8DBu9G7OtU:Amb1C1AGc0M:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=M8DBu9G7OtU:Amb1C1AGc0M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=M8DBu9G7OtU:Amb1C1AGc0M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=M8DBu9G7OtU:Amb1C1AGc0M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=M8DBu9G7OtU:Amb1C1AGc0M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=M8DBu9G7OtU:Amb1C1AGc0M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/M8DBu9G7OtU" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/17/rails-summit-2009-palestrante-leonardo-borges</feedburner:origLink></item><item><title>[Rails Summit 2009] O Trailer mais Esperado! </title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/EX5cas2xe-s/rails-summit-2009-o-trailer-mais-esperado</link><pubDate>Thu, 17 Sep 2009 08:06:55 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5205</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Imagino que quem viu o &lt;a href="http://www.akitaonrails.com/2009/09/16/rails-summit-2009-teaser-trailer"&gt;Teaser Trailer&lt;/a&gt; de ontem ficou curioso. O pessoal que participou do &lt;a href="http://www.devinrio.com.br/"&gt;Dev in Rio&lt;/a&gt; viu uma versão &amp;#8220;especial&amp;#8221; em primeira mão alguns dias atrás, agora aí vai a versão oficial:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/aR7zOHDzsPM&amp;hl=en&amp;fs=1&amp;color1=0x5d1719&amp;color2=0xcd311b"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/aR7zOHDzsPM&amp;hl=en&amp;fs=1&amp;color1=0x5d1719&amp;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;E você, já se inscreveu no &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit Latin America 2009&lt;/a&gt; ?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tYQRCGZ9XEVD5I0zqG85jLx7Ns4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tYQRCGZ9XEVD5I0zqG85jLx7Ns4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tYQRCGZ9XEVD5I0zqG85jLx7Ns4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tYQRCGZ9XEVD5I0zqG85jLx7Ns4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=EX5cas2xe-s:-d_vfvLzRCQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=EX5cas2xe-s:-d_vfvLzRCQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=EX5cas2xe-s:-d_vfvLzRCQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=EX5cas2xe-s:-d_vfvLzRCQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=EX5cas2xe-s:-d_vfvLzRCQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=EX5cas2xe-s:-d_vfvLzRCQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=EX5cas2xe-s:-d_vfvLzRCQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/EX5cas2xe-s" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/17/rails-summit-2009-o-trailer-mais-esperado</feedburner:origLink></item><item><title>[Tradução] Os problemas do pensamento do Visual Studio (e outras IDEs)</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/RO-FWX2taRQ/tradu--o-os-problemas-do-pensamento-do-visual-studio-e-outras-ides</link><pubDate>Wed, 16 Sep 2009 22:57:15 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5204</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;De tempos em tempos alguém me pergunta algo do tipo &lt;em&gt;&amp;#8220;Que &lt;span class="caps"&gt;IDE&lt;/span&gt; você usa para programar em Ruby?&amp;#8221;&lt;/em&gt; E todos ficam surpresos ou frustrados quando eu digo &lt;em&gt;&amp;#8220;Nenhum, apenas um editor de textos competente.&amp;#8221;&lt;/em&gt; Parece que a maioria dos programadores de Visual Basic, Delphi, Java, C#, VB.&lt;span class="caps"&gt;NET&lt;/span&gt;, simplesmente não conseguem sair do dogma dos IDEs com IntelliSense.&lt;/p&gt;
&lt;p&gt;Eu, felizmente, comecei a programar dBase numa era onde o máximo em editor de textos era o Wordstar. No &lt;span class="caps"&gt;DOS&lt;/span&gt; eu usei &lt;span class="caps"&gt;EDLIN&lt;/span&gt; e depois o Edit que vinha nos &lt;span class="caps"&gt;DOS&lt;/span&gt; acho que 5.0. Quando fui programador Clipper no começo da década de 90, meu editor favorito era o Norton Editor. Somado a ferramentas como Sidekick, eu tinha a estação de desenvolvimento mais poderosa que se poderia querer: um editor de textos e só.&lt;/p&gt;
&lt;p&gt;Quando o Java surgiu, um &lt;span class="caps"&gt;IDE&lt;/span&gt; com capacidades de auto-complete eram obrigatórias. Em .&lt;span class="caps"&gt;NET&lt;/span&gt; a mesma coisa, e pelas mesmas razões. Aqui eu traduzo a palestra entitulada &lt;a href="http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html"&gt;O Visual Studio estraga nossas mentes?&lt;/a&gt;, apresentada no &lt;span class="caps"&gt;NYC&lt;/span&gt; .&lt;span class="caps"&gt;NET&lt;/span&gt; Developer’s Group, em 20 de Outubro de 2005 por &lt;a href="http://rubyurl.com/L1vF"&gt;Charles Petzold&lt;/a&gt;. Ele faz uma longa análise dos fundamentos de porque um programador viciado nos dogmas impostos pelo Visual Studio está se tornando um programador ruim.&lt;/p&gt;
&lt;p&gt;Atualmente, eu programo apenas Ruby (e outras coisas como Javascript de vez em quando) apenas no Textmate, um competente editor de textos, reminiscente de inspirações em Emacs e &lt;a href="/2009/04/27/the-best-environment-for-rails-on-windows-part-2"&gt;Vim&lt;/a&gt;, outros dois excelentes editores. E não sinto falta de Eclipses, Netbeans ou qualquer coisa desse tipo e, obviamente, nenhuma falta do Visual Studio. Ah sim, precisar de auto-complete só mostra uma coisa: que as APIs estão sendo muito porcamente desenhadas ultimamente, tornando-as ridiculamente longas!&lt;/p&gt;
&lt;p&gt;Recomendo ler o &lt;a href="http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html"&gt;artigo inteiro&lt;/a&gt;, pois só traduzi as partes relevantes ao meu ponto. Vamos à tradução:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; Vale a pena descrever o paradoxo: não dá para efetivamente ser produtivo em .&lt;span class="caps"&gt;NET&lt;/span&gt; sem Visual Studio, em Java sem Eclipse/Netbeans/etc ou ObjC sem XCode. Isso é um fato. Na prática mesmo, a solução não é fazer C# em Notepad. Esse é o ponto a se pensar ;-)&lt;/p&gt;&lt;h2&gt;Proliferação de APIs&lt;/h2&gt;
&lt;p&gt;Vinte anos atrás, em Novembro de 1985, o Windows 1.0 foi lançado com cerca de 400 funções documentadas. Dez anos depois, o Windows 95 teve bem mais de mil.&lt;/p&gt;
&lt;p&gt;Hoje (em Outubro de 2005), estamos prontos para o lançamento oficial do .&lt;span class="caps"&gt;NET&lt;/span&gt; Framework 2.0. Tabulando somente o MSCorLib.dll e aqueles assemblies que começam com a palavra &lt;em&gt;System&lt;/em&gt;, temos mais de 5.000 classes públicas que incluem mais de 45.000 métodos públicos e 15.000 propriedades públicas, sem contar os métodos e propriedades herdados e não sobrescritos. Um livro que listasse os nomes, valores de retorno e argumentos destes métodos e propriedades, uma por linha, teria cerca de mil páginas.&lt;/p&gt;
&lt;p&gt;Se você escrevesse cada uma das 60.000 propriedades e métodos em cartões de 7 por 12 centímetros com uma pequena descrição do que fazem, teria uma pilha de 12 metros. Estes 60.000 cartões, alinhados de ponta a ponta &amp;#8211; pelo comprimento de 12cm &amp;#8211; poderia cercar o Central Park (quase), e eu ouvi que isso será realmente um projeto de arte pública no próximo verão.&lt;/p&gt;
&lt;p&gt;Pode qualquer programador dominar 60.000 métodos e propriedades? Acho que não. Uma solução, é claro, é a especialização. Eu mesmo me especializei. Esta noite, eu espero que ninguém me faça perguntas sobre Web Forms ou &lt;span class="caps"&gt;ASP&lt;/span&gt; .&lt;span class="caps"&gt;NET&lt;/span&gt; ou &lt;span class="caps"&gt;SQL&lt;/span&gt; Server, pois essas não são minhas especialidades. Eu faço Windows Forms, e minha linguagem é C#.&lt;/p&gt;
&lt;h2&gt;IntelliSense&lt;/h2&gt;
&lt;p&gt;Visual Studio tem tentado atenuar o problema da proliferação de classes, métodos e propriedades com um recurso chamado IntelliSense. Isso certamente coloca a informação ao nosso alcance, se você pensar em seus dedos no sentido figurado como aquele lugar na tela onde o cursor do teclado está.&lt;/p&gt;
&lt;p&gt;Como outras tecnologias viciantes, eu tenho um relacionamento de amor / ódio com o IntelliSense, e quanto mais eu o desprezo mais o uso, e quanto mais eu o uso, mais revoltado fico com a forma como fiquei viciado, e quanto mais viciado fico, mais eu desejo que isso nunca tivesse sido inventado.&lt;/p&gt;
&lt;p&gt;Apenas no caso de você ter estado fora das trincheiras por algum tempo, o IntelliSense é a culminação de algumas tentativas anteriores em tecnologias de completar código. Se você digitar um nome de objeto e um ponto, por exemplo, obterá um menu de rolagem com uma lista de todos os métodos públicos, propriedades e eventos para essa classe, e quando você escolhe um nome de método e abre um parêntese, poderá obter as sobrecargas com vários argumentos, e uma dica descrevendo o que o método faz.&lt;/p&gt;
&lt;p&gt;IntelliSense é considerado por alguns como a inovação de programação mais importante desde a cafeína. Ele funciona especialmente bem com .&lt;span class="caps"&gt;NET&lt;/span&gt; porque o Visual Studio pode usar reflexão para obter todas as informações que precisa das DLLs que você especificou como referências.&lt;/p&gt;
&lt;p&gt;Na verdade, o IntelliSense tornou-se o primeiro aviso quando você não incluiu devidamente uma referência &lt;span class="caps"&gt;DLL&lt;/span&gt; ou uma diretiva &lt;em&gt;using&lt;/em&gt; no topo do seu código. Você começa a digitar e o IntelliSense aparece com nada. Daí já sabe imediatamente que algo está errado.&lt;/p&gt;
&lt;p&gt;E, no entanto, o IntelliSense também está ditando a forma como programamos.&lt;/p&gt;
&lt;p&gt;Por exemplo, por muitos anos os programadores têm debatido se é melhor codificar de cima para baixo, onde basicamente você começa com a estrutura geral do programa e, eventualmente, o código das rotinas mais detalhadas na parte inferior ou, alternativamente, a abordagem de baixo para cima, onde você começa com as funções de nível baixo e prossegue para cima. Algumas linguagens, como Pascal clássico, basicamente impõe uma abordagem de baixo para cima, mas outras linguagens não.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota do Akita:&lt;/strong&gt; Na comunidade Ruby on Rails, na vertente que adotou o Cucumber como ferramenta Ágil, o conceito de Behavior Driven Development (&lt;span class="caps"&gt;BDD&lt;/span&gt;) nos leva a programar de cima para baixo, que hoje é considerado uma forma muito mais eficiente de desenvolvimento, iniciando pelas User Stories, indo para a interface com o usuário, depois as rotas, os controllers, os models e só então as tabelas no banco, por exemplo.&lt;/p&gt;
&lt;p&gt;Bem, o debate está terminado. Para o IntelliSense funcionar corretamente, programação de baixo para cima é melhor. O IntelliSense quer cada classe, cada método, cada propriedade, cada parâmetro do método, todas as variáveis locais adequadamente definidas antes de se referir a elas. Se esse não for o caso, então ele tentará corrigir o que você está digitando, usando algo que foi definido, e que provavelmente é simplesmente errado.&lt;/p&gt;
&lt;p&gt;Por exemplo, suponha que você está digitando um código e decide que precisa de uma variável chamada &lt;em&gt;id&lt;/em&gt;, e em vez de defini-la primeiro, você começa a digitar uma instrução que começa com &lt;em&gt;id&lt;/em&gt; e um espaço. Eu sempre digito um espaço entre a minha variável e o sinal de igual. Como &lt;em&gt;id&lt;/em&gt; não está definido em nenhum lugar, o IntelliSense encontrará algo que começa com estas duas letras que está sintaticamente correta, de acordo com as referências, namespaces, e o contexto de seu código. No meu caso particular, o IntelliSense decide que eu realmente queria definir uma variável do tipo de interface &lt;em&gt;IDataGridColumnStyleEditingNotificationService&lt;/em&gt;, uma interface que eu nunca tive a oportunidade de usar.&lt;/p&gt;
&lt;p&gt;No lado positivo, se você realmente precisa definir um objeto do tipo &lt;em&gt;IDataGridColumnStyleEditingNotificationService&lt;/em&gt;, tudo que precisa fazer é digitar &lt;em&gt;id&lt;/em&gt; e um espaço.&lt;/p&gt;
&lt;p&gt;Se isso é errado, você pode eliminar o código proposto pelo IntelliSense e voltar ao que digitou originalmente com a combinação de teclas Ctrl-Z para desfazer. Eu gostaria de bater na mão dele e dizer &amp;#8220;Não&amp;#8221;, mas Ctrl-Z é a única coisa que funciona. Quem poderia supor que Ctrl-Z se tornaria uma das teclas mais importantes na utilização de modernas aplicações do Windows? Ctrl-Z funciona no Microsoft Word como, bem, quando o Word é excessivamente agressivo consertando sua digitação.&lt;/p&gt;
&lt;p&gt;Mas a implicação aqui é impressionante. Para o IntelliSense começar a trabalhar direito, você não apenas deve codificar em uma estrutura de baixo para cima, mas dentro de cada método ou propriedade, também deve escrever código linearmente do início ao fim &amp;#8211; exatamente como se estivesse usando o editor de linhas do velho &lt;span class="caps"&gt;DOS&lt;/span&gt;, o &lt;a href="http://en.wikipedia.org/wiki/Edlin"&gt;&lt;span class="caps"&gt;EDLIN&lt;/span&gt;&lt;/a&gt;. Você deve definir todas as variáveis antes de usá-las. Não mais saltando para qualquer lugar em seu código.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota do Akita:&lt;/strong&gt; por isso é tão desconfortável exercitar Test Driven Development (&lt;span class="caps"&gt;TDD&lt;/span&gt;) com IDEs: &lt;span class="caps"&gt;TDD&lt;/span&gt; exige programação de cima para baixo, primeiro criando testes que falham para depois criar o código que a satisfaz. A &lt;span class="caps"&gt;IDE&lt;/span&gt; simplesmente não gosta dessa ordem e exige malabarismo para sair disso.&lt;/p&gt;
&lt;p&gt;Não é que o IntelliSense está nos ensinando a programar como uma máquina, é só que o IntelliSense seria muito mais feliz se assim o fizéssemos.&lt;/p&gt;
&lt;p&gt;E eu acho que isso está nos tornando mais idiotas. Em vez de descobrir exatamente o método que eu preciso, ou em vez de tentar lembrar um nome de propriedade indescritível, encontro-me a percorrer as possibilidades que o IntelliSense oferece, à procura de um nome familiar, ou pelo menos algo que parece se encaixar.&lt;/p&gt;
&lt;p&gt;Eu não preciso lembrar mais nada. O IntelliSense se lembrará para mim. Além disso, eu justifico a mim mesmo que não quero aqueles 60.000 métodos e propriedades bagunçando minha mente. A minha saúde mental global será sem dúvida melhor sem eles, mas ao mesmo tempo, estou impedido de alcançar um estilo fluido de codificação porque ela não vem inteiramente da minha cabeça. Minha codificação tornou-se um diálogo constante com o IntelliSense.&lt;/p&gt;
&lt;p&gt;Então eu não acho que o IntelliSense está nos ajudando a nos tornar programadores melhores. O objetivo real é para nos tornarmos programadores mais &lt;em&gt;rápidos&lt;/em&gt;, o que também significa que está barateando nosso trabalho.&lt;/p&gt;
&lt;p&gt;Claro, eu poderia sempre apenas desligá-lo.&lt;/p&gt;
&lt;p&gt;E andar descalço? De jeito nenhum!&lt;/p&gt;
&lt;p&gt;IntelliSense é uma tecnologia inevitável. Se a Microsoft não tivesse feito isso, alguém teria. Os seres humanos nunca foram inclinados a abster-se de perseguir certas tecnologias, pois eles podem ter repercussões infelizes.&lt;/p&gt;
&lt;h2&gt;Código Gerado&lt;/h2&gt;
&lt;p&gt;Não só o Visual Studio tenta completar código que estamos digitando, mas há muitos anos, o Visual Studio quis gerar o código para nós. Se selecionarmos um novo projeto de tipo Aplicativo Windows, por exemplo, e dar-lhe um nome e um local em uma unidade de disco, o Visual Studio gerará código suficiente para que este projeto seja imediatamente compilável e executável.&lt;/p&gt;
&lt;p&gt;De alguma forma, nós fomos convencidos de que esta é a maneira correta de programar. Eu não sei porquê. Pessoalmente, acho que iniciar um programa com um arquivo de código fonte vazio é muito agradável. Eu gosto de escrever as preliminares e, em seguida, a função principal, ou o método &lt;em&gt;main&lt;/em&gt;. O momento em que eu possa realmente usar alguma ajuda não é quando estou começando um programa, mas quando estou tentando terminar. Onde está o Visual Studio então?&lt;/p&gt;
&lt;p&gt;Vamos para o Visual Studio 2005 em nossa imaginação e criar um programa C# Windows Forms &amp;#8211; um projeto do tipo Aplicação Windows &amp;#8211; e analisar o código.&lt;/p&gt;
&lt;p&gt;Primeiro, vemos que o Visual Studio ligou o nosso programa a um grupo de bibliotecas de vínculo dinâmico que ele acha que precisamos. Criou referências não somente aos assemblies System, System.Drawing e System.Windows.Forms que são necessários em qualquer aplicativo não-trivial de Windows Forms, mas também System.Data, System.Deployment e System.Xml, independentemente se seu programa necessita dessas DLLs ou não. Estas referências extras não fazem nenhum mal real, exceto se alguém examina o programa &amp;#8211; talvez para fazer algumas alterações após o programador original ter ido embora &amp;#8211; e assume que a aplicação &lt;em&gt;requer&lt;/em&gt; estas referências. Agora há confusão, porque existem referências a DLLs que o programa realmente não precisa.&lt;/p&gt;
&lt;p&gt;Entre outros arquivos, o Visual Studio cria um Form1.cs que gentilmente permite a você, o programador, modificar. Esse é o código fonte do arquivo onde os manipuladores de eventos vão para controles no formulário principal. Nós vemos um monte de directivas &lt;em&gt;using&lt;/em&gt; no topo com os namespaces para as necessidades do programa. Os namespaces normais para os programas do Windows Forms são System, System.Drawing e System.Windows.Forms, mas o Visual Studio também inclui System.Collections, System.ComponentModel, System.Data e System.Text, alguns dos quais são úteis com certeza, mas se o programa realmente não usar qualquer uma das classes nesses namespaces, eles são apenas ruídos de distração.&lt;/p&gt;
&lt;p&gt;O Visual Studio também inclui todo o código que gera em um namespace onde é dado o mesmo nome que o nome do projeto. Claro, eu entendo completamente o valor de ter um namespace para DLLs, mas por que ter um namespace para as aplicações? Eu pensei muito, e não consigo entender.&lt;/p&gt;
&lt;p&gt;Eu tenho falado sobre código, mas quando você cria um novo projeto Windows Forms, o Visual Studio não coloca qualquer um dos arquivos de código fonte na sua frente. Em vez disso, ele coloca uma exibição de design de um formulário onde você deve começar a preencher de forma interativa com controles.&lt;/p&gt;
&lt;p&gt;O Visual Studio também cria um arquivo chamado Form1.Designer.cs, e em algumas versões beta do Visual Studio 2005, esse arquivo não foi sequer listado entre os arquivos do projeto, por padrão. Este é o arquivo onde o Visual Studio insere código gerado quando você cria o formulário. O Visual Studio realmente não quer que você mexa com esse arquivo e por boas razões. Ele espera que este código gerado esteja em um determinado formato e, se você mexer nele, pode não ser capaz de lê-lo de volta na próxima vez que abrir o projeto.&lt;/p&gt;
&lt;p&gt;(&amp;#8230;)&lt;/p&gt;
&lt;h2&gt;Design Interativo&lt;/h2&gt;
&lt;p&gt;A maioria das coisas realmente inovadoras de design interativo, encontrou sua primeira manifestação no Visual Basic de Windows, e aqui é onde eu comecei a ficar nervoso sobre onde a programação no Windows estava indo. Não só você poderia mover um botão em seu formulário, e de forma interativa posicioná-lo e acertar seu tamanho do jeito que quisesse, mas se clicasse no botão, o Visual Basic geraria um manipulador de eventos para você, deixando-o digitar o código.&lt;/p&gt;
&lt;p&gt;Isso me incomodou porque o Visual Basic estava tratando de um programa não como um documento completo e coerente, mas como pequenos trechos de código anexado para objetos visuais. Isso não é programar. Não é isso que o compilador vê. Como é que alguém obtêm um senso de um programa completo? Me deixou perplexo.&lt;/p&gt;
&lt;p&gt;Eventualmente, o material de desenho interativo encontrou seu caminho para o desenvolvimento com C++ e Microsoft Foundation Classes, e lá, eu realmente acreditei, a geração de código foi usado para esconder um monte de coisas cabeludas do &lt;span class="caps"&gt;MFC&lt;/span&gt; que realmente &lt;em&gt;ninguém&lt;/em&gt; queria ouvir falar.&lt;/p&gt;
&lt;p&gt;Para um autor que escreve livros de programação, todo este material apresenta um dilema. Como você escreve um tutorial de programação? Você se concentra sobre o uso do Visual Studio para desenvolver aplicativos? Sinceramente, eu achei muito difícil escrever frases como &amp;#8220;Agora arraste o objeto botão da caixa de ferramenta para a sua caixa de diálogo&amp;#8221; e ainda sentir como se estivesse ensinando programação. Eu nunca escrevi sobre C++ e &lt;span class="caps"&gt;MFC&lt;/span&gt;, parcialmente porque &lt;span class="caps"&gt;MFC&lt;/span&gt; parecia um invólucro fino sobre a &lt;span class="caps"&gt;API&lt;/span&gt; do Windows e muito mal orientado a objetos. Eu continuei a rever edições posteriores do &lt;em&gt;Programming Windows&lt;/em&gt; sob a suposição de que os seus leitores fossem programadores como eu, que preferiam escrever seu próprio código do zero.&lt;/p&gt;
&lt;h2&gt;Até mais, Resource Script&lt;/h2&gt;
&lt;p&gt;Eu comecei a olhar para o beta do .&lt;span class="caps"&gt;NET&lt;/span&gt; 1.0 e Windows Forms, no verão de 2000, e era claramente mais orientado a objeto do que o &lt;span class="caps"&gt;MFC&lt;/span&gt; jamais poderia ser. Gostei disso. Eu também estava intrigado que o Resource Script tinha desaparecido completamente. Você criava e montava controles nas caixas de diálogo &amp;#8211; agora reunidos sob o termo mais global de &amp;#8220;formulários&amp;#8221; &amp;#8211; ali mesmo em seu código. Claro que, mesmo no Windows 1.0, você poderia criar controles no código, e a primeira edição do &lt;em&gt;Programming Windows&lt;/em&gt; tem alguns exemplos. Mas simplesmente não era muito agradável, porque toda criação de controles envolvia uma chamada para a função &lt;em&gt;CreateWindow&lt;/em&gt; de 11 argumentos. Mas a criação de controles via código no Windows Forms era um piscar de olhos.&lt;/p&gt;
&lt;p&gt;O que é agradável sobre criar e manipular controles no código é que você os está criando e manipulando no código. Suponha que você queira uma coluna de dez botões igualmente espaçados do mesmo tamanho exibindo nomes de cores. Em um programa, você pode realmente armazenar os dez valores de cores em um só lugar. É chamado um &lt;em&gt;array&lt;/em&gt;. Há também uma excelente forma de criar e posicionar estes dez botões. É chamado de um loop &lt;em&gt;for&lt;/em&gt;. Isso é programação.&lt;/p&gt;
&lt;p&gt;Mas o Visual Studio não quer que você use arrays ou loops for para criar e posicionar esses botões. Ele quer que você use o designer, e ele quer gerar o código para você e escondê-lo onde você não possa vê-lo.&lt;/p&gt;
&lt;p&gt;Quase vinte anos após o primeiro Editor de diálogo, o Visual Studio agora é o culpado, que gera código feio e o avisa para que não se meta com ele.&lt;/p&gt;
&lt;p&gt;Se você tentar ler este código, não é assim tão fácil, porque cada classe e estrutura é precedido por um namespace completo:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;System.Windows.Forms.Button button1 = System.Windows.Forms.Button ();&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Claro, nós sabemos porque o Visual Studio precisa fazer isso. Em teoria, é possível para você adicionar à caixa de ferramentas do Visual Studio outro controle &lt;em&gt;Button&lt;/em&gt; chamado de outra &lt;span class="caps"&gt;DLL&lt;/span&gt; com outro namespace, e deve haver uma maneira de diferenciá-los.&lt;/p&gt;
&lt;p&gt;Como o Visual Studio está gerando código baseado nos controles que você selecionar, ele dá nomes padrões aos controles, como &lt;em&gt;button1&lt;/em&gt;, &lt;em&gt;button2&lt;/em&gt;, &lt;em&gt;button3&lt;/em&gt;, &lt;em&gt;label1&lt;/em&gt;, &lt;em&gt;label2&lt;/em&gt;, &lt;em&gt;label3&lt;/em&gt;, &lt;em&gt;textBox1&lt;/em&gt;, &lt;em&gt;textBox2&lt;/em&gt;, &lt;em&gt;textBox3&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Claro, o Visual Studio permite que você altere o nome da variável. Você pode alterar a propriedade &lt;em&gt;Nome&lt;/em&gt; do controle, e isso se torna não apenas a propriedade &lt;em&gt;Nome&lt;/em&gt; do objeto botão, mas também o seu nome de variável.&lt;/p&gt;
&lt;p&gt;Os programadores realmente fazem isso? Eu tenho certeza que alguns fazem, mas também estou certo que muitos não o fazem. Como eu sei? Dê uma olhada em alguns dos códigos de exemplo que vem da Microsoft. Lá você verá &lt;em&gt;button1&lt;/em&gt;, &lt;em&gt;button2&lt;/em&gt;, &lt;em&gt;button3&lt;/em&gt;, etc. E, no entanto, todos concordam que um dos elementos mais importantes de código auto-documentado está em dar nomes significativos às suas variáveis e objetos.&lt;/p&gt;
&lt;p&gt;Se o Visual Studio realmente quisesse que você escrevesse código bom, toda vez que você arrastasse um controle no formulário, uma janela pop-up irritante diria: &amp;#8220;Escreva um nome significativo para este controle.&amp;#8221; Mas o Visual Studio não está interessado em fazer você escrever código bom. Ele quer que você escreva código rápido.&lt;/p&gt;
&lt;p&gt;Enquanto estou no assunto de nomes de variáveis, eu deveria dizer algo positivo sobre o Visual Studio. O Visual Studio 2005 tem uma facilidade totalmente esplêndida de renomear variáveis. Você sabe como às vezes realmente quer mudar o nome de uma variável para estar mais em sintonia com sua função real no programa, mas você está receoso por causa dos possíveis efeitos secundários de buscar e substituir? Bem, esta nova renomeação de variáveis evita tudo isso, e também irá lhe dizer se você está renomeando algo para um nome que já existe. Espero que as pessoas se aproveitem disso para renomear seus controles para algo diferente dos padrões do Visual Studio.&lt;/p&gt;
&lt;h2&gt;Propriedades usadas Demais&lt;/h2&gt;
&lt;p&gt;Outro problema com a geração de código do Visual Studio é que todo controle vira uma propriedade na classe onde é criado. Esta é uma prática odiosa de programação, e realmente me incomoda que programadores possam estar olhando o código gerado pelo Visual Studio para aprender técnicas de programação adequada, e é isso que eles vêem.&lt;/p&gt;
&lt;p&gt;Nos dias anteriories à orientação-a-objetos de programação C, tínhamos variáveis locais e variáveis globais, variáveis dentro de funções e variáveis fora de funções. Um dos objetivos da boa programação em C estava em manter o número de variáveis globais ao mínimo. Como qualquer variável global poderia ser modificada por qualquer função, era mais fácil entender um programa se simplesmente não houvesse muitas delas &amp;#8211; se as funções estritamente se comunicassem entre si através de argumentos e valores de retorno.&lt;/p&gt;
&lt;p&gt;Às vezes, no entanto, os programadores C ficavam um pouco, digamos, &lt;em&gt;sonolentos&lt;/em&gt;, e faziam uma série de variáveis globais que realmente não precisavam existir, porque era mais fácil dessa maneira. Ao invés de acrescentar um argumento extra para uma função, porque armazená-lo como uma global?&lt;/p&gt;
&lt;p&gt;As variáveis globais basicamente desapareceram em programação orientada-a-objetos, exceto que propriedades são agora as novas variáveis globais e podem ser abusadas de forma muito ruim.&lt;/p&gt;
&lt;p&gt;Um dos princípios básicos de programação orientada-a-objetos está em esconder dados. Isso geralmente se aplica entre classes. Classes não devem expor tudo o que têm. Elas deveriam ter uma interface pública o menor possível, e outras classes devem saber apenas o que precisam saber. Mas o princípio de ocultamento de dados é importante também &lt;em&gt;dentro&lt;/em&gt; de uma classe. Métodos devem ter acesso limitado aos dados que outros métodos estão usando. Em geral, as variáveis devem ser locais para um método a menos que haja uma razão específica de porque precisam ser acessados de qualquer outro método.&lt;/p&gt;
&lt;p&gt;Quando você cria um objeto usando o operador &lt;em&gt;new&lt;/em&gt;, a quantidade de armazenamento alocada no heap para o objeto deve ser suficiente para acomodar todas as propriedades definidas na classe que está criando o objeto e todas as classes ancestrais. As propriedades basicamente definem o tamanho do objeto na memória. Eu sei que estamos muito além do ponto de se preocupar com cada byte de armazenamento, mas quando você olha para as propriedades que definiu em sua classe, deve estar se perguntando: Será que todo este material realmente precisa ser armazenado com cada objeto no heap? Ou restringi com sucesso as propriedades às informações necessárias para manter o objeto?&lt;/p&gt;
&lt;p&gt;Alguém me disse que gosta de armazenar objetos como propriedades porque tem medo do garbage collector do .&lt;span class="caps"&gt;NET&lt;/span&gt; limpar tudo que não estiver em definições apropriadas de propriedade. Depois de anos definindo muito poucas propriedades em .&lt;span class="caps"&gt;NET&lt;/span&gt;, posso lhes dizer que isto não é um problema. O garbage collector do .&lt;span class="caps"&gt;NET&lt;/span&gt; só excluirá objetos que não são mais referenciados em qualquer parte do programa. Se você ainda pode acessar um objeto de alguma forma, ele não é elegível para coleta de lixo.&lt;/p&gt;
&lt;p&gt;Em teoria, nenhuma controle-filho criado como parte de um formulário deve ser armazenado como uma propriedade porque o pai &amp;#8211; geralmente um formulário &amp;#8211; armazena todos os seus controles-filho na coleção chamada &lt;em&gt;Controls&lt;/em&gt;, e você pode fazer referência a cada controle indexando a propriedade &lt;em&gt;Controls&lt;/em&gt; usando inteiros ou a propriedade texto &lt;em&gt;Nome&lt;/em&gt; que lhe foi atribuída ao criar o controle. E aqui mais uma vez você está muito melhor se os controles tiverem nomes significativos e não &lt;em&gt;button1&lt;/em&gt;, &lt;em&gt;button2&lt;/em&gt;, &lt;em&gt;button3&lt;/em&gt;, &lt;em&gt;label1&lt;/em&gt;, &lt;em&gt;label2&lt;/em&gt;, &lt;em&gt;label3&lt;/em&gt; &amp;#8230;&lt;/p&gt;
&lt;p&gt;Se um determinado objeto é definido como uma propriedade ou uma variável local é algo que nós, como programadores devemos estar pensando a cada objeto que criamos. Um label que tem o mesmo texto durante toda a duração do formulário pode ser facilmente local. Para um rótulo cujo texto é o conjunto de um manipulador de eventos de algum outro controle, provavelmente é mais conveniente armazenar como uma propriedade.&lt;/p&gt;
&lt;p&gt;É muito simples. Mas o Visual Studio não quer que você pense sobre isso. O Visual Studio quer tudo armazenado como uma propriedade.&lt;/p&gt;
&lt;h2&gt;Visual Studio Desmistificado&lt;/h2&gt;
&lt;p&gt;Mesmo se o Visual Studio gerasse código imaculado, ainda haveria um problema. Como ele está gerando o código, também ergue muros entre o código e o programador. Ele implica que esta é a única maneira que você pode escrever um programa Windows moderno ou web, porque há certos aspectos da programação moderna que só ela conhece. E o Visual Studio aumenta essa impressão, incluindo código clichê que contém material que nunca foi realmente discutido de forma adequada, nos tutoriais ou documentação que a Microsoft oferece.&lt;/p&gt;
&lt;p&gt;Torna-se imperativo para mim, como professor de programação Windows Forms e programação de Avalon, deliberadamente ir na direção oposta. Eu sinto necessidade de desmistificar o que o Visual Studio está fazendo e demonstrar como você pode desenvolver esses aplicativos escrevendo seu próprio código e, se você quiser, compilar esse código na linha de comando totalmente fora do Visual Studio.&lt;/p&gt;
&lt;p&gt;Nos meus livros de formulários do Windows, eu digo ao leitor para não escolher Aplicação Windows quando se inicia um novo projeto Windows Forms, mas escolher a opção Projeto Vazio em vez disso. O projeto vazio não cria nada além de um arquivo de projeto. Todas as referências e todo o código deve ser adicionado explicitamente.&lt;/p&gt;
&lt;p&gt;Estou prestando um serviço público, mostrando aos programadores como escrever código de uma maneira que é diametralmente oposta às funcionalidades incorporadas na ferramenta que eles estão usando? Eu não sei. Talvez isto seja errado, mas não vejo outra alternativa.&lt;/p&gt;
&lt;p&gt;(&amp;#8230;)&lt;/p&gt;
&lt;h2&gt;Os Prazeres Puros de Código Puro&lt;/h2&gt;
&lt;p&gt;Alguns meses atrás &amp;#8211; talvez como um antídoto para toda essa overdose de Windows Forms e programação Avalon que tenho feito &amp;#8211; eu comecei a programar em C novamente. Só um pouquinho. Uma revista que li &amp;#8211; o semanário britânico &lt;em&gt;New Scientist&lt;/em&gt; &amp;#8211; tem uma parte chamada de &amp;#8220;Enigma&amp;#8221;, que apresenta um pequeno enigma de matemática. Aqui está um curto de Junho passado: &amp;#8220;Qual é o maior inteiro cujos algarismos são todos diferentes (e não incluem 0), que é divisível por cada um dos seus dígitos individuais?&amp;#8221; Se você resolve um dos problemas Enigma, pode enviar a sua solução, e uma é escolhida aleatoriamente em uma determinada data, e se o seu for escolhido você ganha &lt;span class="caps"&gt;USD&lt;/span&gt; 25 e uma menção na revista.&lt;/p&gt;
&lt;p&gt;Estes problemas Enigma realmente me incomodaram durante anos, porque eles sempre me pareceram ser resolvidos escrevendo um programa curto e testando as possibilidades e, por alguma razão, isso me parecia absurdo.&lt;/p&gt;
&lt;p&gt;Alguns meses atrás eu decidi que poderia realmente ser interessante resolver os problemas com código, e em seguida enviar os programas e soluções no meu site um dia depois do prazo, mas cerca de uma semana antes da resposta aparecer impressa.&lt;/p&gt;
&lt;p&gt;Eu decidi usar o bom e velho &lt;span class="caps"&gt;ANSI&lt;/span&gt; C, e editar o código-fonte no Bloco de notas &amp;#8211; que não tem nenhuma noção de IntelliSense e nenhuma noção de qualquer outra coisa &amp;#8211; e compilar na linha de comando usando tanto o compilador Microsoft C e o compilador &lt;span class="caps"&gt;GNU&lt;/span&gt; C.&lt;/p&gt;
&lt;p&gt;O que é interessante sobre este projeto é que eu não tenho que olhar nada. Eu tenho codificado em C há 20 anos. Foi a minha linguagem preferida antes de C#. E isso é apenas pura codificação algorítmica com saída de texto simples. É somente conteúdo.&lt;/p&gt;
&lt;p&gt;Eu também descobri que os problemas &lt;em&gt;realmente&lt;/em&gt; exigem uma reflexão antes de codificá-los. Muitas vezes, o número total de combinações é proibitivo. Você realmente tem que trabalhar. Você não quer escrever um programa que precisa ser executado por uma semana antes de chegar à instrução &lt;em&gt;printf&lt;/em&gt;. Por exemplo, se o problema que citei: &amp;#8220;Qual é o maior inteiro cujos algarismos são todos diferentes (e não incluem 0) que é divisível por cada um dos seus dígitos individuais?&amp;#8221; Isso realmente ajuda a perceber que este número inteiro não pode conter o dígito 5 se ele também contém qualquer dígito par, porque então o número será divisível por 10, e o último dígito seria 0, o que não é permitido. Assim, o número que estamos procurando provavelmente não inclui 5. O que imediatamente reduz as possibilidades por uma ordem de grandeza.&lt;/p&gt;
&lt;p&gt;Mesmo após este processo preliminar, há ainda codificação para fazer, mas não há nenhuma &lt;span class="caps"&gt;API&lt;/span&gt;, não há classes, não há propriedades, não há formulários, não há controles, não há manipuladores de eventos, e não há definitivamente o Visual Studio.&lt;/p&gt;
&lt;p&gt;É somente eu e o código e, por algum tempo, me sinto como um &lt;strong&gt;verdadeiro programador&lt;/strong&gt; novamente.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ToQ64CXi1ic_ynDwYjTNMfaWvVE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ToQ64CXi1ic_ynDwYjTNMfaWvVE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ToQ64CXi1ic_ynDwYjTNMfaWvVE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ToQ64CXi1ic_ynDwYjTNMfaWvVE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=RO-FWX2taRQ:MacZmB8048M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=RO-FWX2taRQ:MacZmB8048M:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=RO-FWX2taRQ:MacZmB8048M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=RO-FWX2taRQ:MacZmB8048M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=RO-FWX2taRQ:MacZmB8048M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=RO-FWX2taRQ:MacZmB8048M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=RO-FWX2taRQ:MacZmB8048M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/RO-FWX2taRQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/17/tradu--o-os-problemas-do-pensamento-do-visual-studio-e-outras-ides</feedburner:origLink></item><item><title>[Rails Summit 2009] Teaser Trailer</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/ZI-CZr1S0x8/rails-summit-2009-teaser-trailer</link><pubDate>Wed, 16 Sep 2009 05:35:49 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5203</guid><description>&lt;p style="text-align: center"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img src="http://railssummit.com.br/imgs/43/original/728x90.gif" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Quem esteve no &lt;a href="http://devinrio.com.br/"&gt;Dev in Rio 2009&lt;/a&gt; e quem participou do &lt;a href="http://akitaonrails.com/railssummit2008"&gt;Rails Summit 2008&lt;/a&gt; sabe do que estou falando :-)&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zbdTAoJpvz8&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/zbdTAoJpvz8&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;Aqui vai a história sobre isso, diretamente pelo &lt;a href="http://tapajos.me"&gt;Tapajós&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Eu estava sentado junto com a galera do Rio vendo a morena passando de um lado para o outro e observando que ninguém se concentrava na palestra. Todo mundo estava fazendo a cobertura do evento no twitter e eu tive a idéia de pôr uma foto dela lá, provocando quem não veio ao evento.&lt;/p&gt;
&lt;p&gt;Como eu era um novo usuário do twitter e achava meio estúpido o propósito dele de dizer o que se está fazendo eu sempre tentei subverter o uso dele e tive a idéia de fazer a mesma coisa com um repositório de código. Fui lá no github, criei o projeto, coloquei uma foto e publiquei o link no Twitter.&lt;/p&gt;
&lt;p&gt;Nesse momento eu fui até o &lt;a href="http://twitter.com/defunkt"&gt;Chris Wanstrath&lt;/a&gt; (criador do github) e mostrei o projeto. Ele achou super engraçado e comentou que as pessoas achavam os usos mais estranhos possíveis para os repositórios e que isso era bem engraçado e fizemos uma pequena &amp;#8220;aposta&amp;#8221; que o projeto ia bombar.&lt;/p&gt;
&lt;p&gt;Em poucos minutos minha caixa de e-mails estava lotada de &lt;a href="http://github.com/guides/pull-requests"&gt;pull request&lt;/a&gt; com dezenas e fotos e como estava bem complicado gerenciar tudo e ainda observa-la eu resolvi dar direito de commit a algumas pessoas e o projeto ganhou vida própria.&lt;/p&gt;
&lt;p&gt;Meu medo era a morena ficar &amp;#8220;P&amp;#8221; e querer arrumar confusão. Era impossível voltar atrás! Mas felizmente ela ficou sabendo e não ligou, por isso o projeto continuou crescendo e até hoje continua sendo &lt;a href="http://github.com/guides/fork-a-project-and-submit-your-modifications"&gt;forkado&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Por falar em fork, o Dr. Nic foi um dos que adorou o projeto e &lt;a href="http://www.youtube.com/watch?v=6j24jV5SGZU"&gt;gravou um pequeno vídeo&lt;/a&gt; sobre ele.&lt;/p&gt;
&lt;p&gt;Bem, O &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit 2009&lt;/a&gt; está chegando e eu estarei lá para dar continuidade ao projeto e se der tempo vou palestrar também.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Assistam a outros teasers do &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit 2009&lt;/a&gt; em &lt;a href="http://www.youtube.com/user/AkitaOnRails"&gt;http://www.youtube.com/user/AkitaOnRails&lt;/a&gt; e ajudem a promover o evento!&lt;/p&gt;
&lt;p&gt;Não se esqueçam, o &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit&lt;/a&gt; acontece dias 13 e 14 de Outubro, não deixem para se registrar na última hora!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ckl8aYuzR89tvoGhtrrfgzymi_M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ckl8aYuzR89tvoGhtrrfgzymi_M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ckl8aYuzR89tvoGhtrrfgzymi_M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ckl8aYuzR89tvoGhtrrfgzymi_M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZI-CZr1S0x8:qgd3_-3ZFjM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZI-CZr1S0x8:qgd3_-3ZFjM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZI-CZr1S0x8:qgd3_-3ZFjM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=ZI-CZr1S0x8:qgd3_-3ZFjM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZI-CZr1S0x8:qgd3_-3ZFjM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=ZI-CZr1S0x8:qgd3_-3ZFjM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZI-CZr1S0x8:qgd3_-3ZFjM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/ZI-CZr1S0x8" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/16/rails-summit-2009-teaser-trailer</feedburner:origLink></item><item><title>[Off-Topic] A Argumentação através da Intimidação </title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/ZkvAGYwHvo8/off-topic-a-argumenta--o-atrav-s-da-intimida--o</link><pubDate>Sat, 12 Sep 2009 08:40:26 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5202</guid><description>&lt;p&gt;Há um certo tipo de argumentação que, na verdade, não é uma argumentação, mas um meio de evitar o debate e extorquir o acordo de um adversário baseado em noções indiscutíveis. É um método de burlar a lógica usando pressão psicológica. Uma vez que é particularmente comum na cultura de hoje e continuará crescendo, é bom aprender a identificá-lo e estar em guarda.&lt;/p&gt;
&lt;p&gt;Este método tem uma certa semelhança com a falácia &lt;a href="http://pt.wikipedia.org/wiki/Argumentum_ad_hominem"&gt;ad hominem&lt;/a&gt;, vem da mesma raiz psicológica, mas é essencialmente diferente. A falácia ad hominem consiste em tentar contrariar um argumento acusando o caráter de seu proponente. Exemplo: &lt;em&gt;&amp;#8220;o candidato X é imoral, pois seu argumento é falso.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;O método de pressão psicológica consiste em ameaçar a integridade do caráter de um oponente usando seu próprio argumento, então contestando a argumentação, sem debate. Exemplo: &lt;em&gt;&amp;#8220;Só o imoral não vê que o argumento do candidato X é falso.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;No primeiro caso, a imoralidade do Candidato X (real ou inventado) é oferecido como prova da falsidade de seus argumentos. No segundo caso, a falsidade de seu argumento é afirmada de forma arbitrária e oferecida como prova de sua imoralidade.&lt;/p&gt;
&lt;p&gt;Na selva epistemológica de hoje, esse segundo método é usado com mais freqüência do que qualquer outro tipo de argumento irracional. Deve ser classificado como uma falácia lógica e pode ser designado como &amp;#8220;a argumentação através da intimidação&amp;#8221;.&lt;/p&gt;
&lt;p&gt;A característica essencial da argumentação através da intimidação é o seu apelo à auto-dúvida moral e sua dependência do medo, culpa ou ignorância da vítima. É usado na forma de um ultimato exigindo que a vítima renuncie à sua idéia sem discussão, sob pena de ser considerado moralmente indigno. O padrão é sempre: &lt;em&gt;&amp;#8220;Somente aqueles que são maus (desonestos, cruéis, insensíveis, ignorantes, etc) tem essas idéias.&amp;#8221;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;O exemplo clássico do argumento da intimidação é a história &lt;a href="http://tinyurl.com/qlmbw7"&gt;As Roupas Novas do Imperador&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nessa história, alguns charlatães vendem roupas inexistente ao Imperador, afirmando que a beleza incomum do vestuário os torna invisíveis para aqueles que são moralmente condenáveis de coração. Observe os fatores psicológicos necessários para fazer este trabalho: os charlatães confiam na auto-dúvida do Imperador; e ele não põe em dúvida essa afirmação, nem a sua autoridade moral. Ele se rende ao mesmo tempo, alegando que de fato enxerga as peças de vestuário, negando assim a evidência de seus próprios olhos e invalidando a sua própria consciência em vez de enfrentar uma ameaça à sua auto-estima precária. Sua distância da realidade pode ser avaliada pelo fato de que ele prefere andar nu na rua, exibindo as suas vestes inexistente para o povo, ao invés de arriscar incorrer na condenação moral de dois canalhas. As pessoas, motivadas pelo mesmo pânico psicológico, tentam ultrapassar um ao outro com exclamações em voz alta sobre o esplendor de suas vestes, até que uma criança grita que o rei está nu.&lt;/p&gt;
&lt;p&gt;Este é o modelo exato do trabalho da Argumentação através Intimidação, como está sendo trabalhado em torno de nós hoje.&lt;/p&gt;
&lt;p&gt;Todos já ouvimos e continuamos ouvindo esse tipo de coisa constantemente:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;em&gt;&amp;#8220;Somente aqueles que não possuem instintos mais refinados falham em aceitar a moralidade do altruísmo.&amp;#8221;&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;&amp;#8220;Somente os ignorantes não sabem que a razão foi invalidada.&amp;#8221;&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;&amp;#8220;Somente os reacionários de coração negro podem defender o capitalismo.&amp;#8221;&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;&amp;#8220;Só sedendos por guerra podem opor-se às Nações Unidas.&amp;#8221;&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;&amp;#8220;Só os lunáticos ainda acreditam na liberdade.&amp;#8221;&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;&amp;#8220;Só os covardes não veem que a vida é um esgoto.&amp;#8221;&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;&amp;#8220;Só os superficiais procuram a beleza, felicidade, realização, valores ou heróis.&amp;#8221;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Como exemplo de um campo inteiro de atividade baseada em nada além da argumentação através da intimidação, dou-lhe a arte moderna, onde, a fim de comprovar que de fato possuem o discernimento especial que somente a elite &amp;#8220;mística&amp;#8221; tem, a população tenta superar um ao outro em exclamações em voz alta do esplendor de alguns pedaço de lona borrados.&lt;/p&gt;
&lt;p&gt;A argumentação através da intimidação domina discussões de hoje em duas formas. Em discursos públicos e impressos, ele floresce sob a forma de estruturas longas, envolventes, elaboradas de palavreado ininteligível, que transmitem nada exceto uma clara ameaça moral. (&lt;em&gt;&amp;#8220;Só os de mentalidade primitiva deixam de perceber que a clareza é simplificação excessiva.&amp;#8221;&lt;/em&gt;) Mas, em particular, no dia-a-dia, ele vem sem palavras, nas entrelinhas, sob a forma de sons inarticulados contendo implicações não declaradas. Baseia-se, não no que é dito, mas em como se diz &amp;#8211; não no conteúdo, mas no tom de voz.&lt;/p&gt;
&lt;p&gt;O tom é geralmente de uma incredulidade beligerante ou desdenhosa. &lt;em&gt;&amp;#8220;Certamente você não é um defensor do capitalismo, não é?&amp;#8221;&lt;/em&gt; E se isso não intimida a vítima em perspectiva, que responde, corretamente: &lt;em&gt;&amp;#8220;Eu sou&amp;#8221;&lt;/em&gt; &amp;#8211; o diálogo se segue mais ou menos assim:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&amp;#8220;Ah, você não poderia ser! Não é verdade!&lt;/li&gt;
	&lt;li&gt;&amp;#8220;Verdade&amp;#8221;.&lt;/li&gt;
	&lt;li&gt;&amp;#8220;Mas todo mundo sabe que o capitalismo está ultrapassado!&amp;#8221;&lt;/li&gt;
	&lt;li&gt;&amp;#8220;Eu não&amp;#8221;.&lt;/li&gt;
	&lt;li&gt;&amp;#8220;Ah, não pode ser verdade!&amp;#8221;&lt;/li&gt;
	&lt;li&gt;&amp;#8220;Já que eu não sei, você vai me dizer as razões para pensar que o capitalismo está ultrapassado?&amp;#8221;&lt;/li&gt;
	&lt;li&gt;&amp;#8220;Oh, não seja ridículo!&amp;#8221;&lt;/li&gt;
	&lt;li&gt;&amp;#8220;Vai me dizer as razões?&lt;/li&gt;
	&lt;li&gt;&amp;#8220;Bem, se você realmente não sabe, não sou eu que poderia possivelmente lhe dizer!&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tudo isso é acompanhado de sobrancelhas levantadas, de olhos arregalados, encolher de ombros, grunhidos, e todo arsenal de sinais não-verbais comunicando insinuações sinistras e vibrações emocionais de uma única espécie: desaprovação.&lt;/p&gt;
&lt;p&gt;Se essas vibrações falham, se tais debatedores são desafiados, verifica-se que eles não têm argumentos, nenhuma evidência, nenhuma prova, nenhuma razão, nenhum motivo no qual fundamentar &amp;#8211; que sua agressividade ruidosa serve para esconder o vácuo &amp;#8211; que a argumentação através da intimidação é uma confissão de impotência intelectual.&lt;/p&gt;
&lt;p&gt;O arquétipo primordial desta argumentação é evidente (e assim são as razões do seu recurso para o neo-misticismo da nossa era): &lt;em&gt;&amp;#8220;Para aqueles que entendem, nenhuma explicação é necessária; para aqueles que não entendem, nenhuma é possível&amp;#8221;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;A fonte psicológica do que o argumento é metafísica social.&lt;/p&gt;
&lt;p&gt;Um metafísico social é aquele que trata a consciência dos outros homens como superiores aos seus próprios e para os fatos da realidade. Para um metafísico social a avaliação moral de si próprio pelos outros é uma preocupação primária que substitui a verdade, fatos, razão lógica. A reprovação dos outros é tão terrível para ele que nada pode resistir ao seu impacto dentro da sua consciência, assim ele negaria a evidência de seus próprios olhos e invalidaria a sua própria consciência em prol da aprovação moral de qualquer charlatão vadio. Apenas um metafísico social poderia conceber tal coisa absurda como a esperança de ganhar um argumento intelectual insinuando: &lt;em&gt;&amp;#8220;Mas as pessoas não vão gostar de você!&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Estritamente falando, um metafísico social não percebe a sua argumentação em termos conscientes: ele acha isso &amp;#8220;instintivamente&amp;#8221;, pela introspecção, uma vez que representa a sua forma psico-epistemológica de vida. Todos nós já encontramos o tipo irritante de pessoa que não escuta o que alguém diz, mas às vibrações emocionais da voz do outro, ansiosamente traduzindo-os em aprovação ou reprovação para, em seguida, responder de acordo. Esta é uma espécie de argumentação auto-imposta através da intimidação, à qual um metafísico social se rende na maioria dos seus encontros humanos. E assim, quando ele encontra um adversário, quando suas premissas são contestadas, ele recorre automaticamente à arma que o assusta mais: a retirada da sua aprovação moral.&lt;/p&gt;
&lt;p&gt;Uma vez que esse tipo de terror psicológico é desconhecido para homens saudáveis, isso pode ser considerado como argumentação através da intimidação, precisamente por causa da sua inocência. Sem entender o motivo da argumentação ou para acreditar que ele é apenas um blefe sem sentido, eles assumem que seu usuário tem algum tipo de conhecimento ou razões para apoiar suas afirmações aparentemente auto-confiantes, beligerantes, dando-lhe o benefício da dúvida &amp;#8211; e são deixados em confusão perplexa. É assim que os metafísicos social vitimizam os jovens, os inocentes, a consciência.&lt;/p&gt;
&lt;p&gt;Isto é particularmente prevalente nas salas de aula da faculdade. Muitos professores usam a argumentação através da intimidação para abafar o pensamento independente entre os estudantes, para fugir a perguntas que não conseguem responder, para desencorajar qualquer análise crítica de seus premissas arbitrárias ou qualquer desvio do status quo intelectual.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Aristóteles? Meu querido companheiro&amp;#8221; (um suspiro cansado) &amp;#8220;Se você tivesse lido o trabalho do Professor Spiffkin&amp;#8221; (respeitosamente) &amp;#8220;da edição de janeiro de 1912 da revista Intellect, que&amp;#8221; (com desdém) &amp;#8220;obviamente você não leu, saberia&amp;#8221; (levianamente) &amp;#8220;que Aristóteles foi refutado.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Professor X?&amp;#8221; (sendo X o nome de um distinto teórico de economia de livre empresa) &amp;#8220;Você está citando o Professor X? Oh não, fala sério!&amp;#8221; &amp;#8211; seguido de uma risada sarcástica com a intenção de transmitir que o Professor X foi completamente desacreditado. (Por quem? Fim da discussão.)&lt;/p&gt;
&lt;p&gt;Esses professores são freqüentemente assistidos pela brigada dos capangas dos &amp;#8220;liberais&amp;#8221; da sala de aula, que explodem em gargalhadas em momentos apropriados.&lt;/p&gt;
&lt;p&gt;Em nossa vida política, a argumentação através da intimidação é o método quase exclusivo de discussão. Predominantemente, os debates políticos de hoje consistem de manchas e desculpas, ou intimidação e apaziguamento. O primeiro é geralmente (mas não exclusivamente) praticada pelos &amp;#8220;liberais&amp;#8221;, o segundo pelos &amp;#8220;conservadores&amp;#8221;. Os campeões, neste contexto, são os &amp;#8220;liberais&amp;#8221; republicanos que praticam ambas: a primeira, em relação a seus companheiros &amp;#8220;conservadores&amp;#8221; republicanos, a segunda, aos democratas.&lt;/p&gt;
&lt;p&gt;Todas as manchas são argumentos de intimidação: eles consistem de afirmações depreciativas, sem qualquer indício ou prova, oferecidos como substitutos das evidências ou provas, visando à covardia moral ou credulidade impensada dos ouvintes.&lt;/p&gt;
&lt;p&gt;A argumentação através da intimidação não é nova, tem sido utilizada em todas as idades e culturas, mas raramente em escala tão ampla quanto hoje. Ela é usada mais cruamente na política do que em outros campos de atividade, mas não se limita à política. Ela permeia toda a nossa cultura. É um sintoma de falência cultural.&lt;/p&gt;
&lt;p&gt;Como é que alguém pode resistir a esse argumento? Existe apenas uma arma contra ela: a certeza moral.&lt;/p&gt;
&lt;p&gt;Quando se entra em qualquer batalha intelectual, grande ou pequena, pública ou privada, não se pode buscar, desejar ou esperar aprovação do inimigo. Verdade ou mentira deve ser a preocupação exclusiva e o critério de julgamento &amp;#8211; não a aprovação ou desaprovação de qualquer pessoa e, acima de tudo, não a aprovação dessas cujos padrões são o oposto do seu próprio. (obs: já viram aquelas argumentações que começam &amp;#8220;Eu respeito muito você, mas &amp;#8230;&amp;#8221; &amp;#8211; claramente buscando uma aprovação).&lt;/p&gt;
&lt;p&gt;Deixe-me enfatizar que o argumento da intimidação não consiste em colocar julgamento moral em questões intelectuais, mas de substituir o julgamento moral pelo argumento intelectual. Avaliações morais estão implícitas na maioria das questões intelectuais; não é meramente permitido, mas obrigatório colocar um juízo moral quando e onde necessário; suprimir tal julgamento é um ato de covardia moral. Mas um julgamento moral deve sempre seguir e jamais anteceder (ou substituir), as razões em que se baseia.&lt;/p&gt;
&lt;p&gt;Quando se dá razões para um veredito, se assume a responsabilidade por ele e coloca-se à disposição ao julgamento objetivo: se suas razões são erradas ou falsas, sofre-se as conseqüências. Mas, condenar sem fundamentação é um ato de irresponsabilidade, uma espécie de atropelamento e fuga moral, que é a essência da argumentação através da intimidação.&lt;/p&gt;
&lt;p&gt;Observa-se que os homens que usam esse argumento são os que temem um ataque moral fundamentado mais do que qualquer outro tipo de batalha, e quando encontram um adversário confiante moralmente, eles são os mais altos em protestar que &amp;#8220;moralização&amp;#8221; deve ser mantida fora das discussões intelectuais. Mas, discutir o mal de uma forma que implica a neutralidade, é uma forma de aprová-la.&lt;/p&gt;
&lt;p&gt;A argumentação através da intimidação ilustra porque é importante ter certeza das próprias premissas e da própria fundação moral. Ele ilustra o tipo de armadilha intelectual que aguarda aqueles que se aventuram sem uma análise completa, clara e consistente das próprias convicções, totalmente integrada até os fundamentos &amp;#8211; aqueles que de forma imprudente pulam para a batalha, armados apenas com algumas noções flutuantes aleatórias em uma névoa do desconhecido, do não identificado, do indefinido, do não provado, e apoiado por nada além de seus sentimentos, esperanças e medos. A argumentação através da intimidação é seu maior inimigo. Em questões morais e intelectuais, não é suficiente estar certo: é necessário saber que está certo.&lt;/p&gt;
&lt;p&gt;por &lt;strong&gt;Ayn Rand&lt;/strong&gt; &amp;#8211; último capítulo de &amp;#8220;The Virtue of Selfishness&amp;#8221;, 1964&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i3v5gSJe0ujde3dfQlmL-sU3bdU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i3v5gSJe0ujde3dfQlmL-sU3bdU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i3v5gSJe0ujde3dfQlmL-sU3bdU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i3v5gSJe0ujde3dfQlmL-sU3bdU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZkvAGYwHvo8:tdUAlf05LUo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZkvAGYwHvo8:tdUAlf05LUo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZkvAGYwHvo8:tdUAlf05LUo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=ZkvAGYwHvo8:tdUAlf05LUo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZkvAGYwHvo8:tdUAlf05LUo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=ZkvAGYwHvo8:tdUAlf05LUo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=ZkvAGYwHvo8:tdUAlf05LUo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/ZkvAGYwHvo8" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/12/off-topic-a-argumenta--o-atrav-s-da-intimida--o</feedburner:origLink></item><item><title>[Off-Topic] Direitos do Homem</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/kf6_wtuXr7g/off-topic-direitos-do-homem</link><pubDate>Wed, 09 Sep 2009 22:14:11 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5201</guid><description>&lt;div style="float: right; margin: 3px"&gt;&lt;img src="/assets/2009/9/8/The_Virtue_of_Selfishness_Ayn_Rand_unabridged_M_original.jpg" alt="" /&gt;&lt;/div&gt;&lt;p&gt;Normalmente eu não gosto de falar de política. Detesto. Sempre achei uma grande perda de tempo. Porém, diante das visões mais exacerbadas de populismo-esquerdismo, da ignorância quando se engrandece o socialismo-tirano cubano ou a ditadura totalitária venezuelana; diante do clamor por reestatização e os movimentos contra a privatização &amp;#8211; todas calcadas na idéia de &amp;#8220;o bem para o povo&amp;#8221;, &amp;#8220;pelo benefício da maioria&amp;#8221;, &amp;#8220;pela ajuda aos fracos&amp;#8221; e outra baboseiras como essa, achei que poderia pelo menos oferecer uma pequena contribuição filosófica, traduzindo pelo menos mais um capítulo do livro de Ayn Rand, &lt;a href="http://www.aynrandbookstore2.com/prodinfo.asp?number=AR09B"&gt;The Virtue of Selfishness&lt;/a&gt; que fala exatamente sobre esse tema, lembrando, claro, que ele foi escrito sobre o contexto dos anos 60. Mas é impressionante como as coisas não mudaram muito nesse sentido. Mas, antes, mais um trecho da introdução, a respeito da fundação do &amp;#8220;egoísmo racional&amp;#8221; do Objetivismo:&lt;/p&gt;
&lt;blockquote&gt;Observem a indecência do que se passa por julgamentos morais hoje. Um industrial que produz uma fortuna, e um bandido que rouba um banco são considerados igualmente imorais, uma vez que ambos procuraram riqueza para seu próprio benefício &amp;#8220;egoísta&amp;#8221;. Um jovem que abandona sua carreira, a fim de sustentar os pais e nunca ultrapassa o posto de escriturário de mantimentos é considerado moralmente superior ao jovem que sofre um esforço excruciante e alcança a sua ambição pessoal. Um ditador é considerado como moral, uma vez que as atrocidades indescritíveis que foram cometidos foram para beneficiar &amp;#8220;o povo&amp;#8221;, e não a si mesmo. &lt;br /&gt;
&lt;br /&gt;
Observe o que este critério de benefício da moralidade faz na vida de um homem. A primeira coisa que ele aprende é que a moralidade é o seu inimigo, ele não tem nada a ganhar com isso, ele só pode perder; perda auto-infligida, dor auto-infligido e a mortalha cinza, debilitante de uma obrigação incompreensível é tudo o que ele pode esperar. Ele pode esperar que outros podem, ocasionalmente, sacrificar-se para seu benefício, como ele se sacrifica de má vontade a eles, mas ele sabe que o relacionamento vai trazer ressentimento mútuo, não prazer &amp;#8211; e que, moralmente, sua perseguição de valores será como um intercâmbio de presentes de Natal indesejados, não escolhidos, onde nenhum é moralmente permitido comprar para si mesmo. Além dos momentos onde ele consegue realizar um ato de auto-sacrifício, ele não possui nenhum significado moral: a moral não toma conhecimento dele e não tem nada a dizer-lhe para orientá-lo nas questões cruciais de sua vida, é apenas a sua próprio vida pessoal, privada, &amp;#8220;egoísta&amp;#8221; e, como tal, é considerado ou mal, ou, na melhor das hipóteses, amoral. &lt;br /&gt;
&lt;br /&gt;
&amp;#8230; &lt;br /&gt;
&lt;br /&gt;
Já que o egoísmo é a &amp;#8220;preocupação com os próprios interesses,&amp;#8221; a ética Objectivista utiliza esse conceito em seu sentido exato e mais puro. Não é um conceito que pode ser entregue aos inimigos do homem, nem para os equívocos irrefletidos, distorções, preconceitos e medos do ignorante e do irracional. O ataque ao &amp;#8220;egoísmo&amp;#8221; é um ataque à auto-estima do homem, desistir de um é desistir do outro.&lt;/blockquote&gt;&lt;h2&gt;Capítulo 12 &amp;#8211; Direitos do Homem&lt;/h2&gt;
&lt;p&gt;Se alguém quiser defender uma sociedade livre &amp;#8211; ou seja, capitalismo &amp;#8211; ele deve entender que a fundação indispensável é o princípio do direito individual. Se alguém quiser suportar os direitos individuais, ele deve entender que o capitalismo é o único sistema que pode suportar e os proteger. E se alguém quiser medir o relacionamento da liberdade com os objetivos dos intelectuais de hoje, ele deve medí-lo pelo fato que o conceito de direitos individuais é evitado, distorcido, pervertido e raramente discutivo pelos chamados &amp;#8220;conservadores&amp;#8221;.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Direitos&amp;#8221; são um conceito moral, o conceito que fornece uma transição lógica dos princípios que norteiam as ações de um indivíduo para os princípios que orientam a sua relação com os outros, o conceito  que preserva e protege a moralidade individual em um contexto social, a ligação entre o código moral de um homem e o código jurídico de uma sociedade, entre ética e política. Os direitos individuais são o meio para subordinar a sociedade à lei moral.&lt;/p&gt;
&lt;p&gt;Todo sistema político é baseado em algum código de ética. A ética dominante da história da humanidade são variantes da doutrina altruísta-coletivista, que subordinava o indivíduo a alguma autoridade superior, seja mística ou social. Consequentemente, a maioria dos sistemas políticos eram variantes da mesma tirania estatista, diferindo apenas em grau, não em princípio básico, limitada apenas pelos acidentes da tradição, do caos, da luta sangrenta e colapso periódico. Sob todos esses sistemas, a moralidade era um código aplicável ao indivíduo, mas não à sociedade. A Sociedade foi colocada fora da lei moral, como a sua incorporação ou fonte ou intérprete exclusivo &amp;#8211; e a inculcação de devoção auto-sacrificial ao dever social foi considerado como o principal objetivo da ética na existência terrena do homem.&lt;/p&gt;
&lt;p&gt;Uma vez que não existe tal entidade como &amp;#8220;sociedade&amp;#8221;, já que a sociedade é apenas um número de homens individuais, isto significou, na prática, que os governantes da sociedade estavam isentos da lei moral, sujeita apenas aos rituais tradicionais, detendo o poder total e exigindo obediência cega &amp;#8211; no princípio implícito de: &amp;#8220;O bom é o que é bom para a sociedade (ou a tribo, a raça, a nação), e decretos do governante são sua voz na terra.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Isto era verdade de todos os sistemas estatais, em todas as variantes da ética altruísta-coletivista, mística ou social. &amp;#8220;O direito divino dos reis&amp;#8221;, resume a teoria política do primeiro &amp;#8220;Vox populi, vox Dei&amp;#8221; do segundo. Como testemunha: a teocracia do Egito, com o faraó como um deus encarnado, a regra da maioria ilimitada ou democracia de Atenas, o estado de bem-estar executado pelos imperadores de Roma, a Inquisição da Idade Média, a monarquia absolutista da França, o estado de bem-estar da Prússia de Bismarck, as câmaras de gás da Alemanha nazista, o matadouro da União Soviética.&lt;/p&gt;
&lt;p&gt;Todos estes sistemas políticos era expressões da ética altruísta-coletivista e sua característica comum é o fato de que a sociedade estava acima da lei moral, como um adorador caprichoso, onipotente, soberano. Assim, politicamente, todos estes sistemas eram variantes de uma sociedade amoral.&lt;/p&gt;
&lt;p&gt;O resultado mais profundamente revolucionário dos Estados Unidos da América foi a subordinação da sociedade à lei moral.&lt;/p&gt;
&lt;p&gt;O princípio dos direitos individuais do homem representou a extensão da moralidade no sistema social, como a limitação do poder do Estado, como a proteção do homem contra a força bruta do coletivo, como a subordinação do poder ao direito. Os Estados Unidos foram a primeira sociedade moral da história.&lt;/p&gt;
&lt;p&gt;Todos os sistemas anteriores consideravam o homem como um meio de sacrifício para os objetivos dos outros, e da sociedade como um fim em si mesmo. Os Estados Unidos consideraram o homem como um fim em si mesmo, e a sociedade como um meio para a  convivência pacífica, ordenada e voluntária de indivíduos. Todos os sistemas anteriores tinham considerado que a vida do homem pertence à sociedade, que a sociedade pode dispor dele da forma que quiser, e que qualquer liberdade que ele desfruta é seu apenas por favor, com a permissão da sociedade, que pode ser revogada a qualquer momento. Os Estados Unidos decidiu que a vida do homem é seu por direito (o que significa: por princípio moral e por sua natureza), que um direito é a propriedade de um indivíduo, que a sociedade como tal, não tem direitos, e que o único propósito moral de uma governo é a proteção dos direitos individuais.&lt;/p&gt;
&lt;p&gt;Um &amp;#8220;direito&amp;#8221; é um princípio moral que define e sanciona a liberdade de ação de um homem em um contexto social. Existe apenas um direito fundamental (todos os outros são as suas consequências ou corolários): um direito do homem à sua própria vida. A vida é um processo de ações auto-geradas de auto-sustentação, o direito à vida significa o direito de exercer ações auto-geradas de auto-sustentação, o que significa: a liberdade de tomar todas as medidas exigidas pela natureza de forma racional sendo para o apoio, a promoção, a satisfação e o prazer de sua própria vida. (Esse é o significado do direito à vida, liberdade e a busca da felicidade.)&lt;/p&gt;
&lt;p&gt;O conceito de &amp;#8220;direito&amp;#8221; se refere apenas à ação, especificamente, a liberdade de ação. Isso significa ausência de coerção física, coação ou interferência de outros homens. Assim, para cada indivíduo, um direito é a sanção moral de um positivo &amp;#8211; de sua liberdade para agir em seu próprio julgamento, para seus próprios objetivos, por sua própria escolha voluntária. Quanto aos seus vizinhos, seus direitos não impõem obrigações a eles, exceto de um tipo negativo: de se abster de violar os seus direitos.&lt;/p&gt;
&lt;p&gt;O direito à vida é a fonte de todos os direitos &amp;#8211; e do direito de propriedade é a sua implementação. Sem direitos de propriedade, nenhum outro direito é possível. Já que o homem tem de sustentar a sua vida por seu próprio esforço, o homem que não tem direito ao produto do seu esforço não tem meios para sustentar a sua vida. O homem que produz, enquanto outros dispõe do seu produto, é um escravo.&lt;/p&gt;
&lt;p&gt;Tenha em mente que o direito à propriedade é um direito de ação, como todos os outros: não é o direito a um objeto, mas a ação e as conseqüências de produzir ou ganhar esse objeto. Não é uma garantia de que um homem vai ganhar qualquer propriedade, mas apenas uma garantia de que ele terá sua propriedade se ganhá-lo. É o direito de adquirir, guardar, usar e dispor dos bens materiais.&lt;/p&gt;
&lt;p&gt;O conceito de direitos individuais é tão nova na história da humanidade que a maioria dos homens não a compreenderam plenamente até hoje. De acordo com as duas teorias da ética, o místico ou o social, alguns homens afirmam que os direitos são um dom de Deus, outros, que os direitos são um dom da sociedade. Mas, na verdade, a fonte dos direitos é a natureza do homem.&lt;/p&gt;
&lt;p&gt;A Declaração de Independência afirmou que &amp;#8220;homens são dotados por seu Criador de certos direitos inalienáveis.&amp;#8221; Se alguém acredita que o homem é produto de um Criador ou da natureza, a questão da origem do homem não altera o fato de que ele é uma entidade de um tipo específico de um ser racional que não pode funcionar com êxito sob coerção, e que os direitos são uma condição necessária para o seu modo particular de sobrevivência.&lt;/p&gt;
&lt;p&gt;&amp;#8220;A fonte dos direitos do homem não é a lei divina ou lei do Congresso, mas a lei da identidade. A é A e homem é homem. Os direitos são condições de existência exigido pela natureza do homem para sua própria sobrevivência. Se o homem deve viver na Terra, é direito dele usar sua mente, é direito agir em seu próprio livre julgamento, é direito trabalhar para os seus valores e manter o produto de seu trabalho. Se a vida na Terra é o seu propósito, ele tem o direito de viver como um ser racional: a natureza o proíbe do irracional. &amp;quot;(Atlas Shrugged.)&lt;/p&gt;
&lt;p&gt;Violar os direitos do homem significa obrigá-lo a agir contra seu próprio julgamento, ou expropriar seus valores. Basicamente, só há uma maneira de fazê-lo: pelo uso de força física. Há dois potenciais violadores dos direitos do homem: os criminosos e o governo. A grande conquista dos Estados Unidos foi de estabelecer uma distinção entre esses dois, proibindo ao segundo a versão legalizada das atividades do primeiro.&lt;/p&gt;
&lt;p&gt;A Declaração de Independência estabele o princípio de que &amp;#8220;para assegurar esses direitos, governos são instituídos entre os homens.&amp;#8221; Isso forneceu a única justificativa válida de um governo e definiu o seu único objetivo correto: para proteger os direitos do homem, protegendo-o da violência física.&lt;/p&gt;
&lt;p&gt;Assim, a função do governo mudou do papel de governante para o papel servil. O governo foi instituído para proteger o homem dos criminosos &amp;#8211; e a Constituição foi escrita para proteger o homem do governo. O &lt;em&gt;Bill of Rights&lt;/em&gt; não era dirigida contra cidadãos particulares, mas contra o governo como uma declaração explícita de que os direitos individuais se sobressaem a qualquer poder público ou social.&lt;/p&gt;
&lt;p&gt;O resultado foi o padrão de uma sociedade civilizada que, por breve espaço de cerca de cento e cinquenta anos, a América chegou perto de conquistar. Uma sociedade civilizada é aquela em que a força física é banida das relações humanas, em que o governo, agindo como um policial, pode usar a força apenas em retaliação e somente contra aqueles que iniciam seu uso.&lt;/p&gt;
&lt;p&gt;Este foi o sentido essencial e intenção da filosofia política da América, implícita no princípio dos direitos individuais. Mas não foi formulado de forma explícita, nem totalmente aceita, nem consistentemente praticada.&lt;/p&gt;
&lt;p&gt;A contradição interna da América foi a ética altruísta-coletivista. Altruísmo é incompatível com Liberdade, com o capitalismo e os direitos individuais. Não se pode combinar a busca da felicidade com o status moral de um animal de sacrifício.&lt;/p&gt;
&lt;p&gt;Foi o conceito de direitos individuais que deu à luz a uma sociedade livre. Foi com a destruição de direitos individuais que a destruição da liberdade tinha de começar.&lt;/p&gt;
&lt;p&gt;A tirania coletivista não se atreve a escravizar um país por um confisco dos seus valores, material ou moral. Tem que ser feito por um processo de corrupção interna. Assim como no reino material a pilhagem das riquezas de um país é feito inflacionando a moeda &amp;#8211; então hoje se pode testemunhar o processo de inflação sendo aplicado à esfera de direitos. O processo envolve tamanho crescimento de recém promulgados &amp;#8220;direitos&amp;#8221; que as pessoas não percebem o fato de que o sentido do conceito está sendo revertido. Assim como dinheiro ruim acaba com o dinheiro bom, assim essa &amp;#8220;máquina de imprimir direitos&amp;#8221; nega os direitos autênticos.&lt;/p&gt;
&lt;p&gt;Considere o fato curioso que nunca houve tal proliferação, em todo o mundo, de dois fenômenos contraditórios: de &amp;#8220;direitos&amp;#8221; novos e de campos de trabalho escravo.&lt;/p&gt;
&lt;p&gt;O truque foi a troca do conceito de direitos da esfera política para a econômica.&lt;/p&gt;
&lt;p&gt;A plataforma do Partido Democrata de 1960, resume a troca de forma ousada e explícita. Ela declara que uma Gestão Democrata &amp;#8220;reafirmará o projeto econômico dos direitos que Franklin Roosevelt escreveu em nossa consciência nacional dezesseis anos atrás.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Tenha claramente em mente o significado do conceito de &amp;#8220;direitos&amp;#8221; quando ler a lista que esta plataforma oferece:&lt;/p&gt;
&lt;p&gt;&amp;#8220;1. O direito a um trabalho útil e remunerado, em indústrias ou estabelecimentos comerciais ou fazendas ou minas do país.&lt;/p&gt;
&lt;p&gt;&amp;#8220;2. O direito de ganhar o suficiente para fornecer alimentação adequada, de vestuário e de recreação.&lt;/p&gt;
&lt;p&gt;&amp;#8220;3. O direito de cada agricultor para criar e vender seus produtos a um retorno que dará a ele e sua família uma vida decente.&lt;/p&gt;
&lt;p&gt;&amp;#8220;4. O direito de cada homem de negócios, grande e pequeno, de comercializar em uma atmosfera de liberdade em relação à concorrência desleal e da dominação de monopólios no país e no exterior.&lt;/p&gt;
&lt;p&gt;&amp;#8220;5. O direito de cada família a uma casa decente.&lt;/p&gt;
&lt;p&gt;&amp;#8220;6. O direito à assistência médica adequada e oportunidade de alcançar e gozar de boa saúde.&lt;/p&gt;
&lt;p&gt;&amp;#8220;7. O direito à proteção adequada para os temores econômicos da velhice, doença, acidentes e desemprego.&lt;/p&gt;
&lt;p&gt;&amp;#8220;8. O direito a uma boa educação.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Uma pergunta simples adicionada a cada uma das oito cláusulas acima tornaria a questão clara: à custa de quem?&lt;/p&gt;
&lt;p&gt;Postos de trabalho, alimentação, vestuário, recreação (!), casas, assistência médica, educação, etc, não crescem na natureza. Esses são valores feitos pelo homem &amp;#8211; bens e serviços produzidos pelos homens. Quem vai fornecer isso a eles?&lt;/p&gt;
&lt;p&gt;Se alguns homens têm garantia por direito aos produtos do trabalho dos outros, isso significa que os outros são privados de direitos e condenados ao trabalho escravo.&lt;/p&gt;
&lt;p&gt;Qualquer alegação de &amp;#8220;direito&amp;#8221; de um homem, que implica na violação dos direitos do outro, não é e não pode ser um direito.&lt;/p&gt;
&lt;p&gt;Nenhum homem pode ter o direito de impor uma obrigação não escolhida, um dever sem recompensa ou um direito de servidão involuntária a outro homem. Não pode existir qualquer coisa tal como &amp;#8220;o direito de escravizar.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Um direito não inclui a implementação material desse direito por outros homens; ele inclui apenas a liberdade de ganhar tal implementação por próprio esforço.&lt;/p&gt;
&lt;p&gt;Observe-se, neste contexto, a precisão intelectual dos Pais Fundadores da América: eles falaram do direito à &amp;#8220;busca pela felicidade&amp;#8221;, não do direito à felicidade. Isso significa que um homem tem o direito de tomar as ações que considera necessário para atingir a sua felicidade, mas isso não significa que outros devem fazê-lo feliz.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;a href="http://tinyurl.com/5bkx5d"&gt;&lt;img src="/assets/2009/9/10/declaration_original.jpg" alt="" /&gt;&lt;/a&gt; &lt;br/&gt;&lt;em&gt;&amp;#8220;Consideramos estas verdades como evidentes por si mesmas, que todos os homens são criados iguais, que são dotados pelo Criador de certos direitos inalienáveis, que entre estes estão a Vida, Liberdade e a &lt;strong&gt;Busca pela Felicidade&lt;/strong&gt;.&amp;#8221;&lt;/em&gt; &amp;#8211; Thomas Jefferson&lt;/p&gt;
&lt;p&gt;O direito à vida significa que um homem tem o direito de apoiar a sua vida pelo seu próprio trabalho (em qualquer nível econômico, tão alto quanto a sua capacidade o levar), mas isso não significa que outros devem prestar-lhe as necessidades da vida.&lt;/p&gt;
&lt;p&gt;O direito à propriedade significa que um homem tem o direito de tomar as medidas econômicas necessárias para ganhar sua propriedade, usá-lo e descartá-lo, mas isso não significa que outros devem fornecer-lhe essa propriedade.&lt;/p&gt;
&lt;p&gt;O direito à liberdade de expressão significa que um homem tem o direito de expressar suas idéias, sem risco de supressão, interferência ou ação punitiva por parte do governo. Isso não significa que outros devem fornecer-lhe uma sala de aula, uma estação de rádio ou uma prensa de impressão para expressar suas idéias.&lt;/p&gt;
&lt;p&gt;Qualquer empresa que envolve mais do que um homem, exige o consentimento voluntário de cada participante. Cada um deles tem o direito de tomar sua própria decisão, mas ninguém tem o direito de forçar a sua decisão sobre os outros.&lt;/p&gt;
&lt;p&gt;Não há tal coisa como um &amp;#8220;direito a um emprego&amp;#8221;, existe apenas o direito de livre comércio, que é um direito do homem de ter um emprego se outro homem escolher contratá-lo. Não há direito a &amp;#8220;uma casa&amp;#8221;, apenas o direito de livre comércio: o direito de construir uma casa ou comprá-lo. Não existem direitos a um salário &amp;#8220;justo&amp;#8221; ou um preço &amp;#8220;justo&amp;#8221; se ninguém escolhe pagar por isso, contratar um homem ou comprar seu produto. Não há &amp;#8220;direitos dos consumidores&amp;#8221; ao leite, sapatos, filmes ou champanhe, se ninguém escolhe fabricar tais itens (existe apenas o direito de fabricá-los você mesmo). Não há &amp;#8220;direitos&amp;#8221; de grupos especiais, não há &amp;#8220;direitos dos agricultores, dos trabalhadores, dos empresários, dos trabalhadores, dos empregadores, dos idosos, dos jovens, dos jovens.&amp;#8221; Existem apenas os Direitos do Homem &amp;#8211; direitos possuídos por cada homem individualmente e por todos os homens como indivíduos.&lt;/p&gt;
&lt;p&gt;Os direitos de propriedade e o direito de livre comércio são os únicos &amp;#8220;direitos econômicos&amp;#8221; do homem (eles são, de fato, direitos políticos) &amp;#8211; e não pode haver tal coisa como &amp;#8220;um projeto de lei de direitos econômicos.&amp;#8221; Mas observe que os defensores deste último tem feito tudo e destruíram o primeiro.&lt;/p&gt;
&lt;p&gt;Lembre-se que os direitos são princípios morais que definem e protegem a liberdade de ação de um homem, mas não impõe obrigações aos demais. Os cidadãos não são uma ameaça para os direitos ou liberdades dos outros. Um cidadão que recorre à força física e viola os direitos dos outros é um criminoso e os homens têm proteção legal contra ele.&lt;/p&gt;
&lt;p&gt;Criminosos são uma pequena minoria em qualquer época ou país. E o mal que fizeram à humanidade é infinitesimal quando comparado com os horrores &amp;#8211; o derramamento de sangue, as guerras, as perseguições, a confiscação, as fomes, as escravidões, a destruição por atacado, perpetrados pelos governos da humanidade. Potencialmente, um governo é a ameaça mais perigosa para os direitos dos homems: ele detém um monopólio legal sobre o uso de força física contra vítimas legalmente desarmadas. Quando irrestrito e ilimitado pelos direitos individuais, um governo é o inimigo mortal dos homens. Não é como proteção contra ações privadas, mas contra as ações governamentais que o &amp;#8220;Bill of Rights&amp;#8221; foi escrito.&lt;/p&gt;
&lt;p&gt;Agora observe o processo pelo qual essa proteção está sendo destruído.&lt;/p&gt;
&lt;p&gt;O processo consiste em atribuir a cidadãos particulares as violações específicas constitucionalmente vedadas ao Governo (que cidadãos particulares não têm poder para cometer) e assim libertando o governo de todas as restrições. A troca está se tornando cada vez mais evidente no domínio da liberdade de expressão. Por anos, os coletivistas  propagam a idéia de que a recusa de um indivíduo particular, de financiar um adversário é uma violação do direito do oponente da liberdade de expressão e um ato de &amp;#8220;censura&amp;#8221;.&lt;/p&gt;
&lt;p&gt;É &amp;#8220;censura&amp;#8221;, dizem eles, se um jornal se recusa a empregar ou publicar escritores cujas idéias são diametralmente opostas à sua política.&lt;/p&gt;
&lt;p&gt;É &amp;#8220;censura&amp;#8221;, dizem eles, se os empresários se recusam a anunciar numa revista que denuncia, os insulta e as mancha.&lt;/p&gt;
&lt;p&gt;É &amp;#8220;censura&amp;#8221;, dizem eles, se um patrocinador de TV se opõe a algum atentado perpetrado em um programa que está financiamento, tais como o incidente de Alger Hiss sendo convidado a denunciar o ex-vice-presidente Nixon.&lt;/p&gt;
&lt;p&gt;E depois há Newton N. Minow que declara: &amp;#8220;Existe censura de popularidade, pelos anunciantes, pelas redes, pelas filiais que rejeitam a programação oferecida às suas áreas.&amp;#8221; É o mesmo Sr. Minow que ameaça revogar a licença de qualquer estação que não seguir com sua opinião sobre a programação &amp;#8211; e que afirma que isso não é censura.&lt;/p&gt;
&lt;p&gt;Considere as implicações de tal tendência.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Censura&amp;#8221; é um termo que apenas diz respeito à ação governamental. Nenhuma ação privada é censura. Nenhum indivíduo particular ou agência pode silenciar um homem ou suprimir uma publicação; só o governo consegue fazer isso. A liberdade de expressão dos indivíduos particulares inclui o direito de não concordar, não ouvir e não  financiar seus próprios antagonistas.&lt;/p&gt;
&lt;p&gt;Mas de acordo com doutrinas como o projeto &amp;#8220;econômico de direitos&amp;#8221;, um indivíduo não tem o direito de dispor do seu próprio meio material através da orientação de suas próprias convicções &amp;#8211; e deve entregar o seu dinheiro de forma indiscriminada a qualquer falador ou propagandista, que têm o &amp;#8220;direito&amp;#8221; à sua propriedade.&lt;/p&gt;
&lt;p&gt;Isto significa que a capacidade de fornecer as ferramentas materiais para a expressão das idéias de um homem o priva do direito de ter a propriedade sobre qualquer idéia. Isso significa que um editor tem que publicar livros que considera inúteis, falsas ou más &amp;#8211; que um patrocinador de TV tem que financiar comentadores que optam por afrontar suas convicções &amp;#8211; que o proprietário de um jornal deve tornar suas páginas editoriais  a qualquer jovem hooligan que clamar pela escravização da imprensa. Isso significa que um grupo de homens, adquire o &amp;#8220;direito&amp;#8221; à licença ilimitada &amp;#8211; enquanto outro grupo é reduzido à irresponsabilidade desamparada.&lt;/p&gt;
&lt;p&gt;Mas uma vez que é obviamente impossível fornecer qualquer reclamante com um emprego, um microfone ou uma coluna de jornal, quem irá determinar a &amp;#8220;distribuição&amp;#8221; dos &amp;#8220;direitos econômicos&amp;#8221; e selecionar os destinatários, quando o direito dos proprietários de escolha foi abolida? Bem, Sr. Minow indicou isso muito claramente.&lt;/p&gt;
&lt;p&gt;E se você cometer o erro de pensar que isso se aplica apenas aos grandes proprietários, é melhor perceber que a teoria do &amp;#8220;direito econômico&amp;#8221; inclui o &amp;#8220;direito&amp;#8221; de cada aspirante a escritor, cada poeta jovem, cada compositor ruidoso e cada artista não-objetivo (que puxa saco de político) ao apoio financeiro que você não lhes deu quando não assistiu seus shows. O que mais é o significado do projeto para gastar o dinheiro dos seus impostos em arte subsidiada?&lt;/p&gt;
&lt;p&gt;E enquanto as pessoas estão reclamando sobre os &amp;#8220;direitos econômicos,&amp;#8221; o conceito de direitos políticos, está desaparecendo. Esquece-se que o direito à liberdade de expressão significa a liberdade para defender pontos de vista e a encarar as possíveis consequências, incluindo desacordo com outros, oposição, impopularidade e falta de apoio. A função política do &amp;#8220;direito à liberdade de expressão&amp;#8221; é proteger as minorias dissidentes e impopulares da repressão violenta &amp;#8211; não para garantir-lhes apoio,  vantagens e recompensas de uma popularidade que não ganharam.&lt;/p&gt;
&lt;p&gt;O &amp;#8220;Bill of Rights&amp;#8221; diz: &amp;quot;O Congresso não fará nenhuma lei &amp;#8230; cerceando a liberdade de expressão ou de imprensa &amp;#8230; &amp;quot; Ele não exige que os cidadãos privados ofereçam um microfone para o homem que defende a sua destruição, ou uma chave de acesso para o ladrão que quer roubá-los, ou uma faca para o assassino que quer cortar suas gargantas.&lt;/p&gt;
&lt;p&gt;Tal é o estado de uma das questões mais cruciais de hoje: os direitos políticos versus &amp;#8220;direitos econômicos.&amp;#8221; É ou-ou. Um destrói o outro. Mas não existe, de fato, &amp;#8220;direitos econômicos&amp;#8221;, &amp;#8220;direitos coletivos&amp;#8221;, &amp;#8220;direitos de interesse público.&amp;#8221; A expressão &amp;#8220;direitos individuais&amp;#8221; é uma redundância: não há nenhum outro tipo de direitos e ninguém mais para os possuir.&lt;/p&gt;
&lt;p&gt;Aqueles que defendem o capitalismo laissez-faire são os únicos defensores dos direitos do homem.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qUNYbCOMp8k&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/qUNYbCOMp8k&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uZ-6JHZdKBiAdCvyFeXBRB3MJ9Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uZ-6JHZdKBiAdCvyFeXBRB3MJ9Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uZ-6JHZdKBiAdCvyFeXBRB3MJ9Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uZ-6JHZdKBiAdCvyFeXBRB3MJ9Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=kf6_wtuXr7g:-CuNlwOEUrQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=kf6_wtuXr7g:-CuNlwOEUrQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=kf6_wtuXr7g:-CuNlwOEUrQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=kf6_wtuXr7g:-CuNlwOEUrQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=kf6_wtuXr7g:-CuNlwOEUrQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=kf6_wtuXr7g:-CuNlwOEUrQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=kf6_wtuXr7g:-CuNlwOEUrQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/kf6_wtuXr7g" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/10/off-topic-direitos-do-homem</feedburner:origLink></item><item><title>Playing with Dry Scaffold and Inherited Resources</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/nC9j5e5sELc/playing-with-dry-scaffold-and-inherited-resources</link><pubDate>Wed, 09 Sep 2009 11:40:37 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5200</guid><description>&lt;p&gt;There are several ways to start a new Rails project nowadays, specially since Rails brought &lt;a href="http://github.com/jeremymcanally/rails-templates/tree/master"&gt;project templates&lt;/a&gt; to the mix. On the other hand there are still lot&amp;#8217;s of generators. So, today I want to just pinpoint some tips on this regard.&lt;/p&gt;
&lt;p&gt;First of all, make sure you have all the usual suspects installed:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;sudo gem install rspec rspec-rails josevalim-inherited_resources mislav-will_paginate justinfrench-formtastic thoughtbot-factory_girl haml ryanb-nifty_generators&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;One other is &lt;a href="http://github.com/akitaonrails/dry_scaffold/tree/master"&gt;dry_scaffold&lt;/a&gt; from &lt;a href="http://github.com/akitaonrails/grimen"&gt;grimen&lt;/a&gt;. I&amp;#8217;ve made a fork and added rspec support today. I think the 0.3.3 version should be generated soon from Github, then you will be able to install it like this:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;sudo gem install akitaonrails-dry_scaffold&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;But you can also install it manually from the source:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;git clone git://github.com/akitaonrails/dry_scaffold.git&lt;tt&gt;
&lt;/tt&gt;cd dry_scaffold&lt;tt&gt;
&lt;/tt&gt;gem build dry_scaffold.gemspec&lt;tt&gt;
&lt;/tt&gt;sudo gem install dry_scaffold-0.3.3.gem&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Now, create a normal Rails 2.3.x project and configure your config/environment.rb with:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;config.gem &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;haml&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;config.gem &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;will_paginate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;config.gem &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;justinfrench-formtastic&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;, &lt;span class="sy"&gt;:lib&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;formtastic&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;, &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="sy"&gt;:source&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;http://gems.github.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;config.gem &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;josevalim-inherited_resources&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;, &lt;span class="sy"&gt;:lib&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;inherited_resources&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;, &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="sy"&gt;:source&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;http://gems.github.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;And also add the following to your config/environments/test.rb:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;config.gem &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;rspec&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;config.gem &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;rspec-rails&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;In order to add Rspec support, create the initial &lt;a href="http://github.com/justinfrench/formtastic/tree/master"&gt;Formtastic&lt;/a&gt; stylesheets and add a little bit of sugar to your layouts do the following:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;./script/generate rspec&lt;tt&gt;
&lt;/tt&gt;./script/gererate formtastic_stylesheets&lt;tt&gt;
&lt;/tt&gt;./script/generate nifty_layout --haml&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Notice that I am referring to Ryan Bates&amp;#8217; &lt;a href="http://github.com/ryanb/nifty-generators/tree/master"&gt;Nifty Generators&lt;/a&gt;. I really like it&amp;#8217;s initial &lt;span class="caps"&gt;CSS&lt;/span&gt; and layout to start a new project instead of the default &amp;#8216;blank&amp;#8217; theme. But that&amp;#8217;s just me :-)&lt;/p&gt;
&lt;p&gt;The excellent &lt;a href="http://github.com/justinfrench/formtastic/tree/master"&gt;Formtastic&lt;/a&gt; will create your scaffolded views with a bit more of web semantics, so it&amp;#8217;s highly recommended to use. To make it look pretty, add the following to your &amp;#8216;app/views/layouts/application.html.haml&amp;#8217;:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;  = stylesheet_link_tag &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;application&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  = stylesheet_link_tag &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;formtastic&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  = stylesheet_link_tag &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;formtastic_changes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Finally, you can start scaffolding some resources to get started, for example:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;./script/generate dry_scaffold Post title:string body:text --rspec&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;If you don&amp;#8217;t like fixtures you&amp;#8217;d rather use &lt;a href="http://github.com/thoughtbot/factory_girl/tree/master"&gt;Factory Girl&lt;/a&gt; instead doing this:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;./script/generate dry_scaffold Post title:string body:text --rspec --fgirl&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;By default, it&amp;#8217;s going to create thin controller with Inherited Resources and paginated with Will Paginate. The view templates will use &lt;a href="http://haml-lang.com/"&gt;&lt;span class="caps"&gt;HAML&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://github.com/justinfrench/formtastic/tree/master"&gt;Formtastic&lt;/a&gt; for a semantically rich form. It will create tests using the standard test/unit and fixtures, but I&amp;#8217;d rather choose Rspec and &lt;a href="http://github.com/thoughtbot/factory_girl/tree/master"&gt;Factory Girl&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s also going to generate a separated &amp;#8220;_form&amp;#8221; partial that both &amp;#8220;new&amp;#8221; and &amp;#8220;edit&amp;#8221; views will use, which is one of those things that you do all the time after a normal scaffold. The usage of &lt;span class="caps"&gt;HAML&lt;/span&gt; is not very common, but I would recommend everybody to at least try it for a while, it will grow on you quickly. And having well formatted &lt;span class="caps"&gt;HTML&lt;/span&gt; outputs is always nice.&lt;/p&gt;
&lt;p&gt;The Dry Scaffold also supports generating just models (&amp;#8220;./script/generate dry_model&amp;#8221;). Read the documentation on the github project site to understand all the options.&lt;/p&gt;
&lt;p&gt;With this, you should be good to go and start to rapidly prototype your next web application.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CmKWOOQkbksnG0JFDdU00NFwFuI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CmKWOOQkbksnG0JFDdU00NFwFuI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CmKWOOQkbksnG0JFDdU00NFwFuI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CmKWOOQkbksnG0JFDdU00NFwFuI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=nC9j5e5sELc:L8WHk7KH9ns:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=nC9j5e5sELc:L8WHk7KH9ns:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=nC9j5e5sELc:L8WHk7KH9ns:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=nC9j5e5sELc:L8WHk7KH9ns:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=nC9j5e5sELc:L8WHk7KH9ns:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=nC9j5e5sELc:L8WHk7KH9ns:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=nC9j5e5sELc:L8WHk7KH9ns:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/nC9j5e5sELc" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/09/playing-with-dry-scaffold-and-inherited-resources</feedburner:origLink></item><item><title>[Off-Topic] O Culto da Moral Cinzenta</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/JSjWlGt1GbE/off-topic-o-culto-da-moral-cinzenta</link><pubDate>Tue, 08 Sep 2009 10:27:04 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5199</guid><description>&lt;div style="float: right; margin: 3px"&gt;&lt;img src="/assets/2009/9/8/The_Virtue_of_Selfishness_Ayn_Rand_unabridged_M_original.jpg" alt="" /&gt;&lt;/div&gt;&lt;p&gt;Estou lendo o excelente livro &lt;a href="http://www.aynrandbookstore2.com/prodinfo.asp?number=AR09B"&gt;The Virtue of Selfishness&lt;/a&gt; de &lt;a href="http://tinyurl.com/yrtpxf"&gt;Ayn Rand&lt;/a&gt;, publicado pela primeira vez em 1961 &amp;#8211; se não me engano. E, antes que comece as menções sarcásticas sobre a palavra &amp;#8216;egoísmo&amp;#8217;, remeto à introdução do livro:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;De uso popular, a palavra &amp;#8220;egoísmo&amp;#8221; é um sinônimo do mal; a imagem que ele conjura é de um brutamontes assassino que salta sobre pilhas de corpos para atingir seus próprios fins, que não se importa com nenhum ser vivo e persegue nada mas a gratificação dos impulsos impensados de qualquer momento imediato.&lt;/p&gt;
&lt;p&gt;Porém, o significado exato e definição de dicionário da palavra &amp;#8220;egoísmo&amp;#8221; é: &lt;em&gt;preocupado com seus próprios interesses.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Esse conceito não inclui avaliação moral; ele não nos diz se se preocupar com seus próprios interesses é bom ou mau; nem nos diz o que constitui os reais interesses do homem. É a tarefa da ética responder essas questões.&lt;/p&gt;
&lt;p&gt;A ética do altruísmo criou a imagem do bruto, como sua resposta, de forma a fazer os homens aceitar dois princípios inhumanos: (a) que qualquer preocupação com seus próprios interesses é mal, seja lá quais sejam esses interesses, e (b) que as atividades dos brutos são de fato para seus próprios interesses (o qual o altruísmo encoraja o homem a renunciar pelo seu próprio bem e a de seus vizinhos).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Isso dito, não recomendo a leitura do livro, pois ela lida justamente com a quebra dos conceitos conhecidos como &amp;#8220;senso comum&amp;#8221; atualmente, coisa que a maioria das pessoas simplesmente não tem vontade de mudar  :-D Mas falando sério, se você gosta de pensar, esta coletânea é muito interessante.&lt;/p&gt;
&lt;p&gt;Só para dar um gosto &amp;#8211; se você tiver mente aberta -, coloco vários trechos do capítulo 9, &lt;em&gt;O Culto da Moral Cinzenta&lt;/em&gt;.&lt;/p&gt;&lt;h2&gt;O Culto da Moral Cinzenta&lt;/h2&gt;
&lt;p&gt;Um dos sintomas mais eloquentes da moral falida da cultura atual, é uma certa atitude modista em questões de assuntos morais, melhor resumido como: &lt;em&gt;&amp;#8220;Não existem preto e branco, apenas cinza.&amp;#8221;&lt;/em&gt; Isso é afirmado em relação a pessoas, ações, princípios de conduta e moralidade em geral. &lt;em&gt;&amp;#8220;Preto e Branco&amp;#8221;&lt;/em&gt;, nesse contexto, significa &lt;em&gt;&amp;#8220;bem e mal&amp;#8221;&lt;/em&gt;. (A ordem reversa usada nessa frase é psicologicamente interessante).&lt;/p&gt;
&lt;p&gt;Em qualquer respeito que alguém se preocupa em examinar, essa noção é cheia de contradições (e no topo delas está a falácia do &amp;#8220;conceito roubado&amp;#8221;). Se não existe preto e branco, não pode existir cinza &amp;#8211; já que cinza é meramente uma mistura dos dois.&lt;/p&gt;
&lt;p&gt;Antes que alguém consiga identificar qualquer coisa como &amp;#8220;cinza&amp;#8221;, ela tem que saber o que é preto e o que é branco. No campo da moralidade, isso significa que é necessário primeiro identificar o que é bem e o que é mal. E quando um homem sabe com certeza que uma alternativa é boa e a outra é má, ele não tem justificativa para escolher pela mistura. Não pode haver justificativa em escolher qualquer parte do que ele já sabe que é do mal. Em moralidade, &amp;#8220;preto&amp;#8221; é predominantemente o resultado de fazer de conta que se é meramente &amp;#8220;cinza&amp;#8221;.&lt;/p&gt;
&lt;p&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;Se, num assunto complexo de moral, um homem tem dificuldades em determinar o que é certo, e falha ou faz um erro honesto, ele não pode ser colocado como &amp;#8220;cinza&amp;#8221;; moralmente, ele é &amp;#8220;branco&amp;#8221;. Erros de conhecimento não são brechas morais; nenhum código moral decente pode exigir infalabilidade ou omnisciência.&lt;/p&gt;
&lt;p&gt;Mas se, para escapar da responsabilidade do julgamento moral, um homem fecha seus olhos e sua mente, se ele se esquiva dos fatos do problema e se esforça para não saber, ele não pode ser colocado como &amp;#8220;cinza&amp;#8221;; moralmente, ele é tão &amp;#8220;preto&amp;#8221; como se deve ser.&lt;/p&gt;
&lt;p&gt;Muitas formas de confusão, incerteza e preguiça epistemológica ajudam a obscurecer as contradições e a esconder o significado real da doutrina da moral cinzenta.&lt;/p&gt;
&lt;p&gt;Algumas pessoas acreditam que é meramente uma repetição de coisas como &lt;em&gt;&amp;#8220;Ninguém é perfeito nesse mundo&amp;#8221;&lt;/em&gt;, isto é, todos são uma mistura de bem e mal e, portanto, moralmente &amp;#8220;cinzas&amp;#8221;. Já que a maioria se vê nessa descrição, as pessoas aceitam isso como algum tipo de fato natural, sem pensar muito mais a respeito. Eles esquecem que moralidade lida somente com assuntos abertos à escolha do homem (isto é, à sua liberdade-de-escolha) e, portanto, nenhuma generalização estatística é válida nesse assunto.&lt;/p&gt;
&lt;p&gt;Se o homem é &amp;#8220;cinza&amp;#8221; por natureza, nenhum conceito moral é aplicável a ele, incluindo &amp;#8220;cinzento&amp;#8221;, e algo como moralidade não é possível. Mas se o homem tem liberdade-de-escolha, então o fato que 10 (ou 10 milhões) de homens escolheram de forma errada não significa que o décimo-primeiro também o fará; isso não torna necessário &amp;#8211; e não prova nada &amp;#8211; em relação a qualquer indivíduo.&lt;/p&gt;
&lt;p&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;Uma noção similar, envolvendo erros similares, é dito por algumas pessoas que acreditam que a doutrina da moralidade cinzenta é meramente a repetição da proposição: &lt;em&gt;&amp;#8220;Existem sempre dois lados para a mesma história.&amp;#8221;&lt;/em&gt;, o que eles querem dizer é que ninguém está totalmente certo ou totalmente errado. Mas não é isso que essa proposição significa ou quer dizer. Isso não significa que os clamores de ambos os lados serão necessariamente igualmente válidas, nem mesmo que existirá uma pequena parcela de justiça em ambos os lados. Mais frequentemente, a justiça ficará de um dos lados, e premissa desqualificada (ou pior) do outro.&lt;/p&gt;
&lt;p&gt;Existem, claro, problemas complexos onde ambos os lados estão certos em algumas partes e erradas em outras &amp;#8211; e é aqui que o esquema de pronunciar ambos os lados como &amp;#8220;cinza&amp;#8221; é menos permitível. É nesse tipo de problema que a precisão rigorosa do julgamento moral é necessário para identificar e avaliar os vários aspectos &amp;#8211; que pode ser feito apenas desmontando os elementos misturados de &amp;#8220;preto&amp;#8221; e &amp;#8220;branco&amp;#8221;.&lt;/p&gt;
&lt;p&gt;O erro básico em todas essas várias confusões é a mesma: ele consiste de esquecer que moralidade lida somente com assuntos abertos à escolha dos homens &amp;#8211; o que significa: esquecer a diferença entre &amp;#8220;não conseguir&amp;#8221; e &amp;#8220;não querer&amp;#8221;. Isso permite às pessoas traduzir a frase-feita &lt;em&gt;&amp;#8220;Não existem preto e branco&amp;#8221;&lt;/em&gt; em: &lt;em&gt;&amp;#8220;Os homens não conseguem ser totalmente bons ou maus&amp;#8221;&lt;/em&gt; &amp;#8211; o que eles aceitam, em obscura resignação, sem questionar as contradições metafísicas que isso trás.&lt;/p&gt;
&lt;p&gt;Mas não muitas pessoas aceitariam isso, se essa frase-feita fosse traduzida no significado real em que ela foi intencionada para adentrar em suas mentes: &lt;em&gt;&amp;#8220;Os homens não querem ser totalmente bons ou maus.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A primeira coisa que alguém diria para quem repetisse a afirmação acima é: &lt;em&gt;&amp;#8220;Fale por você mesmo, irmão!&amp;#8221;&lt;/em&gt; E isso, em efeito, é exatamente o que ele está fazendo na real; conscientemente ou subconscientemente, intencionalmente ou sem querer, quando um homem declara: &lt;em&gt;&amp;#8220;Não existem preto e branco&amp;#8221;&lt;/em&gt;, ele está fazendo uma confissão psicológica e o que ele quer dizer é: &lt;em&gt;&amp;#8220;Eu não quero ser totalmente bom &amp;#8211; e por favor, não me leve como se eu fosse totalmente mal!&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;Observe a forma que as pessoas se encontram com essa doutrina: quase nunca é apresentada como algo positivo, como uma teoria ética ou um assunto de discussão; predominantemente, se escuta como algo negativo, como uma rápida objeção ou reprovação, de uma maneira a implicar a culpa de alguém ou quebra de algo absoluto tão óbvio que não precisa de discussão. Em tons que vão de surpresa ao sarcasmo à raiva à indignação para ódio histérico, a doutrina é jogada a você na forma de uma acusação: &lt;em&gt;&amp;#8220;Obviamente, você não pensa em termos de preto-e-branco, não é?&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Levado pela confusão, incapacidade de se defender e medo do assunto inteiro de moralidade, a maioria das pessoas rapidamente respondem de forma culpada: &lt;em&gt;&amp;#8220;Não, claro que não&amp;#8221;&lt;/em&gt;, sem qualquer idéia clara da natureza da acusação. Eles não páram para pensar que a acusação está dizendo, na verdade: &lt;em&gt;&amp;#8220;Obviamente você não é tão injusto a ponto de discriminar entre bem e mal, não é?&amp;#8221;&lt;/em&gt; &amp;#8211; ou: &lt;em&gt;&amp;#8220;Obviamente você não é tão mal de forma a procurar o bem, não é?&amp;#8221;&lt;/em&gt; &amp;#8211; ou: &lt;em&gt;&amp;#8220;Obviamente você não é tão imoral a ponto de acreditar em moralidade!&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;Observe, na política, que o termo &lt;strong&gt;extremista&lt;/strong&gt; se tornou sinônimo de &amp;#8220;mal&amp;#8221;, sem levar em consideração o conteúdo do assunto (o mal não é sobre o que você é &amp;#8220;extremo&amp;#8221; a respeito, mas que você é &amp;#8220;extremo&amp;#8221; &amp;#8211; isto é, &lt;strong&gt;consistente&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;Essas são as razões porque &amp;#8211; quando alguém lhe perguntar: &lt;em&gt;&amp;#8220;Obviamente, você não pensa em termos de preto e branco, não é&amp;#8221;&lt;/em&gt; &amp;#8211; a resposta apropriada (em essência, se não também na forma) deveria ser: &lt;em&gt;&amp;#8220;Tenha toda a certeza que sim!&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D3AX36tbilN-W9oEJ5U7SyKa3T8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D3AX36tbilN-W9oEJ5U7SyKa3T8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D3AX36tbilN-W9oEJ5U7SyKa3T8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D3AX36tbilN-W9oEJ5U7SyKa3T8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=JSjWlGt1GbE:V892nB1mnpU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=JSjWlGt1GbE:V892nB1mnpU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=JSjWlGt1GbE:V892nB1mnpU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=JSjWlGt1GbE:V892nB1mnpU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=JSjWlGt1GbE:V892nB1mnpU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=JSjWlGt1GbE:V892nB1mnpU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=JSjWlGt1GbE:V892nB1mnpU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/JSjWlGt1GbE" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/08/off-topic-o-culto-da-moral-cinzenta</feedburner:origLink></item><item><title>Default Scopes and Hash Posers</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/khQXEZc3sWo/default-scopes-and-hash-posers</link><pubDate>Mon, 07 Sep 2009 22:07:58 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5198</guid><description>&lt;p&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=ing_728x90"&gt;&lt;img 
src="http://railssummit.com.br/imgs/44/original/en_728x90.gif" 
alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While I was editing my &lt;a href="http://www.akitaonrails.com/2009/09/08/user-editable-liquid-templates-in-the-database"&gt;last article&lt;/a&gt; I was thinking about multi-site. Usually, Railers prefer to have a single app per Rails project. But what if I do want to have a &lt;span class="caps"&gt;CMS&lt;/span&gt;, an e-Commerce, something like &lt;a href="http://mu.wordpress.org/"&gt;Wordpress MU&lt;/a&gt; and so on?&lt;/p&gt;
&lt;p&gt;I thought to myself: &lt;em&gt;&amp;#8220;dead simple: just add default&amp;#95;scope to the relevant Active Record models&amp;#8221;&lt;/em&gt;. Ended up not being quite so simple because it seems like &amp;#8216;default_scope&amp;#8217; doesn&amp;#8217;t support blocks just yet as you can follow on this &lt;a href="https://rails.lighthouseapp.com/projects/8994/tickets/1812-default_scope-cant-take-procs"&gt;open ticket at Lighthouse&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The problem is that &amp;#8216;default_scope&amp;#8217; will be different per user, so I can&amp;#8217;t have an static conditions hash pre-defined in the model. To solve that &amp;#8211; at least until a more official solution comes along &amp;#8211; Brian Mitchell has a great suggestion: use a &lt;strong&gt;Hash Poser&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Now, a Hash Poser is a class that acts and behaves exactly like a normal Hash. Let&amp;#8217;s see his code:&lt;/p&gt;
&lt;script src="http://gist.github.com/160809.js"&gt;&lt;/script&gt;&lt;p&gt;Dead Simple, you can copy and paste this code to somewhere like &amp;#8216;config/initializers/hash_poser.rb&amp;#8217;. You can easily see how this can be used in your models:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Post&lt;/span&gt; &amp;lt; &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  default_scope &lt;span class="co"&gt;HashPoser&lt;/span&gt;.new &lt;span class="r"&gt;do&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    { &lt;span class="sy"&gt;:conditions&lt;/span&gt; =&amp;gt; { &lt;span class="sy"&gt;:user_id&lt;/span&gt; =&amp;gt; &lt;span class="co"&gt;UserSession&lt;/span&gt;.find } } &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;This is supposing you&amp;#8217;re using something like &lt;a href="http://github.com/binarylogic/authlogic"&gt;Authlogic&lt;/a&gt;, but actually you will want something more like &amp;#8216;Site.find&amp;#8217; or whatever. The point is, now whatever finder you were using throughout your application will have this conditions added to it. So, a simple &amp;#8216;Post.all&amp;#8217;, in this example, will automagically run:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;SELECT * FROM &amp;quot;users&amp;quot; WHERE (&amp;quot;users&amp;quot;.&amp;quot;id&amp;quot; = 1) &lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Considering that you&amp;#8217;re not using something like &amp;#8216;find_by_sql&amp;#8217; with hand crafted &lt;span class="caps"&gt;SQL&lt;/span&gt; queries, the &amp;#8216;default_scope&amp;#8217; will override all your finders. Of course, it&amp;#8217;s easier said than done, so have your test suite ready when you do this change. As I said, you will have to add a column like &amp;#8216;site_id&amp;#8217; to every table you need to be multi-site.&lt;/p&gt;
&lt;p&gt;I would like to see what other people think of this way of thinking and what caveats there are for this use case. Most of the time Rails apps will be stand-alone, but in a few exception cases, we really do want to have a single app serving multiple customers. What&amp;#8217;s your take on this concept?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Gj5vFKNNOo0rHhHKQZGK1mZTpm0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gj5vFKNNOo0rHhHKQZGK1mZTpm0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Gj5vFKNNOo0rHhHKQZGK1mZTpm0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gj5vFKNNOo0rHhHKQZGK1mZTpm0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=khQXEZc3sWo:MBHqB-Cuddo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=khQXEZc3sWo:MBHqB-Cuddo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=khQXEZc3sWo:MBHqB-Cuddo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=khQXEZc3sWo:MBHqB-Cuddo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=khQXEZc3sWo:MBHqB-Cuddo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=khQXEZc3sWo:MBHqB-Cuddo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=khQXEZc3sWo:MBHqB-Cuddo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/khQXEZc3sWo" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/08/default-scopes-and-hash-posers</feedburner:origLink></item><item><title>User Editable Liquid Templates in the Database</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/UmOJ5vq9Uvo/user-editable-liquid-templates-in-the-database</link><pubDate>Mon, 07 Sep 2009 20:49:52 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5197</guid><description>&lt;p&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=ing_728x90"&gt;&lt;img 
src="http://railssummit.com.br/imgs/44/original/en_728x90.gif" 
alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For quite some time I wanted to create an experiment: having user-editable view templates stored in the database instead of the filesystem.&lt;/p&gt;
&lt;p&gt;The Use Case is quite simple: it&amp;#8217;s either a theme system or a website where each user can edit his own set of templates to have a customized usage of the application. In the case of a simple theming system, just adding additional view load paths would be enough. But the second case needs scalability and having a potential set of thousands of view sub-folders around never felt well.&lt;/p&gt;
&lt;p&gt;One solution is to have every view in a database table. If performance becomes critical, we can always add Memcached to the equation, so it shouldn&amp;#8217;t be a problem. Now, there is another problem: we can&amp;#8217;t just store the &lt;span class="caps"&gt;ERB&lt;/span&gt; view files directly into the database and make them user-editable. That&amp;#8217;s because &lt;span class="caps"&gt;ERB&lt;/span&gt; executes arbitrary Ruby code, which means that the user would have access to the entire machine. Haml and other templating engines have the same feature. One of the few that implements a user-centric, restrictive templating engine is Tobias Lütke’s &lt;a href="http://github.com/tobi/liquid"&gt;Liquid&lt;/a&gt;, created precisely for the same purpose for his Shopify.com website.&lt;/p&gt;
&lt;p&gt;Having that in mind, I just published the &lt;a href="http://github.com/akitaonrails/dynamic_liquid_templates/tree/master"&gt;dynamic_liquid_templates&lt;/a&gt; plugin as an attempt to have just that. In order to get started, you can create a new Rails project and add it as a normal plugin:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;rails demo&lt;tt&gt;
&lt;/tt&gt;cd demo&lt;tt&gt;
&lt;/tt&gt;./script/generate dynamic_templates&lt;tt&gt;
&lt;/tt&gt;rake db:migrate&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;You will have to require Liquid from &lt;em&gt;config/environment.rb&lt;/em&gt;&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;config.gem &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;tobi-liquid&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="sy"&gt;:lib&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;liquid&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="sy"&gt;:source&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;http://gems.github.com&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;And, of course, &lt;em&gt;sudo rake gems:install&lt;/em&gt; to have it installed if you still don&amp;#8217;t have it. Now, create a normal Rails resource, such as &amp;#8216;posts&amp;#8217; or whatever. You will have to modify your scaffolded controller so the &amp;#8216;format.html&amp;#8217; calls look like this:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;respond_to &lt;span class="r"&gt;do&lt;/span&gt; |format|&lt;tt&gt;
&lt;/tt&gt;  format.html { render_with_dynamic_liquid }&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;If you&amp;#8217;re inside a nested controller (such as &amp;#8216;Comment belongs_to Post&amp;#8217;), declare a method named &amp;#8216;parent&amp;#8217;, for example:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;CommentsController&lt;/span&gt; &amp;lt; &lt;span class="co"&gt;ApplicationController&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  ...&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;parent&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    &lt;span class="iv"&gt;@post&lt;/span&gt; ||= &lt;span class="co"&gt;Post&lt;/span&gt;.find(params[&lt;span class="sy"&gt;:post_id&lt;/span&gt;])&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;The plugin will use this method to refer to the proper named routes, such as _post_comments_path(parent)_ or _post_comment_path(parent, @comment)_ and so on. Namespaces will work too, for example:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Admin::PostsController&lt;/span&gt; &amp;lt; &lt;span class="co"&gt;ApplicationController&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;index&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;     &lt;span class="iv"&gt;@posts&lt;/span&gt; = &lt;span class="co"&gt;Post&lt;/span&gt;.all&lt;tt&gt;
&lt;/tt&gt;     respond_to &lt;span class="r"&gt;do&lt;/span&gt; |format|&lt;tt&gt;
&lt;/tt&gt;       format.html { render_with_dynamic_liquid(&lt;span class="sy"&gt;:namespace&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;admin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;) } &lt;tt&gt;
&lt;/tt&gt;     &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;There&amp;#8217;s probably a better syntax for that, but it works like that too. The other thing is that your models need to be &amp;#8216;liquified&amp;#8217; in order to be usable from inside a Liquid template. You have to declare a _to_liquid_ method explicitly saying which columns you want exposed:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Post&lt;/span&gt; &amp;lt; &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  ...&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;to_liquid&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    { &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt; =&amp;gt; &lt;span class="pc"&gt;self&lt;/span&gt;.title, &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;body&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt; =&amp;gt; &lt;span class="pc"&gt;self&lt;/span&gt;.body }&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Notice that the hash keys have to be strings, and not symbols. The other thing is that the plugin will append other attributes to this hash automagically, so you can do the following from within your Liquid templates:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;{{ 'Show' | link_to: post.show_path }}&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;It adds &amp;#8216;show_path&amp;#8217; and &amp;#8216;edit_path&amp;#8217; to your model instances, so you can use them to create links or form actions. There are other globally assigned variables as well, such as:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;collection &amp;#8211; refers to the controller collection (for index action) such as @posts&lt;/li&gt;
	&lt;li&gt;object &amp;#8211; referes to the controller single object (for non-index actions) such as @post&lt;/li&gt;
	&lt;li&gt;collection_path &amp;#8211; the named route for the index action, including nested and namespaced versions&lt;/li&gt;
	&lt;li&gt;object_path &amp;#8211; the named route for the non-index action, including nested and namespaced versions&lt;/li&gt;
	&lt;li&gt;parent &amp;#8211; if you have the &amp;#8216;parent&amp;#8217; method in your controller, it&amp;#8217;s exposed within Liquid&lt;/li&gt;
	&lt;li&gt;parent_path &amp;#8211; if you have the &amp;#8216;parent&amp;#8217; method in your controller, it&amp;#8217;s used for named routes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And, of course, your models are properly assigned to Liquid too so, for example, &amp;#8216;@posts&amp;#8217; is exposed as &amp;#8216;posts&amp;#8217; to Liquid.&lt;/p&gt;
&lt;h2&gt;Next Steps&lt;/h2&gt;
&lt;p&gt;Now, this is just the beginning. You can create a scaffold for the DynamicTemplate model, so you have an editing interface. You can refer to the &amp;#8216;spec/fixtures&amp;#8217; folder within the plugin for examples on how a Liquid template looks like (it&amp;#8217;s less convenient than &lt;span class="caps"&gt;ERB&lt;/span&gt;, I can tell).&lt;/p&gt;
&lt;p&gt;Then you can add multi-site support to your website by adding a foreign-key to all your models, a new table such as &amp;#8216;Site&amp;#8217; and a &amp;#8216;site_id&amp;#8217; column in all your other models. Then, each Active Record model can have the &amp;#8216;default_scope&amp;#8217; declared, such as:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Post&lt;/span&gt; &amp;lt; &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  default_scope proc { { &lt;span class="sy"&gt;:conditions&lt;/span&gt; =&amp;gt; [&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;site_id&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="co"&gt;Site&lt;/span&gt;.current_site] } } &lt;tt&gt;
&lt;/tt&gt;  ...&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;But, this is not quite possible today because &amp;#8216;default_scope&amp;#8217; seems to &lt;a href="https://rails.lighthouseapp.com/projects/8994/tickets/1812-default_scope-cant-take-procs"&gt;not be accepting a proc just yet&lt;/a&gt;. Let&amp;#8217;s hope this feature comes sooner, or we can just create yet another plugin anyway, so no big deal.&lt;/p&gt;
&lt;p&gt;Another thing, we can still improve it&amp;#8217;s performance by serializing the pre-compiled template instead of the raw text version as explained in &lt;a href="http://cjohansen.no/en/rails/liquid_email_templates_in_rails"&gt;this article&lt;/a&gt;. I will do it this week, probably.&lt;/p&gt;
&lt;p&gt;Then, we need to add caching support. As I am using plain Active Record, simple &lt;em&gt;config.cache&lt;/em&gt;store_ configuration should do. And you will also want to add other features such as versioning the dynamic_templates table so the user can change his mind later on. For this one, it&amp;#8217;s as easy as watching Ryan Bates&amp;#8217; recent &lt;a href="http://railscasts.com/episodes/177-model-versioning"&gt;vestal_versions&lt;/a&gt; screencast.&lt;/p&gt;
&lt;p&gt;This is just an experiment, I hope it can be useful to someone.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2MVMTDuQSSatLEKW_LFt2E3mk7Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2MVMTDuQSSatLEKW_LFt2E3mk7Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2MVMTDuQSSatLEKW_LFt2E3mk7Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2MVMTDuQSSatLEKW_LFt2E3mk7Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=UmOJ5vq9Uvo:ehUwe_-95QY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=UmOJ5vq9Uvo:ehUwe_-95QY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=UmOJ5vq9Uvo:ehUwe_-95QY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=UmOJ5vq9Uvo:ehUwe_-95QY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=UmOJ5vq9Uvo:ehUwe_-95QY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=UmOJ5vq9Uvo:ehUwe_-95QY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=UmOJ5vq9Uvo:ehUwe_-95QY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/UmOJ5vq9Uvo" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/08/user-editable-liquid-templates-in-the-database</feedburner:origLink></item><item><title>A Controvérsia do Ticket #2033 - Ruby on Git</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/Qe-759LcUYE/a-controv-rsia-do-ticket-2033-ruby-on-git</link><pubDate>Fri, 04 Sep 2009 21:34:41 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5196</guid><description>&lt;p&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img 
src="http://railssummit.com.br/imgs/43/original/728x90.gif" 
alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div style="float: right; margin: 3px"&gt;&lt;img src="/assets/2009/9/5/ruby-logo_thumb.png" alt="" /&gt;&lt;/div&gt;&lt;p&gt;Nos últimos dias aconteceu uma pequena controvérsia na lista de discussão &lt;a href="http://groups.google.com/group/ruby-core-google/browse_thread/thread/6618922fa56cfa4/7cae61fd4ee1a427"&gt;Ruby-Core&lt;/a&gt;, mais especificamente sobre o Ticket no Redmine oficial do Ruby, o &lt;a href="http://redmine.ruby-lang.org/issues/show/2033"&gt;Feature #2033 [ruby-core:25285]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Esta é uma requisição do &lt;em&gt;Run Paint Run Run&lt;/em&gt; assinalado diretamente ao Matz dizendo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Eu proponho formalmente que o desenvolvimento principal mude para Git.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Obviamente, a comunidade Rails entrou em massa para apoiar essa proposta. Mas os core developers japoneses estão mais receosos em fazer a mudança. É assim: para quem é de fora o Git seria muito legal. Mas para a pequena equipe do core team que já está com o workflow de subversion azeitado, eles não vêem muitos benefícios para eles mesmos. Alguns dos pontos é que eles não gostaram da ferramenta msysGit ainda ser &amp;#8220;preview&amp;#8221;. A outra coisa é que o Matz não se sente confortável de usar um serviço comercial como o Github.&lt;/p&gt;
&lt;p&gt;Um meio termo que parece ter sido acertado é que por enquanto haverá um período de experiência. O trunk oficial continua sendo o do subversion, mas já havia um &lt;a href="http://github.com/shyouhei/ruby"&gt;mirror&lt;/a&gt; desse repositório no Github, do Shyouhei Urabe. Esse mirror deve passar a ser mais usado. Para facilitar a experiência eles colocaram duas documentações para desenvolvedores, uma para &lt;a href="http://wiki.github.com/shyouhei/ruby/committerhowto"&gt;committers&lt;/a&gt; e outra para &lt;a href="http://wiki.github.com/shyouhei/ruby/noncommitterhowto"&gt;não-committers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Algumas das vantagens mais óbvias para quem conhece Git é que bugs poderiam ser atacados em paralelo, em branches diferentes, desenvolvimentos experimentais também iriam para branches em paralelo, enfim, todo o paralelismo e distribuição que nós em Rails já conhecemos. Porém, politicamente falando, isso significa o Matz delegar parte do seu controle sobre o projeto, da mesma forma como o &lt;span class="caps"&gt;DHH&lt;/span&gt; fez com o Rails. E isso é algo que ele não deve escolher fazer muito rápido. Vamos ver como isso fica.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/v1bhrI55zSN5APhOCIEiD5xwM84/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v1bhrI55zSN5APhOCIEiD5xwM84/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/v1bhrI55zSN5APhOCIEiD5xwM84/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v1bhrI55zSN5APhOCIEiD5xwM84/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Qe-759LcUYE:RusjJpLZU84:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Qe-759LcUYE:RusjJpLZU84:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Qe-759LcUYE:RusjJpLZU84:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=Qe-759LcUYE:RusjJpLZU84:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Qe-759LcUYE:RusjJpLZU84:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=Qe-759LcUYE:RusjJpLZU84:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=Qe-759LcUYE:RusjJpLZU84:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/Qe-759LcUYE" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/05/a-controv-rsia-do-ticket-2033-ruby-on-git</feedburner:origLink></item><item><title>[Screencast] Controllers Restful Magros com Inherited Resources</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/aSd_SP2jieE/screencast-controllers-restful-magros-com-inherited-resources</link><pubDate>Tue, 01 Sep 2009 04:48:07 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5195</guid><description>&lt;p&gt;&lt;strong&gt;Atualização: 01/10:&lt;/strong&gt; O José acabou de lançar a versão &lt;a href="http://twitter.com/josevalim/status/3684913313"&gt;0.9.1&lt;/a&gt; enquanto eu estava fazendo upload deste vídeo :-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=por_728x90"&gt;&lt;img 
src="http://railssummit.com.br/imgs/43/original/728x90.gif" 
alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;O &lt;a href="http://weblog.rubyonrails.org/2009/8/31/three-reasons-love-responder"&gt;José Valim&lt;/a&gt; está fazendo um grande trabalho no Rails 3.0 que está para ser lançado. Ele surpreendeu a todos com seu projeto do Google Summer of Code, reescrevendo todo o código dos Geradores para usar Thor e ser mais agnóstico. Não só isso, mas ele também fez melhorias no ActionController para torná-lo mais enxuto e limpo.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;object width="600" height="360"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6377436&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=6377436&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="360"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6377436"&gt;Controllers Restful Magros com Inherited Resources&lt;/a&gt; from &lt;a href="http://vimeo.com/akitaonrails"&gt;Fabio Akita&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;Muito desse último trabalho vem uma gem de Rails dele chamado &lt;a href="http://wiki.github.com/josevalim/inherited_resources"&gt;Inherited Resources&lt;/a&gt;. Ele pode ser usado agora mesmo nos seus projetos Rails 2.3 e ele também portou algumas das funcionalidades do Rails 3.0 como &lt;a href="http://blog.plataformatec.com.br/2009/08/inherited-resources-is-scopes-and-responder-fluent/"&gt;ActionController Responders&lt;/a&gt; e outras coisas.&lt;/p&gt;
&lt;p&gt;Em essência ele parece muito com o &lt;a href="http://akitaonrails.com/2008/01/25/screencast-de-restful-rails-fcil"&gt;resource_controller&lt;/a&gt; do James Golick ou o &lt;a href="http://github.com/hcatlin/make_resourceful/tree/master"&gt;make_resourceful&lt;/a&gt; do Hampton Caitlin, &lt;em&gt;Mais um Plugin de Controller Magro&lt;/em&gt; se preferir. Mas o do José é definitivamente interessante.&lt;/p&gt;
&lt;p&gt;Então, decidi fazer um screencast para apresentar algumas das funcionalidades básicas. Tenha em mente que esta gem oferece muito mais e eu encorajo que você leia a &lt;a href="http://wiki.github.com/josevalim/inherited_resources"&gt;página de Wiki&lt;/a&gt; sobre ele. Existem dúzias de opções que você pode usar para tornar seus projetos muito melhores para dar manutenção e mais enxutos.&lt;/p&gt;&lt;p&gt;Para utilizar os códigos que eu menciono no screencast, apenas comece assim:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;git clone git://github.com/akitaonrails/ryanb-15min-blog.git&lt;tt&gt;
&lt;/tt&gt;cd ryanb-15min-blog&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;O vídeo é dividido em duas partes, na primeira é uma simples conversão da aplicação para usar o inherited_resources. Para acessar esse código faça assim:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;git checkout -b inherited_resources --track origin/inherited_resources&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Isso trás o branch com a primeira parte. Para ver a segunda parte, com mais recursos, faça:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;git checkout -b inherited_resources_complete --track origin/inherited_resources_complete&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Pronto, agora você tem 3 branches: o master com o blog em 15 minutos original, o &amp;#8216;inherited_resources&amp;#8217; com a primeira parte e o &amp;#8216;inherited_resources_complete&amp;#8217; com a segunda parte. Use o comando &amp;#8216;git checkout [nome do branch]&amp;#8217; para mudar de branches.&lt;/p&gt;
&lt;p&gt;José também é palestrante para o &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit Latin America 2009&lt;/a&gt;, a maior conferência de Rails da América do Sul, e vai acontecer nos dias 13 e 14 de Outubro, em São Paulo. Nos ajude a &lt;a href="http://railssummit.locaweb.com.br/pt-BR/pages/banners"&gt;promover&lt;/a&gt; o evento e não deixe de comparecer!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6mFHIJFU03T8ZOc5Gc3HYdEFGHY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6mFHIJFU03T8ZOc5Gc3HYdEFGHY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6mFHIJFU03T8ZOc5Gc3HYdEFGHY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6mFHIJFU03T8ZOc5Gc3HYdEFGHY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=aSd_SP2jieE:vRg8JfqBDi4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=aSd_SP2jieE:vRg8JfqBDi4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=aSd_SP2jieE:vRg8JfqBDi4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=aSd_SP2jieE:vRg8JfqBDi4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=aSd_SP2jieE:vRg8JfqBDi4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=aSd_SP2jieE:vRg8JfqBDi4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=aSd_SP2jieE:vRg8JfqBDi4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/aSd_SP2jieE" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/01/screencast-controllers-restful-magros-com-inherited-resources</feedburner:origLink></item><item><title>[Screencast] Real Thin Restful Controllers with Inherited Resources</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/DUEYOt5V604/screencast-real-thin-restful-controllers-with-inherited-resources</link><pubDate>Tue, 01 Sep 2009 04:24:14 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5194</guid><description>&lt;p&gt;&lt;strong&gt;Update 10/01:&lt;/strong&gt; José just released version &lt;a href="http://twitter.com/josevalim/status/3684913313"&gt;0.9.1&lt;/a&gt; while I was uploading the video :-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=ing_728x90"&gt;&lt;img 
src="http://railssummit.com.br/imgs/44/original/en_728x90.gif" 
alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://weblog.rubyonrails.org/2009/8/31/three-reasons-love-responder"&gt;José Valim&lt;/a&gt; is doing a great work in the soon to the released Rails 3.0. He surprised everybody with his Google Summer of Code project, rewriting the entire Generator code to use Thor and be more agnostic. Not only that he enhanced the ActionController with ways to make it leaner and cleaner.&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;object width="600" height="360"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6377199&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=6377199&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="360"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6377199"&gt;Real Thin Rails Restul Controllers with Inherited Resources&lt;/a&gt; from &lt;a href="http://vimeo.com/akitaonrails"&gt;Fabio Akita&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;Much of this later work comes from an old Rails gem of his called &lt;a href="http://wiki.github.com/josevalim/inherited_resources"&gt;Inherited Resources&lt;/a&gt;. It can be used right now in your Rails 2.3 projects and he just backported some of the Rails 3.0 features such as &lt;a href="http://blog.plataformatec.com.br/2009/08/inherited-resources-is-scopes-and-responder-fluent/"&gt;ActionController Responders&lt;/a&gt; and other goodies.&lt;/p&gt;
&lt;p&gt;In essence it feels a lot like James Golick &lt;a href="http://akitaonrails.com/2008/1/25/easy-restful-rails-screencast"&gt;resource_controller&lt;/a&gt; or Hampton Caitlin&amp;#8217;s &lt;a href="http://github.com/hcatlin/make_resourceful/tree/master"&gt;make_resourceful&lt;/a&gt;, &lt;em&gt;Yet Another Thin Controller Plugin&lt;/em&gt; if you like. But José&amp;#8217;s is definitely interesting.&lt;/p&gt;
&lt;p&gt;So, I decided to make a screencast showcasing some of its basic features. Bear in mind that this gem offers a lot more and I highly encourage you to read his &lt;a href="http://wiki.github.com/josevalim/inherited_resources"&gt;Wiki page&lt;/a&gt; about it. There are dozens of options that you can leverage to make your projects even more maintainable and lean.&lt;/p&gt;&lt;p&gt;Para utilizar os códigos que eu menciono no screencast, apenas comece assim:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;git clone git://github.com/akitaonrails/ryanb-15min-blog.git&lt;tt&gt;
&lt;/tt&gt;cd ryanb-15min-blog&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;This video is divided in two parts, the first is  a simple conversion to use inherited_resources. To access this code do like this:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;git checkout -b inherited_resources --track origin/inherited_resources&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;This will bring the branch with the first part. To see the second part, with more goodies, do like this:&lt;/p&gt;&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;git checkout -b inherited_resources_complete --track origin/inherited_resources_complete&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Now you should have 3 branches: master with the original 15 min. blog, &amp;#8216;inherited_resources&amp;#8217; with the first part and &amp;#8216;inherited_resources_complete&amp;#8217; with the second part. Use the &amp;#8216;git checkout [name of the branch]&amp;#8217; to switch back and forth between branches.&lt;/p&gt;
&lt;p&gt;José is also a speaker for &lt;a href="http://railssummit.locaweb.com.br/en/pages/home"&gt;Rails Summit Latin America 2009&lt;/a&gt;, the largest Rails conference in South America, and it&amp;#8217;s gonna happen on October 13th and 14th, at São Paulo, Brazil. Help us &lt;a href="http://railssummit.locaweb.com.br/en/pages/banners"&gt;promote&lt;/a&gt; it and be sure to attend! :-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gl2KZpdkneVrbD5n8mvdj2NduRQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gl2KZpdkneVrbD5n8mvdj2NduRQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gl2KZpdkneVrbD5n8mvdj2NduRQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gl2KZpdkneVrbD5n8mvdj2NduRQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=DUEYOt5V604:e7sRd4QoaRA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=DUEYOt5V604:e7sRd4QoaRA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=DUEYOt5V604:e7sRd4QoaRA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=DUEYOt5V604:e7sRd4QoaRA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=DUEYOt5V604:e7sRd4QoaRA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=DUEYOt5V604:e7sRd4QoaRA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=DUEYOt5V604:e7sRd4QoaRA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/DUEYOt5V604" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/09/01/screencast-real-thin-restful-controllers-with-inherited-resources</feedburner:origLink></item><item><title>Eventos do Segundo Semestre de 2009</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/CYGbYjR7ock/eventos-do-segundo-semestre-de-2009</link><pubDate>Fri, 28 Aug 2009 11:13:20 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5193</guid><description>&lt;p&gt;No primeiro semestre viajei bastante para palestrar. Desde o Campus Party no começo do ano, passando por quase meia dúzia de cidades pelo Encontro Locaweb e mais outros pelo caminho. Mas já começamos o segundo semestre e semana que vem já recomeça a maratona de palestras. Vou atualizando neste post para não me esquecer.&lt;/p&gt;
&lt;div style="float: right; margin: 3px"&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=souPalestrante_210x60"&gt;&lt;img src="http://railssummit.com.br/images/banners/souPalestrante_210x60.jpg" alt="Rails Summit 2009"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Em especial, obviamente, não deixem de participar e de promover o &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit Latin America 2009&lt;/a&gt;, que acontecerá nos dias 13 e 14 de Outubro! Diversos dos maiores nomes internacionais de Ruby e Rails estarão presentes, é a melhor oportunidade de se encontrar com os maiores Railers do Brasil e do mundo.&lt;/p&gt;
&lt;p&gt;Além disso, nosso grande amigo Carlos Eduardo, da e-Genial está organizando mais um &lt;a href="http://www.railsforkids.com"&gt;Rails for Kids&lt;/a&gt;, um evento online onde o que for arrecadado com a inscrição será para ajudar uma instituição beneficente. Não deixe de colaborar e participar. Grandes nomes brasileiros estarão presentes num dia inteiro de palestras.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;05/09 &amp;#8211; &lt;a href="http://enecomp.org.br/"&gt;&lt;span class="caps"&gt;XXVII&lt;/span&gt; &lt;span class="caps"&gt;ENECOMP&lt;/span&gt; &amp;#8211; Congresso Nacional dos Estudantes de Computação&lt;/a&gt; &amp;#8211; Colégio Estadual do Paraná/Curitiba&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;12/09 &amp;#8211; &lt;a href="http://www.railsforkids.com/"&gt;Rails for Kids 2009&lt;/a&gt; &amp;#8211; Online via Treina Tom&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;14/09 &amp;#8211; &lt;a href="http://devinrio.com.br/"&gt;Dev in Rio 2009&lt;/a&gt; &amp;#8211; Rio de Janeiro&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;15/09 &amp;#8211; I Fórum de Tecnologia em Software Livre &lt;span class="caps"&gt;SERPRO&lt;/span&gt; Rio de Janeiro&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;21/09 &amp;#8211; &lt;span class="caps"&gt;ENIC&lt;/span&gt; – Encontro de Iniciação Científica &amp;#8211; &lt;a href="http://www.claretiano.edu.br/"&gt;Claretiano/Batatais&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;10/10 &amp;#8211; &lt;a href="http://www.encontroagil.com.br/"&gt;Encontro Ágil&lt;/a&gt; &amp;#8211; &lt;span class="caps"&gt;IME&lt;/span&gt;/&lt;span class="caps"&gt;USP&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;13-14/10 &amp;#8211; &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit Latin America 2009&lt;/a&gt; &amp;#8211; São Paulo&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;19/10 &amp;#8211; Semana da Computação &amp;#8211; &lt;span class="caps"&gt;USP&lt;/span&gt;/São Carlos&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;23/10 &amp;#8211; &lt;a href="http://www.latinoware.org/"&gt;Latinoware 2009&lt;/a&gt; &amp;#8211; Foz do Iguaçu&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;O &lt;a href="http://devinrio.com.br/"&gt;Dev in Rio 2009&lt;/a&gt; foi organizado pelos grandes Guilherme Chapiewski e Henrique Bastos, totalmente às pressas e prova como grandes eventos podem ser feitos em pouco tempo, com poucos recursos mas com altíssima qualidade! Sem querer se tornará um dos melhores eventos de tecnologia do Brasil.&lt;/p&gt;
&lt;p&gt;Estou particularmente entusiasmado com o &lt;a href="http://www.latinoware.org/"&gt;Latinoware&lt;/a&gt; porque estará presente ninguém menos que o grande &lt;strong&gt;Frederick Brooks&lt;/strong&gt;, famoso escritor do livro &lt;a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month"&gt;The Mythical Man-Month&lt;/a&gt; e a sequência &lt;a href="http://en.wikipedia.org/wiki/No_Silver_Bullet"&gt;No Silver Bullet&lt;/a&gt;. Por coincidência vou palestrar logo depois dele :-) Sou um grande fã há pelo menos uma década.&lt;/p&gt;
&lt;p&gt;Por enquanto é isso. Acompanhem para mais atualizações.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/49dl6alTkjYqx-epAM82Jz2BfpM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/49dl6alTkjYqx-epAM82Jz2BfpM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/49dl6alTkjYqx-epAM82Jz2BfpM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/49dl6alTkjYqx-epAM82Jz2BfpM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=CYGbYjR7ock:AIGH_zVvJO0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=CYGbYjR7ock:AIGH_zVvJO0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=CYGbYjR7ock:AIGH_zVvJO0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=CYGbYjR7ock:AIGH_zVvJO0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=CYGbYjR7ock:AIGH_zVvJO0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=CYGbYjR7ock:AIGH_zVvJO0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=CYGbYjR7ock:AIGH_zVvJO0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/CYGbYjR7ock" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/08/28/eventos-do-segundo-semestre-de-2009</feedburner:origLink></item><item><title>[Off-Topic] Maldita Lei de Regulamentação está de volta!</title><link>http://feedproxy.google.com/~r/AkitaOnRails/~3/wNYWG4YAXfo/off-topic-maldita-lei-de-regulamenta-o-est-de-volta</link><pubDate>Sat, 22 Aug 2009 16:01:37 PDT</pubDate><guid isPermaLink="false">tag:www.akitaonrails.com,2008:Post/5192</guid><description>&lt;p&gt;&lt;strong&gt;Update 08/09/2009:&lt;/strong&gt; Pequena menção numa notícia do &lt;a href="http://br.noticias.yahoo.com/s/02092009/25/tecnologia-projeto-quer-exigir-diploma-profissao.html"&gt;Yahoo! Notícias&lt;/a&gt; sobre este assunto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 26/08/2009:&lt;/strong&gt; Excelente análise histórica sobre uma boa proposta de lei que já havia sido recusada uma vez, pelo &lt;a href="http://www.gizmodo.com.br/conteudo/made-brazil-regulamentacao-de-analistas-de-sistemas-ja-foi-discutida-pelo-congresso-e-o-qu-0"&gt;Gizmodo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: 25/08/2009:&lt;/strong&gt; Acabei de colocar um longo texto de argumentação sobre a Lei neste artigo.&lt;/p&gt;
&lt;p&gt;Está nas &lt;a href="http://www.tiinside.com.br/News.aspx?ID=143390&amp;amp;C=265"&gt;notícias&lt;/a&gt; :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A proposta que regulamenta o exercício da profissão de analista de sistemas foi aprovada nesta quarta-feira, 19, pela Comissão de Constituição, Justiça e Cidadania (&lt;span class="caps"&gt;CCJ&lt;/span&gt;) do Senado. O projeto de lei (&lt;a href="http://www.senado.gov.br/sf/atividade/Materia/Detalhes.asp?p_cod_mate=82918"&gt;&lt;span class="caps"&gt;PLS&lt;/span&gt; 607/07&lt;/a&gt;), de autoria do senador &lt;a href="http://www1.folha.uol.com.br/folha/brasil/ult96u582101.shtml" title="PR-RO"&gt;Expedito Júnior&lt;/a&gt;, segue agora para análise da Comissão de Assuntos Sociais (&lt;span class="caps"&gt;CAS&lt;/span&gt;), em decisão terminativa.&lt;/p&gt;
&lt;p&gt;Pelo substitutivo anteriormente aprovado pela Comissão de Ciência, Tecnologia, Inovação, Comunicação e Informática (&lt;span class="caps"&gt;CCT&lt;/span&gt;) e acolhido pelo relator na &lt;span class="caps"&gt;CCJ&lt;/span&gt;, senador &lt;a href="http://g1.globo.com/Noticias/Politica/0,,MUL67360-5601,00.html" title="&amp;lt;span class=&amp;quot;caps&amp;quot;&amp;gt;PSDB&amp;lt;/span&amp;gt;-GO"&gt;Marconi Perillo&lt;/a&gt;, somente profissionais com diploma superior em análise de sistemas, ciência da computação ou processamento de dados poderão exercer a profissão de analista de sistemas.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Recomendo que todos releiam &lt;a href="/2008/04/19/off-topic-vamos-todos-impedir-a-regulamenta-o-da-profiss-o-de-analista-de-sistema"&gt;meu artigo do ano passado&lt;/a&gt; sobre esse tema. Esta lei é uma grande palhaçada, criada pelo tal &lt;a href="http://www1.folha.uol.com.br/folha/brasil/ult96u582101.shtml" title="PR-RO"&gt;Expedido Júnior&lt;/a&gt;, acolhido pelo tal &lt;a href="http://g1.globo.com/Noticias/Politica/0,,MUL67360-5601,00.html" title="&amp;lt;span class=&amp;quot;caps&amp;quot;&amp;gt;PSDG&amp;lt;/span&amp;gt;-GO"&gt;Marconi Perillo&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Texto da Proposta de Lei&lt;/h2&gt;
&lt;p&gt;Resolvi dar uma passada mais detalhada sobre o texto. A proposta original foi o fracassado Projeto de Lei no 1.947, de 2003 do Eduardo Paes que foi, felizmente, arquivada. Então, não contente, foi apresentada pelo Expedito Júnior o &lt;strong&gt;desastroso&lt;/strong&gt; Projeto de Lei no 607, de 2007. Recomendo que todos leiam a versão original primeiro, que pode ser baixada em &lt;span class="caps"&gt;PDF&lt;/span&gt; &lt;a href="http://www.senado.gov.br/sf/atividade/Materia/getTexto.asp?t=11569&amp;amp;c=RTF"&gt;neste link&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A primeira instância de análise foi na Comissão de Ciência, Tecnologia, Inovação, Comunicação e Informática, publicado em &lt;strong&gt;05/03/2008&lt;/strong&gt;. A análise não é totalmente ruim, mas tem vários pontos falhos de interpretação (vou reservar a opinião de má-fé ou preguiça em uma análise mais apurada), na minha opinião. Por exemplo, primeiro ele cita opinião do &lt;span class="caps"&gt;SBC&lt;/span&gt; &amp;#8211; Sociedade Brasileira de Computação &amp;#8211; que diz o seguinte:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Segundo informação divulgada pela própria &lt;span class="caps"&gt;SBC&lt;/span&gt;, o importante na regulamentação da profissão é a observação de determinados princípios como o livre exercício dos ofícios relacionados à área de informática. Assim, nenhum conselho de profissão poderia criar qualquer impedimento ou restrição ao princípio acima, devendo a área ser auto-regulada.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Está correto, acho que todos os profissionais da área concordam com isso, mas no parágrafo seguinte a interpretação é errada (obviamente feita por alguém de fora da área):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No caso em tela não se trata disso, pois o art. 2o estabelece que &amp;#8220;poderão&amp;#8221; exercer a profissão de Analista de Sistemas, Ciência da Computação ou Processamento de Dados, o que amplia sobremaneira as possibilidades de enquadramento profissional, abrangendo praticamente todos os cursos superiores na área de informática.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Para deixar claro, o art. 2o diz o seguinte:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Art. 2° Poderão exercer a profissão de Analista de Sistemas no País:&lt;/p&gt;
&lt;p&gt;I – os possuidores de diploma de nível superior em Análise de Sistemas, Ciência da Computação ou Processamento de Dados, expedido por escolas oficiais ou reconhecidas;&lt;/p&gt;
&lt;p&gt;II – os diplomados por escolas estrangeiras reconhecidas pelas leis de seu País e que revalidarem seus diplomas de acordo com a legislação em vigor;&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;III&lt;/span&gt; – os que, na data de entrada em vigor desta Lei, tenham exercido, comprovadamente, durante o período de, no mínimo cinco anos, a função de Analista de Sistemas&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ou seja, a interpretação deixa completamente de fora autodidatas e estudiosos que tiveram a escolha de não se formar por diversos motivos (vide meu artigo &lt;a href="/2009/04/17/off-topic-devo-fazer-faculdade"&gt;Devo fazer Faculdade?&lt;/a&gt;). Este artigo claramente exclui uma ampla quantidade de profissionais dos mais qualificados. Mesmo o inciso &lt;span class="caps"&gt;III&lt;/span&gt; não deixa claro o que significa exercício comprovado por 5 anos ou mais. Se refere a carteira assinada? Se refere a notas fiscais a clientes que adquiriram serviços de informática? Quais os critérios?&lt;/p&gt;
&lt;p&gt;A análise prossegue com a afirmação:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;O art. 4o do projeto, ao estabelecer quais as suas atividades e atribuições, não restringe a atuação de outros profissionais. Também não é estabelecida nenhuma exclusividade ou fixado que determinada atividade ou atribuição será privativa do portador de diploma das profissões antes referidas.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;O Art. 4o define atividades como definição, gerenciamento, coordenação de projetos de software, incluindo explicitamente a &amp;#8220;codificação&amp;#8221;. Ou seja, todas as atividades de gerentes de projetos, arquitetos, programadores e afins. E no mesmo artigo temos o seguinte:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Parágrafo único. É &lt;strong&gt;privativa&lt;/strong&gt; do Analista de Sistemas a responsabilidade técnica por projetos e sistemas para processamento de dados, informática e automação, assim como a emissão de laudos, relatórios ou pareceres técnicos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Eu posso estar interpretando errado, mas me parece claramente que este parágrafo é exclusivo e, novamente, exclui a fatia dos programadores autodidatas. E a análise segue com um &lt;a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"&gt;&lt;span class="caps"&gt;FUD&lt;/span&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Não se imagina que o centro de processamento de dados de um órgão público, de instituições do sistema financeiro ou mesmo de empresas privadas possa prescindir de responsabilidade técnica de caráter profissional, considerada a interface e a sinergia que se cria com os cidadãos, clientes e consumidores.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Na minha opinião esta é justamente a justificativa errada sendo utilizada na grande maioria dos argumentos a favor da lei: a de que automaticamente um profissional formado é necessariamente muito superior que um profissional autodidata mais experiente. E esta é a toda a base da minha argumentação no &lt;a href="/2008/04/19/off-topic-vamos-todos-impedir-a-regulamenta-o-da-profiss-o-de-analista-de-sistema"&gt;meu artigo do ano passado&lt;/a&gt; sobre o assunto. Recomendo a leitura cuidadosa disso.&lt;/p&gt;
&lt;p&gt;Para não dizer que a análise é totalmente ruim, pelo menos foi sugerida a retirada das parte mais ofensoras, no caso:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;supressão dos artigos 7o até o art. 33, que criam o Conselho Federal e os Conselhos Regionais de Informática;&lt;/li&gt;
	&lt;li&gt;exclusão, no inciso &lt;span class="caps"&gt;III&lt;/span&gt; do art. 2o, da oração &amp;#8220;&amp;#8230; e que requeiram o respectivo registro aos Conselhos Regionais de Informática&amp;#8221;;&lt;/li&gt;
	&lt;li&gt;exclusão, no inciso II do art. 3o, da oração &amp;#8220;&amp;#8230; e que requeiram o respectivo registro aos Conselhos Regionais de Informática&amp;#8221;;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Então, o motivo de toda esta algazarra que foi a aprovação na Comissão de Constituição, Justiça e Cidadania, publicado no dia 19/08/2009. A proposta foi acatada com todas as modificações sugeridas pela Comissão de Ciência, Tecnologia, Inovação, Comunicação e Informática listadas acima.&lt;/p&gt;
&lt;p&gt;Felizmente, a supressão dos artigos 7o. até o art. 33 foi mantido:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8230; há &lt;strong&gt;inconstitucionalidade&lt;/strong&gt; de natureza formal nos dispositivos que versam sobre a fiscalização e o exercício da profissão, bem como sobre o registro dos profissionais e o pagamento de taxas &amp;#8230; Dessa forma, os citados artigos estão marcados pela eiva de inconstitucionalidade, pois é vedada a iniciativa parlamentar para criar órgãos públicos e atribuir-lhes funções, por força do supramencionado preceito da Lei Maior &amp;#8230;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Para clarear, isso &lt;strong&gt;retira&lt;/strong&gt; os capítulos que definem os órgãos fiscalizadores, o Conselho Federal de Informática, os Conselhos Regionais de Informática, sobre Registro e Fiscalização Profissional, sobre Anuidades, Emolumentos e Taxas e, finalmente, Infrações e Penalidades. Estas seriam as partes mais danosas caso implementadas. Espero que se mantenha assim.&lt;/p&gt;
&lt;h2&gt;O Sétimo Elemento&lt;/h2&gt;
&lt;p&gt;Desde 20/08/2009 o substitutivo da proposta está em tramitação aguardando relator na Comissão de Assuntos Sociais, onde ela pode ser aprovada ou arquivada. Pelo andar da carruagem me parece que ela vai ser aprovada sem grandes problemas, o que é &lt;strong&gt;péssimo&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Continua valendo meus argumentos no artigo &lt;a href="http://www.akitaonrails.com/2008/04/19/off-topic-vamos-todos-impedir-a-regulamenta-o-da-profiss-o-de-analista-de-sistema"&gt;Vamos impedir a Regulamentação&lt;/a&gt; do ano passado. Apesar da desistência dos artigos que criam toda a mecânica burocrática governamental e as penalidades, ainda assim é uma lei muito ruim para todo o mercado. Pior, o tal art. 7o do substitutivo atual me deixa &lt;strong&gt;muito&lt;/strong&gt; apreensivo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Art. 7o&lt;/strong&gt; O Poder Executivo responsabilizar-se-á pela fiscalização e supervisão do exercício da profissão de Analista de Sistemas, e pelo registro dos profissionais da Informática.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Isso substitui os artigos 7o até o art. 33 em um único artigo que não define nada e deixa completamente em aberto e arbitrário o que o Executivo fará em termos de fiscalização e registro dos profissionais. Ou seja, no fundo tudo que foi retirado continua implicitamente válido.&lt;/p&gt;
&lt;p&gt;Este artigo não existia na versão da Comissão de Ciência, Tecnologia, Inovação, Comunicação e Informática de 2008. Ela foi a única coisa acrescentada na versão da Comissão de Constituição, Justiça e Cidadania aprovada em 19/08/2009 e é, na minha opinião, a coisa que mais regrediu este texto. No relatório se lê:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Por outro lado, para dar viabilidade ao objetivo da iniciativa, desejamos acrescentar também um artigo com vistas a remeter ao Poder Executivo função de deliberar sobre as questões tratadas nos artigos aqui suprimidos. Assim, acolhemos o Substitutivo oferecido pela Comissão de Ciência e Tecnologia, com acréscimo de um dispositivo.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;Se a Comissão de Assuntos Sociais aprovar esta lei, será um enorme retrocesso no mercado nacional de informática. Esta lei tem o potencial de ser ainda mais destrutivo do que as leis de reserva de mercado de informática dos anos 80, que nos deixou quase uma década atrás do Primeiro Mundo em termos de modernização.&lt;/p&gt;
&lt;p&gt;Como o &lt;span class="caps"&gt;SBC&lt;/span&gt; já havia mencionado, este mercado deve ser livre e auto-regulado, o que ele já é de fato. Não há nenhuma necessidade de uma regulamentação desta natureza. Como eu já disse antes, podemos conversar sobre um texto mais realista. Porém este texto em particular é por demais danoso para ser considerado. Ele precisa ser completamente reescrito por profissionais experientes atuantes na área em conjunto com toda a nova geração de desenvolvedores.&lt;/p&gt;
&lt;p&gt;Eu não conheço paralelo dessa lei em nenhum lugar do mundo (peço que se alguém souber, comente neste artigo). Ela efetivamente restringe a atividade, partindo da &lt;strong&gt;premissa errada&lt;/strong&gt; de que profissionais formados são necessariamente melhores do que profissionais autodidatas, o que é, por experiência própria, muito falso. Na realidade, alguns dos melhores com quem eu já trabalhei nesses últimos 15 anos não eram formados.&lt;/p&gt;
&lt;p&gt;A grande maioria das pessoas a favor se dividem em duas categorias: as que leram a proposta de lei e suas tramitações e as que não leram. As que não leram simplesmente não sabem do que estão falando.&lt;/p&gt;
&lt;p&gt;As que leram e ainda assim concordam são justamente os maus profissionais que não conseguem competir com os autodidatas, querendo usar apenas a força das &amp;#8220;credenciais&amp;#8221; como critério. Este mercado se auto-regula à medida que os maus profissionais são naturalmente excluídos do mercado, indo cada vez mais para atividades de menor importância. Também se confunde as carreiras de &amp;#8220;codificador&amp;#8221; e &amp;#8220;desenvolvedor&amp;#8221;. O primeiro é um commodity que se aproxima muito de um datilógrafo, apenas tentando traduzir diagramas e requerimentos em formato de código, sem qualquer atenção à qualidade do mesmo. Um desenvolvedor, por outro lado, é um arquiteto nato, que tem total controle sobre sua criação. O primeiro é um commodity, o segundo é a &amp;#8220;nata&amp;#8221; da categoria, que sobe no mercado por pura meritocracia, e seleção natural baseada em networking. Apesar de algumas exceções, eu diria que é uma implementação razoável de &lt;a href="http://en.wikipedia.org/wiki/Laissez-faire"&gt;Laissez-faire&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nossa área sequer tem uma metodologia de trabalho consolidada. Estamos ainda transitando entre o Taylorismo-Fordista da Engenharia Clássica de Software baseado em Waterfall, até o movimento Ágil pós-Toyotista de Lean, Scrum, XP e outros. Nossas ferramentas de hoje e de 10 anos atrás são bastante diferentes. A internet mudou completamente o rumo da profissão. São mudanças repentinas demais para se tentar regularizar. Neste tipo de circunstância, o livre mercado é a melhor forma de lidar com isso.&lt;/p&gt;
&lt;p&gt;Portanto, baseado em tudo isso, continuo veementemente contra essa proposta de lei e espero realmente que existem pessoas de boa educação na Comissão de Assuntos Sociais para terem o bom senso de perguntar à sociedade, e a nós, categoria afetada, para então arquivar esse texto de uma vez por todas.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/erwLZofPB2gwwiAMTvjhVGk297I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/erwLZofPB2gwwiAMTvjhVGk297I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/erwLZofPB2gwwiAMTvjhVGk297I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/erwLZofPB2gwwiAMTvjhVGk297I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=wNYWG4YAXfo:qR9ODu4dh2k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=wNYWG4YAXfo:qR9ODu4dh2k:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=wNYWG4YAXfo:qR9ODu4dh2k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=wNYWG4YAXfo:qR9ODu4dh2k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=wNYWG4YAXfo:qR9ODu4dh2k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?i=wNYWG4YAXfo:qR9ODu4dh2k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AkitaOnRails?a=wNYWG4YAXfo:qR9ODu4dh2k:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AkitaOnRails?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AkitaOnRails/~4/wNYWG4YAXfo" height="1" width="1"/&gt;</description><feedburner:origLink>http://akitaonrails.com/2009/08/22/off-topic-maldita-lei-de-regulamenta-o-est-de-volta</feedburner:origLink></item></channel></rss>
