<?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>hacklab.com.br</title>
	<atom:link href="http://hacklab.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://hacklab.com.br</link>
	<description></description>
	<lastBuildDate>Fri, 05 Mar 2010 20:40:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Lançado MOC Brasil</title>
		<link>http://hacklab.com.br/2010/03/05/lancado-moc-brasil/</link>
		<comments>http://hacklab.com.br/2010/03/05/lancado-moc-brasil/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 20:40:31 +0000</pubDate>
		<dc:creator>andersonorui</dc:creator>
				<category><![CDATA[Notícias]]></category>
		<category><![CDATA[lançamento]]></category>
		<category><![CDATA[moc]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://hacklab.com.br/?p=740</guid>
		<description><![CDATA[Nesta segunda-feira entrou no ar o novo site do MOC Brasil (Manual de Oncologia) editado pela Dendrix. O grande desafio deste site foi desenvolver uma ferramenta que importasse o conteúdo do livro diagramado no InDesign diretamente para o Wordpress. Saiba mais aqui.

]]></description>
			<content:encoded><![CDATA[<p>Nesta segunda-feira entrou no ar o novo site do <a title="MOC Brasil" href="http://mocbrasil.com" target="_blank">MOC Brasil</a> (Manual de Oncologia) editado pela Dendrix. O grande desafio deste site foi desenvolver uma ferramenta que importasse o conteúdo do livro diagramado no InDesign diretamente para o Wordpress. Saiba mais <a title="MOC Brasil" href="http://hacklab.com.br/?page_id=723&amp;preview=true" target="_self">aqui</a>.</p>
<p><a rel="attachment wp-att-741" href="http://hacklab.com.br/2010/03/05/lancado-moc-brasil/moc_00-2/"><img class="aligncenter size-large wp-image-741" title="moc_00" src="http://hacklab.com.br/files/2010/03/moc_001-380x260.jpg" alt="" width="380" height="260" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://hacklab.com.br/2010/03/05/lancado-moc-brasil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visita Colombiana</title>
		<link>http://hacklab.com.br/2010/02/10/visita-colombiana/</link>
		<comments>http://hacklab.com.br/2010/02/10/visita-colombiana/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 20:36:04 +0000</pubDate>
		<dc:creator>leogermani</dc:creator>
				<category><![CDATA[Notícias]]></category>

		<guid isPermaLink="false">http://hacklab.com.br/?p=695</guid>
		<description><![CDATA[Na semana passada recebemos a visita do Fernando Quintero, colombiano que estava aqui em São Paulo trabalhando na Campus Party e nos procurou para conhecer uma experiência de Hacklab aqui no Brasil. Ele está começando uma iniciativa semelhante lá na Colombia e quis saber mais sobre nosso modelo de gestão, metodologias e ideais.
Ele gravou vários [...]]]></description>
			<content:encoded><![CDATA[<p>Na semana passada recebemos a visita do Fernando Quintero, colombiano que estava aqui em São Paulo trabalhando na Campus Party e nos procurou para conhecer uma experiência de Hacklab aqui no Brasil. Ele está começando uma iniciativa semelhante lá na Colombia e quis saber mais sobre nosso modelo de gestão, metodologias e ideais.</p>
<p>Ele gravou vários vídeos com a gente para mostrar aos companheiros lá na Colômbia e, para não ficarmos pra trás, fizemos um com ele também:</p>
<p><a href="http://hacklab.com.br/2010/02/10/visita-colombiana/"><em>Click here to view the embedded video.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://hacklab.com.br/2010/02/10/visita-colombiana/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>No ar o novo site do Hacklab</title>
		<link>http://hacklab.com.br/2010/01/29/no-ar-novo-site-do-hacklab/</link>
		<comments>http://hacklab.com.br/2010/01/29/no-ar-novo-site-do-hacklab/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 14:37:59 +0000</pubDate>
		<dc:creator>Pedro</dc:creator>
				<category><![CDATA[Notícias]]></category>
		<category><![CDATA[hacklab]]></category>

		<guid isPermaLink="false">http://hacklab.com.br/?p=648</guid>
		<description><![CDATA[Muita gente quando tem uma ideia, começa fazendo um site para transformá-la em realidade. No último ano e meio ficamos tão focados trabalhando na construção do Hacklab &#8211; nossa organização social, metodologia etc &#8211; que deixamos nosso espaço virtual de lado. Mas isso foi até ontem, pois finalmente colocamos nosso site no ar!
Além de manter [...]]]></description>
			<content:encoded><![CDATA[<p>Muita gente quando tem uma ideia, começa fazendo um site para transformá-la em realidade. No último ano e meio ficamos tão focados trabalhando na construção do Hacklab &#8211; nossa organização social, metodologia etc &#8211; que deixamos nosso espaço virtual de lado. Mas isso foi até ontem, pois finalmente colocamos nosso site no ar!</p>
<p>Além de manter o <a href="http://hacklab.com.br/portfolio/" target="_self">portfolio</a> do Hacklab, publicamos no <a href="http://hacklab.com.br/blog" target="_blank">blog</a> estudos de caso, dicas técnicas sobre as tecnologias que usamos, pedaços de software que podem ser úteis para outras pessoas e o que mais acharmos interessante. Por aqui também estão os  <a href="http://hacklab.com.br/wordpress/" target="_self">plugins para WordPress</a> feitos pelo Hacklab com espaço para suporte e documentação.</p>
<p>Outras coisas já estão sendo armadas para este espaço, mas vamos devagar, uma coisa de cada vez.</p>
<p>Bem vindos!!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacklab.com.br/2010/01/29/no-ar-novo-site-do-hacklab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novo Catracalivre no ar!</title>
		<link>http://hacklab.com.br/2010/01/22/novo-catracalivre-no-ar/</link>
		<comments>http://hacklab.com.br/2010/01/22/novo-catracalivre-no-ar/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 20:34:44 +0000</pubDate>
		<dc:creator>leogermani</dc:creator>
				<category><![CDATA[Notícias]]></category>
		<category><![CDATA[catracalivre]]></category>
		<category><![CDATA[lançamento]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://hacklab.com.br/?p=668</guid>
		<description><![CDATA[Esse mês entrou no ar a nova versão do site catracalivre, um projeto que gostamos muito de participar e que ficamos muito felizes com o resultado!
Para os visitantes, o site ficou muito mais leve e fácil de navegar. A agenda, uma das principais funções do site, está melhor organizada e mais bonita!
Para quem gosta de [...]]]></description>
			<content:encoded><![CDATA[<p>Esse mês entrou no ar a nova versão do site <a href="http://catracalivre.com.br">catracalivre</a>, um projeto que gostamos muito de participar e que ficamos muito felizes com o resultado!</p>
<p>Para os visitantes, o site ficou muito mais leve e fácil de navegar. A agenda, uma das principais funções do site, está melhor organizada e mais bonita!</p>
<p>Para quem gosta de saber da parte técnica e curte WordPress, desenvolvemos para este site a nova versão do plugin eletro-widgets (que esperamos lançar ainda esse mês). Gostamos tanto dele que em vez de ficar explicando aqui o que ele faz fizemos um vídeo mostrando tudo!</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --><p><a href="http://hacklab.com.br/2010/01/22/novo-catracalivre-no-ar/"><em>Click here to view the embedded video.</em></a></p></p>
<p>Vale dizer também que o catracalivre está com uma média de mais de 6 mil visitas diárias! Parabéns a toda equipe pelo ótimo conteúdo!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacklab.com.br/2010/01/22/novo-catracalivre-no-ar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ponline recebe prêmio ARede 2009</title>
		<link>http://hacklab.com.br/2010/01/02/ponline-recebe-premio-arede-2009/</link>
		<comments>http://hacklab.com.br/2010/01/02/ponline-recebe-premio-arede-2009/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 13:45:06 +0000</pubDate>
		<dc:creator>leogermani</dc:creator>
				<category><![CDATA[Notícias]]></category>
		<category><![CDATA[acessasp]]></category>
		<category><![CDATA[ponline]]></category>
		<category><![CDATA[prêmio]]></category>

		<guid isPermaLink="false">http://hacklab.com.br/?p=634</guid>
		<description><![CDATA[A Ponline é a pesquisa que traça o perfil dos usuários do programa Acessa SP, do governo de São Paulo. O Hacklab, no último ano, trabalhou na reestruturação do sistema de visualização dos resultados da pesquisa no site http://ponline.acessasp.sp.gov.br/. No novo sistema, é mais simples de se criar gráficos e tabelas com recortes específicos da [...]]]></description>
			<content:encoded><![CDATA[<p>A Ponline é a pesquisa que traça o perfil dos usuários do programa <a href="http://www.acessasp.sp.gov.br/">Acessa SP</a>, do governo de São Paulo. O Hacklab, no último ano, trabalhou na reestruturação do sistema de visualização dos resultados da pesquisa no site <a href="http://ponline.acessasp.sp.gov.br/" target="_blank">http://ponline.acessasp.sp.gov.br/</a>. No novo sistema, é mais simples de se criar gráficos e tabelas com recortes específicos da pesquisa, por tema, perfil do público ou localização.</p>
<p>Em novembro de 2009 a Ponline recebeu o prêmio ARede 2009 de inclusão digital na modalidade setor público.<span id="more-634"></span></p>
<h3>Matérias sobre o prêmio:</h3>
<p><a href="http://www.arede.inf.br/inclusao/edicao-atual/2510-a-inclusao-digital-faz-a-festa" target="_blank">http://www.arede.inf.br/inclusao/edicao-atual/2510-a-inclusao-digital-faz-a-festa</a></p>
<p><a href="http://softwarelivre.org/portal/geral/premio-arede-2009-uma-festa-da-inclusao-digital" target="_blank">http://softwarelivre.org/portal/geral/premio-arede-2009-uma-festa-da-inclusao-digital</a></p>
<h3>Lista dos ganhadores de 2009</h3>
<p><strong>Personalidade do ano</strong><br />
Léa Fagundes, educadora, coordenadora do Laboratório de Estudos Cognitivos do Instituto de Psicologia da Universidade Federal do Rio Grande do Sul.</p>
<p><strong>Modalidade Educação</strong><br />
Projeto UCA Piraí (Rio de Janeiro)<br />
Ensino Médio Presencial com Mediação Tecnológica (Amazonas)</p>
<p><strong>Modalidade Terceiro Setor</strong><br />
Fundações e Institutos &#8211; Rede Vivo Educação (São Paulo)<br />
Organização da Sociedade Civil &#8211; Se Liga &#8211; Construindo a Cidadania Digital (Ceará)</p>
<p><strong>Modalidade Setor Público</strong><br />
Federal &#8211; Escola Conectada (Ministério da Educação)<br />
<span style="text-decoration: underline"><em><strong>Estadual &#8211; Ponline: Contribuição para Inclusão Digital e Participação Pública (São Paulo)</strong></em></span><br />
Municipal &#8211; Rádio na Escola (Florianópolis)</p>
<p><strong>Modalidade Empresa</strong><br />
Pública &#8211; Projeto Demoiselle (Serpro)<br />
Privada &#8211; Intel® Educar (Intel)</p>
]]></content:encoded>
			<wfw:commentRss>http://hacklab.com.br/2010/01/02/ponline-recebe-premio-arede-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como manipular metadados de fotos no Linux com o exiv2</title>
		<link>http://rodrigo.utopia.org.br/2009/12/16/como-manipular-metadados-de-fotos-no-linux-com-o-exiv2/</link>
		<comments>http://rodrigo.utopia.org.br/2009/12/16/como-manipular-metadados-de-fotos-no-linux-com-o-exiv2/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 00:18:58 +0000</pubDate>
		<dc:creator>rodrigo</dc:creator>
				<category><![CDATA[1]]></category>
		<category><![CDATA[digikam]]></category>
		<category><![CDATA[exiv2]]></category>
		<category><![CDATA[fotos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[software livre]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://rodrigo.utopia.org.br/?p=245</guid>
		<description><![CDATA[Algumas vezes quando viajo mais de uma pessoa leva câmera fotográfica. Quando volto, gosto de juntar todas essas fotos em um único diretório e renomear elas de acordo com a data de criação para poder vem as fotos em ordem independente da câmera. Para fazer isso uso a ferramenta para renomear em lote do software [...]]]></description>
			<content:encoded><![CDATA[<p>Algumas vezes quando viajo mais de uma pessoa leva câmera fotográfica. Quando volto, gosto de juntar todas essas fotos em um único diretório e renomear elas de acordo com a data de criação para poder vem as fotos em ordem independente da câmera. <span style="text-decoration: line-through">Para fazer isso uso a ferramenta para renomear em lote do software <a href="http://www.digikam.org" >digiKam</a></span>. Para fazer isso, usava o <a href="http://www.digikam.org/" >digiKam</a> mas não encontrei essa opção na nova versão que vem com o Ubuntu 9.10. Utilizei então o <a href="http://www.krename.net/" >Krename</a>.</p>
<p>Porém, algumas vezes a data e o horário de uma das câmeras não está certo e, por tanto, o metadado referente a data de criação das fotos está errado. Para poder renomear as fotos levando em conta a data de criação é necessário então primeiro corrigir o metadado. Para isso utilizo o <a href="http://www.exiv2.org/" >exiv2</a>, uma ferramenta de linha de comando para linux para editar metadados de fotos.</p>
<p>Para instalar o exiv2 no Ubuntu basta rodar o seguinte comando:</p>
<p><code>sudo aptitude install exiv2</code></p>
<p>Para ver os metadados de uma foto basta passar o nome do arquivo como primeiro parâmetro para o software (onde foto.jpg deve ser trocado pelo nome do arquivo):</p>
<p><code>exiv2 foto.jpg</code></p>
<p>Também é possível inserir, deletar, modificar ou renomear metadados. Informações sobre como utilizar esses recursos podem ser obtidas na man page do programa:</p>
<p><code>man exiv2</code></p>
<p>Existe ainda o recurso de ajustar a data e horário de criação de uma ou mais fotos passando um número de horas, ou dias, ou meses (etc). Com isso basta descobrir em quanto a data da câmera que tirou as fotos estava errada (comparando por exemplo os metadados de duas fotos tiradas com câmeras diferentes mais ou menos no mesmo horário) e utilizar o recurso de ajustar data e horário do exiv2.</p>
<p>A opção para ajustar é a <em>ad</em> e ela depende de pelo menos mais um parâmetro que pode ser (tradução livre da man page):</p>
<ul>
<li>-a <em><span style="text-decoration: underline">tempo</span></em> &#8211; Ajustar tempo no formato [-]HH[:MM[:SS]]. Essa opção só pode ser usada com a ação de ajustar (ad). Exemplos: <em>1</em> adiciona uma hora, <em>1:01</em> adiciona uma hora e um minuto, <em>-0:00:30</em> subtrai trinta segundos.</li>
<li>-Y <span style="text-decoration: underline"><em>anos</em></span><em> </em> &#8211; Ajuste de tempo com base num número positivo ou negativo de anos.</li>
<li>-O <span style="text-decoration: underline"><em>meses</em></span><em> </em> &#8211; Ajuste de tempo com base num número positivo ou negativo de meses.</li>
<li>-D <span style="text-decoration: underline"><em>dias</em><em></em></span> &#8211; Ajuste de tempo com base num número positivo ou negativo de dias.</li>
</ul>
<p>Por exemplo, para arrumar em uma hora e meia o horário de todas as fotos da extensão JPG que estão em um determinado diretório:</p>
<p><code>exiv2 ad -a 1:30 *.jpg</code></p>
<p>Ou então para subtrair duas horas, quarenta minutos, quinze dias e dois meses:</p>
<p><code>exiv2 ad -a -2:40 -D 15 -O 2 *.jpg</code></p>
<p>Ps: alguém conhece alguma interface gráfica para Linux que permite fazer esse tipo de manipulação de fotos?</p>
]]></content:encoded>
			<wfw:commentRss>http://rodrigo.utopia.org.br/2009/12/16/como-manipular-metadados-de-fotos-no-linux-com-o-exiv2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como ligar um microfone externo em um N95</title>
		<link>http://pirex.com.br/2009/11/02/como-ligar-um-microfone-externo-em-um-n95/</link>
		<comments>http://pirex.com.br/2009/11/02/como-ligar-um-microfone-externo-em-um-n95/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 16:43:00 +0000</pubDate>
		<dc:creator>leogermani</dc:creator>
				<category><![CDATA[Notícias]]></category>
		<category><![CDATA[celular]]></category>
		<category><![CDATA[gambiarra]]></category>
		<category><![CDATA[Home]]></category>
		<category><![CDATA[Leo Germani]]></category>
		<category><![CDATA[microfone]]></category>
		<category><![CDATA[n95]]></category>
		<category><![CDATA[reportagem]]></category>
		<category><![CDATA[vídeo]]></category>

		<guid isPermaLink="false">http://pirex.com.br/?p=1443</guid>
		<description><![CDATA[Nesse vídeo eu mostro como eu uso um microfone externo conectado a meu N95 e uso ele para gravar vídeos. Os vídeo publicado nesse post do cibercultura 10 + 10 foram feitos desse jeito (ainda com adaptadores e não com o cabo sob medida).
]]></description>
			<content:encoded><![CDATA[<p>Nesse vídeo eu mostro como eu uso um microfone externo conectado a meu N95 e uso ele para gravar vídeos. Os vídeo publicado <a href="http://pirex.com.br/2009/10/12/cibercultura-10-10/" >nesse post do cibercultura 10 + 10 </a>foram feitos desse jeito (ainda com adaptadores e não com o cabo sob medida).</p>
<a href="http://pirex.com.br/2009/11/02/como-ligar-um-microfone-externo-em-um-n95/"><p><em>Click here to view the embedded video.</em></p></a>
]]></content:encoded>
			<wfw:commentRss>http://pirex.com.br/2009/11/02/como-ligar-um-microfone-externo-em-um-n95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django model history with django-reversion</title>
		<link>http://blog.brunogola.com.br/2009/10/django-model-history-with-django-reversion/</link>
		<comments>http://blog.brunogola.com.br/2009/10/django-model-history-with-django-reversion/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 18:06:04 +0000</pubDate>
		<dc:creator>Bruno Gola</dc:creator>
				<category><![CDATA[1]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[hacking]]></category>

		<guid isPermaLink="false">http://blog.brunogola.com.br/?p=110</guid>
		<description><![CDATA[I&#8217;m currently working on a django project and I needed to track all changes to a model and provide a log showing what has changed (like a wiki).
I&#8217;ve found three extensions/libs that apparently could do the job for me (fullhistory, django-history and django-reversion) so I decided to test them, but because of the lack of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently working on a <a href="http://www.djangoproject.com/">django</a> project and I needed to track all changes to a model and provide a log showing what has changed (like a wiki).</p>
<p>I&#8217;ve found three extensions/libs that apparently could do the job for me (<a href="http://code.google.com/p/fullhistory/">fullhistory</a>, <a href="http://code.google.com/p/django-history/">django-history</a> and <a href="http://code.google.com/p/django-reversion/">django-reversion</a>) so I decided to test them, but because of the lack of structure/documentation of the other two I tried just the last one. </p>
<h2>django-reversion</h2>
<p> (<a href="http://code.google.com/p/django-reversion/">http://code.google.com/p/django-reversion/</a>)</p>
<p>It has a <a href="http://code.google.com/p/django-reversion/wiki/GettingStarted">good documentation</a>, integration with the admin and the most important for me a <em><a href="http://code.google.com/p/django-reversion/wiki/LowLevelAPI">low level api</a></em>, as I am not using the admin app for this project. </p>
<p>The installation went pretty well (<em>svn co <a href="http://django-reversion.googlecode.com/svn/tags/1.1.2/src/reversion">http://django-reversion.googlecode.com/svn/tags/1.1.2/src/reversion</a></em> to your PYTHONPATH, add the <em>reversion</em> app to your INSTALLED_APPS in <em>settings.py</em> and the usual <em>python manage.py syncdb</em>).</p>
<p>To track the changes of a model you must register it with the <em>reversion</em> framework (importing <em>reversion</em> and calling <em>reversion.register(YourModel)</em>).</p>
<p><em>Reversion</em> provides some ways for creating revisions of your model and the docs recommend that you choose one of them to use in your project. I chose the MiddleWare method because it seemed the better option for our project, but you should look the <a href="http://code.google.com/p/django-reversion/wiki/LowLevelAPI">reversion documentation</a> and decide which one is the best for you.</p>
<p>After registering the model and installing the MiddleWare no more changes are needed, whenever I save a model a new revision is created on the database. Another cool feature is the <em>follow</em> argument when registering a model. That way you can specify a ForeingKey/ManyToMany field to follow. This means that when you save the model a new revision is created with all &#8220;followed&#8221; fields in its current state. It&#8217;s very useful. See the docs for an example.</p>
<p>The only thing that&#8217;s not so clear for me is: what happens if I delete a field from a model that&#8217;s registered within reversion? Can you still restore its versions?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brunogola.com.br/2009/10/django-model-history-with-django-reversion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a tweet gadget for Google Wave</title>
		<link>http://blog.brunogola.com.br/2009/10/creating-a-tweet-gadget-for-google-wave/</link>
		<comments>http://blog.brunogola.com.br/2009/10/creating-a-tweet-gadget-for-google-wave/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 18:56:07 +0000</pubDate>
		<dc:creator>Bruno Gola</dc:creator>
				<category><![CDATA[hacklab]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[google gadgets]]></category>
		<category><![CDATA[google wave]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.brunogola.com.br/?p=118</guid>
		<description><![CDATA[This week bani sent me an invite for trying Google Wave. It&#8217;s a great tool and if it remains as open as Google says it will I think it can really change the way we communicate over the internets. I mean, it&#8217;s much more flexible than e-mail and it takes collaboration to another level. But, [...]]]></description>
			<content:encoded><![CDATA[This week <a href="http://twitter.com/bani">bani</a> sent me an invite for trying <a href="http://wave.google.com">Google Wave</a>. It’s a great tool and if it remains as open as Google says it will I think it can really change the way we communicate over the <em>internets</em>. I mean, it’s much more flexible than e-mail and it takes collaboration to another level. But, as I said, <em>IMO</em> the “key for success” in this case is to stay open and to support the creation of other servers and implementations(as <a href="http://pygowave.net">PyGoWave</a> [which deserves a blog post]).<span id="more-279"></span>

But enough of cheap talk, I’ll show you the code.

My first “useful” piece of code for <em>Wave</em> is a <em>Tweet Gadget</em>. It’s a simple <a href="http://code.google.com/apis/gadgets/">Google Gadget</a> that takes advantage of the <a href="http://code.google.com/apis/wave/extensions/gadgets/guide.html">Wave extensions</a> for interacting with the <em>Wave user</em>. What the gadget does is very simple, it takes a <em>tweet id</em> and using the <a href="http://apiwiki.twitter.com/">Twitter API</a> it places the tweet inside the Wave. It’s a simple way to quote a tweet.

I must say that the original idea is not mine, it’s <a href="http://isnomore.net">rbp</a>’s idea. We were chatting using Google Wave and he wanted to quote a tweet. That’s how we started looking ways of doing it.
<h2>Stateless gadget</h2>
I started writing a <a href="http://brunogola.com.br/tweet_stateless.xml">simple gadget</a> that using the <em>Google Gadgets API</em> makes a request using the Twitter API and shows the tweet in the wave. The problem of this first version was that it does not keep the state, so if you reload/rejoin the wave, you won’t see the tweet, but instead you will see the text box for entering the tweet id.

In this first version you can see how to make a JSON Async Request using the Google Gadgets API. It’s very simple, all you need to do is to set the parameter <em>gadgets.io.RequestParameters.CONTENT_TYPE</em> to <em>gadgets.io.ContentType.JSON</em> and then call <em>gadgets.io.makeRequest(url, callback, params)</em> where <em>callback</em> is a <em>function</em> that receives the JSON object.A very simple example:

<code>
function myCallback(obj) {
jsondata = obj.data;
// access the attributes as jsondata['key']
// ...
}
function makesJSONRequest(url) {
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
gadgets.io.makeRequest(url, myCallback, params);
}
</code>
<h2>Adding state</h2>
Until now the gadget is a simple <em>Google Gadget</em> as it does not use any feature of <em>Google Wave</em>. Also it’s not so useful because it can’t keep the tweet id when you leave the Wave. And worse, people will never see the tweet you quoted. One of the main differences between simple Google Gadgets and Wave Gadgets is their <a href="http://code.google.com/apis/wave/extensions/gadgets/guide.html#state">ability to keep, set and change <em>state</em></a>. By state I mean information. You can keep user preferences, a game score or a <em>tweet id</em> (or even a tweet).

I decided that the easiest way was to store the tweet as it will appear in the wave (with HTML entities and everything). The <a href="http://brunogola.com.br/tweet_state.xml">new version</a> will keep the tweet information when the user enters the tweet id, so everybody in the wave can see the quoted tweet.

You can see the <a href="http://brunogola.com.br/tweet_state.xml">Gadget code</a> to understand how state works in Google Wave, but what’s most important:
<ul>
	<li>use a callback (with wave.setStateCallback()) to be aware of state changes</li>
	<li>wave.getState() returns an state <em>dict-like</em> object which you can set and get information from</li>
	<li>use wave.getState().get(’key’) for getting an information</li>
	<li>and wave.getState().submitDelta({’key1:’ value1, ‘key2′: value2} for setting information</li>
</ul>
And that’s it. It’s very simple, hope you enjoy it <img class="wp-smiley" src="http://blog.brunogola.com.br/wp-includes/images/smilies/icon_smile.gif" alt=":)" />]]></content:encoded>
			<wfw:commentRss>http://blog.brunogola.com.br/2009/10/creating-a-tweet-gadget-for-google-wave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transparência HackDay</title>
		<link>http://blog.brunogola.com.br/2009/10/transparencia-hackday/</link>
		<comments>http://blog.brunogola.com.br/2009/10/transparencia-hackday/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 15:19:21 +0000</pubDate>
		<dc:creator>Bruno Gola</dc:creator>
				<category><![CDATA[hacklab]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.brunogola.com.br/?p=104</guid>
		<description><![CDATA[&#8220;Two days for hacking the Brazilian politics&#8221;
This weekend (October 3rd and 4th) will happen the first &#8220;Transparência HackDay&#8221; (&#8221;Transparency HackDay&#8221; in english), a free and open hacking event with focus on bringing together hackers, activists, managers and people with ideas to make government information/public data more accessible for everyone using and writing web tools.
I&#8217;m attending [...]]]></description>
			<content:encoded><![CDATA[<p><strong><em>&#8220;Two days for hacking the Brazilian politics&#8221;</em></strong></p>
<p>This weekend (<strong>October 3rd</strong> and <strong>4th</strong>) will happen the first &#8220;<em>Transparência HackDay</em>&#8221; (&#8221;<em>Transparency HackDay</em>&#8221; in english), a free and open hacking event with focus on bringing together hackers, activists, managers and people with ideas to make government information/public data more accessible for everyone using and writing web tools.</p>
<p>I&#8217;m attending and one of my ideas is to hack <strong>CET</strong> (<em>Companhia de Engenharia de Tráfego / Traffic Engineering Company</em>) data and make them available. The idea is to improve a crawler I wrote (in <strong>python</strong> <img src='http://blog.brunogola.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) that downloads and stores data about the traffic in São Paulo every 30 minutes from the &#8220;traffic now&#8221; <strong>CET</strong> website (as they don&#8217;t store it [or at least don't provide anything]).</p>
<p>More information about the <strong>HackDay</strong> (in <em>portuguese</em>):<br />
<a href="http://www.slideshare.net/esferamobi/transparencia-hackday-proposta">http://www.slideshare.net/esferamobi/transparencia-hackday-proposta</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brunogola.com.br/2009/10/transparencia-hackday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
