<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://jeanfbrito.github.io/</id><title>Jean Brito</title><subtitle>Personal blog of Jean Brito — software engineering, tooling, and experiments.</subtitle> <updated>2026-06-10T15:32:26-03:00</updated> <author> <name>Jean Brito</name> <uri>https://jeanfbrito.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://jeanfbrito.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://jeanfbrito.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Jean Brito </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>rocket-cli: a Rocket.Chat MCP server with a local FTS5 brain</title><link href="https://jeanfbrito.github.io/posts/rocket-cli-mcp-sqlite-cache/" rel="alternate" type="text/html" title="rocket-cli: a Rocket.Chat MCP server with a local FTS5 brain" /><published>2026-06-10T15:14:00-03:00</published> <updated>2026-06-10T15:14:00-03:00</updated> <id>https://jeanfbrito.github.io/posts/rocket-cli-mcp-sqlite-cache/</id> <content type="text/html" src="https://jeanfbrito.github.io/posts/rocket-cli-mcp-sqlite-cache/" /> <author> <name>Jean Brito</name> </author> <category term="AI" /> <category term="Tooling" /> <summary>One day, ~25 subagents, 216 tests: building a cache-first Rocket.Chat bridge for LLM agents — FTS5 corruption forensics, typings that lie, and attention triage as the product.</summary> </entry> <entry><title>Design Fluency Meets the Knowledge Graph</title><link href="https://jeanfbrito.github.io/posts/design-fluency-meets-the-knowledge-graph/" rel="alternate" type="text/html" title="Design Fluency Meets the Knowledge Graph" /><published>2026-05-26T16:23:40-03:00</published> <updated>2026-05-26T16:23:40-03:00</updated> <id>https://jeanfbrito.github.io/posts/design-fluency-meets-the-knowledge-graph/</id> <content type="text/html" src="https://jeanfbrito.github.io/posts/design-fluency-meets-the-knowledge-graph/" /> <author> <name>Jean Brito</name> </author> <category term="AI" /> <category term="Tooling" /> <summary>Polishing an Electron app's UI with an AI design skill on the front and a code knowledge graph on the back: design vocabulary plus a real source of truth.</summary> </entry> <entry><title>How a Cryptominer Spent Two Days on My Server — and How I Found It</title><link href="https://jeanfbrito.github.io/posts/how-i-found-a-cryptominer-running-in-a-container-on-my-home-server/" rel="alternate" type="text/html" title="How a Cryptominer Spent Two Days on My Server — and How I Found It" /><published>2026-05-22T19:12:11-03:00</published> <updated>2026-05-22T19:24:29-03:00</updated> <id>https://jeanfbrito.github.io/posts/how-i-found-a-cryptominer-running-in-a-container-on-my-home-server/</id> <content type="text/html" src="https://jeanfbrito.github.io/posts/how-i-found-a-cryptominer-running-in-a-container-on-my-home-server/" /> <author> <name>Jean Brito</name> </author> <category term="DevOps" /> <category term="Security" /> <summary>An AI agent investigating a slow server found a Monero miner consuming 50% CPU inside a Docker container. Here's the full incident — how it got in, what it was doing, and everything wrong that allowed it.</summary> </entry> <entry><title>When your VLM test flake is actually a VNC capture race</title><link href="https://jeanfbrito.github.io/posts/vlm-flake-vnc-stale-capture/" rel="alternate" type="text/html" title="When your VLM test flake is actually a VNC capture race" /><published>2026-05-18T11:15:00-03:00</published> <updated>2026-05-18T11:17:05-03:00</updated> <id>https://jeanfbrito.github.io/posts/vlm-flake-vnc-stale-capture/</id> <content type="text/html" src="https://jeanfbrito.github.io/posts/vlm-flake-vnc-stale-capture/" /> <author> <name>Jean Brito</name> </author> <category term="Engineering" /> <category term="Testing" /> <summary>Spent half a session tuning VLM localize prompts. The real bug was deep in my RFB client: framebuffer captures were 1–N frames behind reality.</summary> </entry> <entry><title>Turbo3 + MTP: Merging Two llama.cpp Forks</title><link href="https://jeanfbrito.github.io/posts/turbo3-mtp-merge-llama-cpp/" rel="alternate" type="text/html" title="Turbo3 + MTP: Merging Two llama.cpp Forks" /><published>2026-05-15T15:30:00-03:00</published> <updated>2026-05-15T19:35:28-03:00</updated> <id>https://jeanfbrito.github.io/posts/turbo3-mtp-merge-llama-cpp/</id> <content type="text/html" src="https://jeanfbrito.github.io/posts/turbo3-mtp-merge-llama-cpp/" /> <author> <name>Jean Brito</name> </author> <category term="AI" /> <category term="Local LLMs" /> <summary>Merging turbo3 KV cache and MTP speculative decoding into one llama.cpp binary: the build crashes, the CUDA dispatch bug, and 252K context at 85% draft acceptance.</summary> </entry> </feed>
