Adicionei voice-to-text ao Noctalia Shell para parar de digitar

Era uma tarde de quarta-feira. Eu estava escrevendo documentação para um dos meus projetos e minhas mãos começaram a cansar. Não por causa do código — por causa da prosa. Parágrafo atrás de parágrafo explicando coisas em português, enquanto meus dedos imploravam por misericórdia. Pensei: por que eu ainda estou digitando tudo isso? Eu tenho um microfone. Tenho um compositor Wayland. Tenho um shell que eu mesmo uso e customizo. Mesmo assim, toda vez que eu queria usar voice-to-text, precisava abrir um browser, entrar em algum cloud service, copiar o texto e colar de volta. Ou instalar algum app em Electron que consome 400 MB de RAM só para ficar parado em background. ...

maio 29, 2026 · 10 min de leitura · enrell

Eu Reescrevi Meu MCP em Crystal para Go — E Ficou Melhor: Better Search MCP

Se você leu meu último post, sabe que eu construí o searxng-web-fetch-mcp — um servidor MCP em Crystal que dá a assistentes de IA busca na web e fetching de conteúdo. Funcionou. Foi rápido. Eu shippinguei em uma noite. Mas depois de algumas semanas de uso diário, as coisas começaram a me incomodar. A extração era boa, mas não ótima. Alguns artigos voltavam com lixo de navegação. Outros tinham o conteúdo principal enterrado sob texto de sidebar. E o batch fetch, embora rápido, não me dava o controle que eu queria sobre o que voltava e como. ...

abril 21, 2026 · 10 min de leitura · enrell

Port: Uma TUI + CLI para Gerenciar Portas de Rede Abertas no Linux

Você roda um servidor, o terminal trava, e de repente o localhost:3000 ainda está ocupado. Você não faz ideia de qual processo é o dono. Te soa familiar? Port resolve isso. Duas formas de usar: $ port # Modo TUI — tabela interativa $ port 3000 # Modo CLI — mata a porta 3000 diretamente $ port --list # Lista portas como texto (scriptável) O Problema Acontece o tempo todo. Você inicia um servidor Node.js, um app Python Flask, ou um backend em Rust. Aí: ...

abril 14, 2026 · 4 min de leitura · enrell

Construindo um MCP em Crystal para Busca na Web e Extração de Conteúdo

Eram 19h de uma quarta-feira. Eu estava olhando para o meu terminal, vendo o OpenCode tentar responder a uma pergunta sobre uma biblioteca que ele nunca tinha visto antes. O LLM estava fazendo o seu melhor. Mas estava alucinando endpoints de API que não existiam. E eu pensei: “Por que minha IA não pode simplesmente… pesquisar na web?” O Problema Eu uso o OpenCode, o Claude Code e às vezes o Crush como meus companheiros diários de programação. É poderoso. Mas tem um ponto cego: a busca nativa na web não consegue acessar sites protegidos pela Cloudflare. ...

março 25, 2026 · 7 min de leitura · enrell

Eu Criei um Pacote NPM para Fazer o Parse de Nomes de Arquivos de Anime — Aqui Está a Minha História

Eram 3 da manhã de uma terça-feira. Eu estava olhando para a minha pasta de animes, rolando por nomes de arquivos como: [SubsPlease] Spy x Family - 01 (1080p) [A4DAF3D9].mkv [Coalgirls] Clannad (1920x1080 Blu-Ray FLAC) [1234ABCD]/[Coalgirls] Clannad - 01 (1920x1080 Blu-Ray FLAC) [1234ABCD].mkv One Punch Man S02E03 1080p WEBRip x264-PandoR.mkv E pensei comigo mesmo: “Tem que haver um jeito melhor.” Soa familiar? Se você já montou uma biblioteca de mídia, sabe exatamente do que estou falando. Esses nomes de arquivos bagunçados e inconsistentes — eles me deixam louco. E os parsers existentes? Ou eram muito lentos, muito rígidos ou não lidavam com a variedade selvagem de convenções de nomenclatura que nós, fãs de anime, usamos. ...

fevereiro 21, 2026 · 5 min de leitura · enrell