Portfólio
Coisas que eu lancei, e os posts que provam
Quase tudo que eu crio começa com alguma coisa me irritando. Aí eu resolvo, coloco o código no GitHub e escrevo um post sobre isso, então quase tudo aqui vem com comprovante: um site no ar, um repositório ou um post neste blog. Os trabalhos do dia a dia também estão aqui, sem as coisas internas que eu não posso compartilhar.
- anos fazendo coisas para a web, desde 2007
- 19
- projetos nesta página
- 21
- posts no blog, cada um em inglês e em português
- 104
Quase nunca uma coisa só por vez
Quase sempre tinha um emprego, um negócio e um projeto pessoal rodando ao mesmo tempo. Em alguns anos, também uma viagem para a E3.
Role para o lado para ver tudo.
Empregos
Meu próprio negócio
Projetos pessoais
Escrita e imprensa de games
Os principais

O que me irritou: Pagar mensalidade para registrar um agachamento.
Musclog
2024 até hojeUm app de treino e nutrição offline-first. Sem servidor, sem conta, sem assinatura. É o meu principal produto open source, no Google Play e na web a partir do mesmo código.
- React Native e Expo Router, com WatermelonDB em cima de SQLite no Android e LokiJS na web.
- Bases de alimentos de verdade (USDA e Open Food Facts), leitor de código de barras e OCR de tabela nutricional.
- Peso, gordura corporal e nutrição criptografados no aparelho, com uma chave que nunca sai dele.
- Portado para um cartucho de Game Boy Color de verdade, em C com GBDK-2020: sem float, sem malloc, 517 alimentos empacotados em bancos de ROM.
- Conta repetições de barra com um sensor Bluetooth de €20 e um random forest exportado para JavaScript puro, publicado como trabalho em andamento.
- React Native
- Expo
- TypeScript
- WatermelonDB
- SQLite
- C
No blog:

O que me irritou: Blog é muito clique e muita leitura.
pablo.gg, the game
2021Uma versão RPG top-down deste blog. Começou como um easter egg do Konami Code e virou um template de Phaser e React com uma caixa de diálogo desenhada por cima do canvas.
- Phaser 3
- React
- grid-engine
- Tiled
No blog:

O que me irritou: Adaptar o currículo para cada vaga.
Resume Builder
2018 até hojeMonta um currículo a partir de uma planilha ou de um formulário gerado a partir do schema do JSON Resume. Um recrutador achou o repositório, perguntou se eu sabia React, e foi assim que eu vim parar na Holanda.
- O formulário é gerado recursivamente a partir do JSON Schema, então mudar o schema não exige mudar o código.
- Os links de download são data URIs em base64, então exportar não precisa de servidor.
- Ainda é a ferramenta que eu uso para o meu próprio currículo, anos depois.
- React
- Gatsby
- Formik
- JSON Schema
- Material UI
No blog:

O que me irritou: Não saber nada sobre fazer jogos.
Super Ollie vs Pebble Corp
2020 até 2021Um jogo de plataforma de skate em Phaser 3 onde o vilão é uma empresa tentando proibir o skate. Não está terminado, mas cada passo está documentado em 23 devlogs públicos.
- As regras do jogo ficam nas propriedades dos tiles e objetos do Tiled, e colisores, gatilhos e caminhos da IA são gerados a partir delas em tempo de execução.
- Reescrevi a IA dos inimigos, trocando checagens de tile a cada frame por colisores calculados uma vez só, porque a primeira versão não escalava.
- Criei minhas próprias ferramentas de build: geração de sprite atlas, extrusão de tileset e um transform de Webpack que embute os tilesets do Tiled.
- Escadas, barras para se pendurar, plataformas móveis, checkpoints, clima, traduções e uma versão para celular com controles na tela.
- Phaser 3
- JavaScript
- Tiled
- Webpack
- Cordova
No blog:

O que me irritou: Achar um lugar para alugar em Amsterdam.
Home Finder
2022 até 2023Alertas gratuitos de aluguel para sete sites imobiliários holandeses, criado porque pagar por alertas no meio de uma crise de moradia me deixou puto.
- O GitHub Actions faz o scraping a cada hora, um Google Form faz o cadastro e uma planilha do Google é o banco de dados.
- A infraestrutura custa €0, de propósito: o plano gratuito era a arquitetura.
- Começou como
funda-scraper, o meu script de Puppeteer e Telegram da época em que eu procurava casa.
- Node.js
- Puppeteer
- GitHub Actions
- Google Sheets
- Gatsby
No blog:
Todo o resto
- Apps2008 até hoje
pablo.gg
Este blog, que custa $0 de hospedagem. Os comentários vêm de um Google Form, a busca roda offline no navegador, todo post também é um arquivo JSON estático e o Medium importa o código como gists.
- Next.js
- React
- Tailwind CSS
- GitHub Actions
- GitHub Pages
- E-commerce2025
GameShop
Uma extensão de Magento 2 que transforma a minha loja numa lojinha de RPG retrô, com vendedor e menus, em cima de endpoints REST próprios.
- Magento 2
- PHP
- Vue.js
- Tailwind CSS
- E-commerce2024
Magento short description autofill
Um clique no admin do Magento e a IA escreve a descrição do produto, com OpenAI ou Gemini e um system prompt configurável.
- Magento 2
- PHP
- OpenAI
- Gemini
- Ferramentas e automação2024
manga-converter
Espelha páginas de mangá para ler da esquerda para a direita. O easyOCR acha o texto, PIL e NumPy recortam, espelham a página e colocam o texto de volta.
- Python
- easyOCR
- PIL
- NumPy
- Ferramentas e automação2024
Side-project hours tracker
Um script de Node.js que estima quantas horas eu gastei num projeto pessoal a partir do histórico do git. Me arrependi de rodar.
- Node.js
- simple-git
- Ferramentas e automação2023
Instagram Reels on autopilot
Scripts de Node.js que postam Reels pela Graph API, geram as thumbnails e fazem o GPT escrever tutoriais de programação em JSON com function calling.
- Node.js
- OpenAI
- ffmpeg
- Instagram Graph API
- Ferramentas e automação2023
google-fit-telegram
Puxa 30 dias de peso, gordura corporal e nutrição da Google Fitness API, calcula o meu TDEE real e manda no Telegram todo dia. Roda num cron do GitHub Actions, sem servidor.
- Node.js
- Google Fitness API
- Telegram Bot API
- GitHub Actions
- Ferramentas e automação2021
code-video-creator
Transforma trechos de código em vídeos que se digitam sozinhos, gravando uma página React no Puppeteer em 1920x1080.
- Node.js
- Puppeteer
- React
- Prism
- Jogos2021
Space Train Trader
Meu jogo na GMTK Game Jam 2021, feito em equipe em 48 horas. Comércio. No espaço. Num trem!
- Game jam
- JavaScript
- Ferramentas e automação2020
Gatsby starters and JAMStack tools
Starters tirados do antigo build em Gatsby deste blog, mais um encurtador de URL sem backend.
- Gatsby
- React
- Material UI
- Apps2017
Contract Builder
Feito para uma amiga advogada que levava uma hora por contrato. Agora ela leva menos de cinco minutos.
- Vue.js
- JavaScript
- E-commerce2017
Magento Chatbot
Conecta uma loja Magento a apps de chat para as pessoas navegarem e comprarem pelo chat, com o wit.ai entendendo o que o cliente quis dizer. Meu repositório mais popular por anos.
- PHP
- Magento
- wit.ai
- Chatbots
- E-commerce2016
Shop Botifier
Ganhou a VanHackathon 2016 com o time WeRules: um bot de Telegram que cria um bot de loja Shopify dedicado para cada lojista, sob demanda.
- Python
- Telegram Bot API
- Shopify API
Onde eu trabalhei
Zenkai Zone
janeiro de 2025 até hojeFundador, e todo o resto · Holanda
Minha loja de colecionáveis e jogos retrô, aberta em janeiro de 2025. Mesma coisa da primeira vez: uma pessoa só, então código, produtos, fotos e embalagem são tudo comigo.
- Roda em Magento 2, com extensões minhas por cima, como a página de lojinha de RPG retrô.
- Escrevi sobre como funciona a precificação no mundo dos colecionáveis, do lado de quem vende.
Fingerboard Supply
janeiro de 2025 até hojeFundador, e todo o resto · Holanda
Uma loja de fingerboard, aberta em janeiro de 2025. É a ideia da FingerStore de novo, só que agora da Europa e com quinze anos a mais sabendo o que estou fazendo.
Studocu
maio de 2018 até hojeDesenvolvedor full-stack · Amsterdam, Holanda
Uma plataforma de estudos usada por estudantes do mundo todo. Eu entrei como o 5º desenvolvedor e fiquei enquanto o time de engenharia crescia muito.
- Minha primeira tarefa foi migrar o frontend de CoffeeScript para JSX. Depois veio TypeScript e React 18, e eu era quem topava mexer na config do Webpack.
- Migrei páginas do monolito em Laravel para Next.js uma por uma, com releases graduais por cookie e um caminho de volta para o Laravel se algo quebrasse.
- Fiz o Laravel e o Next.js lerem e escreverem os mesmos cookies de sessão criptografados, reimplementando o formato AES-256-CBC e HMAC do Laravel com a Web Crypto API.
- No plantão de engenharia desde 2022, e migrei o monitoramento de erros do Bugsnag para o Sentry nos dois apps, atrás de uma feature flag.
- Fui dono de testes A/B de ponta a ponta: implementar, ler os resultados, decidir e apagar a variante perdedora.
- Liderei a guilda de frontend a partir de 2021 e fiz entrevistas técnicas que ajudaram a contratar umas 10 pessoas.
- React
- Next.js
- TypeScript
- Laravel
- PHP
- Kubernetes
- Sentry
Muxi
2016 até abril de 2018Desenvolvedor de software · Brasil
Software para maquininhas de cartão, numa linguagem parecida com JavaScript rodando num runtime nativo em C. A maior parte para a Cielo, o maior cliente da empresa.
- Entreguei duas homologações da Cielo, sentado com o time de QA deles em São Paulo, e lancei com rollout gradual para uma frota de até 8 milhões de maquininhas.
- Tech lead no redesign Look and Feel da Cielo, responsável pela UI inteira.
- Criei o ISO-8583-Breaker, que virou a ferramenta oficial de debug da empresa, e uma ferramenta que gera as fontes bitmap das maquininhas a partir de um arquivo de fonte.
- Levei pagamentos em Bitcoin nas maquininhas de uma prova de conceito mostrada em Las Vegas até virar produto, e virei o product owner dele.
- JavaScript
- C
- ISO 8583
- React Native
FingerStore & NanoBoards
outubro de 2010 até 2020Fundador, e todo o resto · Brasil
Os fingerboarders brasileiros não tinham loja nenhuma, então eu criei uma. Durou uma década e eu fiz tudo sozinho: código, importação, fotos, embalagem, atendimento e a comunidade.
- Lancei o primeiro e-commerce de fingerboard do Brasil em Magento 1.4, uns três meses entre a ideia e a loja no ar.
- Criei a NanoBoards em 2012, minha própria marca, com gráficos licenciados de grandes marcas de skate brasileiras, e exportei para os EUA e a Europa.
- Tema e módulos próprios de Magento, multi-loja, um configurador de monte-seu-setup e um upgrade de versão por ano durante cinco anos.
- Aceitei Bitcoin a partir de 2014, muito antes disso ser normal para uma loja pequena.
- Magento
- PHP
- PagSeguro
- Mercado Pago
Freelancer
2010 até 2015Desenvolvedor web · Brasil
Sites de outras pessoas, ao mesmo tempo que a minha loja. Principalmente WordPress.
- Temas e plugins de WordPress sob medida, incluindo trabalhos com WooCommerce.
- Integrações com a API da Shopify para clientes.
- WordPress
- WooCommerce
- PHP
- Shopify API
Primeiros empregos
2007 até 2010Estagiário, depois desenvolvedor web · Brasil
Duas semanas limpando dados de um restaurante no Dreamweaver em 2007, depois meu primeiro emprego de programação de verdade, em C# e .NET, e depois uns meses de sites de hotel numa agência de WordPress.
- Fiz um site de imobiliária com uma área administrativa para cadastrar imóveis.
- Fiz um diretório de taxistas da cidade com uma página de perfil para cada um, feito para aparecer no Google. Apareceu.
- C#
- .NET
- WordPress
- PHP
Prêmios, artigos e crachás de imprensa
- 2024
Compartilhando cookies criptografados do Laravel com Next.js
Artigo no blog Studocu Tech sobre fazer os dois apps compartilharem a mesma sessão.
- 2022
Hackathon da Studocu, 1º lugar
Um chatbot com GPT-3 dentro do visualizador de documentos, que respondia perguntas sobre o documento que você estava lendo, antes do ChatGPT existir.
- 2021
Hackathon da Studocu, 3º lugar
Terceiro lugar no hackathon da empresa, que eu participei quase todo ano.
- 2016
Vencedor da VanHackathon
Ganhei com o time WeRules e o Shop Botifier, uma fábrica de bots de Telegram para lojas Shopify.
- 2012
Imprensa de games, como "Pablo Pirata"
Cobri a E3 em Los Angeles para sites brasileiros e planejei a viagem do time, depois Gamescom e Summer Game Fest 2023. Sem receber, além do trabalho fixo.
Tem alguma coisa irritante que precisa ser resolvida?
Me conta. O formulário de contato vai direto para o meu e-mail, e o código da maior parte do que está aí em cima está no GitHub.