<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cli on ferkakta.dev</title><link>https://ferkakta.dev/tags/cli/</link><description>Recent content in Cli on ferkakta.dev</description><generator>Hugo</generator><language>en-US</language><copyright>Copyright fizz.</copyright><lastBuildDate>Fri, 03 Apr 2026 23:00:00 -0500</lastBuildDate><atom:link href="https://ferkakta.dev/tags/cli/index.xml" rel="self" type="application/rss+xml"/><item><title>I answered 114 AWS Well-Architected Review questions from my terminal</title><link>https://ferkakta.dev/well-architected-review-from-terminal/</link><pubDate>Fri, 03 Apr 2026 23:00:00 -0500</pubDate><guid>https://ferkakta.dev/well-architected-review-from-terminal/</guid><description>&lt;p&gt;I was fourteen questions into the AWS Well-Architected Review when my wrists told me to stop. Each question is a page: read the description, check the boxes, type notes into a 2084-character text field, click Next. The Container Build Lens alone has 28 questions. I had two more lenses queued — the main Well-Architected Framework (57 questions) and the Generative AI Lens (29). That&amp;rsquo;s 114 questions total, and the console wants me to click through every one.&lt;/p&gt;</description></item><item><title>I was wrong about shell completions for 15 years</title><link>https://ferkakta.dev/zsh-completions-vocabulary-construction-kit/</link><pubDate>Wed, 01 Apr 2026 15:00:00 -0500</pubDate><guid>https://ferkakta.dev/zsh-completions-vocabulary-construction-kit/</guid><description>&lt;p&gt;I thought shell completions were tab-operated Jinja — fill in the blank, template-style. Type half a filename, press tab, get the rest. That&amp;rsquo;s all I thought they did.&lt;/p&gt;
&lt;p&gt;And the AWS CLI completer kept confirming that impression in the worst way. When you&amp;rsquo;re typing &lt;code&gt;aws s3 cp somefile.txt s3://bucket/&lt;/code&gt;, the completer hijacks tab on the local path argument and sits there forever trying to guess AWS-side completions that will never come. You&amp;rsquo;re done with the AWS part of the command. You just want to tab-complete a filename. It won&amp;rsquo;t let you. AWS hogs the empty space where your possibilities want to go, because it thinks it&amp;rsquo;s important to block your progress in case you wanted to speak to any of its 867 pet names. As John Roderick and Merlin Mann put it on &lt;a href="http://www.intotv.com/rotl/ep1"&gt;Roderick on the Line&lt;/a&gt;: keep moving and get out of the way.&lt;/p&gt;</description></item><item><title>Do not fake smallness</title><link>https://ferkakta.dev/do-not-fake-smallness/</link><pubDate>Fri, 27 Mar 2026 15:00:00 -0500</pubDate><guid>https://ferkakta.dev/do-not-fake-smallness/</guid><description>&lt;p&gt;I found an old gist from my BAM consulting days. It shows &lt;code&gt;csvq&lt;/code&gt; — a one-line alias that turns any CSV stream into a queryable in-memory SQLite database with JSON output:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;alias csvq&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;sqlite3 :memory: -cmd &amp;#39;.mode csv&amp;#39; -cmd &amp;#39;.import /dev/stdin s3&amp;#39; &amp;#39;.mode json&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pipe a CSV into it, write SQL, get JSON. I wrote it for a colleague I was initiating into my ways. The gist is polite. It shows the output being piped into &lt;code&gt;jq '.[]'&lt;/code&gt;, which is perfectly respectable Unix.&lt;/p&gt;</description></item><item><title>Recovering Claude Code sessions from history.jsonl after index corruption</title><link>https://ferkakta.dev/recovering-claude-code-sessions-from-history-jsonl/</link><pubDate>Tue, 10 Mar 2026 09:00:00 -0600</pubDate><guid>https://ferkakta.dev/recovering-claude-code-sessions-from-history-jsonl/</guid><description>&lt;p&gt;I still have every email I&amp;rsquo;ve sent and received since 1998. I don&amp;rsquo;t lose data. So when Claude Code stopped resuming sessions for a project I&amp;rsquo;d used daily for months, I didn&amp;rsquo;t think &amp;ldquo;oh well.&amp;rdquo; I thought &amp;ldquo;where did it go.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The project directory still existed in &lt;code&gt;~/.claude/projects/&lt;/code&gt;. There was even a &lt;code&gt;sessions-index.json&lt;/code&gt; in it. But the actual per-session JSONL files — the ones that contain the conversation data — were gone. Every one of them. The index was a catalog pointing at empty shelves.&lt;/p&gt;</description></item></channel></rss>