<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Omar Shabab</title><description>AI tools, CLI applications, civic tech, and write-ups of the parts that were harder than they should have been.</description><link>https://omarshabab.com/</link><item><title>Tests for 100 tokens/s at 256K on my M3 Ultra</title><link>https://omarshabab.com/local-llm-256k-100-tokens-per-second/</link><guid isPermaLink="true">https://omarshabab.com/local-llm-256k-100-tokens-per-second/</guid><description>Qwen3.8-Flash-Next reached 93.25 decode tokens/s after a 489-second pause. The complete experiment record includes TensorFold, MTPLX, GLM, MiMo, and failed tests.</description><pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate></item><item><title>RLHF vs RLM: one changes the weights, the other changes what the model sees</title><link>https://omarshabab.com/rlhf-vs-rlm/</link><guid isPermaLink="true">https://omarshabab.com/rlhf-vs-rlm/</guid><description>Two acronyms that share two letters and almost nothing else. RLHF is a training loop that ends in new weights. A Recursive Language Model is an inference loop that keeps a long input in a code runtime and lets a frozen model compute over it. Five diagrams, one grid, and where prompt optimizers such as GEPA sit between them.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate></item><item><title>I added MCP toggles to Codex, then made them fast</title><link>https://omarshabab.com/codex-mcp-toggle/</link><guid isPermaLink="true">https://omarshabab.com/codex-mcp-toggle/</guid><description>An interactive /mcp menu for Codex, with a real terminal demo. My first toggle waited seven seconds for tool discovery; the revised version saved in 46 ms while the server connected in the background. How the status-only API works, why a checked box did not prove tool access, and where the patch lives after GitHub refused the upstream PR.</description><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Find My found my house. Bluetooth found the pillow</title><link>https://omarshabab.com/lost-iphone-bluetooth-hunt/</link><guid isPermaLink="true">https://omarshabab.com/lost-iphone-bluetooth-hunt/</guid><description>My iPhone was dead somewhere in the house. Find My said Home, Now, and then refused to ring it. A passive Bluetooth scan on a laptop carried room to room closed the last thirty metres: 120 packets, five rooms, one metre of final uncertainty. The trick was tracking the beacon by state rather than by id, because the id rotates every few minutes and takes your meter down with it.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Your agent has been writing your secrets to disk</title><link>https://omarshabab.com/redacting-agent-transcripts/</link><guid isPermaLink="true">https://omarshabab.com/redacting-agent-transcripts/</guid><description>I scanned 1.2 GB of my own Claude Code and Codex transcripts for credentials and found 373 across 105 files, including a live API key repeated 60 times and a plaintext password. The script is a single file with no dependencies. The write-up is mostly about the four bugs that got past a green test suite.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Advancements in image search and nearest neighbor algorithms from 2021 to 2026</title><link>https://omarshabab.com/image-search-nearest-neighbor-algorithms-2021-2026/</link><guid isPermaLink="true">https://omarshabab.com/image-search-nearest-neighbor-algorithms-2021-2026/</guid><description>Five years of image search in one place. CLIP made text a query for pictures, compression got a proof and moved inside the graph, cross-modal queries turned out to break the assumption every index was built on, and storing a vector fell from memory prices to object-storage prices. A sourced synthesis, with no original benchmarks.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate></item><item><title>MLX vs llama.cpp on an M3 Ultra: mlx-lm decodes 1.49x faster, and one run is not an answer</title><link>https://omarshabab.com/mlx-vs-llama-cpp/</link><guid isPermaLink="true">https://omarshabab.com/mlx-vs-llama-cpp/</guid><description>A measured MLX vs llama.cpp comparison on a 512GB Mac Studio M3 Ultra at a 234,158-token prompt. mlx-lm 0.31.3 decodes 1.49x faster than llama.cpp b10200 and ties on prefill, while llama.cpp uses 29% less system-wide memory and outranks every MLX serving stack measured on decode. The llama.cpp arm is a single unrepeated run, and this post is mostly about why that matters.</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Every 256K-capable local LLM on my Mac Studio M3 Ultra, ranked. The winner decodes at 60.45 tokens/sec.</title><link>https://omarshabab.com/local-llm-256k-leaderboard/</link><guid isPermaLink="true">https://omarshabab.com/local-llm-256k-leaderboard/</guid><description>Sixteen model and engine configurations at a real 262,000-token prompt on a 512GB Mac Studio M3 Ultra. Nemotron-3.5-Lightning-30B-A3B wins at 60.45 tok/s decode with 8/8 needle recall, and it wins by degrading slowly: its decode falls 1.83x from 2k to 262k where a dense 14B falls 10.68x. Architecture beats parameter count, a 1M-native model fails at 1M, and all five recall failures I published turned out to be my own harness.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate></item><item><title>macOS clamps my M3 Ultra&apos;s GPU to 338 MHz before the fans even try. Maxing them doubled my LLM throughput.</title><link>https://omarshabab.com/mac-studio-firmware-gpu-limiter/</link><guid isPermaLink="true">https://omarshabab.com/mac-studio-firmware-gpu-limiter/</guid><description>My LLM benchmarks kept collapsing 4x mid-session. macmon caught a firmware power limiter clamping the GPU to 338 MHz and holding it while the die cooled, fans never past 70%. Pinning them at max with fanpro: 2.57x sustained decode, and a 100k-context job in 259 s instead of 568+, byte-identical.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Kimi-Linear ran a real 1M context on my Mac Studio. I checked all million tokens.</title><link>https://omarshabab.com/kimi-linear-1m-context/</link><guid isPermaLink="true">https://omarshabab.com/kimi-linear-1m-context/</guid><description>Last post I called local 1M context a mirage. Then Kimi-Linear-48B passed: 8/8 needle recall at a real 1,048,692-token prompt on a 512GB M3 Ultra, full ingestion proven. Native 1M is finally real. It just takes a five-hour prefill.</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The two numbers that decide local LLMs: 100 tokens/sec and 1M context</title><link>https://omarshabab.com/local-llm-two-numbers/</link><guid isPermaLink="true">https://omarshabab.com/local-llm-two-numbers/</guid><description>I ran a 754B model on a 512GB Mac Studio. It fits, it crawls, and its 1M context flag is a warning message and a silent cap. Where local models fail as coding tools, and the one job they are great at.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Making a Logitech mouse follow its keyboard across Macs</title><link>https://omarshabab.com/logitech-mx-auto-switch/</link><guid isPermaLink="true">https://omarshabab.com/logitech-mx-auto-switch/</guid><description>Easy-Switch moves the keyboard and abandons the mouse. One HID++ packet fixes that, once you get past the two permission gates macOS hides between you and your own devices.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate></item><item><title>How I run Claude Code: Opus 4.8 advisor + ultracode</title><link>https://omarshabab.com/claude-code-advisor-ultracode/</link><guid isPermaLink="true">https://omarshabab.com/claude-code-advisor-ultracode/</guid><description>Two switches I leave on: the advisor tool and /effort ultracode. An honest, log-backed account of where they help, where they are overkill, and where the model wisely skips them.</description><pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate></item><item><title>I built a SaaS starter because every other one is wrong</title><link>https://omarshabab.com/saas-template/</link><guid isPermaLink="true">https://omarshabab.com/saas-template/</guid><description>An opinionated Cloudflare-first template. Next.js 16, D1, Better Auth, Stripe. No monorepo. No edge-runtime religion. No status page.</description><pubDate>Sun, 19 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Local LLM Benchmark: Gemma 4 vs Qwen 3.5</title><link>https://omarshabab.com/llm-benchmark/</link><guid isPermaLink="true">https://omarshabab.com/llm-benchmark/</guid><description>Head-to-head on a Mac Studio M3 Ultra. 26 prompts, 6 categories, and one surprising finding: the model that decoded faster finished 8.2x slower. Numbers re-derived from the server logs in September 2026.</description><pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Bangladesh 2026 National Election Candidates</title><link>https://omarshabab.com/bangladesh-2026-election/</link><guid isPermaLink="true">https://omarshabab.com/bangladesh-2026-election/</guid><description>Explore 1,680 candidates across 275 constituencies. Filter by coalition, division, party, and more.</description><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate></item></channel></rss>