Lazy evaluation as alternative to state machines

2017, March 27

Some days ago I read this nice article talking about co-routines as an alternative to state machines.

The most popular use case for co-routines in Python has been asynchronous I/O, and there are a bunch of Python things that use them (like Twisted, Tornado and the standard library module ...

Continue reading →

Pybee is awesome

2016, October 28

I've recently discovered the BeeWare project, also known as pybee, and it's bloody awesome.

BeeWare logo

I had stumbled upon it before at Pycon US earlier, they had a booth set up and their website said "BeeWare, the IDEs of Python".

I didn't gave much attention at it at first, because I've kinda given up on IDEs some time ago. Every now and then I try Pycharm (which seems to be one of the best UI for Python development out there) and always end up getting back to Vim. An open source replacement for Pycharm definitely sounded cool, but still didn't seem much more than a bunch of developers tools born out of yak-shaving.

However, while there is some fun yak-shaving involved, it's just a teeny tiny part of the picture.

BeeWare is about bringing to people the power of computing.

Continue reading →

On getting productive with Git

2016, June 19

I remember the first time I submitted a pull request in GitHub and some reviewer asked me to squash the commits. I had no idea what they were talking about. I didn't have any friends who knew Git, I was pretty much a noob on Git and GitHub. It's easy to forget how scary this stuff can be for someone just starting out with their first open source contribution.

First-timer OSS contributor asked to rebase and squash commits

It took me several weeks to figure out the whole thing because I was so afraid of messing up. And in the end the code didn't even got merged.

I never forgot my frustration during this, which is why today I avoid as much as possible to ask for someone to rebase their code in a pull request, unless I can pair with them and show how to do it.

Continue reading →

You're not alone

2016, April 19

If you’ve ever thought that you will probably be fired eventually because you’re not as smart and accomplished as your peers and “someday they’ll figure that out”, you’re not alone.

If you’ve ever refrained from introducing an idea out of fear of being ridiculed or laughed at, you’re not alone.

If the thought ever crossed your mind that you’re a fraud waiting to be uncovered, that everyone is smarter and better and faster and more knowledgeable than you, I want to tell you that you’re not alone.

Most of us go through that at least at some point, sometimes every day. And the thing is, there are ways for us to overcome these feelings that, even if we don’t completely eliminate them, it help us to grow both personally and professionally.

Continue reading →

Trying out something new

2016, January 26

Continue reading →

Learning from DAS screencasts - season 3

2015, December 30

Here is a summary of my learning from watching season 3 of Destroy All Software screencasts.

Which kind of code should go into Models?

Gary is fond of an architecture style for web applications, which is equivalent to the so-called clean architecture:

The Clean Architecture diagram

Following this architecture, the code inside model classes ...

Continue reading →

Regex metacharacters differences across several environments

2015, December 13

Here is a table helpful for learning regular expression metacharacters differences across several languages and environments.

Continue reading →

The power of a good template

2015, October 18

Almost ten years ago, I was an intern helping to maintain a PHP application and attempting to write a little framework to create the new version of that application. My little framework generated PHP classes from some templates and a description you’d write in a DSL language I came ...

Continue reading →

Working on hard problems

2015, September 13

We programmers often prefer to work in problems that we already know how to solve, and tend to avoid hard ones that don't have a straightforward solution. Sure we like to think that we love a challenge, but given the choice of something easy to solve and another that ...

Continue reading →

Learning from DAS screencasts - season 2

2015, August 17

These are my notes for season 2 of Destroy All Software screencasts.

The command line, Unix, git and Vim

In the first episode Gary teaches how to compose a complex Unix command line: the point is that you want to build it slowly, checking if it works at every step ...

Continue reading →

Useful small scripts for your ~/bin

2015, January 28


So you are a command line geek, you do your shell-scripts and one-liners using bash to get information you need.

You use cut for handling things delimited by some character like comma or space, but sometimes you have a list of stuff separated by a varied amount of spaces ...

Continue reading →

Things I Learned from Destroy All Software - Season 1

2015, January 18

So, a few weeks ago I purchased and watched the first season of Destroy All Software screencasts (from Gary Bernhard), and it was awesome. I'd say there are different kinds of stuff to learn from it, depending on your personal interests and experience.

Here are my notes for some ...

Continue reading →

The Visual Display of Quantitative Information, or How to Make Better Graphs

2014, October 12

The Visual Display of Quantitative Information, by Edward Tufte, is a beautiful book. It's not just well-written, it's really beautiful, you feel like every inch of the book was planned and designed with great care. The book makes the case for better data graphics, shows you several examples ...

Continue reading →

Web Scraping with Scrapy - first steps

2014, August 30

See a Portuguese version of this article here

Imagine you want to extract content from the Web that isn't all in only one page: you need a way tonavigate through the site to get to the pages that contain the useful information. For example, maybe you want to get ...

Continue reading →

Steve Yegge's Rantings book

2014, August 10

Those who know me well, know that I'm a bit of a Steve Yegge fanboy. That's true, I love reading Steve's mean jokes and I keep coming back to those long blog posts. That dude's writing has been a great influence to me. I've even ...

Continue reading →

Tips on Performance and Monitoring of Java Applications

2014, June 16

I cleaned up my desk this weekend and ended up finding some notes I wrote down some time ago when I attended a course about monitoring JBoss application servers. I haven't been doing much related to Java Web development lately, but I'm going to try to make a ...

Continue reading →

So, here is a story

2014, June 13

Soon after graduating, I went to work as a software developer for a big public company in Brazil. This company is responsible for a huge part of the country's IT infrastructure, and they keep trying to build a reputation of being innovative and pro open source, the kind of ...

Continue reading →

Failing to finish a book

2014, May 31

Okay, here is a book I've been trying to read for almost two months already and barely get to the half of it. Python for Data Analysis has left me with mixed feelings. Of all the O'Reilly books I've got until now, this is probably the one ...

Continue reading →

Programando Erlang - 1 de Any

2014, April 05

Na virada do ano, uma das minhas resoluções para 2014 foi a de que este ano aprenderia Erlang. Eu queria brincar com alguma linguagem que usasse ideias diferentes das que uso no trabalho e que me ensinasse mais do que simplesmente outro jeito de escrever os programas que já sei ...

Continue reading →

Trabalho Eficaz com Código Legado

2014, January 26

Trabalho Eficaz com Código Legado é o título em português do famoso livro sobre código legado (título original: Working Effectively with Legacy Code) escrito por Michael Feathers, um consultor muito experiente e reconhecido na comunidade Agile/XP. Acabei de ler a versão traduzida que um amigo emprestou, e a tradução ...

Continue reading →

Você devia aprender shell-script

2014, January 11

Se você é programador, você devia aprender shell-script. Ou pelo menos, algo parecido.

Nem que seja apenas o básico para se virar: criar o arquivo e deixar executável, ler e escrever variáveis, redirecionar entrada e saída, encadear comandos, grep e cut basicão.

Você pode ainda não saber que precisa da ...

Continue reading →

Problemas da Filosofia

2013, November 20

Um amigo indicou-me a leitura de The Problems of Philosophy (Os Problemas da Filosofia), uma introdução a Filosofia escrita por Bertrand Russell, filósofo e historiador britânico. O livro é excelente, esclareceu várias dúvidas minhas e me fez pensar melhor sobre muitas coisas.

O texto original está disponível no Projeto Gutenberg ...

Continue reading →

VI Melhorado

2013, September 26

Practical Vim é um livro sobre o Vim -- o editor de textos xodó dos programadores. Muito bem escrito, recheado de exemplos e referências, kudos para o Drew Neil, autor dessa belezinha. Drew também faz vídeos sobre o Vim, disponíveis gratuitamente em

Edit Text at the Speed of

Continue reading →

Alguns programas úteis para usar no Ubuntu

2013, August 14

Ok, hoje estou tirando a preguiça do traseiro para escrever sobre algo que há tempo queria fazer: uma lista de alguns programas úteis que uso no Ubuntu. A maioria deles eu demorei um pouco para descobri-los, por isso acho uma boa idéia falar deles por aqui -- são aplicações bacanas que ...

Continue reading →

Programming Grails -- a aventura continua

2013, July 28

Alguns dias atrás terminei de ler o Programming Grails (Amazon), um livro sobre o framework Grails voltado para desenvolvedores experientes, que explica como funcionam várias coisas do framework e aponta vários caminhos das pedras. O autor é Burt Beckwith, conhecido na comunidade Grails por criar vários plugins úteis do Grails ...

Continue reading →

Goodbye, JSF!

2013, June 23

Ok, se você não é javeiro, talvez nunca tenha ouvido falar em JSF. No worries, você não está perdendo muita coisa.

Porém, se você aprendeu a programar em Java, talvez nem tenha procurado aprender outra linguagem de propósito geral (... ainda, I hope) mas já se interessou por programar para a ...

Continue reading →

Aventurando-se com Grails

2013, June 03

Estou usando Grails ativamente há alguns meses atrás. Comecei fazendo manutenção numa aplicação legada usando uma versãozinha do Grails já bem gasta. Eventualmente, acabei migrando de vez, usando Grails 2.x para praticamente todas as aplicações novas lá no trampo. O bichinho é muito bom!

Quem caiu aqui para ler ...

Continue reading →

Desenvolvimento de software é um esporte de equipe

2013, April 27

Dãã, grande notícia, certo? Todo mundo sabe disso, não precisa nenhum anúncio. Bem, pelo menos não era pra precisar. Todavia, pelo que converso com outros amigos desenvolvedores e pela minha própria experiência mesmo, seria muito bom se fôssemos lembrados disso mais vezes.

Há uns dias li o fantástico livrito Team ...

Continue reading →

Coisas sobre o VIM que gostaria de ter sabido antes

2013, April 07

O Vim ainda é o meu editor predileto. Tentei substituí-lo várias vezes, e as únicas alternativas que chegaram perto de ameaçá-lo foram Emacs e Sublime Text: o primeiro pela quantidade de recursos, o segundo pela interface joiada. Mas sempre que precisava resolver um problema rapidão, acabava voltando pro good ol ...

Continue reading →

Desenho de Interface do Usuário - para programadores

2013, March 18

Joel Spolsky é um cara batuta e muito inteligente. Ele é uma das figuras por trás do Trello e do StackOverflow (e seus sites irmãos), dois produtos show de bola que têm sido parte da minha vida diária ultimamente. Ele também é bastante conhecido pelos excelentes textos que escreveu no ...

Continue reading →

Por que as estimativas em desenvolvimento de software normalmente estão erradas por um fator de 2-3?

2013, February 26

Aviso 1: Esta é uma tradução livre de uma das melhores histórias sobre estimativas de software já escritas. O original em inglês é uma resposta no Quora à pergunta do título, e essa tradução foi realizada com o consentimento do autor Michael Wolfe. Caso a língua não seja problema, recomendamos ...

Continue reading →

Aventuras apresentando Java EE a mim mesmo

2013, January 15

Cuidado: o texto a seguir contém níveis perigosos de nerdice, acrônimos e javeiragem em geral.

Não sou nenhum fã de Java: a linguagem eu realmente não curto (não tenho culpa de ter conhecido Python e Ruby antes :P), todavia a plataforma tem os seus apelos. Só que eu estava ficando ...

Continue reading →

Fatos e Falácias da Engenharia de Software - notas do livro

2012, December 03

Acabo de terminar a leitura de um livro simplesmente excelente, Facts and Fallacies of Software Engineering (Fatos e Falácias da Engenharia de Software), do programador/pesquisador/escritor Robert L. Glass. Bob Glass não é um acadêmico que fica falando abobrinha sobre como deve ser feito software mas que nunca quer ...

Continue reading →

Sobre construir excelente experiência de usuário - livro EffectiveUI

2012, November 25

Este é o primeiro post na idéia de escrever sobre os livros que leio, na tentativa de fixar melhor o que tô aprendendo. Rezemos pra que não seja o último! :)

O livro é Effective UI: The Art of Building Great User Experience in Software, os autores são os fundadores e ...

Continue reading →

Algoritmos deviam ser ensinados breadth-first, e não depth-first

2012, November 07

Algoritmos deviam ser ensinados breadth-first, e não depth-first!

Note que não me refiro ao aprendizado de programação, mas ao estudo sistemático de algoritmos (envolvendo projeto e análise).

Depth-first é demasiado frustrante, especialmente para quem ...

Continue reading →

Primeiras escolhas importam

2012, October 18

Nossas primeiras experiências influenciam as seguintes muito mais do que a gente percebe.

Algumas coisas você não escolhe: sua língua materna, sua primeira escola, sua primeira professora de matemática. Mas tudo isso vai deixando umas estampas na sua vida inteira, influenciando o jeito que você pensa, sua habilidade de perceber ...

Continue reading →

O que fazer quando o Ubuntu trava

2012, June 30

Um amigo meu costumava dizer que tudo no Linux é com malabarismos no teclado, porque certa vez ele conseguiu rebootar um sistema que estava travado, apertando várias teclas aleatórias ao mesmo tempo ("Alt+Shift+Ctrl+Del+K+Enter", narrava). Tempos depois, ele acabou adotando o Linux Ubuntu no desktop, e ...

Continue reading →

Entre profissionais

2012, June 21

Alguns dias atrás, tive a chance de fazer duas coisas muito importantes pra mim: apresentar uma performance solo no meu estilo de violão instrumental (acústico fingerstyle in your face :D) e subir no palco com músicos profissionais: o estupendo guitarrista Continue reading →

Idéias e execução

2012, March 09

Uma vez ou outra a gente topa com um cara que acha que ter uma idéia é uma coisa tremendamente importante. Execução, isto é para noviços (subentenda-se, gente que só faz o que mandam)! O jeito de ter sucesso é ter uma idéia brilhante, e a sorte de ter tido ...

Continue reading →

Aprendendo Thumbpicking

2011, December 11

UPDATE: atualizei os links pra download dos MP3, porque estouraram os limites do SoundCloud.

Já faz uns 3 anos que comecei a tocar no violão o estilo conhecido como thumbpicking (alguns também chamam de fingerpicking, embora esse termo parece ser mais genérico).

Desde piá eu já tocava um pouco de ...

Continue reading →

A maleta do milhão

2011, October 17

maleta do

Anos atrás, eu estava numa sessão de conversação da escola de inglês (que por sinal, paguei caro e não valeu o retorno), e a professora pediu pra cada pessoa dizer ...

Continue reading →

Vivendo alienado

2011, September 21

Não tem problema!

Se eu não reconheço as referências a livros ou filmes supostamente clássicos ou nunca ouvi a banda que todo mundo conhece, não tem problema. Se não conheço o último meme do Twitter, nunca assisti o seriado da moda, nem uso a última versão do software/gadget que ...

Continue reading →

Tocar vídeo ou música em outra velocidade mantendo o tom

2011, July 28

Alguns meses atrás descobri o Play it slowly, um programa para tocar arquivos de áudio em velocidades ou alturas diferentes, no Linux. Você pode usá-lo para, por exemplo, ouvir uma música no mesmo tom da original mas com um ritmo bem mais lento (útil para aprender as notas de um ...

Continue reading →

Steve Yegge é meu herói!

2011, July 28

Steve Yegge é meu herói!

Já que ele voltou a escrever no blog (dois posts na mesma semana, yay!), obrigo-me a escrever aqui também. A gente acaba criando uma relação afetiva com certos feeds, que quando aparece um post novo o seu dia melhora, nem que seja um pouquinho.

De ...

Continue reading →

Economia vs. Consumo

2011, February 03

Dias atrás estava debatendo com alguns amigos, tentando demonstrar como não era muito intuitivo o jeito que acostumamos a pensar sobre consumo de combustível, para efeito de comparação. Perguntei a eles o que fariam se tivessem dois carros, um sedã que fizesse 10km/L e uma camionete que fizesse 5km ...

Continue reading →