Bernardo

31 Voos
Bernardo

Bernardo

@bernardo

Fundador do VOANTE — rede social brasileira independente, sem algoritmo de relevância, sem big tech estrangeira, infraestrutura 100% nacional. Engenheiro de software, sistemas distribuídos e soberania digital.

São Paulo, SPvoante.com/sobreIngressou em maio de 2020
VOANTE é uma rede social brasileira, sem algoritmos, feita por brasileiros para os brasileiros e sustentada com dinheiro privado nacional. Não adianta se dizer brasileiro se passa o maior tempo na Flórida e só vem coletar o Quinto. Aqui vivemos. #SoberaniaDigital
Trabalhando incansavelmente para colocar os aplicativos iOS e Android ainda esta semana. (contando com o "final de semana" rs). Eles já estão prontos, agora estamos aparando pequenos bugs.
Toda a infraestrutura crítica do VOANTE roda em servidor próprio no Brasil. Banco de dados, armazenamento de mídia, fila de mensagens, busca, e-mail transacional — tudo self-hosted, em São Paulo, em hardware que eu administro. Uso Cloudflare como CDN/tunnel pra terminar TLS na b…
No VOANTE a timeline mostra os Voos das pessoas que você segue, na ordem em que foram publicados. Mais novo no topo, mais antigo embaixo. Sem "para você", sem "sugeridos", sem "trends que talvez te interessem". Quem você segue determina seu feed — não um modelo de engajamento ot…
Quinze anos atrás eu adorava o Twitter. Texto curto, ordem cronológica, todo mundo na mesma timeline. Quando você seguia alguém interessante, via o que essa pessoa achava — não o que um algoritmo achava que você ia clicar. Em algum momento entre 2015 e 2020 isso mudou. As Big Te…
Comecei o VOANTE depois de me perguntar uma coisa simples: por que toda conversa pública relevante no Brasil hoje passa por uma rede social estrangeira, com regras opacas, algoritmo que decide o que vejo, e dados em servidor sob jurisdição de outro país? A resposta não é falta d…
LGPD não é uma tela de cookies pedindo "aceite" — não no VOANTE. Aqui o consentimento granular fica gravado em consent_logs com timestamp, IP, user-agent e versão exata do documento aceito. Cada usuário pode exportar tudo que coletamos via /privacy/export, em JSON estruturado e c…
Escolhi Rust pro backend depois de pesar muito tempo. Não foi pelo hype. Os argumentos práticos: zero runtime overhead, memory safety sem garbage collector, ecossistema async maduro (Tokio), checks de SQL em compile-time via SQLx, e binários de 20MB que iniciam em 100ms. Pra pla…
Moderação no VOANTE não é baseada em opinião. É baseada em ação. Você pode discordar de qualquer governo, partido, religião, ou ideologia, e isso não vai dar problema — desde que esteja criticando ideias e não assediando pessoas identificáveis. O que cruza a linha: ameaça direta…
"VOANTE" vem do verbo voar. Não é só estética — é uma escolha conceitual. Cada publicação se chama um Voo. Compartilhar é Revoo. A timeline cronológica é o céu por onde os Voos passam. As pessoas em destaque estão "Em Altitude", não em "Trending". A nomenclatura importa porque…
Decidi começar o VOANTE como beta fechado por convite. Cinco convites por usuário, sem fila, sem hype. A razão: comunidade pequena e curada nos primeiros meses gera padrão de comportamento. Quando o site abrir, esse padrão vira a cultura — pra melhor ou pra pior. Redes sociais q…
Conversa de hoje com um colega que trabalhou anos no Twitter: "vocês sabiam que o algoritmo de relevância foi feito porque a CPU não dava conta de fazer fan-out cronológico em escala?" Quero acreditar nessa versão da história. Faz sentido — fan-out cronológico pra 700M de usuári…
O custo cognitivo de runtime errors em Python que viraram compile errors em Rust não é falar de bug count — é falar de carga mental. Em Python, escrever uma função me forçava a perguntar mentalmente: "isso pode receber None? isso pode receber lista vazia? isso pode quebrar se a…
Sobre o PIX como inspiração: o Banco Central brasileiro construiu uma infraestrutura de pagamento que funciona 24/7, instantâneo, gratuito pra pessoa física, e roda no SPB (Sistema de Pagamentos Brasileiro) sob jurisdição inteiramente nacional. Em 4 anos virou padrão de fato. Ou…
Por que Meilisearch e não Elasticsearch? Três razões: 1. Setup em 5 minutos vs Elasticsearch em 2 horas 2. Single binary, sem JVM, footprint de ~80 MB de RAM 3. Fuzzy search e typo-tolerance built-in, perfeitos pra search em pt-BR onde acentuação some Elasticsearch é o produto…
Sobre interfaces minimalistas: tem uma armadilha. Você simplifica tanto que esconde funcionalidade legítima. Vira "minimalismo afetado" — bonito de captura de tela, ruim de usar diariamente. A linha pra mim é: cada elemento visível deve ter razão pra estar lá, mas não esconda na…
Hoje tive a primeira conversa com um usuário real que entrou pelo convite. Cinco minutos depois de ele criar a conta, mandou mensagem: "achei a interface mais limpa que esperava". É a frase mais bonita que recebi até agora. Não porque é elogio, mas porque ele esperava algo pior…
Sobre ActivityPub e federação: pensei muito em implementar federação no VOANTE pra interoperar com Mastodon, Bluesky e similares. Decidi não, pelo menos por enquanto. Razão técnica: federação adiciona uma superfície de ataque enorme (instances maliciosas, conteúdo importado sem…
Tinha esquecido como é debugar problema de produção que não reproduz em dev. WebSocket do mobile desconectando 30 segundos depois de conectar, mas só pra alguns usuários, e nunca conseguia reproduzir em casa. Acabei descobrindo: era Cloudflare matando conexões WS que não tinham…
Lendo a documentação do Pingora hoje (proxy reverso que o Cloudflare lançou open-source em Rust). Tentadora migração do nginx, mas vou esperar. Nginx funciona, tem 25 anos de produção, configuration battle-tested. Pingora promete melhor performance e API mais limpa, mas é jovem…
Decisão importante: VOANTE não vai ter IA gerando conteúdo no feed principal. Nem "posts sugeridos pela IA", nem "summarize this thread", nem "completar seu post automaticamente". A IA local que usamos é pra serviços operacionais: detectar spam, gerar alt-text de imagem pra aces…
Quando começou o burburinho sobre AI Overviews substituir resultados de pesquisa do Google, pensei: como isso afeta sites pequenos? Resposta dura: muito. Sites que vivem de tráfego orgânico de pesquisa estão sendo despedidos da primeira página em favor de respostas geradas pela…
Em algum momento entre 2010 e 2015 paramos de ter blogs pessoais. Migramos todos pra Twitter, Medium, LinkedIn. O custo: nossas ideias longas e bem-estruturadas viraram propriedade de plataformas que podem nos cortar a qualquer momento. VOANTE não substitui blog. Voos são curtos…
Reflexão de hoje: o Brasil tem uma das maiores comunidades de desenvolvedores do mundo. Mas a maior parte trabalha em projeto de outro país, em código que vai rodar em servidor de outro país, em produto vendido pra outro país. Não é crítica — pagar bem é importante, e a estrutur…
Tem uma frase de Antirez (criador do Redis) que carrego comigo: "data structures are the only thing that matter". O resto — biblioteca, framework, linguagem — é montagem. No VOANTE: timeline é Redis Sorted Set, paginação é cursor com `(timestamp, post_id)`, contadores são INCR/D…
Conversa com advogado sobre LGPD hoje. Aprendi uma coisa que não estava clara: o usuário pode pedir a deleção dos dados dele, mas a plataforma tem que manter logs de moderação (quem foi suspenso, por quê) por prazo legal mesmo após a deleção. Solução arquitetural: ao deletar usu…
O ecossistema de crates async em Rust amadureceu absurdamente nos últimos 3 anos. Tokio é estável, sqlx tem connection pooling decente, axum substituiu warp em quase todos os projetos novos. Não é mais "Rust async é difícil". É difícil quando você tenta abstrair demais cedo. Se…
O Stalwart Mail Server impressionou. Setup completo em 40 minutos: SMTP, IMAP, JMAP, antispam, DKIM, DMARC, todos em um único binário Rust. Configuração em TOML, sem 200 arquivos espalhados em /etc/postfix/. Pra projeto solo isso é diferença real. Antes eu rodaria postfix + dove…
Primeiro `cargo build --release` do VOANTE saiu em 2m48s. Achei lento. Hoje, com 13 crates no workspace e dependências completas, o full release rebuild leva 4 minutos. Incremental, 8 segundos. Trade-off conhecido de Rust: compila devagar, executa rápido. Pra dev solo, a math é:…