Trabalho
Quatro coisas construídas, com o estado verdadeiro e a parte difícil de cada uma.
Escolhi quatro em vez de listar tudo o que já construí. A razão está escrita no primeiro capítulo do guia de validação: uma pasta com quarenta projetos começados não é prova de criatividade, é o registo de quantas vezes a parte difícil foi adiada. Estas quatro abrem-se e verificam-se. Para cada uma escrevi qual foi o problema a sério, que costuma dizer mais sobre quem constrói do que a lista de tecnologias.
Compartmentalizer
Em produção, 16 aplicaçõesA plataforma que faz o deploy de tudo o resto desta página. Um PaaS próprio, numa VPS: recebe um commit, constrói a imagem, troca a versão em execução e mantém cada aplicação isolada da seguinte, com backups cifrados fora da máquina.
Não há link para abrir, porque isto não é um site. A prova é que esta página, e as outras três desta lista, estão a correr em cima dela neste momento.
A parte difícil
Trocar a versão de uma aplicação sem a deitar abaixo. A troca só acontece depois de a versão nova responder a um health check, com a antiga ainda de pé a servir pedidos, e reverte sozinha se a nova não responder. As aplicações que seguram chaves são a exceção deliberada: essas param primeiro, porque duas instâncias a segurar a mesma chave é um problema pior do que um segundo de indisponibilidade.
Moto Spotters
OnlinePlataforma comunitária para motociclistas em Portugal, em Next.js e PostgreSQL, com pagamentos em euros, subscrição freemium e aplicação Android.
A parte difícil
A moderação. O conteúdo que os utilizadores escrevem passa por um LLM antes de ficar visível, em mais de 25 tipos de conteúdo, cada um com o seu critério. Ligar o modelo foi a parte fácil. O difícil foi decidir o que fazer quando ele hesita: bloquear a mais mata a comunidade, bloquear a menos deixa passar o que não pode passar, e a resposta não é a mesma para uma fotografia e para uma mensagem privada.
DoutorWeb
OnlineAgência de web design a preço acessível, com doze ferramentas gratuitas que qualquer pessoa usa sem se registar: gerador de orçamentos, cartão digital, menu digital, QR de wifi, compressor de imagens, verificador de SEO e mais.
A parte difícil
Manter o site rápido enquanto lhe acrescento ferramentas. Cada ferramenta nova é mais uma página que tem de abrir depressa num telemóvel com rede fraca, que é exatamente onde está o cliente deste serviço. É fácil ter um site rápido no dia do lançamento e é difícil ainda o ter seis ferramentas depois.
Carteira de conta inteligente em CKB
Testnet, repositório privadoUma carteira em que perder o dispositivo não perde o dinheiro. Quem gasta confirma com o Face ID ou a impressão digital do próprio telemóvel, e a assinatura é verificada pela cadeia, não por um servidor meu: a chave nunca sai do dispositivo e a página não guarda nada. Recuperar o acesso exige que um número mínimo de guardiões escolhidos por ti concordem, com um prazo de espera durante o qual o dono pode vetar.
A parte difícil
Pôr um passkey de hardware a autorizar uma transação sem intermediário nenhum. O desafio que o dispositivo assina tem de ser exatamente o resumo da transação, só que esse resumo depende do tamanho da assinatura, e o tamanho só se conhece depois de o dispositivo assinar. É circular, e é aí que isto costuma partir. A solução foi fixar o campo da assinatura num tamanho constante, com enchimento no fim, para o resumo ficar determinado antes de alguém assinar. Ninguém repara nisto quando funciona.
O que ainda não está feito
Está em testnet e continua em testnet até haver auditoria externa feita por outra pessoa. A chave que permite atualizar o contrato ainda está comigo, e é a última coisa a fechar, depois da auditoria. Escrevo isto aqui porque o contrário seria exatamente o erro que o guia de validação passa doze secções a tentar evitar.