I Added Voice-to-Text to Noctalia Shell So I Can Stop Typing

It was a Wednesday afternoon. I was writing documentation for one of my projects and my hands were getting tired. Not from the code — from the prose. Paragraph after paragraph of explaining things in plain English while my fingers begged for mercy. I thought: why am I still typing all of this? I have a microphone. I have a Wayland compositor. I have a shell that I built myself. And yet, every time I wanted to dictate text, I’d have to open a browser, go to some cloud service, copy the text, paste it back. Or install some Electron app that eats 400 MB of RAM just to sit in the background and do nothing. ...

May 29, 2026 · 10 min read · enrell

I Rewrote My Crystal MCP in Go — And It Got Better: Better Search MCP

If you read my last post, you know I built searxng-web-fetch-mcp — a Crystal MCP server that gives AI assistants web search and content fetching. It worked. It was fast. I shipped it in a night. But after a few weeks of daily use, things started to bother me. The extraction was good, but not great. Some articles came back with navigation junk. Others had the main content buried under sidebar text. And the batch fetch, while fast, didn’t give me the control I wanted over what came back and how. ...

April 21, 2026 · 9 min read · enrell

Psyche: The Media Server That Keeps Your Data Yours

It was 2 AM. I was digging through my local anime folder trying to figure out why my media server hadn’t picked up a new episode. I opened the SQLite database file out of curiosity — just to see what was in there. I could read it. All of it. Every title. Every rating. Every entry in my watch history. Plain UTF-8 text, sitting unprotected on my disk. I closed the terminal and stared at the ceiling for a while. ...

April 4, 2026 · 12 min read · enrell

Building a Crystal MCP for Web Search and Content Extraction

It was 7pm on a Wednesday. I was staring at my terminal, watching OpenCode try to answer a question about a library it had never seen before. The LLM was doing its best. But it was hallucinating API endpoints that didn’t exist. And I thought: “Why can’t my AI just… search the web?” The Problem I use OpenCode, Claude Code and some times Crush as my daily coding companion. It’s powerful. But it has a blind spot: The native web fetch can’t access claudflare protected sites. ...

March 25, 2026 · 6 min read · enrell

I Built a NPM Package for Parsing Anime Filenames — Here's My Story

It was 3 AM on a Tuesday night. I was staring at my anime folder, scrolling through filenames like: [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 And I thought to myself: “There has to be a better way.” Sound familiar? If you’ve ever built a media library, you know exactly what I’m talking about. Those messy, inconsistent filenames — they drive me crazy. And the existing parsers? Either too slow, too rigid, or didn’t handle the wild variety of naming conventions we anime fans use. ...

February 21, 2026 · 4 min read · enrell