Perfil

Flávio Juvenal @fjsj


Sobre mim

-

Propostas

Aplicando usabilidade para reusar Django apps

A própria documentação do Django diz que "Reusabilidade é o modo de vida em Python. Você só precisa escrever as partes que tornam seu projeto único". A maneira de escrever código reusável em Django é através de Django apps. É fácil desenvolver Django apps, a vasta quantidade de apps disponíveis no PyPI e no Django Packages prova isso.


No entanto, um aspecto frequentemente ignorado de apps Django é que eles também são interfaces: uma que conecta o desenvolvedor a uma solução reusável. Heurísticas de usabilidade são úteis para avaliar uma interface. Nesta talk, vamos aprender como aplicar conceitos de usabilidade para escrever Django apps melhores: mais simples, cosnsitentes, flexíveis e com menos riscos.


Os tópicos a serem discutidos incluem:
- Simplicidade
* Foco nos 80% dos casos de usos
* Reduzir o emaranhado para os 80%
* "Progressive disclosure"
* Bom comportamento padrão
* Inputs amigáveis
* Como criar abstrações
* Abstrações vazadas: "The Law of Leaky Abstractions"
- Consistência
* "Recognition rather than recall"
* Idiomas de Django
* Interfaces declarativas
* Similar junto, diferente separado
* Falsa consistência
- Flexibilidade
* Deixando os 20% dos casos de usos possível
* Aumentando a granularidade
* Múltiplos níveis de abstração
* Extensibilidade dos idiomas de Django
* Aumentando as oportunidades de extensão
- Risco
* Comportamento perigoso por padrão
* Prevenindo erros comuns
* "Fail-fast"

Como fazer boas libs? O que torna uma biblioteca fácil de usar

Não é fácil escrever uma biblioteca confortável de usar. É difícil agradar a todos. Mas também é difícil agradar até quem acha que a nossa biblioteca faz algo útil. Não é fácil nem mesmo quando fazemos algo reusável só para nós mesmos.


Ainda bem que muitos outros programadores já erraram antes de nós. E existem em Python e fora dele diversos exemplos de boas libs nas quais podemos nos inspirar.


Essa palestra resumirá o que torna uma biblioteca boa, de acordo com nossa experiência e com a experiência de outros programadores que já escreveram sobre isso. Algumas características de boas bibliotecas são:



  • Alta Consistência

  • Muitos dados puros

  • Baixa Verbosidade

  • Respeito ao Principle of Least Astonishment

  • Alta Extensibilidade

  • Baixa Retenção

  • Vários níveis de abstrações

  • Alta granularidade

  • Interesses claros e separados

  • Pythonica


Como você pode ver, alguns aspectos acima são similares ao Zen of Python. Por isso também mostraremos funcionalidades do Python que ajudam a programar boas interfaces. Além disso, para resumir tudo definiremos um checklist que você poderá usar sempre que for escrever um módulo reusável. Esperamos que isso ajude você a programar melhor, o que certamente agradará seus parceiros de trabalho e a comunidade.


UPDATE: Slides em: http://www.vinta.com.br/blog/2016/python-brasil12-talks/

Como fazer boas libs? O que torna uma biblioteca fácil de usar

Não é fácil escrever uma biblioteca boa. É difícil agradar a todos. Mas também é difícil agradar até quem acha que a nossa biblioteca faz algo útil. Não é fácil nem mesmo quando fazemos algo reusável só para nós mesmos.


Ainda bem que muitos outros programadores já erraram antes de nós. E que Python tem exemplos de dezenas de boas bibliotecas com as quais podemos nos inspirar.


Essa palestra resumirá o que torna uma biblioteca boa, de acordo com nossa experiência e com a experiência de outros programadores que já escreveram sobre isso. Algumas características de boas bibliotecas são:
- Pouco fluxo
- Poucos efeitos colaterais
- Interesses claros e separados
- Alta valência
- Baixa verbosidade
- Consistência
- Muitos dados puros
- Baixo risco


Como você pode ver, alguns aspectos acima são similares ao Zen of Python. Por isso também mostraremos funcionalidades do Python que ajudam a programar boas interfaces. Além disso, para resumir tudo definiremos um checklist que você poderá usar sempre que for escrever um módulo reusável. Esperamos que isso ajude você a programar melhor, o que certamente agradará seus parceiros de trabalho e a comunidade.

Como fazer boas libs? O que torna uma biblioteca fácil de usar

Não é fácil escrever uma biblioteca boa. É difícil agradar a todos. Mas também é difícil agradar até quem acha que a nossa biblioteca faz algo útil. Não é fácil nem mesmo quando fazemos algo reusável só para nós mesmos.


Ainda bem que muitos outros programadores já erraram antes de nós. E que Python tem exemplos de dezenas de boas bibliotecas com as quais podemos nos inspirar.


Essa palestra resumirá o que torna uma biblioteca boa, de acordo com nossa experiência e com a experiência de outros programadores que já escreveram sobre isso. Algumas características de boas bibliotecas são:
- Pouco fluxo
- Poucos efeitos colaterais
- Interesses claros e separados
- Alta valência
- Baixa verbosidade
- Consistência
- Muitos dados puros
- Baixo risco


Como você pode ver, alguns aspectos acima são similares ao Zen of Python. Por isso também mostraremos funcionalidades do Python que ajudam a programar boas interfaces. Além disso, para resumir tudo definiremos um checklist que você poderá usar sempre que for escrever um módulo reusável. Esperamos que isso ajude você a programar melhor, o que certamente agradará seus parceiros de trabalho e a comunidade.

Como procurar questões técnicas no Google, ou seja, como programar

Para ser um(a) bom(oa) programador(a) é necessário uma boa dose de estudos. Todo(a) desenvolvedor(a) precisa de bases sólidas em conhecimentos necessários a programação: estruturas de dados, algoritmos, bancos de dados, sistemas operacionais e etc.  

Mas mesmo tendo uma boa base, durante seu trabalho o(a) desenvolvedor(a) encontra problemas bem específicos que travam seu progresso, tais como: bugs, comportamento inesperado, problemas de configuração e falta de ferramentas para atingir um objetivo. Quase sempre alguém já teve este mesmo problema e a solução está escondida em alguma parte da internet. O problema é como encontrar essa solução!  

Além disso, nem toda biblioteca, ferramenta ou linguagem tem uma boa documentação, o que torna difícil encontrar respostas para dúvidas específicas sem realizar uma busca geral.  

Nesta palestra vamos ensinar a procurar dúvidas técnicas de programação de forma efetiva no Google. E também como avaliar a qualidade das soluções encontradas. Saber realizar boas buscas e ter senso crítico diante do que for encontrado é essencial para programar bem. Vamos ajudar você a desenvolver essas capacidades com dicas, truques e boas práticas em buscas por soluções de programação no Google.

Como procurar questões técnicas no Google, ou seja, como programar

Para ser um(a) programador(a) de qualidade é necessário uma boa dose de estudos. Todo(a) desenvolvedor(a) precisa de bases sólidas em conhecimentos necessários a programação: estruturas de dados, algoritmos, bancos de dados, sistemas operacionais e etc.


Mas mesmo tendo uma boa base, durante seu trabalho o(a) desenvolvedor(a) encontra problemas bem específicos que travam seu progresso, tais como: bugs, comportamento inesperado, problemas de configuração e falta de ferramentas para atingir um objetivo. Quase sempre alguém já teve este mesmo problema e a solução está escondida em alguma parte da internet. O problema é como encontrar essa solução!


Além disso, nem toda biblioteca, ferramenta ou linguagem tem uma boa documentação, o que torna difícil encontrar respostas para dúvidas específicas sem realizar uma busca geral.


Nesta palestra vamos ensinar a procurar dúvidas técnicas de programação de forma efetiva no Google. E também como avaliar a qualidade das soluções encontradas. Saber realizar boas buscas e ter senso crítico diante do que for encontrado é essencial para programar bem. Vamos ajudar você a desenvolver essas capacidades com dicas, truques e boas práticas em buscas por soluções de programação no Google.

Como procurar questões técnicas no Google, ou seja, como programar

Para ser um(a) programador(a) de qualidade é necessário uma boa dose de estudos. Todo(a) desenvolvedor(a) precisa de bases sólidas em conhecimentos necessários a programação: estruturas de dados, algoritmos, bancos de dados, sistemas operacionais e etc.


Mas mesmo tendo uma boa base, durante seu trabalho o(a) desenvolvedor(a) encontra problemas bem específicos que travam seu progresso, tais como: bugs, comportamento inesperado, problemas de configuração e falta de ferramentas para atingir um objetivo. Quase sempre alguém já teve este mesmo problema e a solução está escondida em alguma parte da internet. O problema é como encontrar essa solução!


Além disso, nem toda biblioteca, ferramenta ou linguagem tem uma boa documentação, o que torna difícil encontrar respostas para dúvidas específicas sem realizar uma busca geral.


Nesta palestra vamos ensinar a procurar dúvidas técnicas de programação de forma efetiva no Google. E também como avaliar a qualidade das soluções encontradas. Saber realizar boas buscas e ter senso crítico diante do que for encontrado é essencial para programar bem. Vamos ajudar você a desenvolver essas capacidades com dicas, truques e boas práticas em buscas por soluções de programação no Google.

E-commerce com django-oscar

Como utilizar a lib django-oscar para construir um e-commerce completo e personalizado. O Oscar permite a criação de e-commerces com diversas funcionalidades como suporte a produtos digitais e físicos, promoções, vouchers, integração com gateways de pagamento, etc.

Fazendo apresentações real-time com Jupyter

Já pensou em fazer apresentações inserindo comandos em um intepretador de Python, mas tem dificuldade em digitar tudo manualmente? Com o Jupyter e o RISE você consegue gerar slides em reveal.js que suportam execução de Python em tempo real.


Nesta palestra vamos ensinar a fazer essas apresentações e customizá-las. Tomaremos como base o que foi feito na palestra Python WAT, apresentada na Python Nordeste 2016.

Fazendo apresentações real-time com Jupyter

Já pensou em fazer apresentações inserindo comandos em um intepretador de Python, mas tem dificuldade em digitar tudo manualmente? Com o Jupyter e o RISE você consegue gerar slides em reveal.js que suportam execução de Python em tempo real.


Nesta palestra vamos ensinar a fazer essas apresentações e customizá-las. Tomaremos como base o que foi feito na palestra Python WAT, apresentada na Python Nordeste 2016.

Fix My Django - repositório de soluções para erros e exceções do Django

Em desenvolvimento: https://github.com/vintasoftware/fixmydjango


Fix My Django (http://fixmydjango.com) é um site que agrega exceções comuns do Django e mostra como solucioná-las. O diferencial é que você pode instalar a lib do Fix My Django em seu projeto e quando uma exceção ocorrer no devserver, caso esta exceção esteja listada no Fix My Django, o template de erro exibirá um link para as possíveis soluções (exemplo aqui: https://s3.amazonaws.com/fixmydjango/Screen+Shot+2015-07-07+at+13.46.54.png).


Na palestra discutirei como a lib do Fix My Django foi implementada e como a comunidade pode contribuir para expandí-lo para tornar Django um framework ainda mais amigável para iniciantes.


Sobre o autor:
Flávio Juvenal é sócio da Vinta, um studio de software de Recife/PE especializado no desenvolvimento web e mobile, sempre utilizando Django como a primeira escolha para framework web. A Vinta atende clientes de todo o Brasil e também de Nova Iorque e São Francisco.

HATEOAS: construindo APIs realmente RESTful

Você quer ser cool e ter uma API RESTful? Desculpa, mas o que é realmente cool ultimamente são Hypermedia APIs? É, isso é bem hipster, então você pode não ter ouvido falar sobre.


A ideia por trás das Hypermedia APIs é o HATEOAS (Hypermedia as the Engine of Application State). Esse é o pior acrônimo da história, mas é uma boa ideia. A web em si é uma grande obra de engenharia e ela é possível graças ao HATEOAS. Então por que não usar esse poder em nossas APIs?


Nesta palestra vamos explicar em termos práticos o que são Hypermedia APIs e porque você deve aspirar que suas APIs sejam assim. Vamos trabalhar com um exemplo divertido em Django REST Framework para demonstrar como a Hypermedia facilita as transições que guiam o estado da aplicação para frente.

HATEOAS: construindo APIs realmente RESTful

Você quer ser cool e ter uma API RESTful? Desculpa, mas o que é realmente cool ultimamente são Hypermedia APIs? É, isso é bem hipster, então você pode não ter ouvido falar sobre.  

A ideia por trás das Hypermedia APIs é o HATEOAS (Hypermedia as the Engine of Application State). Esse é o pior acrônimo da história, mas é uma boa ideia. A web em si é uma grande obra de engenharia e ela é possível graças ao HATEOAS. Então por que não usar esse poder em nossas APIs?  

Nesta palestra vamos explicar em termos práticos o que são Hypermedia APIs e porque você deve aspirar que suas APIs sejam assim. Vamos trabalhar com um exemplo divertido em Django REST Framework para demonstrar como a Hypermedia facilita as transições que guiam o estado da aplicação para frente.

HATEOAS: construindo APIs realmente RESTful

Você quer ser cool e ter uma API RESTful? Desculpa, mas o que é realmente cool ultimamente são Hypermedia APIs? É, isso é bem hipster, então você pode não ter ouvido falar sobre.


A ideia por trás das Hypermedia APIs é o HATEOAS (Hypermedia as the Engine of Application State). Esse é o pior acrônimo da história, mas é uma boa ideia. A web em si é uma grande obra de engenharia e ela é possível graças ao HATEOAS. Então por que não usar esse poder em nossas APIs?


Nesta palestra vamos explicar em termos práticos o que são Hypermedia APIs e porque você deve aspirar que suas APIs sejam assim. Vamos trabalhar com um exemplo divertido em Django REST Framework para demonstrar como a Hypermedia facilita as transições que guiam o estado da aplicação para frente.

Não é bem assim... quando Python não é como você espera

Apesar de ser uma linguagem bonita e fácil de aprender, nem tudo em Python é como esperamos. Vamos explorar aspectos da linguagem que não são triviais e oferecer alternativas. Esta palestra é essencial para iniciantes, mas pode prover insights para pythonistas experientes também.


Alguns dos tópicos que vamos explorar:
- Esquecendo __init__.py
- Esquecendo parênteses
- Escopo
- Referências
- Operador is
- Variáveis de classe
- Argumentos default mutáveis
- Closures com late binding
- Sobrescrevendo a biblioteca padrão sem querer
- Capturando múltiplas exceções
- .pyc

Prevenindo dores de cabeça com linters e checagens automáticas

É comum usar linters como flake8 para checar a sintaxe e o padrão de código em projetos Python. Porém, ainda é raro o uso de outras checagens automáticas que podem evitar problemas de legibilidade, segurança, configuração, erros comuns, etc. Por exemplo:


- Seus imports são uma bagunça? Sem ordem, misturando módulos da stdlib com externos? Organize-os automaticamente com um clique usando isort.
- Cansado de checar se as libs que você usa receberam atualizações de segurança? Deixe safety fazer isso para você.
- Quer impedir que código inseguro entre no seu projeto? Escreva análises estáticas customizadas com bandit.
- Estressado com seu colega que deu push em um arquivo de vários MBs no repositório, deixando-o lento? Ou com outro que commitou com um pdb no código? Impeça esses erros de serem commitados com um pre-commit hook.
- Esqueceu funções e classes não usadas no código? Previna isso usando vulture.


Como podemos ver nos exemplos acima, muitos problemas podem ser evitados através do uso de linters, os quais podem ser integrados em tempo de commit ou de continous integration. Nesta palestra, apresentaremos os linters listados acima e outros, explicaremos como utilizá-los e detalharemos quais boas práticas eles cobrem. Além disso, como Django é um dos frameworks web mais utilizados em Python, abordaremos o Django system check framework, o qual pode ser utilizado para escrever checagens customizadas integradas a ele.

Python WAT: quando Python não é como você espera

Apesar de ser uma linguagem elegante, intuitiva e fácil de aprender, nem tudo em Python é como esperamos. Vamos explorar aspectos da linguagem que não são triviais e oferecer alternativas. Esta palestra é essencial para iniciantes, mas pode prover insights para pythonistas experientes também.


Os tópicos a serem abordados são:
- Sobrescrevendo a Biblioteca Padrão
- Identidade de objetos
- Referências
- Atribuição em tuplas
- Escopo
- Variáveis de classe
- Argumentos default mutáveis
- Closures com late binding


Esta palestra é similar a que foi apresentada na Python Nordeste 2016, mas contará com recursos de introspecção para exibição dos memes.

Python WAT: quando Python não é como você espera

Apesar de ser uma linguagem elegante, intuitiva e fácil de aprender, nem tudo em Python é como esperamos. Vamos explorar aspectos da linguagem que não são triviais e oferecer alternativas. Esta palestra é essencial para iniciantes, mas pode prover insights para pythonistas experientes também.


Os tópicos a serem abordados são:
- Sobrescrevendo a Biblioteca Padrão
- Identidade de objetos
- Referências
- Atribuição em tuplas
- Escopo
- Variáveis de classe
- Argumentos default mutáveis
- Closures com late binding


Esta palestra é similar a que foi apresentada na Python Nordeste 2016, mas contará com recursos de introspecção para exibição dos memes.