Por uma universidade pública e de qualidade!!!
Um desabafo em defesa da universidade pública brasileira como motor da ciência,
da tecnologia e da mobilidade social — e um alerta contra sua destruição.
Reflexões, tutoriais e descobertas do mundo real. Entre Java, Kafka, bancos de dados e processamento de streams, sobra espaço para filosofia do código e materiais para palestras.
Influencers não operam no vácuo. Uma análise sobre propaganda total, fé instrumentalizada e redes invisíveis que moldam a política.
Um desabafo em defesa da universidade pública brasileira como motor da ciência,
da tecnologia e da mobilidade social — e um alerta contra sua destruição.
Reflexão sobre como a palavra ‘tecnologia’ carrega uma carga semântica positiva e nos impede de questionar seus impactos. A partir de Antônio Bispo dos Santos, Jacques Ellul e Lewis Mumford, o texto propõe uma nova semântica: tecnologia não é boa nem má, mas ferramenta com intenções. Defende cautela, tradição como proteção cultural e crítica ao uso irresponsável de IA e LLMs.
O que Ciência de Sistemas tem a ver com arquitetura de software? Neste post, exploro como conceitos de sistemas, DDD, modelos mentais, documentação e software se conectam. Uma reflexão para quem quer entender melhor por que sistemas complexos são feitos de sistemas — e como isso influencia nosso jeito de projetar, documentar e desenvolver software.
Aprenda a escrever testes eficazes superando as limitações do ambiente de testes. Entenda a diferença entre emular e simular, resolva dependências de frameworks, sistemas externos, SO, tempo e schema de banco. Descubra como usar Spring Boot, Quarkus, Testcontainers e criar DSLs para testes mais legíveis e confiáveis.
Refatoração não é luxo, é sobrevivência. Entenda como o software envelhece naturalmente e por que a refatoração contínua é a única defesa contra o caos. Neste artigo, compartilho uma história real com o protocolo OBEX, explico os benefícios de Martin Fowler (design, bugs, velocidade) e detalho quando aplicar: preparatória, compreensão, coleta de lixo e code review. Transforme refatoração em hábito, não em evento.
Sair do 'Big Design Up Front' para o 'No Design' foi um erro que muitos times cometeram. Neste artigo, resgato o valor do 'Enough Design' e mostro como o Domain-Driven Design, a Linguagem Ubíqua e o Design Orientado a Responsabilidades podem domar a complexidade. Aprenda a transformar requisitos complexos em partes simples e interativas, usando técnicas como BPMN e refatoração, para manter a velocidade do seu time e a saúde do projeto no longo prazo.
Eu já rejeitei PRs só porque o código estava "limpo" demais. Neste artigo, vou te mostrar que a verdadeira complexidade não está nas linhas, mas nas abstrações que você deixa de criar. Vamos falar sobre os sintomas que matam projetos (amplificação, carga cognitiva e os tais "desconhecidos desconhecidos") e como um simples buffer pode salvar seu sistema.
Por que escrever um bom código? Não por estética, mas por estratégia. Neste artigo desmonto a subjetividade do termo "bom" para mostrar que a qualidade do código impacta diretamente nos custos, na evolução do projeto e até na satisfação do usuário. Com exemplos reais, de vazamentos de dados a bugs que derrubaram a nota de aplicativos, explico que escrever código claro e comunicativo é um investimento que evita retrabalho e salva negócios no médio e longo prazo.
LLMs não são mágicas, nem inteligências. São máquinas probabilísticas treinadas com seu trabalho gratuito. Quero explorar os 8 maiores problemas éticos que o uso de IAs generativas trazem: da exploração de trabalhadores africanos ao consumo de energia suja, passando por vieses invisíveis e a homogeneização da cultura.
Será que usar LLMs para programar é realmente uma péssima ideia? Entre a imposição do mercado, a perda do raciocínio crítico e os custos ocultos, a resposta não é tão simples quanto parece.
Descubra como o Event Storming, uma técnica colaborativa do Domain-Driven Design, transforma a modelagem de software ao colocar especialistas do negócio e desenvolvedores lado a lado para mapear fluxos, identificar lacunas e construir uma linguagem comum.
Ponteiros não existem em Java. Ou existem? A verdade é que o conceito está lá, disfarçado de referências, NullPointerException e variáveis final. Neste artigo, exploro a fronteira entre a abstração das linguagens modernas e a realidade do hardware, passando por exemplos em C e Java, e mostrando como é fácil — e perigoso — reinventar ponteiros sem perceber. Uma reflexão sobre design de código, concorrência e as armadilhas que criamos ao ignorar a biblioteca padrão.