#2 Thiago Avelino | Pythonistas que você devia conhecer

1495497_10152040120833726_252377080_n

Thiago Avelino é uma das pessoas que tem grandes contribuições para a comunidade Open Source, trabalhando em projetos grandes como o Django, Plone e agora também um dos core-commiters do Bottle, um microframework web em Python.

Tendo em vista que muitas pessoas tem interesse de aprender em colaborar em projetos mas não sabem por onde começar, compartilho essa conversa que tive com o Thiago para ele falar mais sobre suas experiências e projetos.


Thiago, por favor fale um pouco de você.

Eu não sei muito o que falar de mim, mas sou casado e tenho um filho (que cá entre nós é lindo) que tem 1 ano, trabalho há mais de 7 anos com tecnologia, comecei trabalhar com infra e em pouco tempo comecei programar em Perl, trabalhei com diversas tecnologia (Perl, VB.Net, C++, C, Python, Ruby, Go, entre outras que estudei).

Tive uma fase da minha vida que passei empreendendo, onde tive uma startup e foi comprada por uma empresa de fora do Brasil. Muitos me pergunta se depois da venda da startup porque eu parei de empreender, com filho pequeno não é muito fácil empreender, até porque temos que viver uma vida de desapego de bens materiais (Ao menos o que nos dá conforto, carro por exemplo).

Hoje contribuo com alguns projetos open source, para saber mais de mim dê uma olhada no github e twitter.

https://github.com/avelino
https://twitter.com/avelino0

Eu fiz parte do sprint que a YACOWS havia feito para falar sobre o Opps CMS, que foi feito com Django, sendo utilizado para portais de alta visibilidade. Conte um pouco sobre quais foram as dificuldades e desafios encontrados.

Manter um software open source é um grande desafio. Quando nós desenvolvedores começamos a escrever qualquer código é para solucionar um problema X ou Y, sabendo mais ou menos qual será o nível das pessoas que irão usar. Já em projetos open source não é assim, pois o código está aberto e você não sabe quem irá usar, quais as necessidades reais que são um dos pontos importante para desenvolver um software.

Quando começamos o Opps CMS a YACOWS tinha a necessidade de colocar um portal no ar (ou seja, tínhamos algumas premissas), com isso começamos a versão 0.1.x do Opps, em mais ou menos 3 meses o portal já estava no ar, assim desenvolvemos a primeira versão do CMS em 3 meses.

Mas nem tudo são flores, depois de entregar o projeto comecei a ver que o CMS estava com característica que apenas o cliente precisava, ou seja, não era um CMS flexível e sim um CMS para o cliente X, eis que começamos a desenvolver a nova versão do CMS com novas ideias que discutimos nessa issue (https://github.com/opps/opps/issues/93), o CMS ter um ambiente de plugins (usando a base do Django de apps) e o core do CMS na versão 0.1.x não sabia exatamente o que estava acontecendo dentro dos plugins.

Um outro ponto é evolução rápida, isso realmente é complicado, chega em um ponto que não se sabe o que está implementado dentro do projeto, começando a implementar novos métodos sendo que tem outro implementado (provavelmente feito por outro contribuidor) que atende sua necessidade, ou seja, um projeto open source precisa de documentação (um ponto muito importante para qualquer projeto).

Tivemos problemas com algumas coisas do core do Django que tivemos que fazer alguns ajustes, estendendo classe para implementar a necessidade do CMS. Muitas ideia e decisões foram tiradas da arquitetura do Plone.

Para o que você indica a utilização de Plone? E quais são as vantagens desse CMS?

Plone é um excelente CMS, não só isso, eu em particular contribuí pouco com o projeto, mas tenho orgulho da comunidade e código Plone (100% testado).

Eu indico para uso de qualquer portal de conteúdo e intranet, ou seja, qualquer projeto que precise gerenciar conteúdo ele atente perfeitamente, ele tem uma estrutura de workflow extremamente flexível.

Sobre as vantagens do Plone, a comunidade Python deveria agradecer a existência dele pois via o Plone a comunidade Python tem uma abertura grande no governo Brasileiro, deixe citar algums motivos:

  • Segurança;
  • Workflow flexível;
  • Gerenciamento de conteúdo na mesma pagina do site (não tem um /admin);
  • Foco escritor (facilitando a entrada de dados no CMS);
  • Gerenciamento de imagens;
  • Desenvolvimento de novos recursos simplificado;
  • Zope como base do CMS, isso faz com que tenhamos uma base extremamente robusta;
  • Sistema de Portlets;
  • Desempenho;
  • Diversos outros;

Sei que irão me pergunta o porquê de desenvolver o Opps CMS. Para quem não tem domínio de Plone, a curva de aprendizado é grande, por isso a Opps existe, para quando você tem um time que já trabalha com Django e não tem o tempo para estudar como o Plone funciona.

Também temos o Nacho, um micro web-framework. Para o que ele serve?

Nacho
Nacho

O Nacho nasceu com a existência do Tulip (framework assíncrono para Python 3 mantido pelo Guido), hoje o projeto está parado por falta de tempo mas pretendo voltar mexer nele assim que sair o Python 3.4 (onde o Tulip se tornou a biblioteca asyncio no core do Python 3.4).

Ele é um framework para simplificar o desenvolvimento assíncrono de aplicações web com Python 3.4, criar um framework do zero foi uma iniciativa radical pois estava desenvolvendo um projeto que precisava de processamento paralelo e queria ver como estava se saindo o Python 3, com isso resolvi organizar e disponibilizar o código que estava escrevendo.

Como de forma rápida as pessoas podem começar a colaborar com projetos? 

Contribuir com software livre é um assunto de uma palestra que dei da Campus Party desse ano, eu recomendo a todos contribuírem, principalmente com os softwares que vocês usam no dia a dia, por exemplo trabalho com um framework web X (Django, Flask, Bottle e/ou qualquer outro), porque não contribuir com o projeto, contribuir não é só escrever código, dentro de um projeto open source tem diversas sub-áreas e necessidades, como design, testers, documentação e assim por diante.

Não existe uma fórmula mágica que eu possa falar para vocês, faça assim, isso vai depender de projeto para projeto, recomendo fortemente que comece a participar da comunidade local (nacional) e oficial do projeto, comece a dar ideias para o projeto, interagir com o projeto e use IRC (geralmente rede IRC) os desenvolvedores do projeto ficam muito online em canais de IRC, eu comecei a contribuir com o Django por uma demanda que surgiu no IRC.

Uma coisa que ajuda muito os projetos open source quando esta no Github é dá “star”, se você gostou do projeto, dê star, isso ajuda a você localizar o projeto futuramente.

E por último seu projeto mais recente é o Open Mining, que é uma aplicação de análise escrita em Python, feito com Numpy, Riak, MongoDB e Bottle.

O projeto final será uma aplicação de BI, ele nasceu da necessidade da empresa que eu trabalho UP!  onde a diretoria precisa saber como anda a empresa. Sei que existe o Pentaho (e outros softwares open source de BI), passei 1 mês estudando o Pentaho e realmente é muito bom, só que peca na parte que eu jugo mais importante para o projeto, o dashboard (nome usado para montar um conjunto de relatório). Para criar um dashboard dentro do Pentaho você usa um plugin chamado ctools (desenvolvido pela comunidade e precisa evoluir muito) ou você compra a licença do Pentaho, julgo mais importante pois é onde o usuário final vai usar.

Com essa carência do Pentaho logo vi uma ótima oportunidade no mercado de BI para desenvolver um novo projeto open source que seja simples e flexível criar dashboard.

Começamos o projeto com Tornado que é um ótimo framework, por gostar muito de gevent resolvi mudar para Bottle com gevent (para processar async onde precisa), o projeto é um SPA (Single-page application) cenário ideal para o Bottle (por isso resolvi mudar para Bottle).

O projeto está em desenvolvimento, seguem alguns screenshots – https://github.com/avelino/mining#screenshot

Usamos o Riak (Em um futuro próximo será possível usar outros banco como hadoop) como data warehouse e MongoDB como armazenamento de dados do admin.

Desde já convido a todos a participar do projeto, https://github.com/avelino/mining (estou 100% disposto a ajudar no que for necessário).


Há algum tempo o Marcel Caraciolo fez uma série muito bacana entrevistando diversas pessoas da comunidade, e nessa oportunidade o Thiago também foi entrevistado. Caso queria saber mais a respeito, dê uma olhada. E também outra palestra sobre MongoDB.

Aproveite e veja também sobre outro pythonista, o Alex Gaynor.

Anúncios

Por que escolher Django?

Django Unchained
Não esse Django.

Quando se está iniciando um projeto surge a questão sobre qual ferramenta escolher. Python tem uma infinidade de possibilidades de acordo com seus objetivos, e muitas vezes as opções podem atrapalhar sua escolha.

E o Allisson Azevedo fez uma colaboração fantástica para a comunidade liberando seu curso de Django gratuitamente no youtube. E com isso me fez pensar em que o Django se destaca?

Com isso perguntei a alguns amigos porque escolher Django para suas aplicações, quais as vantagens e o que mais gostam desse fantástico framework.


Henrique Bastos

Acho que minha palestra Trabalhando com Django para não ter trabalho expressa cada detalhe sobre isso.

Django é excelente oferecendo convenções e 90% das funcionalidades que todo mundo precisa. Além disso, quando o framework não te atende perfeitamente, torna fácil você contornar e fazer aquele pedaço do seu jeito. Pra mim isso é reflexo de um design focado no uso, no desenvolvimento pragmático.


Allisson Azevedo – Soda Virtual

O Django é um projeto sólido, principal framework web em python, com uma comunidade ativa e operosa. A desconfiança no framework que existia já caiu por terra e sua adoção não para de crescer, principalmente entre startups. Hoje temos um mercado muito promissor e o que falta muitas vezes são candidatos qualificados, por isso que eu tenho bastante interesse nessa área de treinamento.


Filipe Ximenes – Diretor da Associação Python Brasil e sócio da Vinta software studio

Utilizar Django tem pouco a ver com a linguagem [Python] no qual ele é escrito ou até mesmo com as características do framework em si e tem TUDO a ver com ecossistemas. Em primeiro lugar, o ecossitema Python que envolve além de uma linguagem extremamente poderosa, versátil e aberta, uma comunidade acolhedora, que segue os mesmos princípios de liberdade da linguagem e é bastante ativa no Brasil e no mundo. Tudo isso acompanhado do ecossistema Django, que possui uma comunidade nos mesmos moldes de Python e que deixa a disposição dos programadores milhares de bibliotecas [apps], e todo tipo de material necessário para facilitar, acelerar e melhorar o desenvolvimento de aplicações web.


Gilson Filho – Trippics.com

O Django é um framework que se tornou carro chefe para aqueles que desejam entrar no ecossistema Python, como Rails foi para o Ruby. Temos percebido através de pesquisas como também ao olhar o mercado de trabalho, que a linguagem tem sido destaque. Diante da escolha massiva da gema, Python e Django se tornou uma alternativa para as startups nos últimos tempos. Através dos projetos conhecidos como Instagram, Rdio, vemos que eles usam o Django na sua arquitetura, por ser fiel ao que promete:

“O framework web para perfeccionistas com prazos”


Gileno AlvesPycursos

Django foi o primeiro framework web Python com que trabalhei. A coisa que mais me deixou empolgado no início foi o ORM, antes trabalhava com Java e o acesso ao banco era muito precário, nesse caso específico não era culpa do Java e sim do projeto que não usava Hibernate e coisas do tipo.

Atualmente, Django é meu framework favorito porque a minha forma de trabalho se encaixa bem nele e com isso eu consigo ser bastante produtivo. A separação em app’s é muito legal e intuitiva. No início podem gerar dúvidas mas rapidamente se percebe isso.

O fato de ser batteries included é fundamental para aumentar a produtividade, muitas pessoas consideram isso uma coisa ruim porque preferem fazer suas próprias escolhas em relação a quais ferramentas vão usar em: URL’s, Banco de Dados, Templates …, mas para essas pessoas existem outros frameworks que podem se adequar melhor aos seus projetos como o Flask.

Alguns aspectos positivos de Django:

Batteries Included: O fato de vir com várias coisas de “fábrica”, ajuda muito o desenvolvimento, evita que o desenvolvedor perca muito tempo fazendo muitas escolhas e configurações. Muita gente afirma que prefere fazer suas escolhas em relação aos aspectos do projeto, entretanto se você desejar fazer um projeto de fato organizado e bem estruturado você levará um bom tempo para organizá-lo e configurá-lo, se formos procurar esqueletos de projetos em flask ou pyramid (mesmo com o scaffold) por exemplo, vamos ver muito código para deixar as coisas de fato organizadas para começar um projeto de pequeno/médio porte (de grande nem se fala). Além disso o fato de fazer escolhas por você não significa que você precisa adotar todas as escolhas, django é bastante flexível (sim ele é) e você pode deixar de usar algumas coisas, o problema é que quando você começa a “cancelar” algumas escolhas que ele faz por você, o desenvolvimento começa a perder produtividade.

Comunidade: Django sem dúvida nenhuma tem a maior comunidade e aceitação entre os frameworks web Python. Você conseguirá tirar quaisquer dúvida e usar diversas apps prontas para quase tudo que você precise.

Estrutura: Django tem uma excelente estrutura base para projetos, você organiza seu projeto em apps tornando o projeto bem estruturado desde o início e facilita a integração entre projetos e apps de terceiros. Particularmente eu quando começo qualquer projeto a primeira coisa que faço é organizar a estrutura, módulos e coisas do tipo, para que conforme o crescimento do projeto ele não fique desorganizado e com Django isso fica muito intuitivo.

Simplicidade: A startproject do django gera poucos arquivos e pastas, o ORM é um dos mais simples que eu já vi, o sistema de templates também, tudo gira em torno da simplicidade e do DRY.

Alguns aspectos negativos:

Projetos muito pequenos: para projetos muito pequenos django perde um pouco da sua simplicidade, porque ele já considera que você vai precisar de um banco relacional e de diversas outras configurações. Nesses casos o Flask, Bottle e outros microframeworks se saem muito melhor.

Aprendizado: Para ensinar Python e Web django também não se sai bem, pelo mesmo fato de ter várias configurações que poderão ser desnecessárias, principalmente porque normalmente quando se está ensinando web com python você só precisaria de escrever algumas funções para renderizar algum texto (o sistema de templates seria desnecessário) e fazer apenas alguns cálculos simples.

Projetos fora do padrão: Para projetos que precisem de muitas coisas diferenciadas como: um banco de dados não relacional, que não precise exibir páginas html ou que use apenas algum outro ORM que não o padrão do django. Projetos assim, ainda podem ter proveito do django mas dependendo da situação pode gerar uma improdutividade e assim torna-se melhor usar outro framework mas flexível em relação a essas escolhas

Deixo um dos slides mais completos de Python/Django que conheço. Muito bem indicado para aqueles que querem aprender Python e Django ao mesmo tempo.


E deixo também mais 2 vídeos tutoriais atualizados de qualidade excelente em inglês.


E não esqueça de colocar nos comentários sobre o que você mais gosta no Django.

Como ficar expert em Ruby on Rails, Python, Django e outros?

Vi esse texto sendo compartilhado pelo Fábio Akita e achei sensacional e gostaria de compartilhar com a galera. Irei colocar o original em inglês e uma tradução livre minha logo abaixo.

Ruby on Rails (web framework): How to become an expert ruby on rails developer?
What does a ror expert developer need to know? And what are the steps to get to that level of knowledge?

The question is actually “how to become an expert” in anything. Practicing. There is no recipe, no step-by-step solution. The only way is to start practicing. By doing, you will quickly learn where it hurts. Every time you stumble upon an invisible wall, stopping you from going forward, that’s when you will have to go out of your way to Google, books, other colleagues of practice and learn what’s necessary to go over that wall.

More often than not, you will quickly learn that the initial solution for that wall was not the best one, and you will have to humbly relearn. Every time, all the time. It’s a massacre. If it’s not hurting you’re not learning. No pain, no gain.

Then you repeat and keep going over wall after wall. The path is long, frustration will hit you hard many times, and only after you spend years learning how to go over every wall thrown against you, that’s when you start becoming an expert. Takes years of uninterrupted practice.


Ruby on Rails: Como se tornar expert em desenvolver em Ruby on Rails?
O que um programador Ruby on Rails precisa saber? E quais são os passos para chegar a esse nível de conhecimento?

A questão realmente é “Como se tornar um expert” em qualquer coisa. Praticando. Não há receita, nenhuma solução passo a passo. O único caminho é começar praticando. Fazendo, você logo verá onde machuca. Toda hora você tropeçar em uma parede invisível, impedindo de seguir em frente, será então quando deverá fugir do seu caminho normal para procurar no Google, livros, colegas de faculdade e aprender o que é necessário para seguir adiante através dessa parede invisível.

De uma forma aprenderá rapidamente de que solução inicial para atravessar a parede não será a das melhores, e humildemente terá que reaprender. Toda hora, todo tempo. É massacrante. Se não está machucando você não está aprendendo. Sem dor, sem ganho.

1429005_15420938

Então repetirá o processo parede por parede que surgir no processo. O processo é longo, frustrações irão te machucar muito diversas vezes, e apenas gastando anos em aprender a atravessar essas paredes que surgirem contra você é que se tornará um expert. Serão anos ininterruptos de prática.

#1 Alex Gaynor | Pythonistas que você devia conhecer

Alex é um dos maiories contribuidores do Python, tendo atuado em projetos importantes como o framework Django, o Pypy, e criado o Topaz e diversos outros projetos.

Alex Gaynor
Alex Gaynor

Trabalha no Rackspace, empresa voltada a serviços em Cloud, e também tendo passagem por empresas como Rdio e Quora, além de colaborações na Django Software foundation.

Palestrante em diversos países, compartilhando suas experiências e projetos, fazendo parte da PSF(Python software foundation), organização sem fins lucrativos que visa promover e alavancar a linguagem.

As pessoas que fazem parte são aquelas que tem contribuições enormes ao Python, sendo indicado em 2011. Vale lembrar que temos diversos brasileiros dentro dessa lista, tais como Henrique Bastos, Bruno Rocha, Érico Andrei, Luciano Ramalho e outros.

Conheça um pouco mais sobre seus projetos e contribuições.

Topaz

Topaz é uma implementação de Ruby escrito em Python, sendo usado RPython Virtual Machine.

http://docs.topazruby.com/
https://speakerdeck.com/jan/topaz-is-ruby-in-python

Cryptography

Cryptography foi feito para expor receitas e informações para desenvolvedores Python. Alex tendo a necessidade de de trabalhar com criptografia, analisando as possibilidades disponíveis não atendiam de forma ideal, assim como qualquer programador faz, se não existe algo bacana, nada como fazer você mesmo. Podendo ser usando tanto no Python 2.x, 3.x e PyPi.

Em seu blog ele detalha melhor sua experiência ao criar esse projeto: http://alexgaynor.net/2014/feb/12/why-crypto/

Warehouse

Uma iniciativa para criar um novo repositório de pacotes Python para poder substituir os pacotes legados que o PyPi tem atualmente.

E também tem diversas contribuições no Core do Django.

Temos também o destaque em suas diversas palestras, tanto falando sobre Open Source, Django ou PyPy. Podemos acompanhar através dos vídeos disponibilizados pela pyvideo.org. Vejam alguns:

Veja seus projetos no Github ou acompanhe suas ideias no Twitter. Uma coisa legal são as respostas no formspring comentando sobre suas ideias, como aprendeu a programar e porque gosta tanto de Python.

#2 – Python pra que te quero!

Pernas...A vá!
Pernas…A vá!

Na verdade seria “pernas pra que te quero”, mas python é uma cobra, e cobras não tem pernas. Enfim.

Como foi o carnaval? Tranquilo? Bora ver uns links bacanas para nos atualizarmos sobre o que está rolando internet afora?

Vou começar com 3 links que acho serem importantíssimos para esclarecer o que está acontecendo em nosso país e quase ninguém percebe: O ódio, a loucura e a superficialidade.

Escutem o louco

Uma reflexão bem interessante sobre o caso do ‘louco’ que empurrou uma passageira nos tilhos do metrô, e se pararmos para pensar um pouco, cada pessoa é tão louca quanto ele.

A história do ódio no Brasil

O famoso ‘mundo cão’ que vivemos atualmente, pessoas se isolando por medo de se machucarem, fobia por sair em locais desconhecidos ou dirigir em grandes metrópoles e se tornar mais um número entre tantas estatísticas de loucuras que acontecem a cada minuto.

Como ler um livro difícil

E quanto estamos aprendendo uma tecnologia nova, totalmente fora da nossa zona de conforto, e logo desistimos? Vejamos algumas ideias para mudarmos esse cenário.

Screencasts gratuitos de Python do Neckbeard Republic

Devido a mudanças de perspectivas, o Neckbeard resolveu liberar todos os seus screencasts de Python. Conteúdo premium agora free, não percam.

Projetos no Github para iniciantes contribuirem

Saiba como iniciantes podem colaborar com projetos open source no Github sem tem conhecimentos aprofundados de programação ou lógica, e olha que não estou falando só sobre tradução ou documentação.

Entendendo TDD com Django

O site ArunRocks fez um excelente trabalho falando sobre como funciona o TDD, porque ele é fundamental para o crescimento da qualidade dos seus projetos, e de quebra como implementar isso no Django.

O quanto preciso saber de Python para aprender Django

Como criar filtros do Instagram com Python

Desenvolvimento web com Python e Django

Não se esqueçam de colocar nos comentários links que acharam interessantes recentemente.