<?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 &#187; hacklab</title>
	<atom:link href="http://hacklab.com.br/category/hacklab/feed/" rel="self" type="application/rss+xml" />
	<link>http://hacklab.com.br</link>
	<description></description>
	<lastBuildDate>Thu, 17 May 2012 19:02:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>O Hacklab está contratando</title>
		<link>http://hacklab.com.br/2010/04/01/o-hacklab-esta-contratando/</link>
		<comments>http://hacklab.com.br/2010/04/01/o-hacklab-esta-contratando/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 20:56:24 +0000</pubDate>
		<dc:creator>leogermani</dc:creator>
				<category><![CDATA[hacklab]]></category>

		<guid isPermaLink="false">http://hacklab.com.br/?p=749</guid>
		<description><![CDATA[Estamos procurando um programador que saiba PHP, Javascript, HTML e CSS. Se tiver experiência com WordPress, melhor ainda! O Hacklab desenvolve vários projetos utilizando WordPress, Python, Django e outras tecnologias. Gostamos de utilizar metodologias ágeis de desenvolvimento e publicar software livre. Como trabalhamos com plataformas livres, quem tiver interesse em trabalhar aqui vai precisar se [...]]]></description>
			<content:encoded><![CDATA[<p>Estamos procurando um programador que saiba PHP, Javascript, HTML e CSS. Se tiver experiência com WordPress, melhor ainda!</p>
<p>O Hacklab desenvolve vários projetos utilizando WordPress, Python, Django e outras tecnologias. Gostamos de utilizar metodologias ágeis de desenvolvimento e publicar software livre. Como trabalhamos com plataformas livres, quem tiver interesse em trabalhar aqui vai precisar se virar bem no linux.</p>
<p>Para saber mais sobre nós navegue aqui no nosso site ou faça uma visita.</p>
<p>Se tiver interesse em trabalhar conosco, envie um email para contato arroba hacklab.com.br contando um pouco da sua experiência, do que sabe e gosta de fazer e do que tem vontade de aprender</p>
]]></content:encoded>
			<wfw:commentRss>http://hacklab.com.br/2010/04/01/o-hacklab-esta-contratando/feed/</wfw:commentRss>
		<slash:comments>1</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 Germani Ghiorzi</dc:creator>
				<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 [...]]]></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>2</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>
		<item>
		<title>Visitem nosso novo portfolio online</title>
		<link>http://hacklab.com.br/2009/05/17/visitem-nosso-novo-portfolio-online/</link>
		<comments>http://hacklab.com.br/2009/05/17/visitem-nosso-novo-portfolio-online/#comments</comments>
		<pubDate>Mon, 18 May 2009 03:53:42 +0000</pubDate>
		<dc:creator>Pedro Ghiorzi</dc:creator>
				<category><![CDATA[hacklab]]></category>

		<guid isPermaLink="false">http://hacklab.com.br/?p=147</guid>
		<description><![CDATA[O portifolio online do HackLab passou neste domingo por uma reforma drástica. Ficamos em manutenção por volta das 00:00, e assim, pedimos desculpas para nossos fieis visitantes! O novo endereço é http://www.hacklab.com.br/portfolio Enjoy!]]></description>
			<content:encoded><![CDATA[<p>O portifolio online do HackLab passou neste domingo por uma reforma drástica. Ficamos em manutenção por volta das 00:00, e assim, pedimos desculpas para nossos fieis visitantes!</p>
<p>O novo endereço é <a href="http://www.hacklab.com.br/portfolio" target="_self">http://www.hacklab.com.br/portfolio</a></p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacklab.com.br/2009/05/17/visitem-nosso-novo-portfolio-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>São Paulo Python User Group – May Meeting</title>
		<link>http://blog.brunogola.com.br/2009/05/sao-paulo-python-user-group-may-meeting/</link>
		<comments>http://blog.brunogola.com.br/2009/05/sao-paulo-python-user-group-may-meeting/#comments</comments>
		<pubDate>Sat, 16 May 2009 13:29:01 +0000</pubDate>
		<dc:creator>Bruno Gola</dc:creator>
				<category><![CDATA[hacklab]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[fisl]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[grupy-sp]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[pythonbrasil]]></category>

		<guid isPermaLink="false">http://blog.brunogola.com.br/?p=76</guid>
		<description><![CDATA[Every month the GruPy-SP members get together to discuss, chat and/or code. 
This month we will meet to watch/present some lightning talks and to talk about our participation at the Fórum Internacional de Software Livre (FISL 10). 
The meeting will be hold at the SP HackLab, May 23. More details (in pt-br): GruPy-SP wiki.
See you [...]]]></description>
			<content:encoded><![CDATA[<p>Every month the <a href="http://www.python.org.br/wiki/GrupySP">GruPy-SP</a> members get together to discuss, chat and/or code. </p>
<p>This month we will meet to watch/present some lightning talks and to talk about our participation at the Fórum Internacional de Software Livre (<a href="http://www.fisl.org.br/">FISL 10</a>). </p>
<p>The meeting will be hold at the SP HackLab, May 23. More details (in pt-br): <a href="http://www.python.org.br/wiki/GrupySP">GruPy-SP wiki</a>.</p>
<p>See you there <img src='http://blog.brunogola.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brunogola.com.br/2009/05/sao-paulo-python-user-group-may-meeting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moderação de usuários no WordPress</title>
		<link>http://rodrigo.utopia.org.br/2009/04/17/moderacao-de-usuarios-no-wordpress/</link>
		<comments>http://rodrigo.utopia.org.br/2009/04/17/moderacao-de-usuarios-no-wordpress/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 20:12:59 +0000</pubDate>
		<dc:creator>rodrigo</dc:creator>
				<category><![CDATA[hacklab]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[software livre]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rodrigo.hacklab.com.br/?p=3</guid>
		<description><![CDATA[Uma das demandas do portal eletrocooperativa.org.br (um dos projetos desenvolvidos pelo Hacklab neste semestre) é a moderação dos usuários que se registram no site. Como esse recurso não existe no core do Wordpress, saímos em busca de um plugin.
O Leo encontrou no diretório de plugins do Wordpress (http://wordpress.org/extend/plugins/) o New User Approve, uma extensão simples [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das demandas do portal eletrocooperativa.org.br (um dos projetos desenvolvidos pelo Hacklab neste semestre) é a moderação dos usuários que se registram no site. Como esse recurso não existe no core do Wordpress, saímos em busca de um plugin.</p>
<p>O <a href="http://pirex.com.br/category/leo/" >Leo</a> encontrou no diretório de plugins do Wordpress (http://wordpress.org/extend/plugins/) o <a href="http://www.picklewagon.com/wordpress/new-user-approve" >New User Approve</a>, uma extensão simples que faz exatamente o que precisávamos. Durante o desenvolvimento encontramos dois problemas na versão atual (1.0):</p>
<ol>
<li>Se um usuário é criado pelo administrador e não pelo formulário de registro, ele aparece na listagem de usuários para moderação e se o administrador aprová-lo sua senha será alterada.</li>
<li>Com o plugin habilitado, o formulário de registro sempre mostra uma mensagem de usuário criado com sucesso mesmo quando ocorreram erros (como por exemplo nome de usuário já existente ou senhas não conferem).</li>
</ol>
<p>Fizemos dois patches para corrigir esses erros e enviamos para o desenvolvedor do plugin. Essa é a melhor parte do software livre <img src='http://rodrigo.utopia.org.br/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Ele agradeceu mas infelizmente ainda não teve tempo para incorporar as mudanças no código e lançar uma nova versão. Acredito que o fará em breve.</p>
<p><span style="text-decoration: line-through">Se alguém precisar da mesma funcionalidade e quiser utilizar o plugin com as correções, o patch está disponível <a href="http://rodrigo.utopia.org.br/files/new-user-approvepatch.zip">neste link</a> (mais detalhes podem ser vistos nos comentários que fiz na página do próprio plugin).</span></p>
<p><strong>Atualização (em 22/04/2009):</strong> foi lançada uma nova versão (1.1) do plugin que incorpora os patches que enviei, basta baixá-la <a href="http://wordpress.org/extend/plugins/new-user-approve/">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rodrigo.utopia.org.br/2009/04/17/moderacao-de-usuarios-no-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Global Python Sprint Weekend in São Paulo</title>
		<link>http://blog.brunogola.com.br/2008/05/global-python-sprint-weekend-in-sao-paulo/</link>
		<comments>http://blog.brunogola.com.br/2008/05/global-python-sprint-weekend-in-sao-paulo/#comments</comments>
		<pubDate>Thu, 08 May 2008 18:22:47 +0000</pubDate>
		<dc:creator>Bruno Gola</dc:creator>
				<category><![CDATA[hacklab]]></category>
		<category><![CDATA[bugday]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[grupy-sp]]></category>
		<category><![CDATA[pythobrasil]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[pythonbugday]]></category>

		<guid isPermaLink="false">http://blog.brunogola.com.br/?p=34</guid>
		<description><![CDATA[This weekend (May 10th and 11th) will happen the Global Python Sprint Weekend. Like the last PythonBugDay our Python User Group (GruPy-SP) will meet to work together.
This time our meeting will be held at Universidade de São Paulo IME (Instituto de Matemática e  Estatística) thanks to RBP  and the CCSL (Free Software Competence [...]]]></description>
			<content:encoded><![CDATA[<p>This weekend (May 10th and 11th) will happen the <a href="http://wiki.python.org/moin/PythonBugDay">Global Python Sprint Weekend</a>. Like the last PythonBugDay our Python User Group (<a href="http://www.pythonbrasil.com.br/moin.cgi/GrupySP">GruPy-SP</a>) will meet to work together.</p>
<p>This time our meeting will be held at Universidade de São Paulo IME (Instituto de Matemática e  Estatística) thanks to <a href="http://isnomore.net/">RBP</a>  and the CCSL (Free Software Competence Centre) =)</p>
<p>Other Python User Groups from Brazil are also meeting to work together, check the wikipage for the <a href="http://www.pythonbrasil.com.br/moin.cgi/PythonBugDay">PythonBugDay</a> to know if there will be a meeting near you <img src='http://blog.brunogola.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  (or you can work from your home sweet home).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brunogola.com.br/2008/05/global-python-sprint-weekend-in-sao-paulo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

