<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>codificando.com &#187; engenharia</title>
	<atom:link href="http://codificando.com/category/engenharia/feed/" rel="self" type="application/rss+xml" />
	<link>http://codificando.com</link>
	<description>Desenvolvimento de Software com qualidade</description>
	<lastBuildDate>Tue, 31 Jan 2012 09:49:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Vídeo e Slides Campus Party Brasil 2011</title>
		<link>http://codificando.com/2011/01/vdeo-slides-campus-party-brasil-2011/</link>
		<comments>http://codificando.com/2011/01/vdeo-slides-campus-party-brasil-2011/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 12:33:15 +0000</pubDate>
		<dc:creator>Emerson Macedo</dc:creator>
				<category><![CDATA[engenharia]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[palestra]]></category>
		<category><![CDATA[campusparty]]></category>
		<category><![CDATA[eventos]]></category>

		<guid isPermaLink="false">http://codificando.com/?p=756</guid>
		<description><![CDATA[Na última semana estive na Campus Party Brasil 2011 falando sobre Node.JS. A apresentação foi uma introdução ao tema, até porque o público do evento era bem variado. Deixo aqui os slides e vídeos da palestra pra quem quiser ver &#8230; <a href="http://codificando.com/2011/01/vdeo-slides-campus-party-brasil-2011/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Na última semana estive na <a href="http://www.campus-party.com.br/">Campus Party Brasil 2011</a> falando sobre <a href="http://nodejs.org">Node.JS</a>. A apresentação foi uma <a href="http://codificando.com/2011/01/nodejs-na-campus-party-brasil-2011/">introdução ao tema</a>, até porque o público do evento era bem variado. Deixo aqui os slides e vídeos da palestra pra quem quiser ver como foi.</p>
<div style="width:425px" id="__ss_6618658"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/emerleite/nodejs-campus-party-brasil-2011" title="Node.JS - Campus Party Brasil 2011">Node.JS &#8211; Campus Party Brasil 2011</a></strong><object id="__sse6618658" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=palestracampuspartybrasil-110118160701-phpapp01&#038;stripped_title=nodejs-campus-party-brasil-2011&#038;userName=emerleite" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse6618658" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=palestracampuspartybrasil-110118160701-phpapp01&#038;stripped_title=nodejs-campus-party-brasil-2011&#038;userName=emerleite" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/emerleite">Emerson Macedo</a>.</div>
</div>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/XPjogYLuFNg" frameborder="0" allowFullScreen></iframe>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://codificando.com/2011/01/vdeo-slides-campus-party-brasil-2011/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Os desafios do Novo Player de Vídeos da Globo.com</title>
		<link>http://codificando.com/2010/12/os-desafios-novo-player-de-vdeos-da-globocom/</link>
		<comments>http://codificando.com/2010/12/os-desafios-novo-player-de-vdeos-da-globocom/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 02:14:44 +0000</pubDate>
		<dc:creator>Emerson Macedo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[engenharia]]></category>
		<category><![CDATA[gestão]]></category>
		<category><![CDATA[infra]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[pensamentos]]></category>
		<category><![CDATA[testes]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://codificando.com/?p=698</guid>
		<description><![CDATA[Faz aproximadamente 4 meses que mudei para a equipe de Webmedia da globo.com. Nessa ida, eu esperava alguns desafios um pouco diferentes, o que acabou acontecendo logo no começo. Indo direto ao ponto, meu primeiro projeto importante foi desenvolver junto com &#8230; <a href="http://codificando.com/2010/12/os-desafios-novo-player-de-vdeos-da-globocom/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Faz aproximadamente 4 meses que mudei para a equipe de <a href="http://video.globo.com/">Webmedia</a> da <a href="http://globo.com">globo.com</a>. Nessa ida, eu esperava alguns desafios um pouco diferentes, o que acabou acontecendo logo no começo.</p>
<p><a href="http://codificando.com/wp-content/uploads/2010/12/player_globo.jpg"><img class="size-full wp-image-701" title="Novo Player Globo.com" src="http://codificando.com/wp-content/uploads/2010/12/player_globo.jpg" alt="Novo Player Globo.com" width="638" height="359" /></a></p>
<p>Indo direto ao ponto, meu primeiro projeto importante foi desenvolver junto com meu time um novo player de vídeos para a <a href="http://globo.com">globo.com</a>, o qual chamamos de Player 2.0. Pra mim isso era algo totalmente novo, pois <a href="http://codificando.com/2009/02/bbb9-e-o-brother-que-voce-nao-gosta-no-ar/" target="_blank">meu contato com desenvolvimento Flash/ActionScript havia sido muito pouco, num projeto no início de 2009</a>. Como a maioria já sabe, o desenvolvimento de um Player de Vídeos hoje em dia precisa necessariamente ser feito em flash, pois é o runtime que tem o maior alcance de usuários. A parte de vídeos do <a href="http://www.w3.org/TR/html5/">html5</a> ainda tem diversas lacunas a serem preenchidas e é necessário ainda um bom tempo para que a &#8220;massa&#8221; de usuários tenham seus browsers atualizados com suporte a essa tecnologia.</p>
<p>Nesse desenvolvimento do Player, pude perceber juntamente com meu time que desenvolver na <a href="http://www.adobe.com/flashplatform/">plataforma do Flash</a> já é o um grande desafio, pois a plataforma e o runtime tem alguns detalhes que você precisa entender e saber lidar, caso contrário você vai ter muita dor de cabeça.</p>
<h2>Runtime e Sistema Operacional</h2>
<p>Quando você desenvolve alguma coisa em Flash, especialmente um Player de Vídeos, um ponto onde é preciso tomar bastante cuidade é com o <a href="http://en.wikipedia.org/wiki/Adobe_Flash_Player">Runtime do Flash (vulgo Flash Player)</a>. O Runtime pode ter comportamentos diferentes em diferentes versões do próprio runtime e também do sistema operacional. Por algumas vezes nós passamos por situações onde percebemos que o Player não estava funcionando em uma versão específica do Runtime no Internet Explorer 6 no Windows XP. Isso causou uma certa correria, mas felizmente conseguimos resolver o problema antes de colocar no ar e não houve impacto.</p>
<p>Lições aprendidas e tivemos tomar algumas medidas, entre elas testar em Linux, Windows e Mac e nos principais browsers e Runtimes do Flash como parte do nosso Definition of Done (DoD). Na prática, hoje uma estória não é dada como pronta se não tivermos certeza que o que foi feito funciona nos diversos environments pré estabelecidos. No início isso era parte do DoD do Sprint, mas após passarmos por uma situação, onde achamos um problema no IE6 (pra variar) bem no último dia do sprint, e que iria colocar todo esse Sprint por água abaixo, movemos esse item do DoD do Sprint para o DoD das estórias. Acabamos resolvendo o problema sem impactar no sprint, mas o desfecho poderia ter sido outro.</p>
<h2>Testes Automatizados</h2>
<p>Nos tempos atuais, é quase unânime a importância de testes automatizados no desenvolvimento de software. Todo programador deveria saber os princípios de testes automatizados e aplicá-los no seu dia a dia. Infelizmente, existem alguns environments que não facilitam muito esse tipo de prática. Nesses casos, é necessário lidar com o problema de maneira pragmática, caso contrário as coisas não andam. Diferentemente de outras tecnologias, neste caso não podemos escolher alguma opção diferente, pois a opção é uma só (o Flash).</p>
<p>No desenvolvimento do Player, nós usamos o <a href="http://flexunit.org/">FlexUnit</a> como ferramenta principal de testes automatizados. Dentro do que ele se propõe, faz seu trabalho bem feito, e facilita bastante os testes. Tem suporte a <a href="http://docs.flexunit.org/index.php?title=Writing_an_AsyncTest">testes assíncronos</a>, e sua <a href="http://docs.flexunit.org/">documentação explica bem as principais funcionalidades</a>.</p>
<p>Uma coisa que tem nos atrapalhado bastante são os frameworks de <a href="http://xunitpatterns.com/Test%20Double.html">test doubles</a>. Nenhum dos frameworks que testamos funcionou no nosso ambiente. Aqui, algo que percebemos no densenvolvimento para Flash foi que cada tutorial na internet pode funcionar numa minor/revision version do runtime e na outra aquele tutorial já não funciona. É bem complicado e custei a aceitar, mas é assim que funciona nesse environment. Ainda não descarto a possibilidade de que poderiamos insistir mais pra conseguir alguma coisa melhor, ou que não soubemos fazer direito, mas não poderiamos ficar empacados nisso, sem mover nosso projeto pra frente.</p>
<p>Mesmo com essas dificuldades, estamos conseguindo fazer uma quantidade boa de testes e isso tem nos ajudado muito.</p>
<h2>Continous Integration Server</h2>
<p>Outro desafio bem complicado que tivemos foi ter um build server funcionando bem e rodando nossos testes automatizados. Mais uma vez os tutoriais da internet acabam não funcioando direito. Pra piorar, pra você rodar testes ActionScript 3, que é a linguagem do Flash, é necessário levantar uma instância do FlashPlayer, que precisa de um <a href="http://en.wikipedia.org/wiki/X_Window_System">Servidor X</a>. Essa instância vezes não fecha, fica travada, ou apresenta alguns problemas que nada tem a ver com os testes da aplicação. Custamos a perceber isso, mas foi o que aconteceu.</p>
<p>No fim das contas, hoje temos nosso servidor de build e integração contínua funcionando bem, e com poucos problemas.</p>
<h2>Estratégia de Migração</h2>
<p>Fazer uma mudança no Player de Vídeos da <a href="http://globo.com">globo.com</a> não é uma tarefa simples. Não poderíamos simplesmente colocar um Player novo no lugar do antigo e ver o que aconteceria. Além de ser um baita risco seria uma baita irresponsabilidade. Precisavamos então pensar numa estratégia &#8230;</p>
<p>Antes  do momento de colocar o primeiro release no ar, decidimos usar um catálogo de vídeos com acesso bem pequeno. Para isso, criamos uma opção que ativa/desativa a versão nova em cada catálogo, individualmente. Dessa forma, poderiamos voltar para a versão antiga IMEDIATAMENTE, em caso de algum problema.</p>
<p>Essa estratégia foi perfeita, pois conseguimos pegar diversos pontos de melhoria, e fazer os ajustes necesários sem gerar impacto para os usuários. Com os ajustes feitos e uma nova versão no ar, resolvemos então <a href="http://ascariocas.globo.com/videos/" target="_blank">colocar em mais um catálogo de vídeos</a>, dessa vez um com mais acessos. Nesse momento nosso player ainda não suportava vídeos ao vivo, portanto ainda não podiamos colocar em catálogos como o do <a href="http://globonews.globo.com/videos/v/globo-news-ao-vivo/61910" target="_blank">Globo News</a>, pois caso contrário teriamos problemas. Isso provou como a nossa escolha de criar uma opcão de ir habilitando sob demanda se mostrou bastante acertada, pois assim que terminamos a funcionalidade de vídeos ao vivo, habilitamos essa nova versão do Player para o <a href="http://globonews.globo.com/videos/v/globo-news-ao-vivo/61910" target="_blank">Globo News</a>.</p>
<p>Hoje, estamos já com quase todos os catálogos de vídeos usando esse Novo Player. Em breve, todos os vídeos da Globo.com serão servidos por ele. Isso só não aconteceu ainda porque temos algumas estórias com alguns detalhes que tornam viável a substituição completa do Player que está no ar hoje. O mais interessante de tudo é que estamos tendo impacto e stress zero, graças e estratégia bem traçada por todo nosso time.</p>
<h2>Conclusão</h2>
<p>Esse começo na equipe de Webmedia está sendo ótimo. Criar um Player de Vídeos do zero tem sido uma experiência fantástica, apesar de todas as dificuldades.</p>
<p>Algumas das coisas mais importantes que estou tirando de lição desse projeto é que (1) nem sempre dá pra fazer tudo certinho com todos os testes automatizados, etc, etc etc, (2) as vezes estamos num vendor lock-in onde não dá pra sair e ai você tem que saber superar com os problemas do enviroment dessa tecnologia e (3) migrar uma aplicação que afeta quase todos os sites de uma empresa do tamanho da <a href="http://globo.com">globo.com</a> sem causar impacto em ninguém é difícil, mas não impossível.
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://codificando.com/2010/12/os-desafios-novo-player-de-vdeos-da-globocom/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Seu software também deve comunicar-se corretamente</title>
		<link>http://codificando.com/2010/06/seu-software-tambem-deve-comunicar-se-corretamente/</link>
		<comments>http://codificando.com/2010/06/seu-software-tambem-deve-comunicar-se-corretamente/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 18:43:11 +0000</pubDate>
		<dc:creator>Emerson Macedo</dc:creator>
				<category><![CDATA[engenharia]]></category>
		<category><![CDATA[pensamentos]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://codificando.com/?p=369</guid>
		<description><![CDATA[Alguns estudos apontam que o maior problema da maioria das empresas é a comunicação. Esforços incansáveis são feitos para melhorar isso e todos sabemos que é um grande desafio. Mas e o Software? Será que este também não deveria comunicar-se &#8230; <a href="http://codificando.com/2010/06/seu-software-tambem-deve-comunicar-se-corretamente/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.versatilcomunicacao.com.br/versa/release_detalhe.asp?id=308" target="_blank">Alguns estudos apontam que o maior problema da maioria das empresas é a comunicação</a>. Esforços incansáveis são feitos para melhorar isso e todos sabemos que é um grande desafio. Mas e o Software? Será que este também não deveria comunicar-se de forma mais clara com seus usuários?</p>
<p><strong>Exemplo triste &#8211; Aconteceu comigo <img src='http://codificando.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </strong></p>
<p>Ontem a tarde me aconteceu uma situação pouco comum. Após terminar o jogo do Brasil pela Copa 2010, fui com minha esposa ao supermercado fazer algumas compras. Compramos um bocado de coisas. Diria que fiquei mais de 1 hora no mercado. Na hora de pagar, eis que surge um problema. O cartão Alimentação Pass da <a href="http://br.sodexo.com" target="_blank">Sodexo</a> não funcionou. A máquina informou a seguinte mensagem: <strong>&#8220;FALHA NA COMUNICAÇÃO&#8221;</strong> (que imagino ser um problema de rede ou algo do tipo). A caixa do mercado repetiu o processo em outra máquina e o problema permaneceu. Até ai tudo bem. Afinal, indisponibilidade é algo que pode acontecer.</p>
<p>Passado alguns minutos, a caixa chamou o fiscal do mercado que nos atendeu de forma simpática e pegou uma outra máquina para tentar novamente fazer o pagamento (nesse momento eu já estava pensando em usar o cartão do banco de deixar pra lá o sodexo). Eis que a máquina informa que o saldo estava zerado, ou seja, teoricamente em alguma das passagens a compra foi paga. Percebi então que uma simples ida ao mercado ia me dar uma dor de cabeça sem tamanho.</p>
<p>O simpático fiscal, ao verificar o problema, foi a gerência da loja para tirar relatórios e verificar o que aconteceu. Voltando, a única coisa que saiu no relatório foram transações não concluídas. Nesse momento eu perguntei ao fiscal: O sistema não informa qual foi o problema? Ele me disse: Não, o sistema só informa que não foi relalizada. Acabei ficando sem saber o que estava acontecendo de fato, já que meu saldo estava zerado. A minha única certeza é que em algum lugar foi debitado a compra do meu cartão sodexo.</p>
<p>O próximo passo foi tentar verificar na sodexo. Abri meu iphone e entrei no site para verificar o saldo. Digitando o número do cartão e cpf, recebi a mensagem <strong>&#8220;Não foi encontrado um cartão para os dados informados&#8221;</strong>. Achei um pouco estranho e liguei para um amigo, passei meus dados e pedi para ele verificar, pois poderia ser que o site não oferecesse um comportamento correto no browser do iphone. Ele verificou e a mesma mensagem apareceu. Caiu a ficha. Estava acontecendo algum problema grave na Sodexo.</p>
<p>Liguei então para central de atendimento. O atendimento eletrônico me pediu o número de cartão e senha e em seguida me informou o saldo. Para minha surpresa, o saldo era o dobro do saldo que deveria ser, ou seja, nem estava zerado, nem estava correto. Comecei a falar com o atendente e pedi meu saldo novamente. Ele me disse: Seu saldo é zero. Retruquei: Como zero se o atendimento eletrônico me disse o saldo X? Ele respondeu: Houve uma queda geral nos sistemas e estamos dando o prazo de até as 00:00 de hoje para tudo voltar ao normal.</p>
<p>No fim das contas paguei com cartão de débito do banco.</p>
<p><strong>Análise do problema.</strong></p>
<p>Após esse incidente, pensei um pouco sobre esse sistema de pagamentos.</p>
<p>Sobre a compra, provavelmente o que aconteceu é que o Sodexo debitou o valor e como a máquina não respondeu e o sistema caiu, a transação deve ter ficado pendente, prendendo meu saldo. Nesse momento, fazia sentido não ter saldo até que o sistema fosse restabelecido por completo. Mesmo assim, alguma coisa me incomodou. <strong>Por que a mensagem de retorno não poderia informar o que estava acontecendo? </strong>Não poderia informar alguma coisa melhor que &#8220;FALHA NA COMUNICAÇÃO&#8221;? Naquela hora, eu não sabia se o problema era da Sodexo, que não informava um código/retorno de erro adequado, ou se a máquina não tratava os retornos de erros corretamente.</p>
<p>Enviar mensagens de erro corretamente e fazer tratamento de forma adequada são fundamentais na comunicação com o usuário, quando o sistema apresenta comportamentos inesperados. A falta de atenção nisso é mais comum do que parece e vou exemplificar. Existem diversos sistemas que ignoram mensagens, como por exemplo situações onde um dos lados (ou ambos) em uma comunicação  <a href="http://formassembly.com/blog/treating-the-http-status-code-right/" target="_blank">ignoram os status code http</a>. Ex:</p>
<pre class="brush: plain; title: ;">
HTTP/1.1 200 OK
Content-Type: text/xml

&lt;error&gt;
  &lt;code&gt;123&lt;/code&gt;
  &lt;message&gt;Ocorreu um erro&lt;/message&gt;
&lt;/error&gt;
</pre>
<p>Percebeu o problema?</p>
<p>Outro caso bem comum acontece quando quem envia uma mensagem para um objeto trata todos os retornos de erros de forma igual e não mostra claramente a mensagem. Ex:</p>
<pre class="brush: java; title: ;">
try {
  objeto.fazAlgumaCoisa();
catch (Exception e) {
  log.error(&quot;Deu algum erro&quot;);
}
</pre>
<p>Já vi muito código assim e isso dificulta bastante pra quem está tentando entender o que está acontecendo.</p>
<p>Pior que isso foi o sistema web me dizer que não achou meu cartão, quando na verdade algum outro sistema que esse se comunica estava fora do ar. Não podia simplesmente informar algo como <strong>&#8220;Nosso sistema está em manutenção, previsão de retorno para X horas&#8221;</strong>? Cartão inexistente é inadmissível, pois certamente o cliente ficará confuso sobre o que está acontecendo.</p>
<p>E o saldo no atendimento eletrônico que estava dobrado? Eu aprendi certa vez que esse tipo de informação deveria vir de <a href="http://www.c2.com/cgi/wiki?DontRepeatYourself" target="_blank">somente um lugar</a>. No caso eu obtive 3 valores diferentes para meu saldo, o que me indica que esse principio não foi respeitado.</p>
<p>E sobre a indisponibilidade do sistema? Que tal enviar automaticamente um SMS/twitter/email ou qualquer outra coisa para que os clientes possam se preparar para esse tipo de situação? Ser pego de surpresa é sempre ruim.</p>
<p><strong>Conclusão</strong></p>
<p>Comunicação não é só importante entre pessoas. Nossos Softwares precisam comunicar-se adequadamente com seus usuários. Muitos ignoram isso completamente. Tenho certeza que podemos melhorar isso.
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://codificando.com/2010/06/seu-software-tambem-deve-comunicar-se-corretamente/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Rails Summit 2009 &#8211; Resumo</title>
		<link>http://codificando.com/2009/10/rails-summit-2009-resumo/</link>
		<comments>http://codificando.com/2009/10/rails-summit-2009-resumo/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 23:57:17 +0000</pubDate>
		<dc:creator>Emerson Macedo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[engenharia]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testes]]></category>
		<category><![CDATA[evento]]></category>

		<guid isPermaLink="false">http://codificando.com/?p=238</guid>
		<description><![CDATA[O Rails Summit terminou. Foi um evento bem legal, com ótimas palestras e a galera de sempre, que já conhecemos. Vou fazer um resumo das palestras que assisti. Chad Fowler &#8211; http://chadfowler.com A palestra do Chad foi como sempre focada &#8230; <a href="http://codificando.com/2009/10/rails-summit-2009-resumo/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O Rails Summit terminou. Foi um evento bem legal, com ótimas palestras e a galera de sempre, que já conhecemos.</p>
<p>Vou fazer um resumo das palestras que assisti.</p>
<p><strong>Chad Fowler &#8211; <a href="http://chadfowler.com">http://chadfowler.com</a><br />
</strong></p>
<p>A palestra do Chad foi como sempre focada em carrreia. Ele advertiu os desenvolvedores que produzem porcaria todo dia sem peso algum na consciência. Ele pensa (e eu também) que nós não devemos investir tempo desnvolvendo coisas que já sabemos que são porcaria. E isso não é pessimismo, simplesmente é não perder tempo.</p>
<p>Chad falou também sobre os FUDs que sempre usam contra Ruby/Rails. Isso não foi nenhuma novidade mas ele abordou de forma bem divertida e valeu muto a pena.</p>
<p>Uma das partes mais legais foi a estatística mostrando que Ruby só faz parte de 6% da requisição do usuário. Na verdade não só ruby, mas outra tecnologia também. Isso bom para refletirmos sobre as discussões sobre performance e escalabilidade das aplicações web.</p>
<p><strong>Gregg Pollack &#8211; <a href="http://envlabs.com">http://envlabs.com</a><br />
</strong></p>
<p>O foco da palestra do gregg foi sobre como atacar alguns pontos para o otimizar sua aplicação Rails. Dentre as formas, ele apresentou algumas gems/plugins que ajudam a identificar alguns pontos para melhoria de performance em uma aplicação. Vou destacar algumas:</p>
<ul>
<li>Bullet &#8211; Ajuda a identificar queries com alguns problemas. Ex: N + 1</li>
<li>Rails Indexes &#8211; Identifica colunas onde deveriam ter índices. Se baseia nas buscas do sistema.</li>
<li>Scrooge &#8211; Faz com que o ActiveRecord passe a buscar somente os campos que estão sendo usados, ao invés de buscar todos os campos. Ex: em um find(:all), após a primeira execução, o scrooge identifica quais campos foram usados e ná próxima vez modifica a query para não buscar os campos desnecessários.</li>
<li>Rack Bug &#8211; É uma Monitor para aplicações Rack. Fornece basicamente todas as informações. Sessões, CPU, Memória, etc. Bem útil</li>
<li>oink &#8211; Mostra detalhes dos requests de cada controller. Ex: consumo de memória.</li>
<li>Cloud Crowd &#8211; Servidor para rodar tarefas em background. Feito em sinatra.</li>
</ul>
<p><strong>Ilya Grigorik &#8211; <a href="http://www.igvita.com/about/">http://www.igvita.com/about/</a><br />
</strong></p>
<p>Ilya falou sobre integração/comunicação de aplicações baseadas em web, utilizando-se de tecnologias como XMPP, AMQP, Webhooks, PubsubHubbub. Foi bem interessante, pois a maioria do auditório conhecia pouco sobre o assunto.</p>
<p><strong>Fabio Akita &#8211; <a href="http://akitaonrails.com">http://akitaonrails.com</a><br />
</strong></p>
<p>A palestra do akita foi sobre agile. Ele falou bastante sobre a teoria do caos, sistemas complexos e a evolução das coisas. No fim, o recado maior foi alertar que agile não é o último estágio no desenvolvimento de software, deixando claro que temos (e vamos) que evoluir ainda mais.</p>
<p><strong>Glenn Vanderburg &#8211; <a href="http://blog.thinkrelevance.com">http://blog.thinkrelevance.com</a><br />
</strong></p>
<p>Palestra sobre o framework Tarantula, que tem por objetivo fazer testes de ataques XSS, SQL Injection, entre outros. Achei bem interessante, pois é possível automatizar esse passo, que geralmente fazemos manualmente. Glenn inclusive sugeriu que faça parte do build antes de lançar um release.</p>
<p><strong>Fabio Kung &#8211; <a href="http://fabiokung.com/">http://fabiokung.com/</a><br />
</strong></p>
<p>Fabio fez uma ótima palestra sobre DSLs (Domain Specific Languages) internas usando Ruby. Ao invés de apresentar exemplos simples ele apresentou um exemplo real de uma necessidade de uma aplicação que trata de instâncias de máquinas na cloud da Locaweb.</p>
<p><strong>Carlos Vilella <a href="http://lixo.org">http://lixo.org</a><br />
</strong></p>
<p>Carlos fez uma palestra bem curta, falando sobre o uso de Ruby na Thoughtworks. Falou sobre os poucos projetos que falharam e deixou o restante do tempo para perguntas.</p>
<p><strong>Tapajós &#8211; <a href="http://tapajos.me/">http://tapajos.me/</a><br />
</strong></p>
<p>A palestra do Tapajós foi sobre bancos de dados não relacionais. Focado bastante em CouchDB e Rails, ele explorou algumas features chaves na utilização dessa abordagem de banco de dados, também fazendo uma curta palestra e deixando boa parte do tempo para perguntas.</p>
<p><strong>Bruno Miranda &#8211; Rails não escala</strong></p>
<p>Eu gostei muto da palestra do Bruno, apesar de achar que o que ele falou é básico para qualquer Arquiteto de Software experiente.  Bruno falou bastante sobre filas, sharding, Cache, Proxy reverso, otimização de queries e sobre rodar processos em background. Acho que a palestra dele foi válida pois qualquer um hoje em dia que aprende tecnologias como Rails sai fazendo aplicações sem um conhecimento mínimo de arquitetura de software. Quando as coisas não dão certo culpam a tecnologia, gerando FUDs.</p>
<p><strong>Vinicius Teles (<a href="http://improveit.com.br/">http://improveit.com.br/</a>) &#8211; Empreendorismo</strong></p>
<p>A palestra do Vinícius foi ótima para quem pretende desenvolver um produto e/ou abrir seu próprio negócio. Ele abordou pontos como Fluxo de Caixa, oportunidades vastas que existem no Brasil e o impacto de pequenas decisões certas ou erradas que tomamos na nossa vida profissional.</p>
<p><strong>Obie Fernandes &#8211; <a href="http://obiefernandez.com/">http://obiefernandez.com/</a><br />
</strong></p>
<p>A palestra do Obie encerrou o evento em grande estilo, falando sobre talento, esforço e reforçando bem <a href="http://codificando.com/2009/06/07/afinal-o-que-seria-um-profissional-senior/">o que eu disse há um tempo atrás nesse blog</a>. Não adianta você saber um monte de coisas se não souber bem, se não tiver experiência com isso, treino, treino e mais treino. Você só ganha nível com tempo e treino, isso é fato.</p>
<p>Pra finalizar, gostaria de parabenizar ao <a href="http://akitaonrails.com">Fabio Akita</a> e a <a href="http://www.locaweb.com.br">Locaweb</a> pelo excelente evento mais uma vez.</p>
<p>E ano que vem tem mais.
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://codificando.com/2009/10/rails-summit-2009-resumo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

