<?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 do Osvaldo</title>
	<atom:link href="http://osantana.me/feed/" rel="self" type="application/rss+xml" />
	<link>http://osantana.me</link>
	<description>Assuntos gerais e genéricos</description>
	<lastBuildDate>Thu, 18 Apr 2013 18:36:19 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Filtros bolha e a diversidade de opinião</title>
		<link>http://osantana.me/2013/04/08/filtros-bolha-e-a-diversidade-de-opiniao/</link>
		<comments>http://osantana.me/2013/04/08/filtros-bolha-e-a-diversidade-de-opiniao/#comments</comments>
		<pubDate>Mon, 08 Apr 2013 15:00:12 +0000</pubDate>
		<dc:creator>osantana</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://osantana.me/?p=521003314</guid>
		<description><![CDATA[Nos últimos dias tenho feito algumas experiências e estou tentando viver sem o Google. Sério&#8230; é bem difícil e tem algumas coisas que eles fazem que estão se provando insubstituíveis. A razão para eu tentar me livrar do Google é o temor de ficar tão dependente de um serviço deles e eles simplesmente resolverem descontinuar [...]]]></description>
				<content:encoded><![CDATA[<p>Nos últimos dias tenho feito algumas experiências e estou tentando viver sem o Google. Sério&#8230; é bem difícil e tem algumas coisas que eles fazem que estão se provando insubstituíveis.</p>
<p>A razão para eu tentar me livrar do Google é o temor de ficar tão dependente de um serviço deles e eles simplesmente resolverem descontinuar como fizeram com o Code Search, Reader, entre outros. É muito mais uma questão de confiabilidade do que privacidade, monopólio, etc.</p>
<p>Uma das coisas difíceis de se substituir é o <a href="http://google.com/">Google Search</a>. Principal produto da empresa. Para essa tarefa eu escalei o <a href="http://duckduckgo.com/">DuckDuckGo</a> que, apesar do nome inusitado, já havia se motrado um excelente buscador em testes que eu havia feito anteriormente.</p>
<p>O DuckDuckGo tem duas &#8220;funcionalidades&#8221; interessantes. Uma delas é um <a href="http://donttrack.us/">respeito maior à privacidade</a> de seus usuários. A outra é a ausência de <a href="http://dontbubble.us/">filtros bolha</a>.</p>
<p>Quando fui avaliar melhor a questão relacionada a filtros bolhas meu cérebro tomou uma linha de raciocínio que seguiu em direção à diversidade de opinião e a tolerância que temos à essa diversidade.</p>
<p>Vou tentar usar fatos atuais para ilustrar a minha linha de raciocínio e para isso terei que trabalhar com assuntos polêmicos relacionados à amor, ódio, religião, ateísmo, homossexualismo, etc.</p>
<p>Também vou partir da premissa de que todo mundo na internet, hoje, tem opiniões fortes sobre todos os assuntos. Dos royalties do petróleo ao dinheiro gasto para mandar a Curiosity para Marte.</p>
<p>O conceito de &#8220;filtro bolha&#8221; que o Google Search implementa faz com que assuntos que tenham mais relação com o seu histórico de pesquisa tenha um ranking melhor do que algo que não &#8220;combine&#8221; com você.</p>
<p>O resultado desse comportamento é que o Google Search vai sempre lhe oferecer &#8220;mais do mesmo&#8221; ao longo do tempo e aquilo que diverge das suas opiniões vai simplesmente sumindo dos resultados criando uma &#8220;bolha protetora&#8221; de opiniões.</p>
<p>Nas redes sociais isso também acontece mas de uma maneira mais explícita: você oculta as opiniões divergentes, o sistema &#8216;aprende&#8217; que você não gosta daquilo e nunca mais te manda informações daquele tipo (ou daquela pessoa).</p>
<p>Frequentemente me pego &#8220;censurando&#8221; alguns posts nas minhas timelines quase que de modo inconsequente.</p>
<p>Sou ateu (<strong>mesmo</strong>) e acho que todos podem crer ou, como no meu caso, não-crer, no que lhes deixam felizes.</p>
<p>Sou heterossexual mas entendo o homossexualismo sob o aspecto cientifico dos estudos que dizem que as pessoas são homossexuais e não se tornam homossexuais por opção (ou com o passar dos anos).</p>
<p>No espectro político eu piso um pouco mais à esquerda do que à direita e tenho vínculo com um partido político que representa essa posição. Apesar disso sei que existem virtudes na &#8220;direita&#8221; e pessoas extremamente inteligentes que trafegam nessa vertente.</p>
<p>A minha linha-mestra de pensamento: se você está feliz e não está me tornando infeliz você pode fazer e acreditar no que achar melhor.</p>
<p>Apesar disso sou humano e cometo erros de julgamento e avaliação.</p>
<p>Recentemente, com a chegada de um pastor evangélico fundamentalista à presidência da Comissão de Direitos Humanos da Câmara dos Deputados, as redes sociais estão fervendo com assuntos relacionados à cristianismo, laicismo, homossexualismo, racismo, e outros &#8220;ismos&#8221;.</p>
<p>Pra mim, na minha timeline, é um festival de surpresas e decepções com pessoas que fazem parte do meu &#8220;círculo virtual de amizades&#8221;. Até aí não tem nada de errado. O problema aparece é na escolha dos critérios que te fazem ficar surpreso ou se decepcionar.</p>
<p>Sendo ateu eu poderia me decepcionar com uma pessoa quando ela defende parcimoniosamente o discurso do tal pastor demonstrando trechos bíblicos que corroboram tais opiniões (mesmo sabendo que com trechos da bíblia é possível corroborar qualquer tese). Essa pessoa é crente e tem pra ela que esse livro é sagrado, logo, tem força maior que a &#8220;lei dos homens&#8221;.</p>
<p>Mas eu não posso me decepcionar com essa pessoa e censurá-la na minha timeline porque, com isso, estaria alimentando o meu filtro bolha e mandando a diversidade de opinião às favas. No lugar de censurá-la eu prefiro debater com essa pessoa ou simplesmente deixá-la com suas opiniões, afinal, ela deve ser feliz com aquele pensamento.</p>
<p>Agora vamos para outra hipótese: esse mesma pessoa que citou a bíblia me decepcionaria muito se usasse uma mentira, um estudo científico duvidoso, uma fonte de origem duvidosa, ou até mesmo usar desonestidade intelectual para, por exemplo, &#8220;provar que homossexualismo é errado&#8221;.</p>
<p>Eu tenho duas reações possíveis com pessoas que me decepcionam dessa forma. Se a pessoa é muito cara para mim eu rebato o post dela para tentar desmenti-lo. Se a pessoa &#8220;não cheira nem fede&#8221;, ela será censurada. Mas veja que eu censurei essa pessoa por ser desonesta e não por ser crente.</p>
<p>Qualquer tipo de censura cria o efeito &#8220;bolha&#8221; mas a bolha que eu criei é uma bolha de segurança para me proteger contra pessoas desonestas e não pra me privar da diversidade de opinião.</p>
<p>Além dessa censura aos desonestos eu também censuro, com menos frequencia, os &#8220;ativistas&#8221;. Censuro eles não pelo que pensam e defendem mas pelo excesso. É uma questão puramente prática: tenho um limite de tempo para ver a minhas timelines. Se elas estão monopolizadas pelos &#8220;ativistas&#8221; fica difícil ver os posts de todo mundo.</p>
<p>Além disso, ativistas, sejam felizes com o que pensam e defendem e me deixem ser feliz com o que penso e defendo. Parem de se comportar como Testemunhas de Jeová oferencendo a palavra do senhor.</p>
<p>Quanto ao caso do tal pastor: não acho que ele seja adequado para a tal comissão e acho que ele deveria sair de lá. Mas não devemos ser desonestos para atingir esse objetivo.</p>
<blockquote><p>Não concordo com uma palavra do que dizes, mas defenderei até o ultimo instante seu direito de dizê-la.<br />
<footer>— <cite>Voltaire (ou não)</cite></footer>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://osantana.me/2013/04/08/filtros-bolha-e-a-diversidade-de-opiniao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oi, vocês estão por aí ainda?</title>
		<link>http://osantana.me/2012/12/06/oi-voces-estao-por-ai-ainda/</link>
		<comments>http://osantana.me/2012/12/06/oi-voces-estao-por-ai-ainda/#comments</comments>
		<pubDate>Fri, 07 Dec 2012 01:56:34 +0000</pubDate>
		<dc:creator>osantana</dc:creator>
				<category><![CDATA[Meta]]></category>

		<guid isPermaLink="false">http://www.pythonologia.org/?p=910</guid>
		<description><![CDATA[Depois de um longo período offline pretendo voltar a escrever algumas coisas por aqui. Eu havia decidido dar um tempo com esse blog porque eu gastava muito tempo escrevendo os posts que eram publicados por aqui. Eu gastava muito tempo porque sempre tentava manter referências, créditos e ilustrações nos artigos. A partir de agora me [...]]]></description>
				<content:encoded><![CDATA[<p>Depois de um longo período offline pretendo voltar a escrever algumas coisas por aqui.</p>
<p>Eu havia decidido dar um tempo com esse blog porque eu gastava muito tempo escrevendo os posts que eram publicados por aqui. Eu gastava muito tempo porque sempre tentava manter referências, créditos e ilustrações nos artigos.</p>
<p>A partir de agora me dei o direito de não ser tão detalhista nos meus posts e, provavelmente, usarei este blog como uma memória paralela onde guardarei informações que provavelmente me esqueceria se não anotasse em lugar nenghum.</p>
<p>Vou tentar postar alguns pacotes de links para coisas interessantes na web ou até mesmo algumas traduções.</p>
<p>Apesar do nome do blog ser Pythonologia não vou me restringir a falar de Python. Mas tratarei só de assuntos técnicos e/ou profissionais da área de TI.</p>
<p>Assuntos de cunho pessoal, opiniões sobre política, religião e futebol ficarão em <a href="http://osantana.me/">outro blog</a> que será atualizado bem mais esporadicamente que este aqui.</p>
]]></content:encoded>
			<wfw:commentRss>http://osantana.me/2012/12/06/oi-voces-estao-por-ai-ainda/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PythonBrasil[7] — São Paulo — 29 de setembro</title>
		<link>http://osantana.me/2011/06/28/pythonbrasil-7-sao-paulo-29-setembro/</link>
		<comments>http://osantana.me/2011/06/28/pythonbrasil-7-sao-paulo-29-setembro/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 22:03:00 +0000</pubDate>
		<dc:creator>osantana</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.triveos.com.br/?p=900</guid>
		<description><![CDATA[Como não podia deixar de ser a Triveos vai participar da PythonBrasil[7] que vai acontecer esse ano, em São Paulo, entre os dias 29 de setembro e 1º de outubro. Alguns palestrantes internacionais já confirmaram presença e estamos em negociação com outros três palestrantes. A chamada de trabalhos ainda não está aberta porque estão trabalhando [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://pythonbrasil.org.br/2011/"><img class="alignleft" title="Python Brasil 7" src="http://www.python.org.br/banners-pythonbrasil/pythonbrasil7-rectangle.gif" alt="Banner convidando você para a PythonBrasil[7]" width="180" height="150" /></a>Como não podia deixar de ser a Triveos vai participar da PythonBrasil[7] que vai acontecer esse ano, em São Paulo, entre os dias 29 de setembro e 1º de outubro.</p>
<p>Alguns <a href="http://pythonbrasil.org.br/2011/sobre-o-evento/noticias/palestrante-confirmado-jim-fulton">palestrantes</a> <a href="http://pythonbrasil.org.br/2011/sobre-o-evento/noticias/steve-holden-na-python-brasil-7">internacionais</a> já confirmaram presença e estamos em negociação com outros três palestrantes.</p>
<p>A chamada de trabalhos ainda não está aberta porque estão trabalhando em algumas modificações no sistema de submissão que vão permitir que as propostas sejam modificadas durante todo o período de submissão.</p>
<p>As propostas que forem submetidas também ficarão abertas para que todos os associados da <a href="http://associacao.python.org.br/">Associação Python Brasil</a> tenham mais tempo para ir avaliando os trabalhos. Será possível submeter links para videos e slides que ajudem a &#8220;promover&#8221; a proposta.</p>
<p>Assim que o período de submissão de trabalhos se encerrar as modificações serão barradas e os associados da Associação Python Brasil receberão instruções para avaliar quais trabalhos deverão ser apresentados no nosso evento.</p>
<p>Já é a sétima edição do encontro anual de programadores Python do Brasil. Todas as edições foram fantásticas. Esse ano vamos experimentar um novo modelo de evento. Um evento mais &#8220;profissionalizado&#8221;, com uma estrutura melhor e com o apoio de vários patrocinadores de peso.</p>
<p>Ou seja, temos tudo para fazer a PythonBrasil[7] ainda melhor esse ano.</p>
<p>Espero poder me encontrar com vocês por lá.</p>
<p><strong>Ajude a divulgar</strong></p>
<p><strong>A gente sabe que a melhor forma de divulgação que existe é o &#8216;boca-a-boca&#8217; e todo ano a gente conta com o apoio dos entusiastas de Python para nos ajudar na divulgação do evento.</strong></p>
<p>Para facilitar a vida de quem quer ajudar montamos a página &#8220;<a href="http://pythonbrasil.org.br/2011/divulgue/">Divulgue a PythonBrasil[7]</a>&#8221; onde vocês poderão encontrar as instruções e o material necessário para ajudar nessa tarefa.</p>
<p>Se você já foi à uma PythonBrasil, publique no seu blog histórias legais sobre o evento. Se ainda não foi, publique no seu blog o que você espera encontrar no evento. Depois é só enviar o link para a notícia no site do evento para aparecer como um &#8220;<a href="http://pythonbrasil.org.br/2011/divulgue/sites-amigos-da-pythonbrasil-7">Site Amigo</a>&#8220;.</p>
<p>Se você não tem um blog mas tem Twitter, Facebook, Orkut, etc&#8230; divulgue o evento entre seus amigos e seguidores (usando a hashtag #pythonbrasil7).</p>
<p>Se vai fazer uma apresentação sobre Python em algum evento <a href="http://pythonbrasil.org.br/2011/divulgue/slides-para-apresentacoes">convide</a> a sua audiência para participar do nosso encontro.</p>
<p>Quero ver o auditório lotado! :D</p>
]]></content:encoded>
			<wfw:commentRss>http://osantana.me/2011/06/28/pythonbrasil-7-sao-paulo-29-setembro/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hoje é aniversário do Déo, o #dornelesday</title>
		<link>http://osantana.me/2011/06/18/hoje-e-aniversario-do-deo-o-dornelesday/</link>
		<comments>http://osantana.me/2011/06/18/hoje-e-aniversario-do-deo-o-dornelesday/#comments</comments>
		<pubDate>Sun, 19 Jun 2011 00:50:18 +0000</pubDate>
		<dc:creator>osantana</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://blog.triveos.com.br/?p=897</guid>
		<description><![CDATA[Hoje é o dia do aniversário do Dorneles Treméa. O Déo. Os amigos resolveram homenageá-lo criando a hashtag #dornelesday e postando homenagens na internet. Confesso que passei o dia todo tentando bolar uma forma bem humorada de comemorar o aniversário dele, porque ele era super bem-humorado, mas não consegui. A homenagem que eu tentei fazer pra [...]]]></description>
				<content:encoded><![CDATA[<p>Hoje é o dia do aniversário do Dorneles Treméa. O Déo. Os amigos resolveram homenageá-lo criando a hashtag #dornelesday e postando homenagens na internet.</p>
<p>Confesso que passei o dia todo tentando bolar uma forma bem humorada de comemorar o aniversário dele, porque ele era super bem-humorado, mas não consegui.</p>
<p>A homenagem que eu tentei fazer pra ele no dia do aniversário dele era conseguir uma camisa do Internacional (o &#8220;Colorado&#8221;) e usá-la durante todo o dia, fotografar, e colocar aqui. Mas não consegui uma camisa que coubesse em mim :/</p>
<p>O Déo era torcedor do Colorado e eu sou corinthiano. Da comunidade Python eu, ele e o Érico eramos dos poucos que se interessavam por futebol.</p>
<p>Como não consegui fazer essa homenagem tentei algo mais &#8220;tradicional&#8221;. Escrever um post num blog tal como os outros amigos fizeram. Também não deu.</p>
<p>Todas as tentativas resultaram em textos tristes, porque é tristeza que sinto agora, e um texto triste não serveria pra homenagear o aniversário do Déo. Não existia tristeza ou mal-humor com o Déo.</p>
<p>Tentei, então, um post com histórias vividas com ele. Difícil terminar também&#8230; a visão começava a ficar &#8216;desfocada&#8217; pelas lágrimas e, assim, não dava pra continuar&#8230;</p>
<p>Também pensei em não falar nada na tentativa de enganar minha cabeça fazendo-a pensar que o Déo não tinha sofrido nenhum acidente e que comemoraria seu aniversário jogando Wii com sua família. Mais uma frustração. As homenagens dos outros amigos teimavam em me lembrar da verdade o tempo todo.</p>
<p>Vi que várias homenagens ao Déo falavam da sua capacidade técnica e de suas colaborações com código para vários projetos de software livre. Resolvi então tentar falar sobre outra característica importante dele: empreendedorismo.</p>
<p>Todos sabem que estou num momento &#8220;empreendedor&#8221; e que estou vivendo isso intensamente. E o Déo era uma referência pra mim nesse assunto. E ele também &#8220;propagava&#8221; essa mensagem sempre que podia.</p>
<p>Mas não daria pra homenageá-lo adequadamente falando só disso. Seria muito pouco.</p>
<p>Então vou desistir de participar do #dornelesday. Admito que é um problema muito difícil pra resolver. O tipo de problema cuja solução só o Déo poderia me ajudar a encontrar.</p>
]]></content:encoded>
			<wfw:commentRss>http://osantana.me/2011/06/18/hoje-e-aniversario-do-deo-o-dornelesday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Startup Meetup Curitiba: 1º de março. Inscreva-se!</title>
		<link>http://osantana.me/2011/02/23/startup-meetup-curitiba-1%c2%ba-de-marco-inscreva-se/</link>
		<comments>http://osantana.me/2011/02/23/startup-meetup-curitiba-1%c2%ba-de-marco-inscreva-se/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 03:14:07 +0000</pubDate>
		<dc:creator>osantana</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://blog.triveos.com.br/?p=877</guid>
		<description><![CDATA[No dia 1º de março de 2011, na Casa di Bel (Rua Dom Pedro II, 602 &#8211; Batel) acontecerá o 1º Startup Meetup de Curitiba e a Triveos é uma das responsáveis pela organização do encontro. Vocês poderão encontrar mais informações no site do encontro. Para participar é só se inscrever no formulário disponível em: [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://curitiba.startupmeetup.com.br"><img src="http://osantana.me/wp-content/uploads/2011/02/startupmeetup1.png" alt="Logotipo do Startup Meetup Curitiba" title="Startup Meetup Curitiba" width="250" height="150" class="alignleft size-full wp-image-880" /></a><br />
No dia 1º de março de 2011, na <a href="http://www.casadibel.com.br/">Casa di Bel</a> (Rua Dom Pedro II, 602 &#8211; Batel) acontecerá o 1º Startup Meetup de Curitiba e a Triveos é uma das responsáveis pela organização do encontro.</p>
<p>Vocês poderão encontrar mais informações no <a href="http://curitiba.startupmeetup.com.br/">site do encontro</a>.</p>
<p>Para participar é só se inscrever no formulário disponível em: <a href="http://bit.ly/1meetupPR">http://bit.ly/1meetupPR</a>. Não é necessário pagar inscrição e o único custo fica por conta dos R$10 de consumação da Casa di Bel.</p>
<h3>O que é um Startup Meetup?</h3>
<p>Explicação curta e informal: Um Happy Hour para &#8216;<a href="http://exame.abril.com.br/pme/dicas-de-especialista/noticias/o-que-e-uma-startup">startupeiros</a>&#8216;.</p>
<p>Explicação mais formal: é um encontro informal de empreendedores de uma cidade para um bate-papo sobre seus planos, projetos e empreendimentos. Esses encontros tendem a acontecer com uma certa regularidade e visam fortalecer o ambiente de negócios e empreendedorismo na cidade onde ele acontece.</p>
<p>Os Meetups geralmente acontecem num bar para que as pessoas possam comer, beber e conversar mais à vontade.</p>
<h3>Ajude a Divulgar</h3>
<p>O evento é organizado por empreendedores para empreendedores de forma voluntária e, por isso, precisamos da ajuda de todos na divulgação que pode se dar dos seguintes modo:</p>
<ul>
<li>Avise os seus amigos da imprensa;</li>
<li>Divulgue no seu blog;</li>
<li>Divulgue no seu Twitter (usando o link encurtado: http://bit.ly/1meetupPR);</li>
<li>Anuncie e divulgue no Facebook (“curta” a página do encontro);</li>
</ul>
<h3>Como estamos?</h3>
<p>No momento em que eu escrevo esse post temos 27 inscritos no formulário. Se compararmos com o que os Startup Meetups de outras cidades é muito pouco, portanto, vamos agitar isso aí! :D</p>
<p>O evento tá logo aí: 1º de março de 2011! (terça-feira antes do carnaval).</p>
<h3>Apoios</h3>
<p>A organização local está contanto com o apoio de diversas empresas que ajudam na organização desses encontros em todo o Brasil, entre elas: <a href="http://aceleradora.net/">Aceleradora</a>, <a href="http://www.sambatech.com.br">Samba Tech</a> e <a href="http://readwriteweb.com.br/">Read Write Web Brasil</a>.</p>
<h3>Entre em contato</h3>
<p>Caso tenha alguma dúvida ou queira colaborar com a organização do evento de algum modo entre em contato <a href="mailto:osantana@triveos.com">comigo</a> ou com o <a href="mailto:sampaio@grupoair.com.br">Diego</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://osantana.me/2011/02/23/startup-meetup-curitiba-1%c2%ba-de-marco-inscreva-se/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Notícia triste: nosso amigo Deo faleceu</title>
		<link>http://osantana.me/2011/02/10/noticia-triste-nosso-amigo-deo-faleceu/</link>
		<comments>http://osantana.me/2011/02/10/noticia-triste-nosso-amigo-deo-faleceu/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 13:58:07 +0000</pubDate>
		<dc:creator>osantana</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://blog.triveos.com.br/?p=853</guid>
		<description><![CDATA[Nunca imaginei que usaria esse blog para dar esse tipo de notícia, afinal, pensamos que as pessoas boas que nos cercam estarão por aí para sempre. Hoje, infelizmente, algo ruim aconteceu com o Dornéles Treméa. O Deo era um grande amigo meu, amigo do meu sócio na Triveos (o Marcos Petry), participante ativo da comunidade [...]]]></description>
				<content:encoded><![CDATA[<p>Nunca imaginei que usaria esse blog para dar esse tipo de notícia, afinal, pensamos que as pessoas boas que nos cercam estarão por aí para sempre.</p>
<p><a href="http://osantana.me/wp-content/uploads/2011/02/5161139464_1696e5a481.jpg"><img class="aligncenter size-medium wp-image-854" title="5161139464_1696e5a481" src="/wp-content/uploads/5161139464_1696e5a481-450x300.jpg" alt="" width="450" height="300" /></a></p>
<p>Hoje, infelizmente, algo ruim aconteceu com o Dornéles Treméa. O Deo era um grande amigo meu, amigo do meu sócio na Triveos (o Marcos Petry), participante ativo da comunidade Python (ele era o nosso presidente) , importante membro e desenvolvedor na comunidade Plone mundial, e o maior homem do mundo para sua esposa e suas duas garotinhas lindas.</p>
<p>Ele se foi num <a title="Nosso amigo Deo morre em um acidente de carro " href="http://zerohora.clicrbs.com.br/zerohora/jsp/default.jsp?uf=1&amp;local=1&amp;section=Geral&amp;newsID=a3204387.xml">acidente de carro</a>. Num daqueles dias que você jamais imaginaria perder um amigo.</p>
]]></content:encoded>
			<wfw:commentRss>http://osantana.me/2011/02/10/noticia-triste-nosso-amigo-deo-faleceu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meu ambiente de trabalho em 7 items</title>
		<link>http://osantana.me/2011/01/24/meu-ambiente-de-trabalho-em-7-items/</link>
		<comments>http://osantana.me/2011/01/24/meu-ambiente-de-trabalho-em-7-items/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 19:03:12 +0000</pubDate>
		<dc:creator>osantana</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.triveos.com.br/?p=850</guid>
		<description><![CDATA[Fui convocado pelo @franciscosouza para listar 7 ítens do meu ambiente de trabalho&#8230; então aqui vai&#8230; 1. Triveos Tecnologia A Triveos é a minha empresa e tenho, como sócio técnico, o pythonista Marcos Petry. Não chega a ser uma &#8220;equipe&#8221; mas já dá pra fazer um bom estrago ;D Aqui na Triveos a gente não [...]]]></description>
				<content:encoded><![CDATA[<p>Fui convocado pelo @franciscosouza para listar 7 ítens do meu ambiente de trabalho&#8230; então aqui vai&#8230;</p>
<h2>1. Triveos Tecnologia</h2>
<p>A <a href="http://www.triveos.com.br/">Triveos</a> é a minha empresa e tenho, como sócio técnico, o pythonista Marcos Petry. Não chega a ser uma &#8220;equipe&#8221; mas já dá pra fazer um bom estrago ;D</p>
<p>Aqui na Triveos a gente não tem preconceito contra nenhuma tecnologia (nosso site e blog rodam em PHP e somos membros do Microsoft Bizspark).</p>
<p>Eu particularmente tenho algumas &#8220;birras&#8221; com alguns softwares que já me torturaram no passado: Trac, Nagios, Squirrelmail, Bazaar, etc.</p>
<h2>2. Git, Github, Codebase</h2>
<p>Nós gostamos muito de usar DVCS e adoramos o <a href="http://github.com/">Github</a> para hospedar nossos (poucos :/) projetos open-source. Gostamos das ferramentas de apoio à criação de grupos de desenvolvedores que eles oferecem.</p>
<p>Usamos o Git por conta do Github. Mas usaríamos Mercurial se o Bitbucket fosse tão bom quanto.</p>
<p>No nosso dia-a-dia a gente lida com projetos de clientes e/ou de código fechado e para esses projetos nós achamos melhor procurar um local mais &#8220;tranquilo&#8221; pra hospedá-los. Sem o oba-oba, &#8220;excessos&#8221; do Github e com um suporte mais &#8220;rápido&#8221; à eventuais problemas.</p>
<p>Então contratamos um plano no <a href="http://www.codebasehq.com/t/ka08ti86qd5evnk5">Codebase</a>. Lá eles oferecem hospedagem de código com repositórios Git, Mercurial ou SVN. Também disponibilizam um sistema de Tickets/Milestones e Wikis para projetos.</p>
<h2>3. Tecla, Webfaction e Linode</h2>
<p>Para hospedagem em produção preferimos usar o <a href="http://www.linode.com/?r=a2047c0b12991291d45d720c5fba6e78ded74612">Linode</a> (e eu indico a todos que querem um serviço simples e de qualidade).</p>
<p>Mas em alguns projetos (leia-se <a href="http://www.ludeos.com.br">Ludeos</a>) temos algumas exigências relacionadas a comprovação de gastos. Nesses casos usamos o Cloud da Tecla. Eles são melhores que a Locaweb mas ainda são infinitamente inferiores a qualquer hosting similar nos EUA. E nem estou falando de preço (o pior deles, IMHO, é o sistema de cobrança).</p>
<p>Os sites mais simples (e blogs) ficam numa conta compartilhada simples no <a href="http://www.webfaction.com?affiliate=osantana">Webfaction</a>. Para colocar um WordPress &#8220;no ar&#8221; com poucos cliques é uma baita ferramenta. Mas costumo notar certa lentidão no acesso às páginas de tempos em tempos.</p>
<h2>4. Vim, Textmate e nada de IDEs</h2>
<p>Uso principalmente o Vim mas me viro bem com o Textmate também. Dependendo da minha &#8220;vibe&#8221; eu uso um ou outro.</p>
<p>Recentemente passei a usar o MacVim mas ainda não estou me dando muito bem com ele. Vou insistir mais um pouco pra ver se me acostumo.</p>
<p>Nossos funcionários usam Eclipse+PyDev&#8230; engraçado isso&#8230; :D</p>
<h2>5. Python (&#8230; JS, Ruby, C, Shell Script, Java, PHP, &#8230;)</h2>
<p>Aqui na Triveos é assim: se a bola foi lançada a gente mata ela no peito e chuta pro gol! :D</p>
<p>É claro que a gente seria mais feliz usando só Python, mas não dá pra fazer isso sempre.</p>
<p>Para desenvolvimento web nós usamos Django mas já namoramos o Flask, o Repoze.BFG (Pyramid), e diversos outros frameworks web feitos em Python.</p>
<p>Já usamos jQuery (apesar de eu não gostar dessa biblioteca) e estou estudando YUI3 seriamente a algum tempo.</p>
<h2>6. OS X e Ubuntu Linux</h2>
<p>OS X pra criar e Ubuntu pra produzir em massa. :D</p>
<p>Já usamos CentOS e Debian em ambientes de produção mas eu detesto lidar com software velho. Então adotamos uma alternativa mais &#8220;arriscada&#8221;? E usamos a última versão de Ubuntu disponível. Procuro sempre atualizar os ambientes de produção.</p>
<p>Instanciamos uma máquina com o Ubuntu mais novo &#8220;nas nuvens&#8221;, rodamos um comando de setup/deployment e pimba! servidor novo, com software atualizado e rodando&#8230;</p>
<p>&#8230;mas isso só é possível em projetos onde usamos &#8220;Continuous Deployment&#8221;&#8230; e ainda estamos aprendendo a fazer isso direito. Quando estivermos &#8220;fera&#8221; nisso pretendo escrever sobre o assunto aqui.</p>
<p>Mas se alguém quiser uma idéia do que planejo pode ver no artigo <a href="http://www.lorenzogil.com/blog/2010/10/29/python-deployment-tips/">Python deployment tips</a> do Lorenzo Gil.</p>
<h2>7. Ambiente</h2>
<p>Uso o Terminal.app (mas tenho planos de experimentar o iTerm) com bash configurado para modo <code>vi</code> no <em>prompt</em>.</p>
<p>Uso:</p>
<ul>
<li><a href="http://www.python.org/">Python 2.7</a> (baixado do python.org)</li>
<li><a href="http://pypi.python.org/pypi/virtualenv">virtualenv</a></li>
<li><a href="https://github.com/osantana/personal">Algumas personalizações no shell</a></li>
<li>Alguns pacotes do <a href="http://www.rudix.org/">Rudix</a> (não instalo tudo por conta da versão do git dele)</li>
<li><a href="http://git-scm.com/">git</a> do site oficial</li>
<h2>Passando a bola pra frente</h2>
<p>Agora é a vez dos colegas:</p>
</ul>
<ul>
<li>Marinho Brandão (@marinhobrandao)</li>
<li>Arthur Furlan (@arthurfurlan)</li>
<li>Marcos Petry (@petry)</li>
</ul>
<p>&#8230; descreverem seus ambientes :D</p>
]]></content:encoded>
			<wfw:commentRss>http://osantana.me/2011/01/24/meu-ambiente-de-trabalho-em-7-items/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Web e o problema das senhas &#8220;clear text&#8221;</title>
		<link>http://osantana.me/2011/01/22/a-web-e-o-problema-das-senhas-clear-text/</link>
		<comments>http://osantana.me/2011/01/22/a-web-e-o-problema-das-senhas-clear-text/#comments</comments>
		<pubDate>Sat, 22 Jan 2011 20:36:17 +0000</pubDate>
		<dc:creator>osantana</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.triveos.com.br/?p=839</guid>
		<description><![CDATA[Nos últimos dias o serviço Trapster avisou que 10 milhões de senhas dos seus usuários poderiam estar comprometidas. No ano passado a rede de sites de notícia Gawker passou pelo mesmo problema por um problema parecido. E se formos voltar no tempo vamos descobrir que todo ano temos pelo menos 2 ocorrências similares em sites [...]]]></description>
				<content:encoded><![CDATA[<p>Nos últimos dias o serviço Trapster avisou que <a href="http://blogs.computerworld.com/17690/over_10_million_passwords_possibly_compromised_at_trapster">10 milhões de senhas dos seus usuários poderiam estar comprometidas</a>. No ano passado a rede de sites de notícia Gawker <a href="http://gawker.com/5712615/commenting-accounts-compromised-++-change-your-passwords">passou <del datetime="2011-01-23T13:35:31+00:00">pelo mesmo problema</del> por um problema parecido</a>.</p>
<p>E se formos voltar no tempo vamos descobrir que todo ano temos pelo menos 2 ocorrências similares em sites grandes. E isso vem acontecendo ano após ano desde que a Internet se tornou acessível entre &#8220;civis&#8221;.</p>
<p>Se todos os usuários usassem senhas diferentes para cada um dos serviços que usa na internet o estrago causado por esse tipo de situação seria bastante limitado. Mas não é isso o que acontece e, quando senhas &#8220;vazam&#8221; na internet o estrago pode ser gigantesco.</p>
<p><strong>Problema antigo. Solução conhecida.</strong></p>
<p>Em 1994 fui fazer estágio na Telesp no interior de São Paulo. Lá eu tive meu primeiro contato &#8220;sério&#8221; com um Unix. Era um SCO Unix que rodava num 386SX com 7 terminais seriais.</p>
<p>Enquanto eu estava aprendendo a usar o Unix eu vi que tinha um arquivo chamado <code>/etc/passwd</code> e, pelo nome, imaginei que lá eu encontraria as senhas de usuários do sistema.</p>
<p>Naquela época eu era &#8220;metido a hacker&#8221; e fiquei entusiasmado com a idéia de descobrir a senha de todo mundo que usava aquele servidor. Fiquei mais animado ainda quando vi que as permissões do arquivo permitiam que qualquer usuário examinasse seu conteúdo.</p>
<p>Quando abri o arquivo veio a decepção&#8230; no lugar onde deveriam ficar as senhas estava um &#8220;x&#8221;. Mas não me dei por vencido. Após estudar as <em>manpages</em> (que viam impressas em manuais imensos!) fiquei sabendo que as senhas não estavam lá. Elas estavam no arquivo <code>/etc/shadow</code>.</p>
<p>Com o ânimo renovado fui atrás desse arquivo. Mas dessa vez as coisas estavam um pouquinho mais difíceis&#8230; só o usuário <code>root</code> conseguiria ver esse arquivo.</p>
<p>Chegou a hora, então, de uma pitada de engenharia social&#8230; não vou contar como fiz porque foi muito fácil mas consegui a senha de <code>root</code> do sistema&#8230; hora de ver a senha dos outros usuários da Telesp e implantar uma mega-revolução na telefonia brasileira!&#8230; erm&#8230; menos&#8230;</p>
<p>Quando abri o arquivo tomei uma ducha de água fria definitiva. No lugar onde as senhas deveriam estar eu só um amontoado de caracteres que não se pareciam com senhas. Até poderiam ser as senhas dos usuários mas parecia muito improvável (e de fato não eram).</p>
<p>Descobri depois que o que estava armazenado ali era o resultado de uma espécie de &#8220;criptografia&#8221;. Ou seja, em 1992 os sistemas Unix já não armazenavam as senhas em texto puro. É bem provável que eles já não fizessem isso a muito mais tempo.</p>
<p>Estamos em 2011. Se depois de 19 anos eu armazenasse as senhas dos meus usuários em &#8220;texto puro&#8221; eu deveria ser chamado de irresponsável e incopetente. Se um invasor tivesse acesso à essas senhas eu deveria ser tratado como criminoso. No mínimo.</p>
<p><strong>A solução</strong></p>
<p>A única solução correta e infalível para armazenar senhas de forma segura é: não armazená-las.</p>
<p>Aí você deve estar perguntando: se eu não armazenar a senha do usuário como eu consigo verificar a senha dele durante sua autenticação?</p>
<p>Uma resposta &#8220;básica&#8221; seria: armazene o hash da senha.</p>
<p>Segundo o <a href="http://informatica.hsw.uol.com.br/certificado-digital8.htm">HowStuffWorks brasileiro</a>: </p>
<blockquote><p>&#8220;Hash é resultado da ação de algoritmos que fazem o mapeamento de uma seqüência de bits de tamanho arbitrário para uma seqüência de bits de tamanho fixo menor de forma que seja muito difícil encontrar duas mensagens produzindo o mesmo resultado hash (resistência à colisão ), e que o processo reverso também não seja realizável (dado um hash, não é possível recuperar a mensagem que o gerou).&#8221;
</p></blockquote>
<p>Existem vários algorítmos para cálculos de hash. Cada um deles possui um determinado tipo de aplicação. As funções de hash mais &#8220;famosas&#8221; são aquelas cuja aplicação está no campo da criptografia: MD2, MD4, MD5, SHA1, SHA256, &#8230;</p>
<p>Vou demonstrar o que acontece com o MD5:</p>
<pre>
$ echo "123mudar" | md5sum
642d8860fc6fe3126803ebdbe9974abd
$ echo "123mudar" | md5sum
642d8860fc6fe3126803ebdbe9974abd
$ echo "123mudor" | md5sum
fe294bbc902c287efb7acb20c8fdb67a
</pre>
<p>Note que sempre obtemos o mesmo resultado quando a senha é a mesma mas quando mudamos 1 único caracter o resultado do cálculo de hash muda completamente.</p>
<p>Tendo isso em mente podemos pensar em armazenar no nosso banco de dados apenas o hash da senha do usuário. Quando for preciso verificar a senha informada pelo usuário aplicamos a função de hash à ela e comparamos com aquela que está armazenada no banco de dados.</p>
<p>Perfeito não é? Problema resolvido, não? Não! Ainda falta uma pitada de &#8220;sal&#8221; nessa receita&#8230;</p>
<p><strong>Salt – mais uma dificuldade para o invasor</strong></p>
<p>Vamos supor que um invasor tenha acesso ao banco de dados da aplicação e ao hash das senhas&#8230;</p>
<p>Com esses hashes o usuário pode disparar um ataque baseado em dicionários ou até mesmo procurar pelos hashes no Google! Veja o que acontece com uma senha &#8220;fraca&#8221;:</p>
<pre>
$ echo "senha" | md5sum
6fd720fb42d209f576ca23d5e437a7bb
</pre>
<p>Agora procure por &#8220;<code>6fd720fb42d209f576ca23d5e437a7bb</code>&#8221; no Google e veja o resultado :D</p>
<p>Para resolvermos esse problema devemos usar um &#8220;salt&#8221; para gerar o hash da senha.</p>
<p>Salt é uma sequência aleatória de bits que são concatenados à senha do usuário antes de gerar o hash (quanto maior essa sequência mais difícil será o trabalho do invasor).</p>
<p>Por ser uma sequência aleatória precisamos armazená-la junto com o resultado do hash para ser possível verificar a senha depois. Vamos à um exemplo &#8220;pythonico&#8221;</p>
<pre>
$ python
>>> import random
>>> import hashlib
>>> senha = "senha"
>>> salt = ''.join(chr(random.randint(65, 122)) for x in range(5))
>>> salt # Esse é o Salt!
'vGBAA'
>>> salt_senha = salt + senha
>>> salt_senha # salt + senha
'vGBAAsenha'
>>> hash = hashlib.md5(salt_senha).hexdigest()
>>> hash # Esse é o hash do salt+senha
'3607507cfa3f31b0cf10e83af947df97'
>>> armazenar = salt + "$" + hash
>>> armazenar
'vGBAA$3607507cfa3f31b0cf10e83af947df97'
</pre>
<p>Tente procurar pelo hash &#8220;<code>3607507cfa3f31b0cf10e83af947df97</code>&#8221; no Google agora&#8230; ou submeter esse hash à um ataque de dicionário&#8230; Você verá que aumentamos um pouco a dificuldade para descobrir a senha do usuário.</p>
<p>Esse é o procedimento usado por grande parte dos frameworks web que implementam alguma forma de armazenamento de senha (ex. <code>django.contrib.auth</code>). Ele é bastante seguro e podemos considerar isso satisfatório. Mas as coisas estão mudando&#8230;</p>
<p><strong>A nuvem &#8220;do mal&#8221;</strong></p>
<p>Com o advento da &#8220;computação na nuvem&#8221; chegamos à situação onde podemos comprar &#8220;poder de processamento&#8221; tal como compramos energia elétrica.</p>
<p>Antigamente se a gente tivesse um salt+hash em mãos era quase impossível (ou economicamente inviável) conseguir poder de processamento suficiente para submetê-los à um ataque de força bruta.</p>
<p>Mas as coisas mudaram e com 1 cartão de crédito e uma quantidade &#8220;viável&#8221; de dinheiro é possível contratar dezenas de &#8220;nós&#8221; de processamento na Amazon ECS, por exemplo, e colocá-los para &#8220;atacar&#8221; o nosso salt+hash.</p>
<p>Esse tipo de prática provavelmente já está sendo usada por alguns invasores pelo mundo e aparentemente não existe uma solução definitiva para esse tipo de situação.</p>
<p>O que existe são medidas que você pode adotar para dificultar um pouco mais a vida dos vilões :D</p>
<p>Uma delas é substituir o algoritmo de hash (MD5/SHA1) por outro algorítmo mais apropriado para o nosso uso.</p>
<p>O problema em usar os algorítmos MD5 e SHA1 para calcular os hashes de nossas senhas é que eles são muito eficientes e rápidos. As principais aplicações desses algorítmos exigem que eles sejam rápidos (ex. assinatura digital de um arquivo gigantesco).</p>
<p>Como eles são muito rápidos é possível disparar um ataque de força bruta e testar muitos hashes em um curto espaço de tempo. Como as plataformas na &#8220;nuvem&#8221; cobram por tempo de uso podemos quebrar uma senha à um custo relativamente baixo (ou viável economicamente).</p>
<p>Se trocarmos esses algorítmos por um que seja muito mais lento obrigamos o invasor a gastar mais poder de processamento (e consequentemente mais dinheiro) para descobrir nossa senha.</p>
<p>Um dos métodos mais indicados, hoje, é o <a href="http://codahale.com/how-to-safely-store-a-password/">bcrypt</a> (blowfish). Existe implementações desse algorítmo para diversas linguagens:</p>
<ul>
<li><a href="http://pypi.python.org/pypi/py-bcrypt/">Python</a></li>
<li><a href="https://github.com/codahale/bcrypt-ruby">Ruby</a></li>
<li><a href="http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx">C#/.Net</a></li>
<li><a href="http://www.mindrot.org/projects/jBCrypt/">Java</a></li>
<li><a href="http://search.cpan.org/~zefram/Crypt-Eksblowfish-0.008/lib/Crypt/Eksblowfish/Bcrypt.pm">Perl</a></li>
<li><a href="https://github.com/skarab/erlang-bcrypt">Erlang</a></li>
<li><a href="http://www.openwall.com/crypt/">C</a></li>
<li><a href="http://www.openwall.com/phpass/">PHP</a></li>
</ul>
<p><strong>E como eu sei se um site armazena minhas senhas em texto puro?</strong></p>
<p>Não é possível saber com 100% de certeza se um site ou serviço armazena as suas senhas em &#8220;texto puro&#8221;, portanto, o melhor mesmo é criar o hábito de usar senhas diferentes em cada um dos serviços (só tente não anotá-las em papéis! :D).</p>
<p>Mas apesar de não ser possível ter certeza se o serviço em questão é desenvolvido por um irresponsável é possível buscar indícios dessa irresponsabilidade:</p>
<ul>
<li>Receber um e-mail de confirmação de cadastro onde sua senha está presente – Se ele está te mandando um e-mail com sua senha é grande a possibilidade dela ser armazenada da mesma forma.</li>
<li>Use a opção &#8220;esqueci minha senha&#8221; dos sites para testar – se você usar essa opção e o site te mandar um e-mail (ou mostrar na tela) a sua senha é porque eles tem a sua senha &#8220;original&#8221; armazenada em algum lugar. O correto é receber um link para *resetar* sua senha.</li>
</ul>
<p><strong>Implicações no &#8220;mercado&#8221;</strong></p>
<p>Nós que trabalhamos com web e somos entusiastas da idéia &#8220;da nuvem&#8221; devemos condenar a prática de armazenar dados sensíveis do usuário de forma tão irresponsável. Cada notícia que surge dando conta de vazamentos dessas informações prejudica todos os serviços. Para um leigo é a segurança &#8220;da internet&#8221; que é falha.</p>
<p>Se você é um empresário ou desenvolvedor sério e responsável deve cuidar da segurança dos dados dos seus usuários com todo o cuidado e, sempre que ver outra empresa trabalhando de outra maneira você tem a obrigação de condená-la pois ela também está, indiretamente, prejudicando o seu negócio.</p>
<p><strong>Atualização:</strong></p>
<p>O meu amigo Guilherme Manika postou um <a href="http://tech.gawker.com/5721670/gawker-password-management-qa">link</a> para um artigo onde a equipe do <a href="http://www.gawker.com/">Gawker</a> relata o problema ocorrido com as senhas de seus usuários.</p>
<p>Pelo que entendi eles armazenavam o hash das senhas usando a função <a href="http://en.wikipedia.org/wiki/Crypt_(Unix)">crypt(3)</a> e um <em>salt</em> com apenas 12 bits que, como disse, é muito pouco para os padrões de ataque atuais.</p>
<p>Então, em 2008, eles modificaram o sistema para usar o bcrypt() também. Mas, aí a &#8216;burrada&#8217; deles: eles continuaram gerando o hash com crypt(3) e armazenando no mesmo lugar que os hashes bcrypt() pra manter compatibilidade retroativa!</p>
<p>Segundo um <a href="http://seclists.org/nmap-dev/2010/q4/690">e-mail</a> que circulou numa lista de segurança,  748.081 usuários tinham as senhas armazenadas com crypt() e 195.178 tinham as senhas armazenadas com crypt() e bcrypt(). Total: 943.259 usuários afetados. Quase um milhão de pessoas.</p>
]]></content:encoded>
			<wfw:commentRss>http://osantana.me/2011/01/22/a-web-e-o-problema-das-senhas-clear-text/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Curso completo de Python e Django</title>
		<link>http://osantana.me/2011/01/04/curso-completo-de-python-e-django/</link>
		<comments>http://osantana.me/2011/01/04/curso-completo-de-python-e-django/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 23:08:38 +0000</pubDate>
		<dc:creator>osantana</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.triveos.com.br/?p=829</guid>
		<description><![CDATA[UPDATE: O curso está disponível gratuitamente em http://osantana.me/pydjango/. Esse post é pra avisar à todos que tem interesse em aprender Python e Django que o curso online de Desenvolvimento Web com Python e Django está pronto e disponível para compra em nossa plataforma Ludeos! Esse curso é ideal para aqueles desenvolvedores Web que querem começar [...]]]></description>
				<content:encoded><![CDATA[<p><strong>UPDATE:</strong> O curso está disponível gratuitamente em <a title="Curso Completo de Desenvolvimento Web com Python e Django" href="http://osantana.me/pydjango/">http://osantana.me/pydjango/</a>.</p>
<p><a href="/wp-content/uploads/2011/01/capa_ampliada97885752224781.jpg"><img class="alignleft size-thumbnail wp-image-835" style="padding: 3px; border: 1px solid black; margin: 10px 20px; background: white;" title="Python e Django" alt="Capa do livro Python e Django" src="/wp-content/uploads/capa_ampliada97885752224781-111x150.jpg" width="111" height="150" /></a></p>
<p>Esse post é pra avisar à todos que tem interesse em aprender Python e Django que o curso online de <a href="http://www.ludeos.com.br/s/triveos-cursos-online/python-e-django/">Desenvolvimento Web com Python e Django</a> está pronto e disponível para compra em nossa plataforma <a href="http://www.ludeos.com.br/">Ludeos</a>!</p>
<p>Esse curso é ideal para aqueles desenvolvedores Web que querem começar a usar Python e Django nos seus projetos e não tem um curso presencial à disposição.</p>
<p>Os videos são gravados no formato <em>screencast</em> e podem ser vistos quantas vezes for preciso. A compra é feita no nosso site de treinamentos online e o pagamento pode ser parcelado em até 12x no cartão de crédito (o pagamento é feito através do PagSeguro, ou seja, segurança total para sua compra).</p>
<div style="text-align: center;"><iframe class='youtube-player youtuber' type='text/html' width='425' height='355' src='http://www.youtube.com/embed/E08DJnf4nyw?rel=0&amp;fs=1&amp;ap=%252526fmt%253D18' webkitAllowFullScreen mozallowfullscreen allowFullScreen frameborder='0'></iframe></div>
<p>Com esse curso a Triveos, agora, tem o mais completo pacote de treinamentos de Python e Django do país. Composto de:</p>
<ul>
<li><a href="http://www.triveos.com.br/curso-de-python-e-django/">Curso <em>in-company</em> de Python e Django</a> – voltado para empresas que querem qualificar os seus funcionários e deixá-los aptos a trabalhar com desenvolvimento de aplicações Web com Python e Django. O material didático é bastante completo: livro Python e Django, PDF com os 220 slides usados no treinamento, conteúdo adicional e prático sobre depuração e deployment Django, etc.</li>
<li><a href="http://www.ludeos.com.br/s/triveos-cursos-online/python-e-django/">Curso online em vídeo alta-definição</a> – Mais de 8hs de vídeo no formato em alta-definição (720p) cobrindo a maior parte do conteúdo do curso <em>in-company</em>. Além dos vídeos o aluno terá acesso aos slides completos usados em nosso curso in-company, ao código fonte dos exercícios desenvolvidos e suporte por e-mail para esclarecimento de dúvidas sobre o conteúdo do curso.</li>
<li><a href="http://www.pythonedjango.com.br/">Livro Python e Django</a> – O primeiro livro publicado em língua portuguesa sobre Django. Voltado para desenvolvedores Web que usam outras linguagens de programação para o trabalho e querem começar a usar Python e Django.</li>
</ul>
<div style="text-align: center;"><iframe class='youtube-player youtuber' type='text/html' width='425' height='355' src='http://www.youtube.com/embed/cgULA_8CDyQ?rel=0&amp;fs=1&amp;ap=%252526fmt%253D18' webkitAllowFullScreen mozallowfullscreen allowFullScreen frameborder='0'></iframe></div>
<p>Caso tenham alguma dúvida sobre algum dos nossos cursos podem <a href="http://www.triveos.com.br/contato/">entrar em contato conosco</a>. Mas, para agilizar, seguem algumas informações interessantes/importantes:</p>
<ol>
<li>A Triveos oferece desconto de 20% nos cursos <em>in-company</em> agendados para o período de 1/janeiro a 30/abril.</li>
<li>Oferecemos 50% de desconto em nossos cursos online para associados da <a href="http://associacao.python.org.br/">Associação Python Brasil</a> que estão em dia com sua anuidade. É só se cadastrar no site da associação e entrar em contato <a href="http://www.triveos.com.br/contato/">conosco</a> solicitando o código de desconto pra ser usado no momento da compra.</li>
<li>O curso, até o momento, fica disponível por tempo indeterminado e pode ser assistido quantas vezes desejar. Pode ser que isso mude no futuro, até lá, aproveite :D</li>
<li>Conteúdo integrado: o conteúdo do livro, do curso em video e do curso in-company segue a mesma linha.</li>
<li>As pessoas que já adquiriram o curso durante o período de pré-venda ganharão um presente da Triveos. Aguardem o contato em breve (alguns clientes já receberam seus presentes).</li>
</ol>
<p>A plataforma Ludeos, onde os cursos ficam disponíveis, também é um produto da Triveos. Este produto ainda está na sua primeira versão e, por isso, ele ainda está longe do que consideramos ideal.</p>
<p>Estamos trabalhando numa nova versão do Ludeos onde teremos: certificados, suporte tira-dúvidas integrado na plataforma (usamos e-mail/gtalk hoje), download do conteúdo e suporte para que qualquer um possa criar e vender seus treinamentos. Teremos novidades dentro de alguns meses.</p>
<p>Apesar da plataforma não estar completa já é possível assistir os videos e ter acesso ao conteúdo normalmente, portanto, não se preocupem se a &#8220;cara&#8221; do site não lhe parecer muito boa porque em breve ela ficará melhor. :D</p>
<div id="attachment_836" class="wp-caption aligncenter" style="width: 335px"><a href="/wp-content/uploads/2011/01/ludeos.png"><img class="size-thumbnail wp-image-836" title="Ludeos 2.0" alt="Logotipo da nova versão do Ludeos" src="/wp-content/uploads/ludeos-325x150.png" width="325" height="150" /></a><p class="wp-caption-text">Ludeos 2.0 (em breve)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://osantana.me/2011/01/04/curso-completo-de-python-e-django/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Chrome Extension for search Python Documentation</title>
		<link>http://osantana.me/2010/12/27/chrome-extension-for-search-python-documentation/</link>
		<comments>http://osantana.me/2010/12/27/chrome-extension-for-search-python-documentation/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 17:57:44 +0000</pubDate>
		<dc:creator>osantana</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.triveos.com.br/?p=794</guid>
		<description><![CDATA[Quick post about a small extension for Google Chrome that make easy to search Python Library documentation. You can download/install accessing: http://j.mp/pychrome.]]></description>
				<content:encoded><![CDATA[<p>Quick post about a small extension for Google Chrome that make easy to search Python Library documentation.</p>
<p>You can download/install accessing: <a href="http://j.mp/pychrome">http://j.mp/pychrome</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://osantana.me/2010/12/27/chrome-extension-for-search-python-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
