Já faz um tempo que venho estudando sobre síntese musical e buscando entender melhor sobre os fundamentos por trás do som. Resolvi então condensar o conteúdo e escrever um artigo (e por que não uma sequência de artigos) sobre este tema. Agenda First things first: o que é som? Som digital e transdução PCM: como um programa gera som Gerando som com Ruby: nosso primeiro oscilador Trigonometria,…
2026, what a year to be alive. AI, LLMs, agents, agentic coding. On one side, the hype train. On the other, narratives built to invalidate everything the hype touches. In this article I'll dig into the limitations and benefits of using LLMs for coding and how to bring engineering back to the landscape, which I call vibe engineering . I aim to help readers on a path to vibe engineering, so this is…
Palíndromos, palíndromos. Você deve estar se perguntando como veio parar aqui, muito provavelmente já sem paciência pra este assunto por conta da recente trend do twitter no último fim de semana que, convenhamos, ultrapassou alguns limites: O assunto subiu para o trending topics global e os gringos ficavam se perguntando: Why is palindrome such a hot topic in Brazil now? Mal sabem eles que aqui no…
Or: how engineering keeps turning chaos into reliable computation. And why agentic AI still hasn't solved this. There's a pattern that repeats across the entire history of computing: we take something fundamentally non-deterministic and engineer enough layers on top of it until it behaves deterministically. Logic gates did it. Artificial neural networks (ANNs) replicated it at some level. LLMs are…
If for you: Recursion is an obscure topic or you want to understand it a bit better; Tail call and TCO are alien communication methods and; Trampoline is a medicine name Then this article is for you. Here, I'll explain what these terms are in a didactic way and the problems they solve, with examples in Ruby . But don't worry because the examples are quite simple to understand, especially since the…
Originally posted in Portuguese Recently I wrote a 6-article series about x86 Assembly (written in Portuguese, but I'm planning to translate the guide to English soon), covering fundamental concepts of computer architecture and low-level programming while building a minimalist multi-threaded web server. During the process, I left some important concepts aside for later articles, because if I had…
Have you ever asked yourself what if we could replace any message broker with a very simple one using only two UNIX signals? Well, I'm not surprised if you didn't. But I did. And I want to share my journey of how I achieved it. If you want to learn about UNIX signals, binary operations the easy way, how a message broker works under the hood, and a bit of Ruby, this post is for you. And if you came…
31 de Dezembro de 2024. Sentado no sofá e assistindo Frozen, tive a ideia de escrever sobre minha retrospectiva deste ano. Nunca fiz isso antes, então bora lá, porque acho que foi muita coisa. Mas antes, um aftermath de 2023 2023 foi um ano bastante agitado pra mim. Passei por uma tireoidectomia (mas estou bem, obrigado) e também foi o ano em que resolvi fazer "learn in public" e deixar tudo…
Já faz um tempo que não escrevo aqui no blog. E também já faz bastante tempo que tenho o interesse em voltar a escrever mais como fazia antigamente, quando tudo o que tinha era algo na mente e simplesmente convertia em um punhado de texto solto no meu blog, como essa relíquia aqui. Gosto de escrever artigos técnicos, mas por outro lado também gosto de simplesmente sentar e começar a escrever sem…
Recentemente escrevi uma saga de 6 artigos sobre Assembly x86, abordando conceitos fundamentais de arquitetura de computadores e programação low-level enquanto ia desenvolvendo um web server minimalista multi-threaded. Durante o processo, acabei deixando de lado alguns conceitos importantes para artigos posteriores, pois se fosse abordar durante a saga, iria ficar maior do que já foi. Entretanto…
Uma vez que temos um web server funcional , podemos dar o próximo (e último) passo, que é deixar o servidor minimamente escalável fazendo uso de uma pool de threads. Neste artigo, vamos mergulhar nas entranhas da implementação de uma pool de threads com sincronização através de locks, e para atingir tal feito em assembly abordaremos filas, alocação dinâmica de memória e controle de locks com…
No artigo anterior , passamos pelos fundamentos de Assembly, onde foi possível entender alguns conceitos básicos tais como tipos de registradores, stack , loops, FLAGS etc, tudo sendo feito com debugging via GDB . Agora, vamos de fato construir um web server muito simples que devolve um HTML com a frase "Hello, World". A meta é chegarmos nisto: O processo para chegarmos a este objetivo consiste em…
Uma vez que temos uma compreensão sobre sistema binário, hexadecimal, ASCII e código de máquina, chegou o grande momento de entrarmos no assunto principal desta saga: assembly . Vamos iniciar transportando o "Hello, World" feito em código de máquina para assembly x86 e, posteriormente, abordar um exemplo de programa que recebe argumento da linha de comando. Ao longo deste artigo vamos aprender a…
Agora que já temos uma base de entendimento sobre hierarquia de memória, arquitetura de CPU e registradores, vamos aplicar estes conceitos em exemplos práticos: construindo programas de computador. Mas o que é um programa de computador? Teremos a resposta para esta pergunta ao longo deste artigo. Vamos abordar muitos conceitos, desde código de máquina (o mais importante na minha opinião), a…
No artigo anterior demos uma introdução não-técnica sobre o que será esta saga de Assembly x86 conforme avançamos na construção de um web server. Agora, chegou o momento de começarmos a de fato falar sobre coisas técnicas. Como de costume, não gosto de esgormitar termos complexos sem a devida explicação. Portanto, vamos iniciar a saga trazendo um pouco de contexto histórico, motivações e porque…
Assembly . Para alguns, um monstrinho. Pra outros, algo antiquado. Mas pra quem tem curiosidade em entender como as coisas funcionam, oportunidade . Nesta saga que será uma série de artigos, vamos explorar Assembly com NASM para arquitetura x86-64 em GNU/Linux enquanto desenvolvemos um web server multi-thread bastante simples. O intuito não está nas capacidades do web server em si, pois este irá…
Ufa, finalmente meu primeiro artigo de 2024. Criei vergonha na cara coragem e resolvi sentar e escrever um pouco. Vou voltar a escrever coisas técnicas com frequência, prometo Mas antes de tudo, queria deixar claro que este bait post aqui é mais uma reflexão do que algo técnico. Não tem referências, não é uma verdade absoluta. Apenas uma reflexão. Afinal, como dividimos os níveis de conhecimento?…
In today's post we'll explore how to create a basic background job in Rust, simulating Rust channels with a Vector-based queue. First things first Generally, a background job operates on one or more threads that continuously consume messages from a queue. In this post, we'll use a Vector to represent our queue. This Vector is an instance of the standard Rust library implementation known as…
In today's post we'll delve into the basics of smart pointers in Rust, while we build from scratch a simple linked list - starting from a singly linked list and then evolving to a doubly one. Prelude, intro to Rust It's not intended to be an introduction about Rust. For that, you can follow along this blogpost series by @mfcastellani . Also, you can read his book (pt-BR). Moreover, I have a live…
Faz alguns dias que não escrevo. Minha rotina mudou um pouco e também tenho focado em estudar algumas coisas que eu não tinha tanto domínio. Entretanto tenho algumas coisas pra compartilhar. Vamos a isso. Rinha de compiladores Em Setembro de 2023 aconteceu na tal #bolhaDev uma outra competição em formato de rinha, mas desta vez o desafio era a construção de um compilador/interpretador que fosse…