<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shubham kumar</title>
    <description>The latest articles on DEV Community by Shubham kumar (@workdone0).</description>
    <link>https://dev.to/workdone0</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2022413%2Fc18fc95d-abbf-4a76-9aae-4db602f4f42d.jpeg</url>
      <title>DEV Community: Shubham kumar</title>
      <link>https://dev.to/workdone0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/workdone0"/>
    <language>en</language>
    <item>
      <title>JSON &amp; YAML Are Fine. Our Tools Aren’t.</title>
      <dc:creator>Shubham kumar</dc:creator>
      <pubDate>Fri, 26 Dec 2025 17:03:07 +0000</pubDate>
      <link>https://dev.to/workdone0/stop-staring-at-brackets-a-better-way-to-explore-json-yaml-15ka</link>
      <guid>https://dev.to/workdone0/stop-staring-at-brackets-a-better-way-to-explore-json-yaml-15ka</guid>
      <description>&lt;p&gt;Does anyone else feel like they spend half their life just staring at 1,000-line YAML files, trying to figure out where a specific key actually lives?&lt;/p&gt;

&lt;p&gt;I recently hit a wall while debugging complex &lt;strong&gt;workload definitions&lt;/strong&gt;. You know the kind—where the structure of your &lt;strong&gt;&lt;a href="https://twig.wtf" rel="noopener noreferrer"&gt;JSON or YAML files&lt;/a&gt;&lt;/strong&gt; actually determines the application logic.&lt;/p&gt;

&lt;p&gt;Whether you are dealing with &lt;strong&gt;Kubernetes manifests&lt;/strong&gt; or lengthy API responses, the nesting depth matters. A specific key located two spaces to the left might change a process from serial to parallel execution. I found that standard editors make it incredibly difficult to &lt;strong&gt;debug configuration drift&lt;/strong&gt; when one wrong indentation level breaks the whole thing.&lt;/p&gt;

&lt;p&gt;I realized I had three imperfect options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;VS Code:&lt;/strong&gt; I’d collapse folders, expand others, scroll down, and suddenly lose track of which parent object I was actually looking at.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Online Formatters:&lt;/strong&gt; These have two major problems. First, pasting sensitive production configs into a random web tool is a security nightmare. Second, &lt;strong&gt;browsers just can't handle the scale&lt;/strong&gt;. Have you ever tried pasting a 50MB log file into a JSON formatter? It usually crashes the tab before it even renders the tree.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The CLI:&lt;/strong&gt; &lt;code&gt;cat&lt;/code&gt; and &lt;code&gt;less&lt;/code&gt; are great for reading text, but they are awful for understanding &lt;em&gt;structure&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I didn't want to write a query language just to look at my data, and I didn't want to wait for a browser to unfreeze. I just wanted to navigate my data like I navigate my files.&lt;/p&gt;

&lt;p&gt;So, I built &lt;strong&gt;Twig&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it actually does
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/workdone0/twig" rel="noopener noreferrer"&gt;Twig&lt;/a&gt; is a Terminal User Interface (TUI) that visualizes your data using &lt;strong&gt;Miller Columns&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you use the "Columns" view in macOS Finder, you already get it. Instead of a vertical wall of text that pushes context off the screen, you drill down horizontally. You can see the parent, the child, and the value all at once.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fworkdone0%2Ftwig%2Fmaster%2Fasset%2Fdemo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fworkdone0%2Ftwig%2Fmaster%2Fasset%2Fdemo.gif" alt="Twig Demo" width="720" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I didn't just use &lt;code&gt;jq&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Trust me, I use &lt;code&gt;jq&lt;/code&gt; every day. It’s the king of JSON processing for scripts and pipelines.&lt;/p&gt;

&lt;p&gt;But using &lt;code&gt;jq&lt;/code&gt; for &lt;em&gt;exploration&lt;/em&gt; is painful. It’s a game of "Guess the Path." You run the command, see the output, tweak the path, run it again. It’s a Read-Eval-Print loop, not an interactive experience. &lt;strong&gt;Twig is for humans, not scripts.&lt;/strong&gt; You don't need to know the path before you start; you discover it by walking through the tree.&lt;/p&gt;

&lt;p&gt;I also tried tools like &lt;code&gt;fx&lt;/code&gt; and &lt;code&gt;jless&lt;/code&gt;. They are great, but they mostly rely on "folding" (like code folding). The problem I have with folding is that when you open a massive object, the parent key scrolls off the top of the screen. I constantly forgot "Wait, which ID does this block belong to?"&lt;/p&gt;

&lt;p&gt;With Miller Columns, that parent context stays pinned in the left pane. It keeps your mental model intact.&lt;/p&gt;

&lt;h3&gt;
  
  
  The "Quality of Life" Stuff
&lt;/h3&gt;

&lt;p&gt;Since I built this for my own sanity, I added a few features I needed for real work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It fixes garbage data:&lt;/strong&gt; We all get logs that aren't valid JSON—trailing commas, &lt;code&gt;NaN&lt;/code&gt; values, or unquoted keys. Twig sanitizes common errors on the fly so you can view the file without having to manually fix it first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy first:&lt;/strong&gt; Everything happens locally on your machine. No data leaves your terminal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast search:&lt;/strong&gt; You can fuzzy search for a key (like &lt;code&gt;imagePullPolicy&lt;/code&gt;) and jump straight to it, no matter how deep it is in the hierarchy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Try it out
&lt;/h3&gt;

&lt;p&gt;It’s written in Python (using Textual), so it's easy to grab.&lt;/p&gt;

&lt;p&gt;If you’re using &lt;code&gt;uv&lt;/code&gt; (which makes Python tools way faster), you can run it instantly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;twg

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or just standard pip:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;twg

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then point it at that massive file you've been dreading opening:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;twg my-massive-log-file.json

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;The goal here isn't to replace your entire toolkit, but to fill that specific gap between "viewing raw text" and "writing complex queries."&lt;/p&gt;

&lt;p&gt;We spend too much of our careers fighting with configuration files; our tools should make that easier, not harder. I’m building this in the open, and I’m actively looking for feedback to make it the best "quick-look" tool for the terminal.&lt;/p&gt;

&lt;p&gt;If you give it a spin, let me know what you think in the comments or open an issue on the repo.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/workdone0/twig" rel="noopener noreferrer"&gt;github.com/workdone0/twig&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://twig.wtf" rel="noopener noreferrer"&gt;twig.wtf&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you find it useful, a ⭐️ on GitHub goes a long way!&lt;/p&gt;

</description>
      <category>python</category>
      <category>cli</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
