REPL para Java com Groovy Shell em projetos Maven

Uma das coisas que sinto falta ao desenvolver em Java é a falta de um modo interativo (ou REPL), como os disponíveis em Python e Ruby. Um REPL é de grande ajuda quando queremos rapidamente testar a sintaxe de um método/função, ou executar uma tarefa simples. No projeto que estou trabalhando atualmente, que está sendo desenvolvido em Java me deparei com uma destas tarefas. Uma das funcionalidades do sistema resulta na geração de um arquivo PDF a partir de algumas entidades do sistema.

Usando redis como backend de cache no Django

Um dos patterns mais simples implementáveis com Redis é o de armazenamento de pares (chave, valor): SET key value GET key DEL key E assim como em outras ferramentas como memcache, é possível definir um tempo de vida máximo da chave no Redis, em segundos (EX), ou milisegundos (PX): SET key value EX 60 # 1 minuto SET key value PX 1000 # 1s Com estas primitivas, podemos montar um mecanismo de cache de dados, com a grande vantagem de ser um cache compartilhável por várias máquinas / processos separados, uma vez que o Redis é um servidor acessível via IP/porta.

REDISCO

Nos últimos meses, tenho escrito uma enorme quantidade de código em Python usando Redis como servidor de estrutura de dados e cache. Aliás, posso dizer que Redis se tornou uma ferramenta central e essencial nos meus projetos. E com o aumento de linhas de código usando basicamente a excelente biblioteca redis-py, tem aumentado a minha necessidade de jogar certas coisas por debaixo dos panos. Tipo ORM. ORMs são temas de discussões acaloradas: pessoas amam, pessoas odeiam.

Calatrava

A questão da experiência do usuário (UX) tem se tornado cada vez mais importante no desenvolvimento de aplicações, em especial no mundo das aplicações móveis, em função das limitações físicas dos dispositivos, e das especificidades de cada plataforma. Idealmente, desenvolver uma aplicação nativa para cada plataforma seria a melhor solução, pois pode-se assim entregar ao usuário a melhor experiência de acordo com os padrões definidos para o seu dispositivo. No entanto, isto implicaria em um alto investimento em desenvolvimento.

Schemeless URLs

Descobri esta semana a existência dos schemeless URIs, endereços sem a definição do protocolo (HTTP ou HTTPS). Já tinha esbarrado com os dito-cujos no CDN do Google, caçando bibliotecas JS. Os mais atentos já notaram que os códigos de embed são sempre no formato <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> Na minha ignorância e pedância costumeiras, achava que era um erro do Google. Mas Google não erra. E aí, a audiciência se pergunta: what the hell?

Eu fui no Google I/O 2013

Estive em San Francisco para acompanhar de perto as novidades que o Google lançaria no I/O 2013, realizado entre os dias 15 a 17 de maio, no Moscone Center - local que inclusive também é realizada a WWDC da Apple. Foi minha primeira vez no evento, porém foi fácil perceber que as outras edições já contavam com a mesma super estrutura (segundo alguns até melhor nos anos anteriores): uma área de expositores chamada Sandbox, a famosa lojinha de gadgets do Google e é claro: as sessions e os code labs.

MySQL e os collations da vida

AWS virou minha plataforma base para deploy de 100% dos meus projetos. E com ele, veio o MySQL, já que o RDS (serviço de base de dados do AWS) não oferece a opção de usar Postgres. O Raphael Lullis dirá para eu deixar de ser preguiçoso e fazer o meu próprio deploy…e meu próprio backup….e minha própria manutenção…..fiquemos com o MySQL. É fato que o ORM do Django simplifica bastante o trabalho de lidar com diferentes bases de dados.

Vagrant + Chef + AWS

Quando comecei a me interessar pelo tema Vagrant + Chef (cuja solução eu descrevi aqui), uma questão básica que eu quis responder desde o início era: OK, eu consigo montar uma VM local e ter um ambiente de desenvolvimento / testes idêntico ao ambiente de produção. Mas como eu uso essas ferramentas para criar o meu ambiente de produção no AWS? A versão 1.1 do Vagrant trouxe uma resposta parcial para o meu questionamento, ao criar o conceito de PROVIDER de virtualização, e permitir o uso de outros serviços além do VirtualBox.

DevOps, NoOps. Afinal, que raios é isso?

Estou como autor deste post, mas na verdade o autor deveria ser o nosso colega Thiago Ganzarolli, que é o real autor da apresentação sobre DevOps abaixo. Achei propício, tendo em vista o tema abordado no meu último post. DevOps, NoOps...afinal que raios é isso?

Vagrant + Chef

Desenvolvedor de startup codifica, testa, publica, mantém infra, desenha telas, atende telefone e lava a louça do cafezinho no fim da tarde. E aí, o único jeito de se manter digno e produtivo é automatizar tudo o que puder ser automatizado, economizando tempo e erros bestas. Além do mais, em tempos de computação nas nuvens, hardware virou software e a melhor forma de tirar proveito desta flexibilidade é automatizando o processo de criação e configuração de suas máquinas.