<?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.caelum.com.br &#187; open source</title>
	<atom:link href="http://blog.caelum.com.br/tag/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.caelum.com.br</link>
	<description>blog dos desenvolvedores da Caelum</description>
	<lastBuildDate>Thu, 09 Feb 2012 13:04:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Iniciativa Caelum Open Source</title>
		<link>http://blog.caelum.com.br/iniciativa-caelum-open-source/</link>
		<comments>http://blog.caelum.com.br/iniciativa-caelum-open-source/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 12:00:32 +0000</pubDate>
		<dc:creator>Sérgio Lopes</dc:creator>
				<category><![CDATA[Caelum]]></category>
		<category><![CDATA[Inovação]]></category>
		<category><![CDATA[comunidade]]></category>
		<category><![CDATA[guj]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[restfulie]]></category>
		<category><![CDATA[vraptor]]></category>

		<guid isPermaLink="false">http://blog.caelum.com.br/?p=2459</guid>
		<description><![CDATA[A Caelum sempre reconheceu o poder da comunidade e do open source, e ativamente participa de ambas. Disponibilizamos várias apostilas para download, organizamos o GUJ e o InfoQ Brasil e estamos diretamente envolvidos em diversos projetos de código aberto. Há desde novos projetos como VRaptor, Restfulie e Stella, até a participação em projetos existentes como <a href="http://blog.caelum.com.br/iniciativa-caelum-open-source/#more-2459'" class="more-link">more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p style="float:right; margin:0 0 10px 15px; width:240px;">
		<img src="http://opensource.org/files/garland_logo.png" width="240" />
		</p><p><img src="http://opensource.org/files/garland_logo.png" alt="open source"  align="left" style="margin:10px"/> A Caelum sempre reconheceu o poder da comunidade e do open source, e ativamente participa de ambas. Disponibilizamos várias <a href="http://www.caelum.com.br/apostilas/">apostilas para download</a>, organizamos o <a href="http://www.guj.com.br">GUJ</a>  e o <a href="http://www.infoq.com/br">InfoQ Brasil</a> e estamos diretamente <a href="http://www.caelum.com.br/opensource/">envolvidos em diversos  projetos de código aberto</a>. Há desde novos projetos como <a href="http://vraptor.caelum.com.br">VRaptor</a>, <a href="http://restfulie.caelum.com.br">Restfulie</a> e <a href="http://stella.caelum.com.br">Stella</a>, até a participação em projetos existentes como Hibernate, XStream e PicoContainer. </p>
<p>Aliás, hoje, o <strong>VRaptor</strong> é um dos principais projetos que desenvolvemos, e acaba de ter sua <a href="http://www.guj.com.br/posts/list/205109.java">versão 3.1.2 lançada</a>. A nova série 3.x já possui <a href="http://code.google.com/p/vraptor3/downloads/list?can=1&#038;q=&#038;sort=-uploaded&#038;colspec=Filename%20Summary%20Uploaded%20Size%20DownloadCount">mais de 8000 downloads</a>.</p>
<p><center><img src="http://vraptor.caelum.com.br/images/marca.png"/></center></p>
<p>O <strong>Restfulie</strong> é outro importante projeto que tem revolucionado a forma como se aplica REST hoje mundo a fora. O projeto é liderado por Guilherme Silveira que foi apresentado juntamente com Ian Robinson e Jim Webber da ThoughtWorks <a href="http://www.ws-rest.org/accepted">no WWW 2010</a>, um evento com palestrantes de peso como o &#8220;criador&#8221; da web, Tim Berns Lee. Há <a href="http://www.infoq.com/interviews/Restfulie">uma entrevista com o Guilherme</a> (em inglês) para você conhecer mais do assunto.</p>
<p>E, agora, para incentivar ainda mais a comunidade, <a href="http://www.caelum.com.br/iniciativa-open-source/">a Caelum lança sua Iniciativa Open Source</a>, que traz <strong>descontos em todos os cursos</strong> para alunos que participam de projetos de código aberto. Saiba mais na página da iniciativa e participe também com o seu projeto.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.caelum.com.br/iniciativa-caelum-open-source/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>VRaptor 3.0 final lançado!</title>
		<link>http://blog.caelum.com.br/vraptor-3-0-final-lancado/</link>
		<comments>http://blog.caelum.com.br/vraptor-3-0-final-lancado/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 10:07:54 +0000</pubDate>
		<dc:creator>Lucas Cavalcanti</dc:creator>
				<category><![CDATA[Caelum]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[di]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[guj]]></category>
		<category><![CDATA[ioc]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[vraptor]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.caelum.com.br/?p=1169</guid>
		<description><![CDATA[Depois de 8 meses de intenso desenvolvimento, e quase 2 meses depois do primeiro beta público, o framework web MVC VRaptor 3 final está disponível para donwload. O site oficial foi inteiramente reformulado, com uma nova versão da palestra de apresentação do framework e uma extensa documentação. O princípio básico do VRaptor é que você <a href="http://blog.caelum.com.br/vraptor-3-0-final-lancado/#more-1169'" class="more-link">more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p style="float:right; margin:0 0 10px 15px; width:240px;">
		<img src="http://vraptor.caelum.com.br/images/boxVraptor-trans.png" width="240" />
		</p><p><a href="http://www.vraptor.com.br/"><img align="left" src="http://vraptor.caelum.com.br/images/boxVraptor-trans.png" alt="vraptor3 icon" /></a></p>
<p>Depois de 8 meses de intenso desenvolvimento, e quase 2 meses depois do <a href="http://blog.caelum.com.br/vraptor-3-disponivel-para-download/">primeiro beta público</a>, o <a href="http://www.vraptor.com.br/">framework web MVC VRaptor 3</a> final está disponível para donwload. O site oficial foi inteiramente reformulado, com uma <a href="http://vimeo.com/5961030">nova versão da palestra de apresentação do framework</a> e uma <a href="http://vraptor.caelum.com.br/documentacao/vraptor3-guia-de-1-minuto/">extensa documentação</a>.</p>
<p>O princípio básico do VRaptor é que você pode expor os métodos do seu controlador de maneira <strong>RESTFul</strong>, através de simples anotações. No exemplo a seguir, acessando a URI <code>/usuarios/adiciona</code> por <code>POST</code>, teremos esse  método <code>insere</code> invocado e um objeto <code>Usuario</code> populado através dos parâmetros <code>usuario.nome</code>, <code>usuario.endereco</code>, assim por diante:</p>
<pre class="brush: java; title: ; notranslate">
@Post
@Path(&quot;usuarios/adiciona&quot;)
void insere(Usuario usuario) {
   ...
}
</pre>
<p>Se seu retorno não fosse <code>void</code>, o que é retornado é exposto ao seu view, através de um atributo de request. A partir desse simples modelo temos acesso aos mais variados recursos: a <strong>injeção de dependências</strong> é feita pelo construtor, e há total <strong>integração com Spring</strong>, permitindo a criação fácil de <strong>testes</strong> unitários. E há <strong>suporte fácil a Hibernate e JPA</strong>, através de <code>ComponentFactories</code> já embutidas no framework, basta você registrá-los e receber <code>Session</code>/<code>EntityManager</code> no construtor.  Validação, conversores, redirecionamentos, URIs parametrizadas e todo mais prossegue da mesma maneira elegante.</p>
<p>Diversas <strong>empresas já estão usando o VRaptor 3</strong> desde suas versões beta: <a href="http://www.wine.com.br/">Wine.com.br</a>, a maior empresa online de vinhos do Brasil, através da <a href="http://www.giran.com.br/">Giran.com.br</a>, a <a href="http://www.locaweb.com.br/">Locaweb</a>, a <a href="http://www.agenciaclick.com.br">AgenciaClick</a>, a <a href="http://www.defferrari.com.br/">Defferrari</a>, entre outros. Há desenvolvedores rodando o <a href="http://guj.com.br/posts/list/139238.java#752484">VRaptor 3 em um cluster com 32 máquinas</a> e outras no cloud do Google App Engine!</p>
<p><strong>Como começar já?</strong></p>
<p>Faça o download do <a href="http://code.google.com/p/vraptor3/downloads/list">projeto vazio (blank project)</a> já preparado para o Eclipse, e siga as instruções do <a href="http://vraptor.caelum.com.br/documentacao/vraptor3-guia-de-1-minuto/">guia de 1 minuto</a>! Você  está pronto para <strong>tirar suas dúvidas</strong>  <a href="http://guj.com.br/forums/show/23.java">no fórum de discussão do GUJ</a> para frameworks brasileiros!</p>
<p>Agradecemos a todos os desenvolvedores do projeto, e em especial aos usuários, que contribuiram no fórum de maneira surpreendente: são mais de 1000 mensagens sobre o novo VRaptor desde sua versão beta 1!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.caelum.com.br/vraptor-3-0-final-lancado/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Projeto open source: Caelum git-reports</title>
		<link>http://blog.caelum.com.br/projeto-open-source-caelum-git-reports/</link>
		<comments>http://blog.caelum.com.br/projeto-open-source-caelum-git-reports/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 08:00:35 +0000</pubDate>
		<dc:creator>Pedro Matiello</dc:creator>
				<category><![CDATA[Caelum]]></category>
		<category><![CDATA[Inovação]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[repositórios]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[version]]></category>

		<guid isPermaLink="false">http://blog.caelum.com.br/?p=825</guid>
		<description><![CDATA[Completamos recentemente, aqui na Caelum, a migração de todos os nosso projetos para git, o sistema de controle de versões distribuído criado inicialmente por Linus Torvalds para o desenvolvimento do kernel Linux. Esta migração, realizada pelo Cauê Guerra e pelo Jonas Abreu, foi motivada por algumas características do git que se mostraram úteis em alguns <a href="http://blog.caelum.com.br/projeto-open-source-caelum-git-reports/#more-825'" class="more-link">more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Completamos recentemente, aqui na Caelum, a migração de todos os nosso projetos para <a title="git" href="http://git-scm.com/" id="cqfi">git</a>, o sistema de controle de versões distribuído criado inicialmente por Linus Torvalds para o desenvolvimento do kernel Linux. Esta migração, realizada pelo Cauê Guerra e pelo Jonas Abreu, foi motivada por algumas características do git que se mostraram úteis em alguns projetos internos e pessoais; em especial, a possibilidade de fazer commits locais (muito útil quando não há acesso à internet) e os branches locais baratos.</p>
<p>Em vez de mantermos nós mesmos nossos repositórios, optamos por hospedá-los no <a title="GitHub" href="http://github.com/" id="porh">GitHub</a>. Esse serviço oferece uma interface web bastante prática e nos permite, convenientemente, centralizar nossos <a title="projetos públicos" href="http://github.com/caelum/" id="xwjc">projetos públicos</a> e privados em um único serviço. Contudo, entre tantas facilidades, sentimos falta de uma forma de observar a atividade recente em todos os nossos repositórios de forma centralizada e de ter alguma medida da atividade de cada desenvolvedor em cada projeto &#8211; e vice-versa. E para atender a essa necessidade, eu e o Cauê Guerra escrevemos o <a title="git-reports" href="http://github.com/caelum/git-reports/" id="u:6r">Caelum git-reports</a>, um pequeno projeto em Ruby.</p>
<p>O software gera, a partir de um conjunto de repositórios <strong>git</strong>, uma medida do impacto de cada desenvolvedor (discriminado por projeto), do impacto em cada repositório (discriminado por desenvolvedor) e um resumo de todos os commits recentes, apresentando o resultado em HTML. Adotamos a mesma definição de impacto usada pelo GitHub: a soma das linhas acrescentadas e removidas. De fato, uma medida bastante grosseira, mas que tem suas utilidades. O projeto é muito novo, e podemos facilmente adicionar novas funcionalidades, como critérios para verificação de atividade nos repositórios, além de gráficos.</p>
<p>Quem quiser saber mais sobre o <strong>git</strong> pode consultar o <a title="tutorial para preguiçosos" href="http://www.spheredev.org/wiki/Git_for_the_lazy" id="g1cv">tutorial para preguiçosos</a> como ponto de partida. Outros recursos úteis podem ser encontrados no <a title="site oficial" href="http://git-scm.com/documentation" id="vr0_">site oficial</a> e no <a title="índice de guias" href="http://github.com/guides/home" id="kosc">índice de guias</a> do GitHub. Quem prefere o formato de vídeos também deve conferir o <a title="GitCasts" href="http://www.gitcasts.com/" id="okdp">GitCasts</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.caelum.com.br/projeto-open-source-caelum-git-reports/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Mirror DSL: facilitando o uso da API de reflection</title>
		<link>http://blog.caelum.com.br/mirror-dsl-facilitando-o-uso-da-api-de-reflection/</link>
		<comments>http://blog.caelum.com.br/mirror-dsl-facilitando-o-uso-da-api-de-reflection/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 15:25:32 +0000</pubDate>
		<dc:creator>Jonas Abreu</dc:creator>
				<category><![CDATA[Inovação]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[mirror]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[reflection]]></category>
		<category><![CDATA[vidageek]]></category>

		<guid isPermaLink="false">http://blog.caelum.com.br/?p=426</guid>
		<description><![CDATA[No último domingo foi feito o primeiro release público do projeto Mirror (versão 1.2). O Mirror é um projeto que tem por objetivo facilitar o uso da Java Reflection API, removendo boa parte da burocracia (como as diversas checked exceptions que são lançadas) e utilizando uma DSL para melhorar a legibilidade do código. Com essa <a href="http://blog.caelum.com.br/mirror-dsl-facilitando-o-uso-da-api-de-reflection/#more-426'" class="more-link">more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>No último domingo foi feito o primeiro release público do projeto Mirror (versão 1.2).</p>
<p>O <a href="http://projetos.vidageek.net/mirror/" target="_blank">Mirror</a> é um projeto que tem por objetivo facilitar o uso da <a href="http://java.sun.com/javase/6/docs/api/java/lang/reflect/package-summary.html" target="_blank">Java Reflection API</a>, removendo boa parte da burocracia (como as diversas checked exceptions que são lançadas) e utilizando uma <a href="http://en.wikipedia.org/wiki/Domain-specific_language" target="_blank">DSL</a> para melhorar a legibilidade do código.</p>
<p>Com essa remoção de burocracia e a DSL, é possível transformar o seguinte código:</p>
<pre class="brush: java; title: ; notranslate">
Field toSet = null;
for (Field f : target.getClass().getDeclaredFields()) {
    if (f.getName().equals(&quot;field&quot;)) {
        toSet = f;
    }
}
if (toSet != null &amp;&amp; ((toSet.getModifiers() &amp; Modifier.STATIC) == 0)
        &amp;&amp; ((toSet.getModifiers() &amp; Modifier.FINAL) == 0)) {
    toSet.setAccessible(true);
    toSet.set(target, value);
}
</pre>
<p>em algo mais legível e expressivo: </p>
<pre class="brush: java; title: ; notranslate">
Mirror.on(target).set().field(&quot;fieldName&quot;).withValue(value);
</pre>
<p>Atualmente o Mirror possui suporte para lidar com as operações reflectivas mais comuns (como instanciar objetos, invocar métodos, ler ou escrever atributos, etc). Ele foi desenvolvido por Adriano Almeida, Diego Feitosa e eu, todos consultores/instrutores aqui da Caelum, enquanto enfretavamos problemas comuns no dia a dia.</p>
<p>Esperamos que possa ser útil para vocês também!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.caelum.com.br/mirror-dsl-facilitando-o-uso-da-api-de-reflection/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Competições de programação: Google, IBM e FISL</title>
		<link>http://blog.caelum.com.br/competicoes-de-programacao-google-ibm-e-fisl/</link>
		<comments>http://blog.caelum.com.br/competicoes-de-programacao-google-ibm-e-fisl/#comments</comments>
		<pubDate>Fri, 20 Apr 2007 01:55:55 +0000</pubDate>
		<dc:creator>Guilherme Silveira</dc:creator>
				<category><![CDATA[Caelum]]></category>
		<category><![CDATA[Inovação]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.caelum.com.br/2007/04/19/competicoes-de-programacao-google-ibm-e-fisl/</guid>
		<description><![CDATA[A alguns anos atrás fiz uma entrevista em uma grande empresa de Java, uma dessas com 3 letras, e a primeira frase que o entrevistador me dirigiu ao ver meu curriculum foi um sonoro: &#8220;Essas competições de programação não dizem nada!&#8221; Essas competições não dizem se o programador é um bom engenheiro de software ou <a href="http://blog.caelum.com.br/competicoes-de-programacao-google-ibm-e-fisl/#more-116'" class="more-link">more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p style="float:right; margin:0 0 10px 15px; width:240px;">
		<img src="http://farm1.static.flickr.com/203/465762990_25293cbd49_m.jpg" width="240" />
		</p><p>A alguns anos atrás fiz uma entrevista em uma grande empresa de Java, uma dessas com 3 letras, e a primeira frase que o entrevistador me dirigiu ao ver meu curriculum foi um sonoro:</p>
<p>&#8220;<em>Essas competições de programação não dizem nada!</em>&#8221;</p>
<p>Essas competições não dizem se o programador é um bom engenheiro de software ou profundo conhecedor de alguma tecnolgoia, é verdade. Nem é essa a intenção.<br />
As questões dessas provas apresentam problemas mais complexos que o comumente exigido no mercado de TI, e não foca tanto na parte de desenvolvimento, mas mais na capacidade de encontrar soluções. Para um cientista da computação (ou um matemático, no meu caso), essa capacidade é mais importante do que o próprio desenvolvimento e codificação. Vou relatar aqui três competições as quais tiver a oportunidade de participar este ano. Em todas as três, grandes empresas como o Google e IBM, sempre estavam a caça de talentos. Pode-se dizer que um bom resultado nessas competições certamente atrairão diversas propostas de emprego, mestrado e doutorado.</p>
<p>Primeiro veio o <a href="http://www.google.com/codejamlatinamerica/">Google Code Jam Latin America</a>. Os problemas tinham o mesmo nível das competições internacionais, mas com menos fases. Na última etapa, em Belo Horizonte, tive a chance de encontrar alguns conhecidos e fazer novas amizades no meio dos 50 finalistas, dentre elas <a href="http://web.mit.edu/minilek/www/">Jelani Nelson</a>, aluno de PhD e técnico do MIT, participando pela Virgin Islands; <a href="http://www.viniciusfortuna.com/">Vinicius Fortuna</a> ex-competidor e agora engenheiro de software do Google em Nova Iorque, que veio entrevistar os competidores; Wanderley Guimarães, atual técnico do IME-USP, além de já conhecidos e excelentes competidores do ITA e PUC-RIO. Pelo vídeo promocional, da para você ter uma idéia do quão a sério o Google leva essas competições:</p>
<p><center><embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=8645111918937942037&#038;hl=en" flashvars=""> </embed></center></p>
<p>Depois teve a final mundial da ACM (<a href="http://icpc.baylor.edu/icpc/">ACM-ICPC</a>) em Tokyo, Japão, onde fui representando o time do IME-USP, depois da qualificação pela <a href="http://maratona.ime.usp.br/">Maratona de Programação</a> brasileira. Lá contamos com a presença de diversos nomes interessantes, como o criador do <a href="http://www.ruby-lang.org/">Ruby</a>, <a href="http://en.wikipedia.org/wiki/Yukihiro_Matsumoto">Yukihiro Matsumoto</a>, que palestrou sobre sua linguagem de programação. Entre seus comentários oportunos, disse que eficácia não é a grande preocupação de Ruby; 80% do design de uma linguagem está feito se o nome for curto, pequeno e bonito (Ruby). Outra frase dele foi &#8220;Web 2.0, o que é isso?&#8221;. Modesto.</p>
<p>Também estava presente <a href="http://en.wikipedia.org/wiki/Stuart_Feldman">Stuart Feldman</a> que, além de presidente da ACM e criador do primeiro compilador de Fotran 77, fez parte do grupo que criou o Unix e o make. Yuhichi Nakamura, criador do Xerces (xml4j), e diretor do <a href="http://www.research.ibm.com/trl/extfnt_e.htm">IBM Tokyo  Research Lab</a> estava ajudando na coordenação do evento.</p>
<p>Nessa competição,  mais de seis mil equipes participaram do evento nas competições regionais, de mais de 1700 universidades diferentes do mundo inteiro. A competição foi emocionante, com os quatro times brasileiros bem colocados. Além disso, dois times brasileiros resolveram 4 problemas, um marco na história da competição, onde o problema mais simples envolvia um algoritmo do tipo <a href="http://en.wikipedia.org/wiki/Longest_common_subsequence_problem">Longest Common Subsequence</a>. Esse é um algoritmo muito usado em inúmeros lugares, como em biologia computacional para verificar padrões de sequencias de DNA. No fim das contas, os problemas dessas competições não são tão irreais assim! Alguns problemas são muito difíceis, sendo que nenhuma equipe do mundo conseguiu resolver. Você pode <a href="http://icpc.baylor.edu/icpc/finals/2007WorldFinalProblemSet.pdf">ver a prova da competição aqui</a>.</p>
<p>O evento aconteceu no Hilton Tokyo Bay, um hotel dentro da Disney de Tokyo e muito bonito. Os quartos tinham vista para o monte Fuji e foi possível conhecer um pouco do país e de sua história.</p>
<p><center><a href="http://www.flickr.com/photos/silveira/465762980/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/218/465762980_6c74e9206a_m.jpg" width="240" height="160" alt="07-DH_CON-_D4V0186[LO]" /></a> <a href="http://www.flickr.com/photos/silveira/465762990/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/203/465762990_25293cbd49_m.jpg" width="240" height="160" alt="07-DH_TP-_MG_0281" /></a><br />
<a href="http://www.flickr.com/photos/silveira/465762976/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/218/465762976_7cdcbf5e5c_m.jpg" width="240" height="160" alt="07-DH_CON-_D4V0178[LO]" /></a> <a href="http://www.flickr.com/photos/silveira/465762974/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/213/465762974_e222c1c468_m.jpg" width="240" height="160" alt="07-DH_CON2-_D4V0240[LO]" /></a></center></p>
<p>O <a href="http://fisl.softwarelivre.org/">Fórum Internacional de Software Livre</a> preparou esse ano uma competição diferente, a Arena de programação, composta por duas fases. Para poder se inscrever, era necessário resolver um <a target="_blank" title="problema de lógica no próprio site" href="http://fisl.softwarelivre.org/8.0/www/?q=pt-BR/arena">problema de lógica no próprio site</a>, no estilo python-challenge, mas bem mais simples. A idéia era encontrar o caminho para a inscrição usando de seus dotes &#8220;hackers&#8221;. O <a title="Dorneles" target="_blank" href="http://nosleepforyou.blogspot.com/">Dorneles</a> postou a descrição de como se inscrever em detalhes.</p>
<p>Chegando no evento, pronto para a primeira fase, a Arena era um cercado de vidro, quase um aquário, onde os animais eram os programadores. </p>
<p><center><img src="http://farm1.static.flickr.com/174/465045113_7f02ecfdb1_m.jpg" alt="" /> <img src="http://farm1.static.flickr.com/199/465045983_90ac2ece66_m.jpg" alt="" /></center></p>
<p>A primeira fase terminou com alguns conhecidos entre os top. O <a target="_blank" title="Hugo Corbucci" href="http://codeache.blogspot.com/">Hugo Corbucci</a>, colega de viagem ao fisl pelo IME-USP, o Klaus Wustefeld e o <a target="_blank" title="Kalecser Kurtz" href="http://www.bling.com.br">Kalecser Kurtz</a>, o Dornelles Tremea e eu nos qualificamos entre os top 12. A segunda fase começou no dia seguinte e era composta por, supostamente, 24 horas de programação non-stop. Os 12 primeiros da fase anterior foram divididos em quatro grupos de três competidores. Na minha equipe? Kalecser, expert em Java e Dornelles, expert em Python e linux em geral. A tarefa? Resolver quatro bugs ou feature requests do Debian. Isso mesmo. Eles deram quatro códigos de bugs que estão ocorrendo em pacotes do Debian ou que feature requests que os usuários postaram e pediram para as equipes resolverem. Excelente proposta!</p>
<p>O primeiro bug envolvia um problema com o teclado. Você que é fã incondicional do Debian pode alternar para o tty1 (Ctrl+alt+F1), ativar o CAPS LOCK e tentar digitar &#8220;ABCD&#8221;&#8230; se o resultado for &#8220;ABcD&#8221;, você reproduziu o bug &#8211; que só funciona com alguns layouts de teclado. Encontramos muitas informações sobre o assunto e não conseguimos resolvê-lo, fomos capazes de encontrar textos indicando que o problema era mais delicado. Tudo isso após passar por muito código fonte em bash, perl etc. O <a target="_blank" title="segundo bug" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=411585">segundo bug</a> estava no pacote cdebconf, que é responsável pelo processo de configuração de pacotes debian durante o processo de instalação dos mesmos. Após correr por diversos arquivos feitos em C, com um &#8220;quê&#8221; de orientação a objeto, fomos capazes de isolar o bug e corrigi-lo, e o patch deve se tornar disponível em breve.</p>
<p>O terceiro bug envolve o bugtracking do debian, que não apresentava os dados da maneira que era requisitado, enquanto o último problema estava ligado ao  particionador, que encontrava problemas durante o redimensionamento em determinados casos. Muito código perl apareceu enquanto solucionávamos o terceiro bug, mas não houve tempo suficiente para sequer olhar com calma o último. No dia seguinte, a segunda parte dessa fase envolveu o desenvolvimento do zero de um programa para facilitar a internacionalização dos pacotes debian. Nosso objetivo era utilizar o Lucene para fazer o partial matching de palavras ou frases já traduzidas anteriormente em outros pacotes, mas devido ao padrão de i18n adotado pelo debian, o Java acabou segurando um pouco o desenvolvimento, mas ainda fomos capazes de mostrar algo funcional com uma implementação do <a href="http://en.wikipedia.org/wiki/Edit_distance">Edit Distance</a> para procurar palavras similares.</p>
<p>O resultado de tudo isso saiu no final do dia, durante o fechamento do evento, nossa equipe ficou em primeiro lugar! O que ganhei com tudo isso? Conheci novas pessoas que trabalham com projetos open source de áreas diferentes de Java, coloquei em prática o meu conhecimento de C que só usava na teoria, e ajudei com um projeto que jamais sonhei ser possível ajudar. Claro, o notebook que deram para cada um de nossa equipe também conta! <a href="http://vidageek.net/2007/04/19/fisl-80-entrevista-com-guilherme-silveira-um-dos-ganhadores-da-arena/">Fui entrevistado a respeito dessa competição</a>. Espero encontrar vocês nas próximas!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.caelum.com.br/competicoes-de-programacao-google-ibm-e-fisl/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>USP, São Carlos, software livre e o OLPC</title>
		<link>http://blog.caelum.com.br/usp-sao-carlos-software-livre-e-o-olpc/</link>
		<comments>http://blog.caelum.com.br/usp-sao-carlos-software-livre-e-o-olpc/#comments</comments>
		<pubDate>Thu, 08 Feb 2007 21:59:33 +0000</pubDate>
		<dc:creator>Paulo Silveira</dc:creator>
				<category><![CDATA[Caelum]]></category>
		<category><![CDATA[Inovação]]></category>
		<category><![CDATA[olpc]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.caelum.com.br/2007/02/08/usp-sao-carlos-software-livre-e-o-olpc/</guid>
		<description><![CDATA[Esses últimos dois dias estive em São Carlos, no ICMC da USP (casa de alguns colegas da comunidade). Dois professores do IME, instituto onde estudo e mantenho alguns trabalhos, não puderam participar então fui, jutamente com o Alexandre Freire, a apresentação do italiano Stefano De Panfilis da Engineering Ingegneria Informatica (maior empresa de software da <a href="http://blog.caelum.com.br/usp-sao-carlos-software-livre-e-o-olpc/#more-99'" class="more-link">more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p style="float:right; margin:0 0 10px 15px; width:240px;">
		<img src="http://farm1.static.flickr.com/149/384179734_fca0e0df05_m.jpg" width="240" />
		</p><p>Esses últimos dois dias estive em São Carlos, no <a href="http://www.icmc.usp.br/">ICMC</a> da USP (casa de <a href="http://nullability.org/">alguns colegas</a> da comunidade). Dois professores do <a href="http://www.ime.usp.br">IME</a>, instituto onde estudo e mantenho alguns trabalhos, não puderam participar então fui, jutamente com o Alexandre Freire, a apresentação do italiano Stefano De Panfilis da <a href="http://www.eng.it">Engineering Ingegneria Informatica</a> (maior empresa de software da Itália), que veio falar sobre o projeto <a href="http://www.qualipso.com/">Qualipso</a> e os centros de competência de software livre que estão sendo criados na União Européia (e eles estão bancando um na China e outro aqui no nosso Brasil). A previsão da união européia sobre o uso de software livre nas empresas <a href="http://ec.europa.eu/enterprise/ict/policy/doc/2006-11-20-flossimpact.pdf">não poderia ser mais animadora</a>. A polêmica idéia da UE é a de criar um certificado &#8220;CMM-like&#8221; para projetos open source. Arrojado.</p>
<p>O Alexandre Freire é um cara ímpar: foi desenvolvedor java em Trevenso na Itália, couch de XP na <a href="http://www.paggo.com.br">paggo</a>, hospedou o Richard Stallman em sua própria casa por uma semana, é um dos responsáveis pelo <a href="http://estudiolivre.org/tiki-index.php">Estúdio Livre</a>, gerente de projeto do Ministério da Cultura (MinC) quando palestrou em diversos lugares do mundo, desde a Inglaterra até a Tunísia, já jantou com o <a href="http://www.lixo.org">Carlos Villela</a> e com o chefão da <a href="http://www.thoughtworks.com">Thoughtworks</a> por lá, e até instalou internet via satélite em uma aldeia cabloca no interior do Pará: Aritapera. Um ativista. Sempre que o encontro ele está tecendo muitas idéias novas. O volume de informações que eu adquiro é incrível.</p>
<p>Durante a apresentação do Alexandre, me dei conta que o IME já produziu bastante software livre: <a href="http://linuxcompressed.sourceforge.net/">avançados hacks no kernel do linux</a>, agendamento de carga didática usando algoritmos genéticos, <a href="http://eclipse.ime.usp.br/">diversos plugins para o eclipse</a>, <a href="http://panda.ime.usp.br">organizadores de aula</a>, <a href="http://www.linux.ime.usp.br/~patty/mac499/tecnica/movel.html">sistemas de prontuário eletrônico usando PDAs</a>, possui comitters no JBoss e <a href="http://www.jacorb.org/">Jacorb</a>, entre uma lista com mais de 20, e devem haver mais sem contar as implementações de algoritmos sem uso direto na indústria.</p>
<p>O grande problema é gerenciar todo esse trabalho e código: como reaproveitá-lo. O <a href="http://noticias.usp.br/acontece/obterNoticia?codntc=14616&#038;codnucjrn=1">Centro de Competência em Software Livre da USP</a>, que está sendo construído grudado ao bloco do IME, será responsável por isso e muito mais!</p>
<p><a href="http://www.flickr.com/photos/silveira/384179995/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/168/384179995_d434cd7ff6_m.jpg" width="240" height="180" alt="CIMG1121" /></a> <a href="http://www.flickr.com/photos/silveira/384179734/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/149/384179734_fca0e0df05_m.jpg" width="240" height="180" alt="CIMG1117" /></a><br />
<a href="http://www.flickr.com/photos/silveira/384179585/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/138/384179585_3ecd17be45_m.jpg" width="240" height="180" alt="CIMG1113" /></a> <a href="http://www.flickr.com/photos/silveira/384179686/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/157/384179686_21af038c2f_m.jpg" width="240" height="180" alt="CIMG1111" /></a></p>
<p>Também tive ontém meu primeiro contato com o <a href="http://www.laptop.org/index.pt_BR.html">OLPC</a> devido a proximidade do Alexandre com o MinC. É o primeiro protótipo (deverá haver mais dois). Fiquei muito impressionado com o que conseguiram fazer com 145 dólares: 256 mb de ram, um excelente lcd, câmera, som, wifi e dois slots usb. O teclado e o touchpad desta versão não estão muito funcionais (leia-se: as vezes não funcionam). Quando fechado ele realmente parece um brinquedo (passaria desapercebido como uma lancheira).</p>
<p>O Sugar, o desktop manager do OLPC, é um show a parte: eles mudaram totalmente o conceito de desktop: as crianças possuem três ambientes (que podem ser acessados por teclas): as suas aplicações, as aplicações que estão comparilhadas entre seus amigos, e as aplicações que estão compartilhadas entre todo mundo. Isso tudo via descoberta ad-hoc e sem usar palavras, apenas ícones, aumentando o apelo para as crianças.</p>
<p>O <a href="http://wiki.laptop.org/go/Etoys">Etoys</a> é uma aplicação escrita em Smalltalk rodando no Squeak, que tem inspirações no nosso bom e velho Logo (saudades do <a href="http://www.mci.org.br/micro/prologica/cp400.html">CP400</a> de meu pai), vai certamente trazer algumas crianças para o nosso ramo. Confira no vídeo abaixo uma apresentação do sugar e repare no Etoys.</p>
<p><center><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/DwzCsOFxT-U"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/DwzCsOFxT-U" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></center></p>
<p>Java não vem instalado, mas com o Java 6 sendo GPL talvez isso mude. A maioria das aplicações são escritas em python. Todas as aplicações são colaborativas: até mesmo o firefox pode ser compatilhado para que o guri mostre a seus amigos o incrível artigo que descobriu no wikipedia (ou quem sabe um tutorial de como quebrar MD5 por força bruta com menos tentativas). Confesso que  sempre duvidei do sucesso do projeto, agora mudei de lado.</p>
<p>Conheci lá o <a href="http://www.async.com.br/~kiko/">Christian Reis</a>, um python hacker amigo do Alexandre que dirige a <a href="http://www.async.com.br/">Async</a>, uma empresa fortemente ligada com a <a href="http://www.canonical.com/">Canonical</a>, prestando serviço para fora e fabricando software livre. Fiquei impressionado com a relação da empresa com a universidade e a comunidade. Seu modelo de negócios vale um estudo aprofundado.</p>
<p>Foram dois dias bem agitados. A Caelum vai participar de perto do centro de competência  e em breve teremos novidades.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.caelum.com.br/usp-sao-carlos-software-livre-e-o-olpc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

