<?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>Blog de desenvolvimento Milfont</title>
	<atom:link href="http://www.milfont.org/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.milfont.org/tech</link>
	<description>Blog da Comunidade Comercial Milfont Consulting, uma empresa especializada em desenvolvimento Web, principalmente Javascript, Rails, Node.js e Java.</description>
	<lastBuildDate>Tue, 15 Jan 2013 15:05:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>ExtJS e programação funcional &#8211; 2</title>
		<link>http://www.milfont.org/tech/2013/01/15/extjs-e-programacao-funcional-2/</link>
		<comments>http://www.milfont.org/tech/2013/01/15/extjs-e-programacao-funcional-2/#comments</comments>
		<pubDate>Tue, 15 Jan 2013 15:05:55 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Ext]]></category>
		<category><![CDATA[Programação funcional]]></category>
		<category><![CDATA[ExtJS]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1749</guid>
		<description><![CDATA[[disclaimer] Os códigos desse post estão no Gist do Github, se não aparece no seu leitor de Feeds vai ter que entrar no site ou ir direto para o github [/disclaimer] Continuando a falar sobre programação funcional com o Framework ExtJS, vou avançar sobre a API que fornece funções úteis para trabalhar sob esse paradigma e [...]]]></description>
				<content:encoded><![CDATA[<p>[disclaimer]<br />
<strong>Os códigos desse post estão no Gist do Github, se não aparece no seu leitor de Feeds vai ter que entrar no site ou ir direto para o <a href="https://gist.github.com/4539022">github</a></strong><br />
[/disclaimer]</p>
<p>Continuando a falar sobre <a href="http://www.milfont.org/tech/2012/12/11/extjs-e-programacao-funcional/">programação funcional com o Framework ExtJS</a>, vou avançar sobre a API que fornece funções úteis para trabalhar sob esse paradigma e quando a abordagem complica a leitura, principalmente para quem não tem tanta intimidade com essa forma de pensar.</p>
<p>Imagine o seguinte Widget abaixo que tem a responsabilidade de plugar uma função para observar o evento busca de outro componente.</p>
<p><script type="text/javascript" src="https://gist.github.com/4539022.js?file=a.js"></script></p>
<p>Se voce observar atentamente, o mapeamento é feito um-para-um com uma função que já existe no componente final, inclusive com a mesma quantidade de parâmetros, vimos no artigo passado que bastaria plugar a função diretamente e controlar o escopo this dessa função.</p>
<p><script type="text/javascript" src="https://gist.github.com/4539022.js?file=b.js"></script></p>
<p>Agora imagine que o componente Sorteio tem mais uma responsabilidade no momento que o botão de outro componente for acionado, ele precisaria limpar a área de um terceiro componente, teríamos que voltar o código do primeiro exemplo e fazer aquele mapeamento em um método do próprio componente Sorteio:</p>
<p><script type="text/javascript" src="https://gist.github.com/4539022.js?file=c.js"></script></p>
<p>Bem, com as funções encontradas no objeto <a href="http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Function">Ext.Function</a> podemos mapear diretamente os métodos dos responsáveis principais sem a necessidade de uma terceira função no objeto Sorteio numa abordagem mais FP aproveitando funções úteis que encadeam execuções e retornam outra funções com a sequência desejada.</p>
<p>A assinatura de colocar um listener escutando um determinado evento é:</p>
<p><code>this.sorteioform.on("busca", fn, escopo);</code></p>
<p>Desejamos executar duas funções de objetos distintos em uma sequência lógica, mas só podemos plugar uma única função por vez. Existe um método <a href="http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Function-method-createSequence">createSequence</a> que fornece esse comportamento desejado, observe:</p>
<p><code> var fn = Ext.Function.createSequence(fn1, fn2, escopo); </code></p>
<p>Esse método gerará uma terceira função com o this dentro dela referente ao escopo passado no terceiro argumento e executará as duas funções &#8211; fn1 e fn2 &#8211; na sequência indicada.</p>
<p>Poderíamos simplesmente encadear as duas funções dos dois objetos na assinatura</p>
<p><code> var fn = Ext.Function.createSequence(this.concorrentes.listar, this.ganhadores.update, this.concorrentes); </code></p>
<p>Mas tem somente um problema, a função this.ganhadores.update precisa receber um parâmetro &#8211; no mínimo uma string vazia &#8220;&#8221; &#8211; para ter o comportamento adequado.</p>
<p>Existe uma outra função chamada <a href="http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Function-method-pass">pass</a> que gera uma outra função com essa característica, voce pode definir uma função com valores previamente definidos caso não haja passagem de parâmetros.</p>
<p><code> var fn2 = Ext.Function.pass(this.ganhadores.update, ""); </code></p>
<p>Dessa forma basta substituir agora a segunda função da sequência por uma gerada com valores predefinidos.</p>
<p><code><br />
var fn2 = Ext.Function.pass(this.ganhadores.update, "");<br />
var fn = Ext.Function.createSequence(this.concorrentes.listar, fn2, this.concorrentes);<br />
</code></p>
<p>Para garantir que o update executará no escopo de ganhadores, teríamos que definir o terceiro argumento para ganhadores</p>
<p><code> var fn = Ext.Function.createSequence(this.concorrentes.listar, fn2, this.ganhadores);  </code></p>
<p>E para garantir que o this no listener execute cada função da sequência nos seus contextos corretos voce define o escopo do on para concorrentes<br />
<code> this.sorteioform.on("busca", fn, this.concorrentes); </code></p>
<p>O resultado final seria um encadeamento das chamadas como podemos ver logo em seguida:</p>
<p><script type="text/javascript" src="https://gist.github.com/4539022.js?file=d.js"></script></p>
<p>Se voce comparar com uma abordagem mais tradicional verá que nem sempre é mais fácil de ler, portanto é salutar dosar o uso desse tipo de solução.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2013/01/15/extjs-e-programacao-funcional-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retrospectiva JavaCE 2012</title>
		<link>http://www.milfont.org/tech/2013/01/01/retrospectiva-javace-2012/</link>
		<comments>http://www.milfont.org/tech/2013/01/01/retrospectiva-javace-2012/#comments</comments>
		<pubDate>Tue, 01 Jan 2013 15:43:41 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[javace]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1739</guid>
		<description><![CDATA[Esse ano foi de grandes realizações na nossa comunidade, fizemos nossa primeira grande conferência, o primeiro Hackathon com prêmios no ceará, continuamos as ações filantrópicas, eventos menores, mantivemos a cordialidade nas regras da lista e organização de caravanas com descontos para os principais eventos nacionais. Agora a força de uma comunidade é medida pelas ações [...]]]></description>
				<content:encoded><![CDATA[<p>Esse ano foi de grandes realizações na nossa comunidade, fizemos nossa <a href="http://www.javace.org/javace-eventos/javace-community-conference-2012/">primeira grande conferência</a>, o <a href="http://www.javace.org/javace-eventos/hackathon-javace-2012/">primeiro Hackathon</a> com prêmios no ceará, continuamos as <a href="http://www.javace.org/javace-social/">ações filantrópicas</a>, eventos <a href="http://www.javace.org/javace-com-guilherme-silveira/">menores</a>, mantivemos a cordialidade nas <a href="http://groups.google.com/group/javace">regras da lista</a> e <a href="http://www.javace.org/caravanas-javace/">organização de caravanas</a> com descontos para os principais eventos nacionais.</p>
<p><a href="http://www.loiane.com/2012/07/javace-2012-eu-fui-e-palestrei/"><img class="alignnone" title="Palestrantes" src="http://www.loiane.com/wp-content/uploads/2012/07/javace-2012-03.jpg" alt="Palestrantes da JavaCE Conference" width="800" height="504" /></a></p>
<p>Agora a força de uma comunidade é medida pelas ações de seus membros, pedimos à própria comunidade para analisar o ano com uma <a href="http://en.wikipedia.org/wiki/Retrospective">retrospectiva</a> no <a href="https://docs.google.com/spreadsheet/viewform?formkey=dHpQUFVpRGpORnJlRnRqd1RTd3A0aFE6MQ#gid=0">formulário</a> enviado ao grupo. Destaquei algumas respostas dentre as que recebemos:</p>
<h3>Quais os pontos positivos na nossa comunidade em 2012?</h3>
<blockquote><p>&#8220;Integração com a rede de desenvolvedores, troca de conhecimento que é extremamente importante.&#8221;</p>
<p>&#8220;Ponto positivo o sucesso na organização da javace conference, um evento de altissimo nivel a preço acessivel e muito bem organizado. As açoes filantropicas tambem é um ponto positivo principalmente quando são ministrados mini cursos a preços irrisorios como uma lata de leite em pó.&#8221;</p>
<p>&#8220;Amizade&#8221;</p>
<p>&#8220;Compartilhamento de informações relevantes à comunidade.&#8221;</p>
<p>&#8220;Achei excelente  a iniciativa do evento JavaCE Community Conference.&#8221;</p>
<p>&#8220;Caravana QCON JAVA CE&#8221;</p>
<p>&#8220;Partilha de conteúdo, sempre ajudando quem tah com dúvidas. Caravanas e participação em eventos a nível nacional&#8221;</p>
<p>&#8220;Lista bem movimentada e com boa participação.&#8221;</p>
<p>&#8220;Troca de infomações, possibilitando assim o crescimento homogeneo d comunidade&#8221;</p></blockquote>
<h3>Quais os pontos negativos?</h3>
<blockquote><p>&#8220;bom se todos os eventos fossem em fins de semana&#8230;&#8221;</p>
<p>&#8220;o ponto negativo não se enquadra aos organizadores mas sim aos amantes de tecnologia do ceará que ainda não despertaram para importancia que certos eventos tem, deixando a desejar em presença nos mesmos&#8221;</p>
<p>&#8220;Ainda precisa de mais organização&#8221;</p>
<p>&#8220;Como sempre, as pessoas, quando chegam a um determinado patamar de conhecimento, acho que elas perdem um pouco a humildade, ou pelo menos esquecem que não nasceram sabendo, e quando uma dúvida, por mais simples que seja é postada, o pessoal fica diminuindo, menosprezando, caçoando e até mesmo humilhando os detentores pouco conhecimento. Creio que isso seja um mal do ser humano, pois vejo isso em outros lugares. Consequência disso, algumas pessoas se sentem inibidas quanto a perguntar, como nas salas de aula, que alguém perguntava alguma coisa e os outros &#8220;mangavam&#8221;! Contudo, creio que esse comportamento, pode ser modificado, poderia ser feito uma campanha mostrando e pedindo humildade na passagem de conhecimento, por mais simples que seja a dúvida. &#8221;</p>
<p>&#8220;Gostaria de mais eventos pago de alto porte. Adoraria a organização de dojos de algumas linguagens.&#8221;</p>
<p>&#8220;Sucessivas discussões acerca de assuntos de sindicato. Não dá em nada e geram threads gigantescas.&#8221;</p>
<p>&#8220;Poderia haver mais discussões técnicas na lista. Nos últimos tempos só vejo gente tirando dúvida sobre frameworks ou dúvidas que não vão além do feijão com arroz que usa pra trabalhar com Java. Poderia haver discussões sobre arquitetura de sistemas, boas práticas de programação, uso de metodologias ágeis, técnicas de teste de software e por aí vai. Não sei se isso fugiria aos objetivos da lista, mas eu creio que não.&#8221;</p>
<p>&#8220;Discussões boas que as vezes se arrastam com colegas perdendo a noção de quando o assunto já deu o que tinha que dar.&#8221;</p>
<p>&#8220;As threads as vezes tem muita discussão desnecessária.&#8221;</p>
<p>&#8220;Algumas postagens na lista sao meio com a intenção de propaganda, mas acho que isso é normal e não compromete.&#8221;</p></blockquote>
<h3>Deveríamos repetir o evento JavaCE Community em 2013?</h3>
<p>Todos em uníssono escreveram: SIM</p>
<h3>Sua impressão sobre o evento JavaCE Community realizado em agosto</h3>
<blockquote><p>&#8220;Muito bom, palestras de alto nivel tecnico e muito bem organizado.&#8221;</p>
<p>&#8220;Muito bom o evento! divertido e aproveitador&#8230;&#8221;</p>
<p>&#8220;Ótima organização, ótimos palestrantes e boa pontualidade. Exemplo a ser seguido.&#8221;</p>
<p>&#8220;Muito bom. Quero mais.&#8221;</p>
<p>&#8220;O evento tem tudo para crescer mais a cada edição.&#8221;</p>
<p>&#8220;Evento bem organizado com a presença de grandes nomes do desenvolvimento de software no Brasil. Palestras bem diversificadas e com temas bem selecionados.&#8221;</p>
<p>&#8220;Boa organização e bom conteúdo.&#8221;</p>
<p>&#8220;Evento muito bom, excelente. Nível dos palestrantes altíssimo. Só achei um pouco longo, quase todo mundo saiu antes do evento terminar.&#8221;</p></blockquote>
<h3>Extra</h3>
<blockquote><p>&#8220;Uma sugestão poderia se fazer workshops/mini-cursos no javaCe.&#8221;</p>
<p>&#8220;Parabéns aos que dedicam seu tempo à comunidade&#8221;</p></blockquote>
<h3>Considerações</h3>
<p>Vamos analisar as respostas e planejar todas as ações do grupo tendo em mente a melhoria contínua sobre as opiniões dos próprios membros dessa comunidade vibrante.</p>
<div class="wp-caption alignnone" style="width: 465px"><img class=" " title="Guilherme Silveira" src="https://lh5.googleusercontent.com/--rB_tWmOo2w/TpSF4D-LvrI/AAAAAAAAB8c/VaGsvdmdAtY/s759/DSC00611.JPG" alt="Guilherme Silveira" width="455" height="341" /><p class="wp-caption-text">Guilherme Silveira</p></div>
<h3>Temas destaques para 2013</h3>
<p>Deixo minha impressão sobre alguns temas que abocanharão as discussões e relevâncias nos principais eventos agora em 2013 pelos &#8220;ventos que nos assopram&#8221;:</p>
<p>HTML 5, FP (Programação funcional) entrando no Mainstream, Mobile &#8211; tudo indica que aparentemente Android terá um destaque maior, Rails 4 e ecossistema em volta do Java 7 (inclusive reforçando programação funcional).</p>
<p>Minha grande dúvida é: Java retoma dando uma freada em Scala na JVM como principal destaque na plataforma?</p>
<p>Investigaremos esses tópicos e muito mais em eventos ao longo do ano, até lá!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2013/01/01/retrospectiva-javace-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ExtJS e programação funcional</title>
		<link>http://www.milfont.org/tech/2012/12/11/extjs-e-programacao-funcional/</link>
		<comments>http://www.milfont.org/tech/2012/12/11/extjs-e-programacao-funcional/#comments</comments>
		<pubDate>Wed, 12 Dec 2012 00:42:25 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Ext]]></category>
		<category><![CDATA[Programação funcional]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[funcio]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1726</guid>
		<description><![CDATA[[disclaimer] Os códigos desse post estão no Gist do Github, se não aparece no seu leitor de Feeds vai ter que entrar no site ou ir direto para o github [/disclaimer] Javascript possui funções como tipos de primeira classe na linguagem e implementa vários conceitos de programação funcional, mas essa forma de programar sempre é [...]]]></description>
				<content:encoded><![CDATA[<p>[disclaimer]<br />
<strong>Os códigos desse post estão no Gist do Github, se não aparece no seu leitor de Feeds vai ter que entrar no site ou ir direto para o <a href="https://gist.github.com/4263734">github</a></strong><br />
[/disclaimer]</p>
<p>Javascript possui funções como tipos de primeira classe na linguagem e implementa vários conceitos de programação funcional, mas essa forma de programar sempre é relegada quando escrevemos código com ExtJS.</p>
<p>Observe no código abaixo um trecho usando ExtJS para expandir as linhas de uma Grid:</p>
<p><script type="text/javascript" src="https://gist.github.com/4263734.js?file=a.js"></script>Código imperativo comum encontrado nos projetos com ExtJS, o mesmo código conhecendo um pouco a API pode ser feito como se vê abaixo:<script type="text/javascript" src="https://gist.github.com/4263734.js?file=b.js"></script></p>
<p>Você percebe que utilizando uma abordagem só um pouco mais funcional (como passar função como argumento de outra função) nem sempre vai ter menos código e pode até ser bem maior, mas observando a API com mais atenção você detecta que o método <strong>toggleRow</strong> pode receber tanto um index quanto o próprio <strong>Model</strong>, então você abusa mais um pouquinho e passa a própria função como argumento do método <strong>each </strong>(como podemos ver abaixo)<strong>.</strong></p>
<p><script type="text/javascript" src="https://gist.github.com/4263734.js?file=c.js"></script>Comparando os dois códigos você pode até reclamar que a sintaxe imperativa vai ser mais fácil de ler, aí será questão de conhecimento em programação e experiência com essas outras abordagens, reconheço que programação funcional não é comum principalmente para quem programa com ExtJS no cotidiano.<script type="text/javascript" src="https://gist.github.com/4263734.js?file=d.js"></script></p>
<p>Apesar de tudo vale a pena se esforçar um pouco e começar a escrever um código mais funcional.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2012/12/11/extjs-e-programacao-funcional/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CEJS 0.0.3</title>
		<link>http://www.milfont.org/tech/2012/10/27/cejs-0-0-3/</link>
		<comments>http://www.milfont.org/tech/2012/10/27/cejs-0-0-3/#comments</comments>
		<pubDate>Sat, 27 Oct 2012 13:08:11 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[cejs]]></category>
		<category><![CDATA[cearajs]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1719</guid>
		<description><![CDATA[CEJS é uma comunidade criada em consonância com os movimentos similares ao redor do mundo que se uniram para promover e disseminar o Javascript e suas ferramentas. A versão 0.0.3 do nosso encontro trará mais conteúdo e é gratuito. Inscrição Formulário para inscrição. Local, Data e Horário Faculdade 7 de Setembro. Endereço no rodapé no site da [...]]]></description>
				<content:encoded><![CDATA[<p>CEJS é uma comunidade criada em <a href="http://communityjs.com/">consonância com os movimentos</a> similares ao redor do mundo que se uniram para promover e disseminar o Javascript e suas ferramentas. A versão 0.0.3 do nosso encontro trará mais conteúdo e é gratuito.</p>
<h3>Inscrição</h3>
<p><a href="https://docs.google.com/spreadsheet/viewform?formkey=dEVkQ09kRl9NYzV2UVFsNl9BZjVjQXc6MQ">Formulário para inscrição.</a></p>
<h3>Local, Data e Horário</h3>
<p>Faculdade 7 de Setembro. Endereço no <a href="http://www.fa7.edu.br/">rodapé no site da FA7</a>.</p>
<p>Sábado, 10 de novembro de 2012. Início as 14:30.</p>
<h3>Palestras</h3>
<h4>Notificações com HTML5</h4>
<p>Descrição:</p>
<p>Apresentarei a utilização de notificações via push com HTML5, de duas maneiras diferentes:<br />
- Uma utilizando uma infra-estrutura com NodeJS e Socket.io;<br />
- Outra utilizando o serviço Pusher, que já provê essa infra-estrutura e torna o desenvolvimento mais transparente.</p>
<p>Sobre o Palestrante <a href="https://twitter.com/rodrigodealer">Rodrigo Oliveira</a>:</p>
<p>&#8220;Desenvolvo há cerca de 8 anos, já me aventurei PHP, Ruby, Java, JavaScript e tenho brincado com Scala e Objective-C. Sou sócio-fundador da Pôr do Tom, empresa de desenvolvimento, consultoria e treinamentos.&#8221;</p>
<h4>Do nada para a nuvem, á jato</h4>
<p>Descrição:</p>
<p>O foco é mostrar como ferramentas modernas em javascript facilitam nosso trabalho de criar, manter e publicar aplicações web e/ou APIs para o mundo.</p>
<p>Vamos criar uma aplicação do zero e publicar na internet, utilizando ferramentas e frameworks modernos como: Sublime text 2, grunt.js (lint, minify, uglify, ciclo de desenvolvimento), angularjs + testacular (framework web + framework de testes) e couchdb (deploy local, e se tiver internet deploy na nuvem do cloudant).</p>
<p>Sobre o Palestrante <a href="https://twitter.com/rsvalerio">Rodrigo Valério</a>:</p>
<p>&#8220;Rodrigo Valério, trabalho com desenvolvimento de sistema a mais de 10 anos.<br />
Tendo experiência em integração das mais deiversas aplicações e linguagens em várias empresas de todo o Brasil. Atualmente trabalhando nas farmácias paguemenos, em projetos inovadores como Ecommerce e Conferencia de mercadorias. http://www.linkedin.com/pub/rodrigo-val%C3%A9rio/5/643/4a5&#8243;</p>
<h4>Plugins jQuery &#8211; level up</h4>
<p>Descrição:</p>
<p>Desenvolver plugins jQuery simples é fácil, mas o que fazer quando seu plugin não é simples ?</p>
<p>Você precisa:<br />
# &#8220;&#8221;despluginizar&#8221;" um elemento ?<br />
# permitir o usuário do plugin reagir a eventos e preveni-los ?<br />
# expor propriedades e métodos ?</p>
<p>Vou mostrar quais são os benefícios do jQueryUI widget factory e como usa-lo a seu favor.</p>
<p>Sobre o Palestrante <a href="https://twitter.com/AbrahamAlves">Abraão Alves</a>:</p>
<p>&#8220;Chamado de jQueryMan no tempo em que não sabia &#8216;bulufas&#8217; sobre javascript de verdade, hoje sou um cara apaixonado por web, sobretudo por javascript e suas possibilidades.</p>
<p>linkedin: http://www.linkedin.com/in/abrahamalves&#8221;</p>
<h4>Angry Carcarás: Uma Introdução ao cocos-2d e box2d em HTML5 e Javascript</h4>
<p>Descrição:</p>
<p>Vamos conhecer as implementações do cocos-2D e do box2D para HTML5 e Javascript através da construção de um game simples inspirado no glorioso &#8216;Angry Birds&#8217;.<br />
O objetivo é entender o funcionamento básico dessas engines e mostrar como você pode desenvolver seus games usando o poder do nosso querido Javascript.</p>
<p>Sobre o Palestrante Eduardo Braz do Vale:</p>
<p>Graduando em Sistemas de Informações FA7<br />
Desenvolvedor Web</p>
<p>http://br.linkedin.com/pub/eduardo-braz-do-vale/24/699/98a</p>
<h4>Backbone.js com Ruby on Rails. Integrando seu front-end com backend lindamente</h4>
<p>Descrição:</p>
<p>Como construir aplicações com front-end atualizável em tempo real sem precisar submeter formulário e atualizar a tela à medida que o servidor atualizar. Backbone.js com Ruby on Rails é a casadinha perfeita.</p>
<p>Sobre o Palestrante <a href="https://twitter.com/henriquegogo">Henrique Gogó</a>:</p>
<p>&#8220;Henrique Gogó já tentou trabalhar com música, já foi publicitário, e, apesar de ter cursado letras, descobriu que o que gosta de fazer é programar.</p>
<p>Fez muito trabalho em Drupal, mas meter a mão no código é sempre melhor, por isso trabalha Ruby desde 2009 e C# com ASP.NET MVC de 2011.</p>
<p>Acredita que um front-end bem planejado é fundamental, e adora usar a casadinha HTML + CSS + JS.&#8221;</p>
<h4>Da desordem ao MVEstrela</h4>
<p>Descrição:</p>
<p>Desenvolver aplicações a partir do zero, é fácil pensar que é só usar uma biblioteca de manipulação DOM (como jQuery ou Zepto.js) e uma meia dúzia de plugins e o problema estará resolvido. Mas, se a aplicação for um pouco mais complexa que o usual, você estará perdido no meio de diversos callbacks e elementos DOM sem nenhuma estrutura: o velho código espaguete. Felizmente, foram desenvolvidas frameworks Javascript que podem nos trazer paz e ordem e reduzir a tortura dos processos de manutenção de longo prazo.</p>
<p>Sobre a Palestrante <a href="https://twitter.com/jugoncalv3s">Jú Gonçalves</a>:</p>
<p>&#8220;Jú Gonçalves é mestranda em Informática Aplicada pela Universidade de Fortaleza e Webdesigner na CPQi. Sempre esteve no contexto de criação e desenvolvimento de interfaces, caminhando entre design e javascript nos projetos em que atua.&#8221;</p>
<p>http://www.linkedin.com/pub/j%C3%BA-gon%C3%A7alves/19/851/290</p>
<p>http://jugoncalv.es/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2012/10/27/cejs-0-0-3/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Rails Rumble 2012, nós participamos</title>
		<link>http://www.milfont.org/tech/2012/10/18/rails-rumble-2012-nos-participamos/</link>
		<comments>http://www.milfont.org/tech/2012/10/18/rails-rumble-2012-nos-participamos/#comments</comments>
		<pubDate>Thu, 18 Oct 2012 11:31:58 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[railsrumble]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1705</guid>
		<description><![CDATA[Mais uma vez participamos (@cmilfont, @rudrige, @alcidesqueiroz e @yuriadams) desse fantástico Hackathon da comunidade Rails que te desafia a escrever uma aplicação em apenas 48h. Havíamos participado da última edição do Rumble em 2010 com uma aplicação para organização/indexação de livros pessoais &#8211; uma pena não ter ocorrido em 2011. Dessa vez resolvemos construir uma [...]]]></description>
				<content:encoded><![CDATA[<p>Mais uma vez participamos (<a href="https://twitter.com/cmilfont">@cmilfont</a>, <a href="https://twitter.com/rudrige">@rudrige</a>, <a href="http://www.twitter.com/alcidesqueiroz">@alcidesqueiroz</a> e <a href="https://twitter.com/yuriadams">@yuriadams</a>) desse fantástico <a href="http://en.wikipedia.org/wiki/Hackathon">Hackathon</a> da comunidade Rails que te desafia a escrever uma aplicação em apenas 48h. <a href="http://henriquegogo.wordpress.com/2010/10/20/rails-rumble-2010/">Havíamos participado</a> da última edição do Rumble em 2010 com uma aplicação para organização/indexação de <a href="https://github.com/cmilfont/cordel">livros pessoais</a> &#8211; uma pena não ter ocorrido em 2011.<br />
<img src="https://lh4.googleusercontent.com/-Wk3bcp-oV1U/UH_VyMgAykI/AAAAAAAACkQ/wo4fV9O2jYA/s400/DSC_1446.JPG" alt="Rails Rumble" /></p>
<p>Dessa vez resolvemos construir uma rede social para conhecermos os times e equipes de Brazilian JiuJitsu desde sua origem até os dias atuais, chamamos de <a href="http://jiujitsuteam.com/">Jiujitsu Team</a>. Evidente que devido ao tempo e nossa disponibilidade não conseguimos fazer tudo que gostaríamos, mas fechamos um pequeno escopo e entregamos todo funcional, ao contrário de 2010.</p>
<p>Registramos <a href="http://jiujitsuteam.com/">o domínio</a> uns dias antes e esboçamos um escopo do que gostaríamos de fazer &#8211; imagem a baixo.</p>
<p><img src="https://lh3.googleusercontent.com/-NhU___LgKBA/UH_jtG27QbI/AAAAAAAACkg/VQLS6ag29V8/s400/DSC_1386.JPG" alt="Esboço do Projeto" /></p>
<p>No dia da competição eu ainda tentei fazer com TDD, mas ficou comprovado pra mim que eu não consigo &#8220;<a href="http://tech.dir.groups.yahoo.com/group/extremeprogramming/message/149026">I TDD my spikes solutions</a>&#8220;. Eu preciso de um tempo para maturar um projeto inicial, pelo menos a primeira versão &#8220;prototipal&#8221; nasce de experimentações num mexe-daqui-mexe-de-lá, mas depois voce consegue TDDar <img src='http://www.milfont.org/tech/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="gist3911139" class="gist">
      <div class="gist-file">
        <div class="gist-data gist-syntax">



  <div class="file-data">
    <table cellpadding="0" cellspacing="0" class="lines highlight">
      <tr>
        <td class="line-numbers">
          <span class="line-number" id="file-graduations_controller_spec-rb-L1" rel="file-graduations_controller_spec-rb-L1">1</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L2" rel="file-graduations_controller_spec-rb-L2">2</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L3" rel="file-graduations_controller_spec-rb-L3">3</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L4" rel="file-graduations_controller_spec-rb-L4">4</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L5" rel="file-graduations_controller_spec-rb-L5">5</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L6" rel="file-graduations_controller_spec-rb-L6">6</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L7" rel="file-graduations_controller_spec-rb-L7">7</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L8" rel="file-graduations_controller_spec-rb-L8">8</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L9" rel="file-graduations_controller_spec-rb-L9">9</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L10" rel="file-graduations_controller_spec-rb-L10">10</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L11" rel="file-graduations_controller_spec-rb-L11">11</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L12" rel="file-graduations_controller_spec-rb-L12">12</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L13" rel="file-graduations_controller_spec-rb-L13">13</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L14" rel="file-graduations_controller_spec-rb-L14">14</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L15" rel="file-graduations_controller_spec-rb-L15">15</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L16" rel="file-graduations_controller_spec-rb-L16">16</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L17" rel="file-graduations_controller_spec-rb-L17">17</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L18" rel="file-graduations_controller_spec-rb-L18">18</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L19" rel="file-graduations_controller_spec-rb-L19">19</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L20" rel="file-graduations_controller_spec-rb-L20">20</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L21" rel="file-graduations_controller_spec-rb-L21">21</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L22" rel="file-graduations_controller_spec-rb-L22">22</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L23" rel="file-graduations_controller_spec-rb-L23">23</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L24" rel="file-graduations_controller_spec-rb-L24">24</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L25" rel="file-graduations_controller_spec-rb-L25">25</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L26" rel="file-graduations_controller_spec-rb-L26">26</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L27" rel="file-graduations_controller_spec-rb-L27">27</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L28" rel="file-graduations_controller_spec-rb-L28">28</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L29" rel="file-graduations_controller_spec-rb-L29">29</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L30" rel="file-graduations_controller_spec-rb-L30">30</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L31" rel="file-graduations_controller_spec-rb-L31">31</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L32" rel="file-graduations_controller_spec-rb-L32">32</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L33" rel="file-graduations_controller_spec-rb-L33">33</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L34" rel="file-graduations_controller_spec-rb-L34">34</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L35" rel="file-graduations_controller_spec-rb-L35">35</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L36" rel="file-graduations_controller_spec-rb-L36">36</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L37" rel="file-graduations_controller_spec-rb-L37">37</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L38" rel="file-graduations_controller_spec-rb-L38">38</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L39" rel="file-graduations_controller_spec-rb-L39">39</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L40" rel="file-graduations_controller_spec-rb-L40">40</span>
          <span class="line-number" id="file-graduations_controller_spec-rb-L41" rel="file-graduations_controller_spec-rb-L41">41</span>
        </td>
        <td class="line-data">
          <pre class="line-pre"><div class="line" id="file-graduations_controller_spec-rb-LC1"><span class="c1"># -*- encoding : utf-8 -*-</span></div><div class="line" id="file-graduations_controller_spec-rb-LC2"><span class="nb">require</span> <span class="s1">&#39;spec_helper&#39;</span></div><div class="line" id="file-graduations_controller_spec-rb-LC3">&nbsp;</div><div class="line" id="file-graduations_controller_spec-rb-LC4"><span class="n">describe</span> <span class="no">GraduationsController</span> <span class="k">do</span></div><div class="line" id="file-graduations_controller_spec-rb-LC5">&nbsp;</div><div class="line" id="file-graduations_controller_spec-rb-LC6">  <span class="n">describe</span> <span class="s2">&quot;GET belts&quot;</span> <span class="k">do</span></div><div class="line" id="file-graduations_controller_spec-rb-LC7">    </div><div class="line" id="file-graduations_controller_spec-rb-LC8">    <span class="n">before</span> <span class="k">do</span></div><div class="line" id="file-graduations_controller_spec-rb-LC9">      <span class="vi">@belts</span> <span class="o">=</span> <span class="o">[]</span></div><div class="line" id="file-graduations_controller_spec-rb-LC10">      <span class="mi">7</span><span class="o">.</span><span class="n">times</span> <span class="p">{</span><span class="o">|</span><span class="n">n</span><span class="o">|</span> <span class="vi">@belts</span> <span class="o">&lt;&lt;</span> <span class="no">FactoryGirl</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="ss">:belt</span><span class="p">,</span> <span class="ss">:name</span> <span class="o">=&gt;</span> <span class="s2">&quot;</span><span class="si">#{</span><span class="n">n</span><span class="si">}</span><span class="s2"> belt&quot;</span> <span class="p">)}</span></div><div class="line" id="file-graduations_controller_spec-rb-LC11">      <span class="no">Belt</span><span class="o">.</span><span class="n">stub</span><span class="p">(</span><span class="ss">:all</span><span class="p">)</span><span class="o">.</span><span class="n">and_return</span> <span class="vi">@belts</span></div><div class="line" id="file-graduations_controller_spec-rb-LC12">    <span class="k">end</span></div><div class="line" id="file-graduations_controller_spec-rb-LC13">    </div><div class="line" id="file-graduations_controller_spec-rb-LC14">    <span class="n">it</span> <span class="s2">&quot;should list all belts&quot;</span> <span class="k">do</span></div><div class="line" id="file-graduations_controller_spec-rb-LC15">      <span class="n">get</span> <span class="ss">:belts</span><span class="p">,</span> <span class="ss">:format</span> <span class="o">=&gt;</span> <span class="ss">:json</span></div><div class="line" id="file-graduations_controller_spec-rb-LC16">      <span class="n">assigns</span><span class="o">[</span><span class="ss">:belts</span><span class="o">].</span><span class="n">should</span> <span class="o">==</span> <span class="vi">@belts</span></div><div class="line" id="file-graduations_controller_spec-rb-LC17">      <span class="n">assigns</span><span class="o">[</span><span class="ss">:belts</span><span class="o">].</span><span class="n">should</span> <span class="n">have</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span><span class="o">.</span><span class="n">belts</span></div><div class="line" id="file-graduations_controller_spec-rb-LC18">    <span class="k">end</span></div><div class="line" id="file-graduations_controller_spec-rb-LC19">    </div><div class="line" id="file-graduations_controller_spec-rb-LC20">  <span class="k">end</span></div><div class="line" id="file-graduations_controller_spec-rb-LC21">  </div><div class="line" id="file-graduations_controller_spec-rb-LC22">  <span class="n">describe</span> <span class="s2">&quot;POST create&quot;</span> <span class="k">do</span></div><div class="line" id="file-graduations_controller_spec-rb-LC23">    </div><div class="line" id="file-graduations_controller_spec-rb-LC24">    <span class="n">before</span> <span class="k">do</span></div><div class="line" id="file-graduations_controller_spec-rb-LC25">      <span class="vi">@graduation</span> <span class="o">=</span> <span class="no">Graduation</span><span class="o">.</span><span class="n">new</span> <span class="ss">:id</span> <span class="o">=&gt;</span> <span class="mi">1</span></div><div class="line" id="file-graduations_controller_spec-rb-LC26">      <span class="vi">@belt</span> <span class="o">=</span> <span class="no">Belt</span><span class="o">.</span><span class="n">new</span> <span class="ss">:id</span> <span class="o">=&gt;</span> <span class="mi">1</span></div><div class="line" id="file-graduations_controller_spec-rb-LC27">      <span class="vi">@graduation</span><span class="o">.</span><span class="n">stub</span><span class="p">(</span><span class="ss">:belt_to</span><span class="p">)</span><span class="o">.</span><span class="n">and_return</span> <span class="vi">@belt</span></div><div class="line" id="file-graduations_controller_spec-rb-LC28">      <span class="n">controller</span><span class="o">.</span><span class="n">stub_chain</span><span class="p">(</span><span class="ss">:current_user</span><span class="p">,</span> <span class="ss">:profile</span><span class="p">,</span> <span class="ss">:graduate_your_student</span><span class="p">)</span><span class="o">.</span><span class="n">and_return</span><span class="p">(</span><span class="vi">@graduation</span><span class="p">)</span></div><div class="line" id="file-graduations_controller_spec-rb-LC29">    <span class="k">end</span></div><div class="line" id="file-graduations_controller_spec-rb-LC30">    </div><div class="line" id="file-graduations_controller_spec-rb-LC31">    <span class="c1"># @graduation = current_user.profile.graduate_your_student params[:student_id], params[:belt_id]</span></div><div class="line" id="file-graduations_controller_spec-rb-LC32">    <span class="c1"># respond_with @graduation, :include =&gt; :belt_to</span></div><div class="line" id="file-graduations_controller_spec-rb-LC33">    <span class="n">it</span> <span class="s2">&quot;graduate your student&quot;</span> <span class="k">do</span></div><div class="line" id="file-graduations_controller_spec-rb-LC34">      <span class="n">post</span> <span class="ss">:create</span><span class="p">,</span> <span class="ss">:format</span> <span class="o">=&gt;</span> <span class="ss">:json</span><span class="p">,</span> <span class="ss">:student_id</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span> <span class="ss">:belt_id</span> <span class="o">=&gt;</span> <span class="mi">1</span></div><div class="line" id="file-graduations_controller_spec-rb-LC35">      <span class="n">assigns</span><span class="o">[</span><span class="ss">:graduation</span><span class="o">].</span><span class="n">should</span> <span class="o">==</span> <span class="vi">@graduation</span></div><div class="line" id="file-graduations_controller_spec-rb-LC36">      <span class="n">assigns</span><span class="o">[</span><span class="ss">:graduation</span><span class="o">].</span><span class="n">belt_to</span><span class="o">.</span><span class="n">should</span> <span class="o">==</span> <span class="vi">@belt</span></div><div class="line" id="file-graduations_controller_spec-rb-LC37">    <span class="k">end</span></div><div class="line" id="file-graduations_controller_spec-rb-LC38">    </div><div class="line" id="file-graduations_controller_spec-rb-LC39">  <span class="k">end</span></div><div class="line" id="file-graduations_controller_spec-rb-LC40">&nbsp;</div><div class="line" id="file-graduations_controller_spec-rb-LC41"><span class="k">end</span></div></pre>
        </td>
      </tr>
    </table>
  </div>

        </div>

        <div class="gist-meta">
          <a href="https://gist.github.com/cmilfont/3911139/raw/132f9c4db4e11442c88e44637f703e886d67e540/graduations_controller_spec.rb" style="float:right">view raw</a>
          <a href="https://gist.github.com/cmilfont/3911139#file-graduations_controller_spec-rb" style="float:right; margin-right:10px; color:#666;">graduations_controller_spec.rb</a>
          <a href="https://gist.github.com/cmilfont/3911139">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
        </div>
      </div>
</div>

<p>Participar de uma competição desse tipo é muito importante para nos testarmos sob pressão de tempo, validamos nossas crenças e ajustamos o que funciona ou não do &#8220;By The Book&#8221; com o <a href="http://en.wikipedia.org/wiki/Minimum_viable_product">suficiente necessário para um produto</a>.</p>
<p><a href="http://jiujitsuteam.com/profiles/7"><img class="size-medium wp-image-1708 alignnone" title="JiujitsuTeam" src="http://www.milfont.org/tech/wp-content/uploads/2012/10/Captura-de-tela-2012-10-18-às-08.06.06-300x161.png" alt="Profile no Jiujitsu Team" width="300" height="161" /></a></p>
<p>Dê uma <a href="http://railsrumble.com/entries/all">navegada nos outros projetos</a> para ver o que a comunidade de 500 times fez esse ano, se gostou do nosso projeto e quiser votar na gente, <a href="http://railsrumble.com/entries/62-jiujitsu-team">o link é esse</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2012/10/18/rails-rumble-2012-nos-participamos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Corrida de rua, o esporte mais democrático</title>
		<link>http://www.milfont.org/tech/2012/07/02/corrida-de-rua-o-esporte-mais-democratico/</link>
		<comments>http://www.milfont.org/tech/2012/07/02/corrida-de-rua-o-esporte-mais-democratico/#comments</comments>
		<pubDate>Mon, 02 Jul 2012 17:43:45 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[mercado]]></category>
		<category><![CDATA[esporte]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1685</guid>
		<description><![CDATA[Imagine um esporte aonde a torcida pode jogar, esse esporte existe e ele se chama Corrida de Rua &#8211; principalmente. Nos últimos anos é visível o crescimento, disputei nesse domingo (01/06/2012) a 11º Maratona de Revezamento Pão de Açucar Fortaleza - fiz duas voltas na minha equipe de 8 pessoas, 7 no nosso caso. Estava estimado [...]]]></description>
				<content:encoded><![CDATA[<div class="socialize-in-content socialize-in-content-left"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.milfont.org/tech/2012/07/02/corrida-de-rua-o-esporte-mais-democratico/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>Imagine um esporte aonde a torcida pode jogar, esse esporte existe e ele se chama Corrida de Rua &#8211; principalmente. Nos últimos anos é visível o crescimento, disputei nesse domingo (01/06/2012) a <a href="http://www.maratonaderevezamento.com.br/">11º Maratona de Revezamento Pão de Açucar Fortaleza</a> - fiz duas voltas na minha equipe de 8 pessoas, 7 no nosso caso.</p>
<p><a title="DSC_0922 by chrismilfont, on Flickr" href="http://www.flickr.com/photos/cmilfont/7488364564/"><img src="http://farm8.staticflickr.com/7258/7488364564_b013f75b82.jpg" alt="DSC_0922" width="500" height="281" /></a></p>
<p>Estava estimado um público participante de 10 mil inscritos, segundo a organização <a href="http://blog.opovo.com.br/tempodecorrer/onze-mil-na-beira-mar/">foram 11 mil</a>, tinha gente à beça. A magia de participar de um evento de corrida é inebriante e um mercado muito promissor, porque imagine só, você quando vai fazer uma corrida dessas imagina que não vai gastar nada a não ser o valor das inscrições, ledo engano.</p>
<p>É uma falsa verdade imaginar que não há custo, esse custo é diluído a medida que voce se &#8220;profissionaliza&#8221; amadoristicamente. Vejo muitos exemplos, o sujeito já tem um tênis que ele nem sabe se é apropriado, aliás, nem sabe que há tênis apropriado, põe um bermuda folgada e uma camisa regata, pronto.</p>
<h2>Esporte Barato</h2>
<p>Quando voce se tornar refém do esporte comprará monitor cardíaco, escolherá um tênis apropriado pelo seu <a href="http://globoesporte.globo.com/platb/correndoatras/2009/04/09/o-teste-da-pisada/">tipo de pisada</a>, pagará provavelmente uma assessoria, fora a compra de acessórios aos montes como Squeezes &#8211; senão um cinto de hidratação &#8211; e óculos escuros.</p>
<p>Imagine a oportunidade em volta desse esporte, fora os mecanismos tradicionais de monetização como marketing, patrocínios, academias. Só que é um esporte aonde você entra com um custo bastante diluído como o exemplo acima citado, mete um tênis, bermuda e regata apenas, material que você já tem. Não tem como competir com esse custo.</p>
<p>Se voce vai participar de competições de artes marciais por exemplo, tem a vestimenta tradicional do seu estilo. Se vai para um tiro esportivo ou arco e flecha vai ter o custo altíssimo do equipamento. Se vai para o futebol vai ter que comprar chuteiras e materiais para jogar na lama de alguma divisão de bairros ou categorias empresariais.</p>
<h2>Custos e Oportunidades</h2>
<p>Na corrida de rua você corre &#8220;ao lado&#8221; do campeão, entre os profissionais, com a mesma chance de glamour que as estrelas &#8211; eu devo ter saído em alguma foto atrás dos ídolos. Não é a mesma coisa de jogar num campeonato de subúrbio com o time da firma ou repartição.</p>
<p><a title="DSC_0930 by chrismilfont, on Flickr" href="http://www.flickr.com/photos/cmilfont/7488368860/"><img src="http://farm8.staticflickr.com/7246/7488368860_c85a87bfcb.jpg" alt="DSC_0930" width="500" height="281" /></a></p>
<p>Imagina um esporte que consiga baixar esse custo e diluir de forma imperceptível enquanto o praticante se apaixona pela cultura? Mais do que isso,  transformar o torcedor em praticante e o tornar um consumidor potencial.</p>
<p>O MMA principalmente via UFC é talvez o esporte que mais cresça em faturamento e visibilidade, só que é um esporte aonde a torcida não pode participar, precisa de um treinamento profissional para entrar na arena. É o mesmo paradigma do futebol.</p>
<p>Hoje com a economia de <a href="http://pt.wikipedia.org/wiki/A_Cauda_Longa">cauda longa</a> aonde o <a href="http://pt.wikipedia.org/wiki/Prosumer">prosumer</a> (consumidor-produtor) é o condutor das iniciativas faz mais sentido um esporte como corrida de rua do que o MMA.</p>
<p>Talvez o <a href="http://pt.wikipedia.org/wiki/Submission">Submission</a> fosse uma alternativa para o caso do universo de lutas, mesmo assim pela cultura competitiva e disputa mano-a-mano eu acho muito difícil criar uma estrutura que beneficie a participação dos amadores.</p>
<p>Fica aí um desafio para os envolvidos com negócios esportivos, corrida de rua consegue acompanhar a onda do amador praticante, seu esporte consegue?</p>
<h2>Minhas Estatísticas na prova</h2>
<p>Eu estava visivelmente despreparado, voltei a treinar apenas há um mês depois de quase dois anos sem preparação para corridas. Agora é &#8220;correr&#8221; atrás do prejuízo. De qualquer forma mesmo despreparado eu participei, algo impossível em todos os outros esportes.</p>
<h3>Primeiro trecho</h3>
<p><iframe style="background-color: transparent;" src="http://www.sports-tracker.com/widgets/wdgt_workout.html?username=cmilfont&amp;workout_key=dkaetq3kvdc5mfhk" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="500" height="400"></iframe></p>
<h3>Segundo trecho</h3>
<p><iframe style="background-color: transparent;" src="http://www.sports-tracker.com/widgets/wdgt_workout.html?username=cmilfont&amp;workout_key=5v4jars4r1df1uk4" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="500" height="400"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2012/07/02/corrida-de-rua-o-esporte-mais-democratico/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Encontro CEJS 0.0.2 &#8211; Fotos e Slides</title>
		<link>http://www.milfont.org/tech/2012/06/26/encontro-cejs-0-0-2-fotos-e-slides/</link>
		<comments>http://www.milfont.org/tech/2012/06/26/encontro-cejs-0-0-2-fotos-e-slides/#comments</comments>
		<pubDate>Tue, 26 Jun 2012 12:47:39 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[cejs]]></category>
		<category><![CDATA[cearajs]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1675</guid>
		<description><![CDATA[O encontrou foi de excelente qualidade e a comunidade respondeu a altura lotando uma sala no Grupo Fortes que patrocinou o evento com um farto e gostoso Coffee Break, confiram nas fotos abaixo dos slides. Slides das palestras Alberto Monteiro - KnockoutJs construindo interfaces ricas e responsivas de forma fácil Henrique Soares - Backbone.js: a espinha dorsal [...]]]></description>
				<content:encoded><![CDATA[<div class="socialize-in-content socialize-in-content-left"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.milfont.org/tech/2012/06/26/encontro-cejs-0-0-2-fotos-e-slides/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>O encontrou foi de excelente qualidade e a comunidade respondeu a altura lotando uma sala no Grupo Fortes que patrocinou o evento com um farto e gostoso Coffee Break, confiram nas fotos abaixo dos slides.</p>
<h2>Slides das palestras</h2>
<p>Alberto Monteiro - <a href="http://www.slideshare.net/josealbertomonteiro/ce-js-23-062012 ">KnockoutJs construindo interfaces ricas e responsivas de forma fácil</a><br />
<iframe src="http://www.slideshare.net/slideshow/embed_code/13425313" width="500" height="413" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/></p>
<p>Henrique Soares - <a href="http://www.slideshare.net/henriquegogo/backbonejs-a-espinha-dorsal-de-aplicaes-web">Backbone.js: a espinha dorsal de aplicações web</a><br />
<iframe src="http://www.slideshare.net/slideshow/embed_code/13436895" width="500" height="413" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/></p>
<p>Hamon Vitorino - <a href="http://www.slideshare.net/hvitorino/cejs-002">Mudando de renderização client-side para server-side: uma experiência</a><br />
<iframe src="http://www.slideshare.net/slideshow/embed_code/13438608" width="500" height="413" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/></p>
<p>Yuri Adams - <a href="http://www.slideshare.net/yuriadams/testes-unitrios-com-javascript-utilizando-jasmine-framework">Testes Unitários com Javascript utilizando Jasmine Framework</a> - <a href="https://github.com/yuriadams/Encontro-Ce.js">Código no Github</a><br />
<iframe src="http://www.slideshare.net/slideshow/embed_code/13451518" width="500" height="413" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/></p>
<h2>Fotos</h2>
<p><object width="400" height="300" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fcmilfont%2Fsets%2F72157630296833940%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fcmilfont%2Fsets%2F72157630296833940%2F&amp;set_id=72157630296833940&amp;jump_to=" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.flickr.com/apps/slideshow/show.swf?v=109615" /><param name="allowfullscreen" value="true" /><embed width="400" height="300" type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=109615" flashvars="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fcmilfont%2Fsets%2F72157630296833940%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fcmilfont%2Fsets%2F72157630296833940%2F&amp;set_id=72157630296833940&amp;jump_to=" allowFullScreen="true" allowfullscreen="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2012/06/26/encontro-cejs-0-0-2-fotos-e-slides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Triste decadência para as empresas de VendasDeCorpos™</title>
		<link>http://www.milfont.org/tech/2012/06/14/triste-decadencia-para-as-empresas-de-vendasdecorpos/</link>
		<comments>http://www.milfont.org/tech/2012/06/14/triste-decadencia-para-as-empresas-de-vendasdecorpos/#comments</comments>
		<pubDate>Thu, 14 Jun 2012 17:14:37 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[mercado]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[rup]]></category>
		<category><![CDATA[vraptor]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1663</guid>
		<description><![CDATA[Um email de um amigo hoje falando sobre alguém: &#8221; Ele tá trabalhando no ÓRGÃO PÚBLICO WHATEVER e implantando documentação com RUP e o desenvolvimento com vraptor, spring e hibernate.&#8221; Olhando assim para a empresa aonde esse fulano trabalha como terceirizado eu sinto uma legítima pena. JSF garantia pelo menos uns 8 a 10 recursos [...]]]></description>
				<content:encoded><![CDATA[<div class="socialize-in-content socialize-in-content-left"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.milfont.org/tech/2012/06/14/triste-decadencia-para-as-empresas-de-vendasdecorpos/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>Um email de um amigo hoje falando sobre alguém:</p>
<blockquote><p>&#8221; E<span style="font-family: 'trebuchet ms', sans-serif;">le tá trabalhando no <strong>ÓRGÃO PÚBLICO WHATEVER</strong> e implantando documentação com RUP e o desenvolvimento com vraptor, spring e hibernate.&#8221;</span></p></blockquote>
<p>Olhando assim para a empresa aonde esse fulano trabalha como terceirizado eu sinto uma legítima pena.</p>
<p>JSF garantia pelo menos uns 8 a 10 recursos na modalidade VendaDeCorpos™ por longos anos. Os proxenetas digitais ficam remanejando recursos aqui e ali e voilà, dinheirinha caindo na conta. O ruim é o mercado &#8211; até o público &#8211; ter cansado de JSF, tipo, vai diminuir os 3 aditivos na licitação &#8211; em média &#8211; quando chegar na &#8220;Fase&#8221; de codificação. Aonde esse mundo vai parar? Como uma empresa pode escalar desse jeito?</p>
<p>O que salva ainda é o RUP que é o melhor dos mundos, garante uns bons dois ou três anos de rapapés entre gerentes PMI ® trocando gracejos inúteis, já garantindo uma liquidez aceitável para retiradas polpudas em qualquer agência financeira respeitável.</p>
<p>Mas sempre vão encontrar uma saída, não se preocupem tanto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2012/06/14/triste-decadencia-para-as-empresas-de-vendasdecorpos/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>3, o número mágico</title>
		<link>http://www.milfont.org/tech/2012/06/11/3-o-numero-magico/</link>
		<comments>http://www.milfont.org/tech/2012/06/11/3-o-numero-magico/#comments</comments>
		<pubDate>Mon, 11 Jun 2012 13:24:48 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[empreendedorismo]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1505</guid>
		<description><![CDATA[Existe uma tribo nativa brasileira que desafia as teorias linguísticas de Chomsky. Existia a suposição de que esses nativos contavam apenas 1, 2 e muitos (para representar a quantidade a partir de 3), suspeita-se agora de que as palavras que representavam o número &#8220;um&#8221; é uma variação entre 1 e 4 (quem sabe o 3 [...]]]></description>
				<content:encoded><![CDATA[<div class="socialize-in-content socialize-in-content-left"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.milfont.org/tech/2012/06/11/3-o-numero-magico/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>Existe uma <a href="http://www.bbc.co.uk/portuguese/reporterbbc/story/2008/07/080717_linguatribonumero_np.shtml">tribo nativa brasileira</a> que desafia as teorias <a href="http://pt.wikipedia.org/wiki/Lingu%C3%ADstica">linguísticas</a> de <a href="http://pt.wikipedia.org/wiki/Noam_Chomsky">Chomsky</a>. Existia a suposição de que esses nativos contavam apenas 1, 2 e muitos (para representar a quantidade a partir de 3), suspeita-se agora de que as palavras que representavam o número &#8220;um&#8221; é uma variação entre 1 e 4 (quem sabe o 3 como a primeira tese), a palavra que supostamente representava o &#8220;dois&#8221; outra variação até cerca de 10 e o &#8220;muitos&#8221; para algo realmente grande.</p>
<p>De qualquer forma, observe que o 3 é um limitante de grandeza intermediária entre o suposto &#8220;um&#8221; e &#8220;muitos&#8221; dos nativos.</p>
<p>Em <a href="http://www.tvi24.iol.pt/bebes/desenvolvimento/1233747-5538.html">recente estudo</a>, o professor <a href="http://www.sheffield.ac.uk/psychology/staff/academic/michael-siegal">Michael Siegal</a> investigou que bebês de até 18 meses compreendem a contagem até 3 e que conseguem compreender grandeza.</p>
<p>Não lembro se foram os criadores do Digg ou da 37 Signals que apresentaram há um tempo [não achei os slides no meu delicious] que se baseiam em 3 funcionalidades para trabalhar um <a href="http://en.wikipedia.org/wiki/Minimum_viable_product">produto mínimo</a>, isso até ficou muito popular no meio dos criadores de Startup.</p>
<p>Desde a <a href="http://c2.com/cgi/wiki?RuleOfThree">regra de três</a> para reconhecimento de um padrão à 3 A (<a href="http://c2.com/cgi/wiki?ArrangeActAssert">Arrange-Act-Assert</a>) que esse número parece limitar uma espécie de contagem natural segundo as próprias teorias de Chomsky nas quais a capacidade de contar é inata do ser humano.</p>
<p>De qualquer forma já há algum tempo esse número me persegue nas minhas suposições, meio a esses fatos que podem não ter relação alguma e serem apenas coincidências eu trabalhei em um projeto o experimento de limitar a 3 o tamanho de uma funcionalidade.</p>
<p>Misturando esses fatos à abordagem da <a href="http://pivotallabs.com/">Pivotal Labs</a> de limitar o tamanho máximo a 8 pontos popularizado no Pivotal Tracker.</p>
<p>Segundo a Pivotal, a partir de 8 pontos tudo é um grande chute e as pessoas já não fazem idéia do que é necessário para realizar determinada feature ou tarefa. Com base na minha suposição eu acredito que esse número deve cair a 3, justamente por entender que esse é o limitante da contagem natural e portando qualquer tarefa que ultrapassar tem que ser dividida.</p>
<p>Ainda não tenho dados sólidos para apresentar, é apenas um esboço de suposição, meu experimento não gerou números confiáveis. Vou tentar ter 3 experiências.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2012/06/11/3-o-numero-magico/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Encontro CEJS 0.0.2</title>
		<link>http://www.milfont.org/tech/2012/06/08/encontro-cejs-0-0-2/</link>
		<comments>http://www.milfont.org/tech/2012/06/08/encontro-cejs-0-0-2/#comments</comments>
		<pubDate>Fri, 08 Jun 2012 16:47:30 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[cearajs]]></category>
		<category><![CDATA[cejs]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1654</guid>
		<description><![CDATA[CEJS é uma comunidade criada em consonância com os movimentos similares ao redor do mundo que se uniram para promover e disseminar o Javascript e suas ferramentas. O Grupo Fortes receberá o próximo encontro no dia 23 de junho de 2012 iniciando as 14h. A comunidade sempre promove um acesso democrático para submissão de palestras por [...]]]></description>
				<content:encoded><![CDATA[<div class="socialize-in-content socialize-in-content-left"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.milfont.org/tech/2012/06/08/encontro-cejs-0-0-2/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>CEJS é uma comunidade criada em <a href="http://communityjs.com/">consonância com os movimentos</a> similares ao redor do mundo que se uniram para promover e disseminar o Javascript e suas ferramentas. O <a href="http://grupofortes.com.br/">Grupo Fortes</a> receberá o próximo encontro no dia 23 de junho de 2012 iniciando as 14h.</p>
<div>A comunidade sempre promove um acesso democrático para submissão de palestras por meio de votação pública aos interessados - como no <a href="http://call4paperz.com/events/first-commit-lightning-talks">primeiro</a> [<a href="http://www.flickr.com/photos/cmilfont/sets/72157626948119216/">fotos</a>] e no encontro <a href="http://call4paperz.com/events/cejs-002">atual</a> a ser realizado - e participou ativamente da organização do maior evento do planeta sobre o tema, o <a href="http://www.flickr.com/photos/cmilfont/sets/72157626741147748/">BrazilJS</a>.</div>
<div></div>
<div><em><strong>UPDATE - </strong></em><a href="https://docs.google.com/spreadsheet/viewform?formkey=dHhvTGFuVkpzNm1nMXhZRmZwdVJveGc6MQ#gid=0">Formulário de inscrição</a></div>
<div></div>
<div>Confira abaixo a sequência das palestras a serem apresentadas, liberaremos as inscrições nos próximos dias.</div>
<div></div>
<div>
<p><strong><a href="http://call4paperz.com/events/cejs-002/proposals/461">KnockoutJs construindo interfaces ricas e responsivas de forma fácil</a></strong></p>
<p>Knockout é uma biblioteca JavaScript que permite aos criar aplicações ricas, responsivas com foco na regra da tela sem a preocupação com DOM com um código limpo e manutenível.</p>
<div><strong> <small>Alberto Monteiro</small></strong></div>
<div>
<p><strong><a href="http://call4paperz.com/events/cejs-002/proposals/460">Backbone.js: a espinha dorsal de aplicações web</a></strong></p>
<p>Uma ferramenta completa para construção de aplicações web complexas com modelos de view, bindings, eventos e coleções de maneira elegante e organizada. Conecte facilmente sua camada de apresentação com seu servidor usando REST e requisições AJAX.</p>
<div><strong><small>Henrique Gogó</small></strong></div>
</div>
<div>
<p><strong><a href="http://call4paperz.com/events/cejs-002/proposals/469">Mudando de renderização client-side para server-side: uma experiência</a></strong></p>
<p>Nessa palestra pretendo compartilhar uma experiência de mudança de estratégia de renderização das views de client-side para server-side, as motivações, e o que ganhamos.</p>
<div><strong><small>Hamon Vitorino</small></strong></div>
</div>
<div>
<p><strong><a href="http://call4paperz.com/events/cejs-002/proposals/465">jQuery + Android, uma dupla pra lá de dinâmica!</a></strong></p>
</div>
<div>
<p>jQuery é um framework javascript amplamente utilizado pela comunidade; Android é uma plataforma de desenvolvimento mobile. O que resulta então da união dessas duas ótimas tecnologias? Além disso, uma overview sobre os principais frameworks javascript para mobile do momento.</p>
<div><strong><small>Diogo Souza</small></strong></div>
</div>
<div>
<p><strong><a href="http://call4paperz.com/events/cejs-002/proposals/464">Testes Unitários com Javascript utilizando Jasmine Framework</a></strong></p>
<p>Você testa unitariamente seu código javascript? não? Pois veremos como fazer testes automatizados sem precisar de browser de forma simples e direta com Jasmine BDD Framework + EnvJS + Rhino</p>
<div><strong><small>Yuri Adams</small></strong></div>
</div>
<div>
<p><strong><a href="http://call4paperz.com/events/cejs-002/proposals/457">Criando componentes complexos com ExtJS 4</a></strong></p>
<p>Demonstraremos Widgets ricos altamente complexos com as novidades do ExtJS 4. Mudando o Layout e criando interfaces inexistentes nos Frameworks concorrentes.</p>
<div><strong> <small>Christiano Milfont</small></strong></div>
</div>
</div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2012/06/08/encontro-cejs-0-0-2/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
