<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Engineering on Binary Yoga</title><link>https://yogirk.dev/categories/engineering/</link><description>Recent content in Engineering on Binary Yoga</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 01 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://yogirk.dev/categories/engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>Why I Gave Up on Remote-Controlling Gemini CLI (With a Working Prototype)</title><link>https://yogirk.dev/posts/why-i-gave-up-on-remote-controlling-gemini-cli/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://yogirk.dev/posts/why-i-gave-up-on-remote-controlling-gemini-cli/</guid><description>&lt;p&gt;This was in my drafts for far too long. Things are changing rapidly, with the Claude Code codebase leak this week and these tools evolving daily holding it any longer risks making the learnings dated. I will start with a disclaimer Gemini CLI is probably last in my lineup of preferred agent harnesses — behind Claude Code, Codex, pi.dev, opencode. But that&amp;rsquo;s one of the reasons why I chose it for this exercise. I wanted to understand &lt;em&gt;why&lt;/em&gt; some of these tools feel fast and some don&amp;rsquo;t, &lt;em&gt;why&lt;/em&gt; Claude Code&amp;rsquo;s remote control feels native while no equivalent exists (yet) for Gemini. Building the thing myself felt like the best way to find out. So when Claude remote was first announced a few weeks ago, I started building the equivalent for Gemini CLI. This post is mainly about how I failed and what I learned along the way&lt;/p&gt;</description></item><item><title>Why Terminal TUI Apps Can't Have Both Scroll and Text Selection</title><link>https://yogirk.dev/posts/why-terminal-tui-apps-cant-have-both-scroll-and-text-selection/</link><pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate><guid>https://yogirk.dev/posts/why-terminal-tui-apps-cant-have-both-scroll-and-text-selection/</guid><description>&lt;h2 id="the-background"&gt;The Background&lt;/h2&gt;
&lt;p&gt;I am currently building &lt;a href="https://github.com/yogirk/cascade"&gt;Cascade&lt;/a&gt;, AI-native terminal agent for GCP data engineering. Think Claude Code and Cortex CLI - but for GCP data engineering. However, this is still pre-alpha and I might end up scrapping the current project completely, in favour of some other stack in future, depending on what I learn while building this. However, as things stand today - Cascade is a Go terminal app, built on &lt;a href="https://github.com/charmbracelet/bubbletea"&gt;Bubble Tea v2&lt;/a&gt;, styled with &lt;a href="https://github.com/charmbracelet/lipgloss"&gt;Lip Gloss&lt;/a&gt; and I am also using the Charm ecosystem in general for components like viewports, keymaps, and terminal mouse handing. The first time I got to explore this stack was when I was building another TUI app for GCP called, well, &lt;a href="https://github.com/yogirk/tgcp"&gt;TGCP&lt;/a&gt; :)&lt;/p&gt;</description></item><item><title>Poking around a streaming platform's unsecured API</title><link>https://yogirk.dev/posts/poking-around-a-streaming-platforms-unsecured-api/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><guid>https://yogirk.dev/posts/poking-around-a-streaming-platforms-unsecured-api/</guid><description>&lt;h2 id="the-problem"&gt;The Problem&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.etvwin.com/"&gt;ETVWin&lt;/a&gt; is a Telugu streaming platform. Growing up in the 90s, ETV was the only source of entertainment for many Telugu households. It was a cultural phenomenon. So I thought, they have a huge library of nostalgia inducing content. But there is one problem - their site search sucks!&lt;/p&gt;
&lt;figure class="figure "&gt;
 &lt;div class="figure-image-wrapper" style="background-image: url('/posts/poking-around-a-streaming-platforms-unsecured-api/image_hu_cf22264b8c5de0a3.png'); aspect-ratio: 2340 / 922;"&gt;
 &lt;picture&gt;
 &lt;source srcset="https://yogirk.dev/posts/poking-around-a-streaming-platforms-unsecured-api/image_hu_859c6a7ae33af6c.webp 640w, https://yogirk.dev/posts/poking-around-a-streaming-platforms-unsecured-api/image_hu_29b86e9a974d7b83.webp 960w, https://yogirk.dev/posts/poking-around-a-streaming-platforms-unsecured-api/image_hu_b53d043af5485847.webp 1280w, https://yogirk.dev/posts/poking-around-a-streaming-platforms-unsecured-api/image_hu_f7e1ce165bdb426b.webp 1920w" sizes="(min-width: 1024px) 75ch, 100vw" type="image/webp"&gt;
 &lt;source srcset="https://yogirk.dev/posts/poking-around-a-streaming-platforms-unsecured-api/image_hu_73f7ed084007b8ba.png 640w, https://yogirk.dev/posts/poking-around-a-streaming-platforms-unsecured-api/image_hu_ee55f155df73c4ff.png 960w, https://yogirk.dev/posts/poking-around-a-streaming-platforms-unsecured-api/image_hu_b07fca2cdeffaf19.png 1280w, https://yogirk.dev/posts/poking-around-a-streaming-platforms-unsecured-api/image_hu_4787a9dae3e36c97.png 1920w" sizes="(min-width: 1024px) 75ch, 100vw" type="image/png"&gt;
 &lt;img class="figure-image" src="https://yogirk.dev/posts/poking-around-a-streaming-platforms-unsecured-api/image_hu_b07fca2cdeffaf19.png" alt="ETVWin search results showing poor search experience" width="2340" height="922" loading="lazy" onload="this.parentElement.parentElement.classList.add('is-loaded')"&gt;
 &lt;/picture&gt;
 &lt;/div&gt;
 
&lt;/figure&gt;
&lt;p&gt;Armed with Claude Code, I decided to poke around a bit and see if there is a way to find what I was looking for. I trusted them to have designed a bad system and I was sure I could find a way around it. With a bit of poking around, I ended up downloading their entire catalog and building a local search engine for it.&lt;/p&gt;</description></item></channel></rss>