1<!doctype html><html lang=en><head><meta charset=utf-8><meta name=generator content="Hugo 0.164.0"><meta name=viewport content="width=device-width,initial-scale=1,viewport-fit=cover"><meta name=color-scheme content="light dark"><meta name=supported-color-schemes content="light dark"><meta name=keywords content="blog, technology, programming, computer-science, articles, opensource"><meta name=description content="2KAbhishek's Personal Blog"><meta name=author content="map[email:[email protected] name:2KAbhishek]"><meta name=copyright content="map[email:[email protected] name:2KAbhishek]"><meta http-equiv=content-language content="en"><link rel=canonical href=https://2kabhishek.github.io/blog/><link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/favicon-16x16.png><link rel=alternate type=application/rss+xml href=https://2kabhishek.github.io/blog//index.xml title="2KAbhishek's Blog"><meta name=msapplication-TileColor content="#1688f0"><meta name=theme-color content="#000"><title>2KAbhishek's Blog</title><link rel=preconnect href=https://cdn.jsdelivr.net/ crossorigin><link rel=dns-prefetch href=https://cdn.jsdelivr.net/><link rel=dns-prefetch href=https://fonts.gstatic.com/><link rel=preload href=/blog/css/core.min.28cd108cae695ff86c12de580e6faa2cb81d31c1b0c0bee19440d8680df30563e0776a26c0abfce227fe14023a85f7f5.css as=style onload='this.onload=null,this.rel="stylesheet"'><noscript><link rel=stylesheet href=/blog/css/core.min.28cd108cae695ff86c12de580e6faa2cb81d31c1b0c0bee19440d8680df30563e0776a26c0abfce227fe14023a85f7f5.css integrity=sha384-KM0QjK5pX/hsEt5YDm+qLLgdMcGwwL7hlEDYaA3zBWPgd2omwKv84if+FAI6hff1></noscript><style type=text/css>*,::before,::after{margin:0;padding:0;box-sizing:border-box}html{font-family:-system-ui,-apple-system,BlinkMacSystemFont,helvetica neue,Helvetica,Arial,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol;font-size:17px;font-weight:400;line-height:1.7;scroll-behavior:smooth;transition:color .3s,background-color .3s;word-wrap:break-word;-webkit-text-size-adjust:100%}html{background:#fff;--background-color:#f0f0f0;--site-name-color:#111111;--color-primary:#1688f0;--link-underline:#90cff9;--blockquote-border-left:6px solid #0051a2;--block-background-color:#f5f5f5;--pag-background-color:rgba(0, 122, 255, 0.5);--box-shadow:1px 1px 2px rgba(0, 0, 0, 0.125);--title-color:#111111;--body-color:#151515}html[data-theme=dark]{background:#000;--background-color:#0a0a0a;--site-name-color:#efefef;--color-primary:#1688f0;--link-underline:#0051a2;--blockquote-border-left:6px solid #5176bf;--block-background-color:#0d0d0d;--box-shadow:none;--title-color:#efefef;--body-color:#dedede}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3;margin-block-start:0;margin-block-end:0}h1{font-size:26px}h2{font-size:24px}h3{font-size:22px}section>h1{color:var(--title-color)}a{color:var(--color-primary);text-decoration-thickness:.1rem;text-decoration-color:var(--link-underline)}a:hover{text-decoration-color:var(--color-primary)}.wrapper{display:grid;grid-template-columns:1fr min(clamp(65ch,70vw,150ch),calc(100% - 64px))1fr;grid-column-gap:32px}.wrapper>section{grid-column:2}.header{margin:20px 0;display:-webkit-flex;display:flex;flex-wrap:wrap;text-align:initial;padding:15px 0;border-bottom:1px solid #f0f0f0;justify-content:space-between;align-items:baseline}.site-name{display:inline-block;font-weight:600;font-size:21px;color:var(--site-name-color)}.site-slogan{font-size:14px;color:var(--site-name-color)}.site-logo{height:38px;border-radius:3px;vertical-align:middle;margin-right:8px}.nav-item{display:inline-block;font-size:18px;padding-right:6px;margin:2px 3px 2px 0;line-height:1.5;white-space:nowrap}.data-theme-btn{border:none;vertical-align:middle;transition:.3s;background-color:initial;background-repeat:no-repeat;cursor:pointer;overflow:hidden;outline:none;padding-right:0;padding-left:0}html[data-theme=light] .light-hidden{display:none}html[data-theme=dark] .dark-hidden{display:none}.note-list-wrapper{max-width:min(clamp(60ch,75vw,90ch),calc(100% - 32px));margin:0 auto;width:100%}.note-list{display:grid;gap:18px;margin:0;padding:0;list-style:none}.note-list .item{position:relative;padding:18px 20px;border:1px solid rgba(22,136,240,.35);border-radius:12px;background:0 0;
1box-shadow:var(--box-shadow);transition:transform .2s ease,border-color .2s ease}.note-list .item:hover,.note-list .item:focus-within{border-color:rgba(22,136,240,.35);transform:translateY(-2px)}.note{text-decoration:none}.note::after{position:absolute;inset:0;content:""}.note:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px}.note-labels{position:relative;z-index:1}.note-title{font-size:19px;font-weight:700}.note-meta{font-size:14px;text-decoration:none;color:var(--body-color);opacity:.75}.note-content{font-size:15px;text-decoration:none;color:var(--body-color)}.note-content,.note-labels{margin-top:4px;text-justify:inter-word}.note-imgs.single-img{display:block;margin-top:8px;margin-bottom:8px}.note-imgs.single-img .img{width:100%;height:180px;object-fit:cover;border-radius:6px;border:1px solid rgba(22,136,240,.15)}.note-imgs.multi-imgs{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;margin-bottom:8px}.note-imgs.multi-imgs .img{flex:1 1 120px;max-width:calc(50% - 4px);height:120px;object-fit:cover;border-radius:6px;border:1px solid rgba(22,136,240,.15);transition:transform .2s ease}.note-imgs.multi-imgs .img:hover{transform:scale(1.03)}.article-imgs{margin:15px 0 25px}.article-imgs.single-img .article-img{width:100%;max-height:400px;object-fit:cover;border-radius:8px;border:1px solid rgba(0,0,0,5%)}.article-imgs.multi-imgs{display:flex;flex-wrap:wrap;gap:12px}.article-imgs.multi-imgs .article-img{flex:1 1 150px;max-width:calc(50% - 6px);height:150px;object-fit:cover;border-radius:8px;border:1px solid rgba(22,136,240,.1);transition:transform .2s ease}.article-imgs.multi-imgs .article-img:hover{transform:scale(1.02)}.article-tag,.article-category{display:inline-block;font-size:13px;line-height:1;padding-right:6px;margin:2px 3px 2px 0;white-space:nowrap;border-radius:3px;text-decoration:none}.article-tag{color:var(--body-color);opacity:.6;transition:opacity .2s ease,color .2s ease}.article-tag:hover{color:var(--color-primary);opacity:1}.article-category{color:#3a8c42;opacity:.8}.article-category .hashtag,.article-tag .hashtag{font-weight:700;opacity:.5}.footer{font-size:13px;margin:40px 0 20px}.footer-wrap{text-align:center;color:var(--body-color)}.tag-cloud{margin:2em 0 3em;text-align:center}.tag-cloud-tags{display:inline-block;position:relative;margin:5px;word-wrap:break-word;overflow-wrap:break-word}.archive-year{font-size:20px;font-weight:800;color:var(--title-color);margin-top:20px;margin-bottom:10px}.archive-list{list-style:none}.archive-date{flex:0 0 100px;color:var(--title-color)}.archive-text{color:var(--body-color)}ul.archive-list li{display:flex}.article-container{margin-bottom:20px}.article-header{margin:20px 0}.article-container .article-header{margin:10px 0 0}.article-meta{font-size:14px;margin-top:8px;margin-bottom:0;color:#838387}.article-container .article-labels{margin-top:-8px}.lastmod-date{font-size:14px;color:#838387}.markdown-body{color:var(--body-color)}.markdown-body p{margin-top:0;margin-bottom:20px}.pagination{display:block;text-align:center;margin:20px 0 40px}.pagination-status{margin-bottom:8px;font-size:14px;color:var(--body-color)}.pagination ul{display:inline-flex;flex-wrap:wrap;justify-content:center;gap:4px;list-style:none;font-weight:600;padding:0;margin:0}.pagination ul li a,.pagination ul li span{display:inline-flex;align-items:center;min-height:40px;padding:8px 16px;text-decoration:none;border-radius:6px}.pagination ul li a{color:var(--color-primary)}.pagination ul li a:hover:not(.active){background-color:var(--pag-background-color)}.pagination ul li a.active{background-color:var(--color-primary);color:var(--block-background-color)}.pagination ul li.disabled span{color:var(--body-color);opacity:.35;cursor:not-allowed}.pagination ul li.pagination-ellipsis span{color:var(--body-color);opacity:.5;padding:8px}input,.stork-message,.stork-result,.stork-title,.stork-excerpt{background-color:var(--background-color)!important;color:var(--site-name-color)!important}.stork-wrapper .stork-input,.stork-wrapper .stork-input:focus{border:1px solid rgba(22,136,240,.35)!important;box-shadow:none!important;outline:none!important}.stork-wrapper .stork-highlight{background-color:rgba(22,136,240,.35)!important;color:inherit!important;border-radius:2px}html[data-theme=dark] .stork-wrapper .stork-highlight{background-color:rgba(22,136,240,.55)!important}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus{-webkit-text-fill-color:var(--site-name-color)!important;box-shadow:0 0 0 1e3px var(--background-color)inset!important;transition:background-color 9999s ease-in-out 0s}input:focus{border-color:var(--color-primary)!important;box-shadow:none!important;outline-color:var(--color-primary)!important}.stork-attribution{display:none!important}.copy-btn{position:absolute;top:8px;right:8px;background:rgba(0,0,0,.7);color:#fff;border:none;padding:4px 8px;border-radius:4px;font-size:12px;cursor:pointer;opacity:0;transition:opacity .2s ease;z-index:10}pre:hover .copy-btn,pre:focus-within .copy-btn,.copy-btn:focus-visible{opacity:1}.copy-btn:hover{background:rgba(0,0,0,.9)}.copy-btn.copied{background:#0f0;color:#000}@import 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap';@import 'https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,400..700;1,400..700&display=swap';
1html{font-family:inter,-system-ui,-apple-system,BlinkMacSystemFont,helvetica neue,Helvetica,SimHei,segoe ui,Roboto,Arial,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol}code,pre,tt,kbd,samp{font-family:source code pro,Menlo,Consolas,liberation mono,monospace;font-weight:500}</style><link rel=stylesheet href=/blog/css/fonts.min.css></head><body><div class=wrapper><section id=header class=header><div class=header-left><a href=/blog/><img class=site-logo src="https://avatars.githubusercontent.com/u/25423853?v=4" alt="2KAbhishek's Blog logo"><p class=site-name>2KAbhishek's Blog</p></a></div><div class=header-right><div class=nav><a class=nav-item href=https://2kabhishek.github.io/ target=_blank>About</a><a class=nav-item href=/blog/archives>Archives</a><a class=nav-item href=/blog/tags>Tags</a>
1<script>const htmlEl=document.getElementsByTagName("html")[0],applyTheme=e=>{htmlEl.dataset.theme=e},toggleTheme=e=>{applyTheme(e),localStorage.setItem("theme",e)},savedTheme=localStorage.getItem("theme");savedTheme?applyTheme(savedTheme):applyTheme(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").addEventListener("change",e=>{localStorage.getItem("theme")||applyTheme(e.matches?"light":"dark")})</script>
1 2<button class="data-theme-btn dark-hidden" onclick='toggleTheme("dark")' aria-label="Enable dark theme"> 3<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#3f4b67" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg> 4</button> 5<button class="data-theme-btn light-hidden" onclick='toggleTheme("light")' aria-label="Enable light theme"> 6<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#e9e9e9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><path d="M12 1v2m0 18v2M4.2 4.2l1.4 1.4m12.8 12.8 1.4 1.4M1 12h2m18 0h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4"/></svg></button></div></div></section><section id=content><div class=note-list-wrapper><section class=article-header><link rel=stylesheet href=https://files.stork-search.net/releases/v1.6.0/basic.css><div class=stork-wrapper><input data-stork=posts class=stork-input placeholder=Search><div data-stork=posts-output class=stork-output></div></div>
6<script src=https://files.stork-search.net/releases/v1.6.0/stork.js></script>
6<script>stork.register("posts","posts.st"),document.addEventListener("keydown",e=>{const t=document.querySelector(".stork-input");if(!t)return;const n=document.activeElement.tagName==="INPUT"||document.activeElement.tagName==="TEXTAREA";e.key==="/"&&!n&&(e.preventDefault(),t.focus()),e.key==="Escape"&&document.activeElement===t&&(t.value="",t.dispatchEvent(new Event("input")),t.blur())})</script>
6</section><ul class=note-list><li class=item><a class=note href=/blog/post/useful-shell-functions/ aria-label="ReadUseful Shell Functions for Developers"><p class=note-title>Useful Shell Functions for Developers</p></a><p class=note-meta><span class=note-date>2024-11-02</span><span class=note-reading-time> · 3min read</span></p><p class=note-content>A well-crafted shell function can be a game changer for developer productivity. These functions streamline repetitive â¦</p><p class=note-labels><a class=article-tag href=/blog/tags/terminal/><span class=hashtag>#</span>terminal</a><a class=article-tag href=/blog/tags/bash/><span class=hashtag>#</span>bash</a><a class=article-tag href=/blog/tags/cli/><span class=hashtag>#</span>cli</a><a class=article-tag href=/blog/tags/productivity/><span class=hashtag>#</span>productivity</a><a class=article-tag href=/blog/tags/workflow/><span class=hashtag>#</span>workflow</a></p></li><li class=item><a class=note href=/blog/post/assume-positive-intent/ aria-label="ReadAssume Positive Intent and Build Trust"><p class=note-title>Assume Positive Intent and Build Trust</p></a><p class=note-meta><span class=note-date>2024-09-13</span><span class=note-reading-time> · 3min read</span></p><p class=note-content>As we continue working closely with clients, we often find ourselves in situations where we make recommendations that we â¦</p><p class=note-labels><a class=article-tag href=/blog/tags/teamwork/><span class=hashtag>#</span>teamwork</a><a class=article-tag href=/blog/tags/practices/><span class=hashtag>#</span>practices</a><a class=article-tag href=/blog/tags/agile/><span class=hashtag>#</span>agile</a><a class=article-tag href=/blog/tags/productivity/><span class=hashtag>#</span>productivity</a><a class=article-tag href=/blog/tags/workflow/><span class=hashtag>#</span>workflow</a></p></li><li class=item><a class=note href=/blog/post/pending-code-reviews/ aria-label="ReadPending Code Reviews Are Blockers for Your Team ð§"><p class=note-title>Pending Code Reviews Are Blockers for Your Team ð§</p></a><p class=note-meta><span class=note-date>2024-08-09</span><span class=note-reading-time> · 2min read</span></p><p class=note-content>I’ve worked and interacted with a lot of people working in engineering teams across various contexts, and one of â¦</p><p class=note-labels><a class=article-tag href=/blog/tags/teamwork/><span class=hashtag>#</span>teamwork</a><a class=article-tag href=/blog/tags/practices/><span class=hashtag>#</span>practices</a><a class=article-tag href=/blog/tags/agile/><span class=hashtag>#</span>agile</a><a class=article-tag href=/blog/tags/productivity/><span class=hashtag>#</span>productivity</a><a class=article-tag href=/blog/tags/workflow/><span class=hashtag>#</span>workflow</a></p></li><li class=item><a class=note href=/blog/post/keybindings/ aria-label="ReadKeybindings FTW! â¨ï¸ð¥"><p class=note-title>Keybindings FTW! â¨ï¸ð¥</p></a><p class=note-meta><span class=note-date>2024-07-07</span><span class=note-reading-time> · 3min read</span></p><p class=note-content>Keybindings or keyboard shortcuts are essential to an efficient workflow. They help you navigate faster, be more â¦</p><p class=note-labels><a class=article-tag href=/blog/tags/keybindings/><span class=hashtag>#</span>keybindings</a><a class=article-tag href=/blog/tags/macos/><span class=hashtag>#</span>macos</a><a class=article-tag href=/blog/tags/shell/><span class=hashtag>#</span>shell</a><a class=article-tag href=/blog/tags/open-source/><span class=hashtag>#</span>open-source</a><a class=article-tag href=/blog/tags/linux/><span class=hashtag>#</span>linux</a><a class=article-tag href=/blog/tags/tools/><span class=hashtag>#</span>tools</a><a class=article-tag href=/blog/tags/productivity/><span class=hashtag>#</span>productivity</a><a class=article-tag href=/blog/tags/workflow/><span class=hashtag>#</span>workflow</a></p></li><li class=item><a class=note href=/blog/post/do-not-parse-ls/ aria-label="ReadDo Not Parse ls! (Use this instead) âð"><p class=note-title>
6Do Not Parse ls! (Use this instead) âð</p></a><p class=note-meta><span class=note-date>2024-06-26</span><span class=note-reading-time> · 3min read</span></p><p class=note-content>TLDR ls parsing bad, do this 7ls -1iq | grep -o '^ *[0-9]*' # get file inodes find /path/to/search -inum â¦</p><p class=note-labels><a class=article-tag href=/blog/tags/filesystem/><span class=hashtag>#</span>filesystem</a><a class=article-tag href=/blog/tags/unix/><span class=hashtag>#</span>unix</a><a class=article-tag href=/blog/tags/shell/><span class=hashtag>#</span>shell</a><a class=article-tag href=/blog/tags/open-source/><span class=hashtag>#</span>open-source</a><a class=article-tag href=/blog/tags/linux/><span class=hashtag>#</span>linux</a><a class=article-tag href=/blog/tags/programming/><span class=hashtag>#</span>programming</a></p></li><li class=item><a class=note href=/blog/post/zsh/ aria-label="ReadHow I organize my zsh config ðð"><p class=note-title>How I organize my zsh config ðð</p></a><p class=note-meta><span class=note-date>2024-05-25</span><span class=note-reading-time> · 3min read</span></p><p class=note-content>I have been using zsh as my shell for over 6 years now. During this time, I’ve experimented with various â¦</p><p class=note-labels><a class=article-tag href=/blog/tags/cli/><span class=hashtag>#</span>cli</a><a class=article-tag href=/blog/tags/zsh/><span class=hashtag>#</span>zsh</a><a class=article-tag href=/blog/tags/terminal/><span class=hashtag>#</span>terminal</a><a class=article-tag href=/blog/tags/tools/><span class=hashtag>#</span>tools</a><a class=article-tag href=/blog/tags/shell/><span class=hashtag>#</span>shell</a><a class=article-tag href=/blog/tags/open-source/><span class=hashtag>#</span>open-source</a><a class=article-tag href=/blog/tags/linux/><span class=hashtag>#</span>linux</a><a class=article-tag href=/blog/tags/productivity/><span class=hashtag>#</span>productivity</a></p></li><li class=item><a class=note href=/blog/post/be-good-at-open-source/ aria-label="ReadHow to be good at Open Source ð§âð»ð"><p class=note-title>How to be good at Open Source ð§âð»ð</p></a><p class=note-meta><span class=note-date>2024-03-24</span><span class=note-reading-time> · 1min read</span></p><p class=note-content>What’s the coolest thing about open source software? ð If you need a new feature, you can just go ahead and add it â¦</p><p class=note-labels><a class=article-tag href=/blog/tags/open-source/><span class=hashtag>#</span>open-source</a><a class=article-tag href=/blog/tags/contribution/><span class=hashtag>#</span>contribution</a><a class=article-tag href=/blog/tags/github/><span class=hashtag>#</span>github</a></p></li><li class=item><a class=note href=/blog/post/nerdy/ aria-label="ReadNerdy.nvim - Find Nerd Glyphs Easily ð¤ð"><p class=note-title>Nerdy.nvim - Find Nerd Glyphs Easily ð¤ð</p></a><p class=note-meta><span class=note-date>2023-09-24</span><span class=note-reading-time> · 2min read</span></p><p class=note-content>Do you like Nerd fonts? but don’t like going over to their site just to fetch a glyph for your pretty terminal? â¦</p><p class=note-labels><a class=article-tag href=/blog/tags/cli/><span class=hashtag>#</span>cli</a><a class=article-tag href=/blog/tags/terminal/><span class=hashtag>#</span>terminal</a><a class=article-tag href=/blog/tags/tools/><span class=hashtag>#</span>tools</a><a class=article-tag href=/blog/tags/side-projects/><span class=hashtag>#</span>side-projects</a><a class=article-tag href=/blog/tags/open-source/><span class=hashtag>#</span>open-source</a><a class=article-tag href=/blog/tags/neovim/><span class=hashtag>#</span>neovim</a><a class=article-tag href=/blog/tags/plugin/><span class=hashtag>#</span>plugin</a></p></li></ul></div><div class=pagination><ul><li class=disabled><span class=previous_page>‹</span></li><li><a class=active href=/blog/ aria-label="Go to page1" aria-current=page>1</a></li><li><a href=/blog/page/2/ aria-label="Go to page2">2</a></li><li><a href=/blog/page/3/ aria-label="Go to page3">3</a></li><li class=pagination-ellipsis><span>…</span></li><li><a href=/blog/page/5/ aria-label="Go to page5">5</a></li><li><a href=/blog/page/2/ class=next_page aria-label="Go to next page">›</a></li></ul></div></section><section id=footer class="footer max-body-width"><div class=footer-wrap><p class=copyright>©2026 2KAbhishek</p></div><div class=footer-wrap><p class=powerby>ð Powered by 8<a href=https://github.com/2kabhishek/neonote target=_blank rel=noopener>Neonote</a> 9ð</p></div><div class=footer-wrap><a style=text-decoration:none href=# onclick='window.scrollTo({top:0,behavior:"smooth"})'>Go to Top 10</a>| 11<a style=text-decoration:none href=https://2kabhishek.github.io/blog/index.xml target=_blank rel=noopener>RSS Feed</a></div></section>
11<script>document.addEventListener("DOMContentLoaded",function(){const e=document.querySelectorAll("pre code");e.forEach(function(e){const n=e.parentElement,t=document.createElement("button");t.className="copy-btn",t.textContent="Copy",t.setAttribute("aria-label","Copy code to clipboard"),t.addEventListener("click",async function(){try{await navigator.clipboard.writeText(e.textContent),t.textContent="Copied!",t.classList.add("copied"),setTimeout(function(){t.textContent="Copy",t.classList.remove("copied")},2e3)}catch{t.textContent="Failed",setTimeout(function(){t.textContent="Copy"},2e3)}});const s=function(){const e=n.scrollLeft;t.style.transform=`translateX(${e}px)`};n.addEventListener("scroll",s),n.style.position="relative",n.appendChild(t)})})</script>
11</div></body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.