Não estou falando de website técnico em si, nem de gente escrevendo sobre Linux, compiladores, JavaScript, banco de dados, o framework novo da semana ou qualquer outra coisa que cause sofrimento voluntário em quem trabalha com computador. O problema é outro: por algum motivo, uma quantidade absurda de site e blogs pessoais de programadores parece a mesma porcaria.
Troca o nome. Troca a foto. Troca Astro por Hugo, Next.js por Eleventy, azul por roxo. Continua sendo o mesmo site. Isso é um tanto quanto impressionante, porque a proposta de um site pessoal deveria ser justamente a contrária. É pessoal.
o blog genérico
Genérico.
Você provavelmente já viu esse site uma vez na vida. Fundo branco. Uma coluna central com uns 700 pixels. Avatar redondo.
Hi, I'm Evan 👋
Logo abaixo:
Software engineer, tinkerer, lifelong learner.
Depois alguma coisa sobre escrever a respeito de software engineering, productivity, developer tools e occasional side projects. GitHub. LinkedIn. RSS.
Parabéns, você fez postagens sobre conhecimento geral. Quer um prêmio de consolação?
Aí começa:
Latest posts
Sep 12, 2026 · 5 min read
How I organize my side projects in 2026
Tags em pequenas cápsulas arredondadas:
productivity workflow
Chato.
Mais abaixo, Featured projects.
E por fim, para fechar com chave de tosco:
Built with Astro and a little too much coffee.
Pronto. Está feito o blog de programador.
Não é nada feio. Não é nada mal-feito. Não é nada difícil de usar. E esse é justamente o problema. Ele não é nada.
Parece que alguém abriu a documentação de um gerador de site estático, encontrou o projeto de exemplo e passou a morar dentro dele.
O problema nunca foi ser simples. Este blog que você está lendo também é simples pra caralho. O problema é ser simples exatamente do mesmo jeito que todo mundo. Minimalismo não significa eliminar qualquer evidência de que uma pessoa tomou decisões.
Não precisa colocar um dragão WebGL seguindo o cursor. Não precisa tocar música quando a página abre. Não precisa fazer um menu em formato de cubo tridimensional que exige uma RTX 5090 para acessar o /about. Só precisa parecer que alguém esteve ali.
Esse é o Evan Bytecode.
Ele não existe.
Eu fiz essa (e outras (mais ou menos)) página(s) justamente porque seria uma tremenda filha-da-putagem pegar o blog real de alguém aleatório, colocar aqui e escrever abaixo “olha essa merda, que merda”. Então Evan Bytecode vai carregar esse fardo em nome de todos.
Inclusive, ele sempre usa uma foto de braços cruzados, que nem o Julius.
o 'personal branding' que matou o personal
Você está sendo feito de refém neste exato momento?
Existe uma versão ainda mais curiosa desse fenômeno: o site pessoal que consegue não parecer pessoal.
A pessoa compra um domínio com o próprio nome, cria um espaço totalmente sob controle dela e então transforma aquilo numa página institucional de consultoria B2B. Você entra querendo saber quem é o sujeito e recebe:
Building scalable solutions for tomorrow's challenges.
Ou:
Turning ideas into impactful digital experiences.
Ou qualquer combinação possível entre:
building meaningful impactful scalable delightful experiences solutions journey
Chega num ponto em que o site poderia pertencer a um programador, uma agência de marketing, uma empresa de ERP ou um escritório que vende piso vinílico. O personal branding conseguiu uma façanha: tirar o personal do site pessoal.
Tudo passa a existir pensando em recrutador, cliente, SEO, conversão, networking e naquela entidade abstrata chamada “minha presença online”. Aí sobra um currículo com CSS.
a newsletter com zero leitores
Você nem abre a sua caixa de entrada mesmo.
Você entrou no site há onze segundos. Ainda não terminou o primeiro parágrafo, e uma infernal caixa aparece:
Enjoying this? Join 2,000+ developers today!
Não. Eu nem sei ainda se estou “enjoying this”.
Blog pessoal começou a ganhar funil de conversão.
Newsletter não é problema. RSS não é problema. Ter gente acompanhando o que você escreve é obviamente legal. O negócio fica engraçado quando todo site nasce preparado para administrar uma audiência que ainda não existe.
Primeiro post publicado:
Subscribe for weekly insights.
e então, apareceu o vibecode
ChatGPT, faça com que o meu website pessoal espante tudo e todos.
Se o blog genérico clássico sofre por não tentar nada, o site do vibecoder sofre pelo problema exatamente oposto: ele tenta todas as mesmas coisas ao mesmo tempo, consegue ser pior do que todos e conta com um belo toque de lixo de IA.
Fundo quase preto. Gradiente roxo, azul e rosa. Blur até o ponto de você questionar as suas vistas. Glow ao máximo. Glassmorphism. Pill dizendo:
● Available for opportunities
Botão:
Let's talk ↗
Título de 96 pixels:
Building meaningful digital experiences at the intersection of AI, design & code.
Abaixo:
I'm Ghandu Dikshit — a creative technologist, AI engineer, and indie hacker turning ambitious ideas into delightful products that feel like magic.
Parabéns! Você fez um wrapper da API da Claude, seu animal.
Esse tipo de site tem uma característica hilária: visualmente ele tenta parecer extremamente distinto, mas você consegue reconhecer o template mental no mesmo segundo.
É o novo genérico.
Antes todo mundo tinha a mesma página branca ou um blog no Blogspot.
Agora todo mundo tem a mesma página preta com gradiente violeta.
Aliás, não passa credibilidade alguma. Ninguém quer IA reciclando e destruindo código, afinal.
a epidemia da imagem de IA que não diz absolutamente nada
E obviamente tenho que falar das imagens geradas por IA.
Você abre um post chamado:
Understanding PostgreSQL Indexes
...e a capa é:
um robô cromado de olhos azuis segurando um cubo holográfico escrito vagamente DATA.
Não, muito obrigado.
Post sobre segurança:
hacker com máscara do Guy Fawkes e capuz preto mexendo em um notebook, com linhas de código verdes e um cadeado flutuando.
Assustador? Talvez involuntariamente hilário.
Post sobre JavaScript:
um notebook emitindo hologramas amarelos inexplicáveis.
Essa imagem é um dos motivos do porquê eu fui parar na emergência do São Camilo.
A imagem não acrescenta absolutamente nada; muito pelo contrário, só deixa o post ainda mais poluído e desconfortável de se ler.
Não explica o assunto. Não ilustra uma ideia. Não documenta uma coisa que aconteceu.
Ela está ali porque aparentemente um artigo precisa ter uma imagem grande em cima.
Antes pelo menos era uma foto stock de um homem apontando para um monitor. Agora é uma alucinação em 16:9 de um notebook com dezessete teclas Anetre.
E o pior não é nem usar IA. Se a imagem realmente fizer parte da ideia, foda-se, usa essa merda. O problema é aquela imagem que existe exclusivamente para preencher o retângulo reservado para a hero image.
três minutos de conteúdo em oito minutos de leitura
Valeu a perda de tempo?
Aí você finalmente começa a ler.
Primeiro vem uma introdução explicando que tecnologia evolui rapidamente.
Depois uma seção chamada Why this matters.
Depois Understanding the problem.
Depois The solution.
Depois Key takeaways.
Depois Final thoughts.
Depois Wrapping up.
O conteúdo real caberia em seis parágrafos. Mas em algum momento alguém decidiu que todo texto precisava parecer um whitepaper sobre a transformação digital da IBM.
Isso fica especialmente bonito quando o topo avisa:
8 min read
O tempo de leitura virou quase uma classificação indicativa. Hoje parece que entrar num artigo sem saber antecipadamente quantos minutos da sua vida serão confiscados é uma atividade de alto risco.
Melhor ainda quando o artigo tem um Table of contents:
- Introduction
- The problem
- The solution
- Conclusion
e a página inteira tem 900 palavras... para resolver um simples problema de sintaxe.
documentação, mas com uma introdução idiota
...e quer mais? Você vai descobrir dez minutos depois que o script só vai funcionar no macOS.
O clássico do genérico é o:
How I built X with Y
Às vezes é genuinamente interessante. A pessoa tomou decisões, encontrou problemas, errou, mediu coisas e tem alguma experiência para contar.
Ótimo.
Em outras vezes é literalmente a documentação oficial reescrita com uma introdução.
Last Sunday, while sipping coffee, I decided to experiment with Redis.
Não.
Você executou:
npm install redis
Não precisamos estabelecer cenário, clima, temperatura e estado emocional do café.
Isso sem contar que, muitas das vezes, o cara só criou um problema imaginário na cabeça e procurou uma solução ou alternativa para algo que já estava funcionando perfeitamente.
Eu? Só queria saber como configurar o negócio.
“AI summary”
Obrigado, eu nem queria ler mesmo.
Sim, isso existe, e eu realmente não entendo o porquê.
A pessoa escreve duas mil palavras.
Publica.
Aí coloca no início:
✨ AI summary
...e oferece uma versão em cinco bullets para que ninguém precise ler aquilo que ela acabou de escrever.
É como abrir um restaurante e colocar na entrada:
caso não queira comer, consuma esse Soylent delicioso na promoção!
Se o resumo substitui perfeitamente o texto, talvez o problema esteja em outro lugar.
a parte de “uses”
Super-pacote de programas no apt; disponível quando seu plano de internet móvel acumular gigabytes o suficiente!
Eu gosto particularmente da página “uses”.
Ela começa inocente.
editor: Visual Studio Code
terminal: KDE Terminal
Fonte: JetBrains Mono
Daí cinco minutos depois você sabe qual cadeira o sujeito usa, o modelo do monitor, o teclado, switch, mouse, webcam, microfone, fone, configuração completa do PC e notebook, mochila, celular, relógio, caderno e possivelmente a voltagem da lâmpada do quarto e a conta de consumo da Enel.
O blog pessoal vira inventário patrimonial.
E, por algum motivo, isso convive perfeitamente com sete posts explicando como simplificar a vida e reduzir distrações.
e mais produtividade
Você já agradeceu ao winget por ele existir, ou você nem lembra da existência dele que nem os outros 95% dos usuários do Windows 11?
A seção de produtividade merece carinho especial.
É um gênero inteiro de programador passando cinco horas automatizando uma tarefa que levava quatro minutos por mês.
O post explica como ele finalmente “otimizou seu workflow”.
- Neovim;
- tmux;
- dotfiles;
- aliases;
- scripts;
- launcher;
- tiling window manager;
- ferramente de gerenciamento automático de mirrors no
apt; - um teclado que possui três teclas e exige memorizar quinze camadas.
No final, ele agora consegue abrir o Git 0,7 segundo mais rápido.
Produtividade!
um site estático que precisa hidratar
Tranqueira demais não significa que automaticamente seu site/blog vai ficar melhor ou mais intuitivo.
Também existe algo poeticamente bonito em abrir um blog sobre performance e esperar mais de dez megabytes de JavaScript terminarem de carregar.
Por favor.
É texto.
Texto e algumas imagens.
Mesmo assim, em algum lugar da página existem:
- hidratação;
- analytics;
- framework;
- runtime;
- animação;
- biblioteca de componentes;
- sistema de temas;
- componente de tooltip;
- pacote para calcular o tempo de leitura;
- pacote para desenhar o botão que copia
npm install; - provavelmente React gerenciando algum texto que jamais vai mudar.
Mas pelo menos o Lighthouse deu 98.
o código também precisa de um condomínio
Cada detalhe importa, disse alguém.
Às vezes o snippet tem:
console.log("hello");
Mas ele está dentro de um componente completo.
- Header com três bolinhas imitando macOS.
- Nome do arquivo.
- Badge
JavaScript. - Número das linhas.
- Syntax highlighting com oito cores.
- Botão
Copy. - Botão
Expand. - Talvez um botão para abrir no GitHub.
a poluição precisa aparecer em mais algum lugar
Selo Porcaria™ de falta de qualidade!
O blog também precisa informar, de preferência no rodapé:
Built with Astro, Tailwind CSS, CodeIgniter, CakePHP, AWS, MDX, Vue.js, Bootstrap, React, Next.js, GWT, Backbone.js, Laravel, Redis, Bun, Vite and ❤️.
Ou, pior ainda, cem badges animados, cada um falando sobre:
- open-source;
- Apache;
- Firefox;
- “feito com Microsoft BackOffice para Windows 2000”;
- GNU;
- algo relacionado à Valve;
- “uma programadora queer transsexual escreveu esse site, aliás”;
- NeoCities;
- Linux;
- Nintendo Wii;
- ThinkPad;
- XBMC;
- anime;
- Santos rebaixado;
- ...e mais uma caralhada de porcaria que absolutamente ninguém liga.
Por favor. É um site pessoal. Não um museu de poluição visual.
Em algum momento, exibir stack ou badge virou equivalente digital de deixar o capô do carro aberto no estacionamento.
Eu também fiz meu próprio backend para este blog (e praticamente quase todos os meus websites), então não tenho sequer autoridade moral para reclamar disso.
Mas pelo menos tenho a decência de reconhecer o problema.
e, naturalmente, “Built with ❤️”
Absolutamente, NUNCA pode falar.
E pra fechar com chave de merda, não poderia faltar o grande:
Built with ❤️
Made with ☕
Fueled by coffee
Crafted with care
Programadores aparentemente são incapazes de montar HTML sem declarar qual substância ou órgão humano foi utilizado durante o processo.
Esse post todo foi digitado a base de Monster branco, aliás.
isso não significa que nenhuma dessas coisas presta
Esse texto seria muito mais fácil se eu simplesmente dissesse que Astro é ruim, React é ruim, dark mode é ruim, minimalismo é ruim, botar etiqueta da Cloudflare no rodapé é ruim, Tailwind matou a internet e todo mundo deveria voltar a escrever HTML 4.01 no Bloco de Notas do Windows XP.
Mas não é apenas esse o ponto.
Obviamente algumas das coisas citadas são puro chorume.
Mas obviamente eu gosto de outras dessas coisas que eu critiquei.
Este próprio blog tem dark mode na verdade ele praticamente só tem dark mode.
Tem RSS.
Tem Markdown.
Tem syntax highlighting.
Tem backend desnecessariamente elaborado para uma coisa que três pessoas e quarenta crawlers provavelmente vão abrir.
O problema não é usar essas coisas.
O problema é quando todas as decisões já chegam tomadas antes de existir qualquer personalidade.
Você não escolheu aquele layout porque ele fazia sentido para o seu site.
Escolheu porque site de programador se parece assim.
Você não colocou a hero image porque tinha uma imagem para mostrar.
Colocou porque artigo tem hero image.
Não colocou 8 min read porque seus leitores exigiam planejamento temporal rigoroso.
Colocou porque blog tem 8 min read.
Não criou uma newsletter porque havia gente pedindo para receber seus textos.
Criou porque blog tem newsletter.
E no fim todo mundo tenta construir uma “marca pessoal” seguindo exatamente a mesma lista de decisões.
pessoal deveria parecer pessoal
Essa talvez seja a única coisa que eu realmente queria dizer com esse texto inteiro.
Um blog pessoal deveria parecer pessoal.
Parece óbvio.
Aparentemente não é.
Não precisa ganhar prêmio de design.
Não precisa reinventar navegação.
Não precisa usar uma tecnologia obscura.
Não precisa ter personalidade forçada, piada em cada botão ou uma animação que faça o navegador pedir socorro.
Pode ser estranho.
Pode ser extremamente simples.
Só precisa parecer que alguém esteve ali.
Que alguma decisão foi tomada porque o dono daquele canto da internet gostou daquilo, achou engraçado, achou confortável, achou bonito ou simplesmente acordou num domingo e decidiu fazer daquele jeito.
Esse blog existe por isso.
Eu queria um lugar meu para colocar minhas merdas.
E quando fui pensar em como ele deveria ser, percebi que a última coisa que eu queria era construir exatamente o mesmo blog que eu já tinha visto cem vezes.
Então fiz isso.
Talvez daqui a dois anos eu abra essa página e ache tudo horrível.
Ótimo.
Eu tentei.
Enfim.
Agora existe mais um.
