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. ...
Port: A TUI + CLI for Managing Open Network Ports on Linux
You run a server, the terminal crashes, and suddenly localhost:3000 is still occupied. You have no idea which process owns it. Sound familiar? Port solves this. Two ways to use it: $ port # TUI mode — interactive table $ port 3000 # CLI mode — kill port 3000 directly $ port --list # List ports as text (scriptable) The Problem It happens all the time. You start a Node.js server, a Python Flask app, or a Rust backend. Then: ...
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. ...
I Patched Flashrom on My Phone to Recover a Dead Motherboard
It was a Saturday afternoon. I pressed the power button on my PC and… nothing. Fans spun for a second, LEDs blinked, then dead. Then it tried again. One second, dead. One second, dead. An infinite boot loop with no display output, no beep codes, nothing. What followed was a week-long odyssey of diagnostics, wrong guesses, a new motherboard, a bricked BIOS, and — when every computer in my house was dead — an 11 PM coding session on my phone to patch an open-source tool that was never meant to run on Android. ...
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. ...