setup #13

Quem é você e o que faz?

Meu nome é Fábio Miranda Costa, nasci em Natal em Setembro de 1986 onde morei a maior parte da minha vida, e atualmente moro em Mountain View com minha esposa.

Me formei em Engenharia de Computação na Universidade Federal do Rio Grande do Norte em 2008.

Eu comecei a programar para web usando PHP em 2006, mas o que gostava mesmo era de montar layouts dos sites usando CSS, eu realmente me apaixonei por isso. Com isso, acabei virando meio que um programador mais voltado para HTML + CSS. Naquela época as bibliotecas Javascript começavam a mostrar que programar em Javascript era viável, já que elas resolviam as diferenças entre os browsers para o desenvolvedor.

Nesse começo fiquei testando bibliotecas nos projetos que trabalhava. Testei principalmente as bibliotecas Mootools e jQuery que eram as bibliotecas com funcionalidades mais legais e o tamanho do código não era tão grande. No final acabei decidindo em usar o Mootools para todos os projetos, depois de comparar qualidade de código entre as duas bibliotecas, qualidade das animações (as animações usando Mootools eram notavelmente superiores) e quantidade de funcionalidades (Mootools tinha Classes, era modular, tinha plugins oficiais, dentre outras coisas).

Após um certo tempo usando Mootools e conversando com os desenvolvedores do projeto, fui tentando contribuir. No começo ficava comentando nos tickets (issues), verificava se o problema descrito no ticket já havia sido resolvido ou pedia para que o criador to ticket fornecesse mais detalhes. Depois foi natural tentar contribuir com código e enviei um patch que foi aceito. Depois de um tempo comecei a contribuir com código com freqüência e fiquei encarregado de desenvolver e manter a nova engine de seleção (tipo o que o Sizzle é para o jQuery), junto com o Thomas Aylott e acabei virando core developer do Mootools.

Nesse tempo tinha minha própria empresa de desenvolvimento de sistemas web com o Vinícius Mendes. A gente sempre tentou transformar partes dos nossos projetos em pequenos projetos de código aberto e um deles foi o meiomask, que acabou sendo usado pela Globo.com e me rendeu um convite para fazer entrevista. Aceitei o convite e passei na entrevista, em 2010. Depois de um tempo o Vinícius também foi trabalhar lá e a nossa querida empresa teve que ser fechada :’(.

Na Globo.com trabalhei nos projetos globo.com e famosos.globo.com. Foi muito bom trabalhar numa empresa que sempre tive como referência e que sempre tinha coisa nova para aprender.

Depois fui trabalhar na Yipit em Nova Iorque em 2012, juntamente com o Gabriel Falcão e o Lincoln Clarete. Foi muito legal ter a experiência de trabalhar fora do Brasil e numa startup, onde cada pessoa pode fazer uma grande diferença para o futuro da empresa. Hoje quem está por lá é o Hugo Tavares.

Enquanto trabalhava na Yipit recebi um convite para fazer entrevista no Facebook, onde o recrutador destacou o fato de eu ser desenvolvedor do Mootools. É interessante como as coisas foram lentamente se conectando. Aceitei o convite e passei na entrevista, em 2013.

Hoje sou Front-end no Facebook há pouco mais de 1 ano. Comecei trabalhando no Internet.org que é um projeto que visa trazer internet de graça para países em desenvolvimento, muito legal e humano o projeto. No site tem mais detalhes. Também trabalhei no Lookback, marketing site do messenger 3.0, no blog do Paper e mais recentemente na página de trending da copa do mundo. Acho que desses, o Lookback foi o que teve maior impacto, as pessoas geraram mais de 350 milhões de compartilhamentos de seus vídeos, e pelas conversas que tive com algumas pessoas, foi perceptível que foi uma experiência positiva.

Qual hardware você usa?

Quando começamos nossa empresa eu já tinha um MacBook branco, achava o máximo. Antes usava principalmente Windows mas também usava Linux para fazer trabalhos da universidade. O Mac surgiu depois que vi muita gente falando bem nos blogs de tecnologia, e realmente é muito bom, não tem gerenciador de pacotes por padrão mas o homebrew quebra o galho, tem um terminal com funcionalidades similares ao do GNU/Linux (a base é BSD mas dá para instalar facilmente as ferramentas do GNU Coreutils usando homebrew), a qualidade do hardware eh muito boa e tem ferramentas de design como Photoshop que não tem no Linux.

Hoje em dia tenho um MacBookAir de 13” core i7 com 8GB de RAM e ele atende muito bem as minhas necessidades de Front-end, consigo ficar com Photoshop, meu editor, meu navegador e outros aplicativos abertos sem problema. A única coisa que gostaria que ele tivesse é retina display, mas pela leveza dele eu acho que vale mais a pena do que ter um MacBookPro, já que estou sempre transportando ele para o trabalho e de volta para casa.

No trabalho uso um monitor Thunderbolt, Magic Trackpad, Teclado Apple wireless e muitas vezes uso um headphone da Bose para diminuir as distrações do ambiente de trabalho.

Em casa não tenho nada muito especial, uso o mesmo notebook do trabalho e, quando trabalho em casa, fico ou na cama, ou no sofá ou às vezes na mesa de jantar.

Tenho um iPhone 5 de 16GB do trabalho onde leio noticias de tecnologia quando estou indo e voltando do trabalho e falo com meus amigos e família no Brasil.

Qual software você usa?

Uso o Chrome como navegador, desde que comecei a ficar puto com o tempo que o Firefox levava para abrir. Um plugin interessante que uso é o PerfectPixel, que me ajuda a fazer os últimos ajustes de CSS no projeto e deixá-lo pixel perfect. Ao final do projeto também testo o projeto no Firefox e IE8+. Dificilmente testo nos outros navegadores a não ser que esteja usando uma API muito recente.

Como editor de código uso o VIM. Meu .vimrc (arquivo de configuração do vim) está no github dentro do repositório que mantenho todos os meus outros arquivos de configuração. Nesse arquivo é possível ver que uso o NeoBundle para gerenciar meus plugins, ack-vim que facilita o uso do ack dentro do VIM, vim-accordion que ajusta meus splits (arquivos abertos e visíveis) para a quantidade que eu definir. Ajusto para 2 arquivos quando estou no notebook e 4 quando quando uso o monitor externo. syntastic usa as ferramentas mais comuns de analise estática de código para cada linguagem (jshint para javascript, flake8 para python, por exemplo) para mostrar erros e avisos sobre o código.

Setup do Fábio Miranda no Facebook
Setup do Fábio Miranda no Facebook

Como no trabalho nós editamos o código num servidor remoto, além de usar VIM também uso o tmux, que me ajuda a manter a minha sessão de terminal sempre aberta para eu não ter que ficar re-abrindo meus arquivos todos os dias de manhã haha. O tmux também tem outras funções legais: eu posso dividir a tela em vários painéis, posso ter várias abas, navegar sem usar o mouse, dentre outras.

Como a maioria dos Front-end, o que tenho mais fluência é em Javascript, CSS e HTML, mas também usei muito Python/Django (na minha empresa, na Globo.com e na Yipit), fiz alguns pequenos scripts em Ruby e uso bastante Hack no trabalho, que é um PHP bombado que o Facebook criou. Quando programo em Javascript normalmente uso React+Flux. Para versionamento de código normalmente uso Git para projetos de código aberto e uso o Mercurial no trabalho. Eles são muito similares, para tudo que faço no Git tem uma forma similar de fazer no Mercurial.

Para textos soltos e lembretes uso o Notes do OS X, que é um editor bem simples e sincroniza com o celular. Para fazer palestras eu gosto do reveal.js, por ser fácil de incluir exemplos interativos e/ou qualquer outra coisa, por exemplo, quando palestrei na PythonBrazil9 inclui alguns exemplos em Python que eu conseguia rodar no navegador usando um interpretador Python compilado para Javascript.

O que te motiva a fazer o que faz?

Meus objetivos mudaram com o passar do tempo, isso deve acontecer com a maioria das pessoas.

Inicialmente sempre pensei em abrir minha empresa e ficar em Natal com minha família. Foi o que fiz até que fui convidado para ser entrevistado na Globo.com. Depois que estava na Globo.com percebi que muitos colegas que saiam iam trabalhar fora do Brasil, coisa que eu nunca tinha imaginado como possibilidade, mas que agora parecia possível. Quando surgiu a oportunidade de entrevista para a Yipit eu encarei, mesmo estando inseguro no inglês. Quando estava na Yipit surgiu a oportunidade de ir para o Facebook, encarei o desafio também, mesmo sabendo da dificuldade da entrevista, mas eu não tinha nada a perder. Esses desafios são muito motivadores, te fazem estudar, pensar e crescer. Nunca diga não a um desafio, mesmo que não tenha dado certo anteriormente. Não tenha medo de falhar.

Um hobby?

Uma das poucas coisas que gosto que não envolve programação é cozinhar.

Isso veio um pouco pela necessidade de quando passei a morar sozinho, e também meus pais e tios sempre gostaram muito de cozinhar.

Hoje em dia tento pelo menos umas duas vezes por mês cozinhar algo especial em casa com minha esposa. Eu consigo relaxar e é um bom motivo para chamar os amigos e tomar um bom vinho no fim de semana.