<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Bhanu // Station</title>
    <link>https://bhanueso.dev/station</link>
    <atom:link href="https://bhanueso.dev/rss.xml" rel="self" type="application/rss+xml" />
    <description>Creative frontend engineer at the intersection of brutalist design, generative physics, and scalable architecture.</description>
    <language>en-us</language>
    <item>
      <title>[BROADCAST] The Gold Edge That Died One Minute Late</title>
      <link>https://bhanueso.dev/broadcasts/gold-open-one-minute-late</link>
      <guid isPermaLink="true">https://bhanueso.dev/broadcasts/gold-open-one-minute-late</guid>
      <description>I have a crude-oil arb running across Hyperliquid, NYMEX, and India&apos;s MCX, and the obvious next move was to point it at gold. The backtest printed a clean +0.4%-a-morning edge at 70% hit. It was real for about an hour — until I checked whether you could fill at the price the edge depended on. You couldn&apos;t. The teardown: a research gap that wasn&apos;t an alpha gap, a look-ahead bug that wasn&apos;t the killer, a stale opening print that was, and the moment I realised my live strategy fills on the exact same field.</description>
      <category>Postmortem</category>
      <category>BROADCAST</category>
      <pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] Background Location on Android Is a Battery-Manager Fight</title>
      <link>https://bhanueso.dev/blips/android-background-location</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/android-background-location</guid>
      <description>Every Android location tracker is unreliable for the same reason — OEM battery managers kill background processes you don&apos;t own. The fix was ~150 lines of Kotlin: a daily WorkManager job that POSTs a city-only fix to my own endpoint.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] Letterboxd Has Two Poster URL Schemes, and the Film ID Won&apos;t Tell You Which</title>
      <link>https://bhanueso.dev/blips/letterboxd-two-poster-url-schemes</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/letterboxd-two-poster-url-schemes</guid>
      <description>Adding film posters to the telemetry page, I tried to reconstruct Letterboxd&apos;s CDN URLs from the film id and slug. Three of four worked; Memories of Murder 403&apos;d at every size. The reason: TMDB-imported posters live under a totally different path — /sm/upload/{hash}/ with no id and no slug — so they&apos;re unconstructable. The honest source is the film page&apos;s JSON-LD image field.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] A Themed World Map With No Map Library, No Tiles, No API Key</title>
      <link>https://bhanueso.dev/blips/themed-map-no-map-library</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/themed-map-no-map-library</guid>
      <description>The PLACES tab needed a map of ~119 cities that recolors with the site&apos;s four themes. Leaflet and Mapbox can&apos;t do that — raster tiles ignore your CSS. So I rendered the map as plain SVG with d3-geo at build time: one &lt;path&gt; for all land, a &lt;circle&gt; per city, colored entirely by --field-ink / --field-bg. It themes for free because it&apos;s just ink on a background.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] YouTube&apos;s API Has No Watch History, So the Browser Reports It Instead</title>
      <link>https://bhanueso.dev/blips/youtube-watch-history-extension</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/youtube-watch-history-extension</guid>
      <description>The telemetry page wants to show what I&apos;m watching on YouTube, live. The Data API has no watch-history endpoint — the watchHistory playlist has returned an empty placeholder since ~2016 and activities is deprecated. So I stopped asking Google and read the data where it already exists: the watch page. A ~40-line MV3 content script beacons each video to a Redis key.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BROADCAST] Recovering a !Send Resource on the UI&apos;s Tick</title>
      <link>https://bhanueso.dev/broadcasts/cpal-stream-recovery</link>
      <guid isPermaLink="true">https://bhanueso.dev/broadcasts/cpal-stream-recovery</guid>
      <description>cpal::Stream is !Send. Pulling headphones on a Windows WASAPI setup silently kills the audio stream and the obvious fix — spawn a thread that rebuilds it — is forbidden at the type level. The fix that works: an AtomicBool, the existing 250ms UI tick, and no new thread.</description>
      <category>Rust</category>
      <category>BROADCAST</category>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] Cross-Asset Attention Hurt the Strategy</title>
      <link>https://bhanueso.dev/blips/cross-asset-attention-hurt</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/cross-asset-attention-hurt</guid>
      <description>Added MultiheadAttention across the 4 commodities before the LSTM in panel-VLSTM. Mean Sharpe Δ −0.30. Crude_Oil specifically lost 1.17.</description>
      <category>Research</category>
      <category>BLIP</category>
      <pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] fillna(0) Killed an Au/Ag Cointegration Test</title>
      <link>https://bhanueso.dev/blips/fillna-zero-killed-cointegration</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/fillna-zero-killed-cointegration</guid>
      <description>Phase A flagged Silver Kalman cointegration as a -0.51 NEGATIVE result. The negative result was a one-line bug — fillna(0) corrupted β at early NaN dates by inventing a $1 fictitious gold price.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] TFT Loved Less Training Data</title>
      <link>https://bhanueso.dev/blips/tft-loves-less-training-data</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/tft-loves-less-training-data</guid>
      <description>Reduced min_train 2500→1500 expecting marginal change. NBEATSx/NHITS/PatchTST shrugged. TFT lifted Crude_Oil Sharpe 1.20→3.27.</description>
      <category>Research</category>
      <category>BLIP</category>
      <pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BROADCAST] Phase A: How the Headline Sharpe Lost 20% to Honesty</title>
      <link>https://bhanueso.dev/broadcasts/phase-a-honest-sharpe</link>
      <guid isPermaLink="true">https://bhanueso.dev/broadcasts/phase-a-honest-sharpe</guid>
      <description>A commodity ML strategy started Phase A with an oracle Sharpe of 2.43. A hostile external critique took it to an honest 1.94 — then a second multi-agent audit found a bug inside one of the honesty fixes itself, landing it at 1.66. The trajectory of how every 0.1 Sharpe got found, traced, and given up — twice.</description>
      <category>Field Report</category>
      <category>BROADCAST</category>
      <pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BROADCAST] Cure</title>
      <link>https://bhanueso.dev/broadcasts/cure</link>
      <guid isPermaLink="true">https://bhanueso.dev/broadcasts/cure</guid>
      <description>Close to two years in. The films I watched while I couldn&apos;t write directly, and what they kept saying back. Kurosawa, Resnais, Lou Ye, Yamakawa, Rohrwacher, Oshiyama — and a line from Dazai.</description>
      <category>Essay</category>
      <category>BROADCAST</category>
      <pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] GDOP Triangulation Across the ATNF Catalogue</title>
      <link>https://bhanueso.dev/blips/gdop-pulsar-selection</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/gdop-pulsar-selection</guid>
      <description>Picking 14 pulsars from 3924 candidates via greedy geometric optimization — five strategies tested, GDOP wins on positional spread.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] A SessionStart Hook That Mines My Own Transcripts for CLAUDE.md Edits</title>
      <link>https://bhanueso.dev/blips/claude-md-proposals-hook</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/claude-md-proposals-hook</guid>
      <description>Cron scans last week&apos;s session JSONLs for repeating patterns. SessionStart hook nudges me to review proposals before any session starts. Threshold + rejection ledger keep noise out.</description>
      <category>Tools</category>
      <category>BLIP</category>
      <pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] Encoding Pulsar Periods as Binary Ticks</title>
      <link>https://bhanueso.dev/blips/binary-encoded-pulsars</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/binary-encoded-pulsars</guid>
      <description>Period divided by hydrogen&apos;s 21cm spin-flip frequency, integer to binary, binary to tick marks.</description>
      <category>Graphics</category>
      <category>BLIP</category>
      <pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] Normalizing Model IDs Across Four AI Providers</title>
      <link>https://bhanueso.dev/blips/model-alias-normalization</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/model-alias-normalization</guid>
      <description>Claude Code, Codex, OpenCode, Kimi all spell the same model differently. One alias map collapses them.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] Idempotent Usage Sync via SHA256 Dedupe Keys</title>
      <link>https://bhanueso.dev/blips/idempotent-sync-deduplication</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/idempotent-sync-deduplication</guid>
      <description>Hashing source:session:provider:model:day into a primary key means re-running the sync is a no-op.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] An Agent Skill That Emits ASCII Shaders as Inlined TSX</title>
      <link>https://bhanueso.dev/blips/dithering-shader-pipeline</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/dithering-shader-pipeline</guid>
      <description>ascii-shader-tsx is markdown reference docs, not a library. The agent reads, emits one inlined .tsx file. Distribution unit shifts from npm to instruction set.</description>
      <category>Tools</category>
      <category>BLIP</category>
      <pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] Context-Aware Icon Colors for Terminal Weather</title>
      <link>https://bhanueso.dev/blips/context-aware-weather-icons</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/context-aware-weather-icons</guid>
      <description>Day/night/rain/snow state machine driving ANSI colors on Nerd Font glyphs — using actual sunrise/sunset, not hardcoded hours.</description>
      <category>Tools</category>
      <category>BLIP</category>
      <pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] Splitting Audio Off Tokio in a Rust Music Player</title>
      <link>https://bhanueso.dev/blips/rust-audio-thread-architecture</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/rust-audio-thread-architecture</guid>
      <description>Async LibraryManager handles I/O; a dedicated mpsc thread handles playback so Tokio&apos;s scheduler jitter never reaches the audio pipeline.</description>
      <category>Systems</category>
      <category>BLIP</category>
      <pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] Double-Winsorization Is a Train/Serve Skew You Can&apos;t See</title>
      <link>https://bhanueso.dev/blips/double-winsorize-train-serve-skew</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/double-winsorize-train-serve-skew</guid>
      <description>compute_alpha_features() winsorized once, the CV loop winsorized again, inference winsorized once. The model trained on a different distribution than it predicted on.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] The Drawdown Kill Switch That Couldn&apos;t See the Crash</title>
      <link>https://bhanueso.dev/blips/kill-switch-broker-equity</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/kill-switch-broker-equity</guid>
      <description>Signum&apos;s risk check was reading a weekly-stale equity curve. A 15% mid-week drawdown was invisible until the next Wednesday&apos;s rebalance.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] Survivorship Bias and the Wikipedia S&amp;P 500 Fetch</title>
      <link>https://bhanueso.dev/blips/survivorship-bias-sp500-fetch</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/survivorship-bias-sp500-fetch</guid>
      <description>fetch_sp500_tickers() scraped today&apos;s index and used it as the historical universe. Two years of training data, zero defaults, zero acquisitions, zero scandals.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] Why I Stopped Polling `wezterm cli list`</title>
      <link>https://bhanueso.dev/blips/wezterm-cli-socket-bug</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/wezterm-cli-socket-bug</guid>
      <description>Two compounding bugs killed the CLI-based daemon: Windows publishes only the socket filename not the path, and the CLI doesn&apos;t expose foreground process names anyway.</description>
      <category>Engineering</category>
      <category>BLIP</category>
      <pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>[BLIP] WSL Process Detection via zsh preexec Hooks</title>
      <link>https://bhanueso.dev/blips/wsl-process-detection-hooks</link>
      <guid isPermaLink="true">https://bhanueso.dev/blips/wsl-process-detection-hooks</guid>
      <description>wslhost.exe blocks PID inspection from Windows. Workaround: zsh preexec emits OSC 1337 user-vars, WezTerm Lua writes JSON, Rust daemon updates Discord.</description>
      <category>Setup</category>
      <category>BLIP</category>
      <pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>