<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Setup | Bas Nijholt</title><link>https://www.nijho.lt/category/setup/</link><atom:link href="https://www.nijho.lt/category/setup/index.xml" rel="self" type="application/rss+xml"/><description>Setup</description><generator>Hugo</generator><language>en-us</language><copyright>© 2026</copyright><lastBuildDate>Thu, 06 Nov 2025 00:00:00 +0000</lastBuildDate><image><url>https://www.nijho.lt/media/icon_hu_408a8f6cef43e327.png</url><title>Setup</title><link>https://www.nijho.lt/category/setup/</link></image><item><title>Two years on the Glove80: a split ergonomic, programmable keyboard as a programmer ⌨️</title><link>https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/</link><pubDate>Thu, 06 Nov 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/glove80-split-ergonomic-keyboard/</guid><description>&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#why-i-switched"&gt;Why I switched&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#split-ergonomic-keyboards-what-makes-them-different"&gt;Split ergonomic keyboards: What makes them different?&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#columnar-layout"&gt;Columnar layout&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#vertical-columnstagger"&gt;Vertical column‑stagger&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#split-halves"&gt;Split halves&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#key-wells"&gt;Key wells&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#thumb-clusters"&gt;Thumb clusters&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#tenting"&gt;Tenting&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#switches"&gt;Switches&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-first-month-comfort-vs-disruption"&gt;The first month: Comfort vs. disruption&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#what-was-frustrating"&gt;What was frustrating&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#practice-tools-that-helped"&gt;Practice tools that helped&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#programmable-features-that-make-a-difference"&gt;Programmable features that make a difference&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#mod-tap-one-key-two-functions"&gt;Mod-tap: One key, two functions&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#sticky-modifiers-tap-instead-of-hold"&gt;Sticky modifiers: Tap instead of hold&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#layers-multiple-keyboards-in-one"&gt;Layers: Multiple keyboards in one&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#the-hyper-key-shortcut"&gt;The &amp;ldquo;hyper&amp;rdquo; key shortcut&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#what-id-tell-my-past-self"&gt;What I&amp;rsquo;d tell my past self&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#where-i-am-now"&gt;Where I am now&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#whats-next"&gt;What&amp;rsquo;s next?&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#community-and-support"&gt;Community and support&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;tl;dr: Switched from a Logitech Ergo K860 to a split, columnar Glove80 (Jan 2024).&#10;Month 1 hurt; ~85 wpm by weeks 4–8 and ~90 now—less strain and programmable wins (mod‑taps, sticky modifiers, layers).&#10;(Measured Nov 2025.)&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="why-i-switched"&gt;Why I switched &lt;a class="anchor" href="#why-i-switched" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;For roughly three years I used the Logitech Ergo K860.&#10;Despite liking it, I kept getting RSI (Repetitive Strain Injury) flare‑ups—pain and discomfort from repetitive typing motions.&#10;~2 years ago I discovered that split ergonomic keyboards were a thing and went down the rabbit hole.&#10;I switched to the Glove80 in January 2024.&#10;Before I bought anything, I started watching videos from the channel &lt;a href="https://www.youtube.com/@ifcodingwerenatural" target="_blank" rel="noopener"&gt;If Coding Were Natural&lt;/a&gt; and from &lt;a href="https://www.youtube.com/@BenVallack" target="_blank" rel="noopener"&gt;Ben Vallack&lt;/a&gt;.&#10;I read many reviews and first‑hand experiences.&#10;The more I watched and read, the more my interest in split ergonomic keyboards grew.&#10;Overwhelmingly, people seemed to praise the &lt;a href="https://www.moergo.com/" target="_blank" rel="noopener"&gt;Glove80&lt;/a&gt; for its comfort, so I decided to try it.&#10;I considered many alternatives like the Moonlander and Ergodox but chose the Glove80 for its lighter switches and curved key wells.&lt;/p&gt;&#10;&lt;p&gt;Before the Glove80, I had flirted with mechanical keyboards because the community is huge and very into them.&#10;Given the nerd that I am, I got nerd‑sniped by the mechanical‑keyboard scene.&#10;I assumed I would be into mechanical keyboards.&#10;In April 2019, I ordered a 60% board, the Anne Pro 2.&#10;After trying it, I returned it because it wasn’t an improvement for me and the reduced ergonomics weren’t worth it compared to the Logitech.&#10;The mechanical switches didn’t really excite me in practice as much as I had expected.&#10;What I actually needed was a split, columnar layout with thumb clusters and programmability.&#10;I didn&amp;rsquo;t know this yet.&lt;/p&gt;&#10;&lt;h2 id="split-ergonomic-keyboards-what-makes-them-different"&gt;Split ergonomic keyboards: What makes them different? &lt;a class="anchor" href="#split-ergonomic-keyboards-what-makes-them-different" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Before diving into my experience, here&amp;rsquo;s what sets these keyboards apart from traditional ones.&lt;/p&gt;&#10;&lt;h3 id="columnar-layout"&gt;Columnar layout &lt;a class="anchor" href="#columnar-layout" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Columns line up under each finger, so most movements are up/down instead of sideways.&#10;Compared to row‑staggered boards, this reduces lateral finger travel and awkward cross‑overs.&#10;Row‑staggered boards offset keys sideways, which encourages lateral travel rather than straight motions.&lt;/p&gt;&#10;&lt;h3 id="vertical-columnstagger"&gt;Vertical column‑stagger &lt;a class="anchor" href="#vertical-columnstagger" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Each column is offset to match finger length, which reduces awkward reaches for ring and pinky fingers and keeps wrists more neutral.&#10;The middle finger column sits higher, the pinky column lower—matching the natural length differences between fingers.&lt;/p&gt;&#10;&lt;h3 id="split-halves"&gt;Split halves &lt;a class="anchor" href="#split-halves" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Two halves let shoulders and wrists stay in a neutral, shoulder‑width posture.&#10;One‑piece boards tend to pull shoulders inward and bend wrists sideways (called ulnar deviation).&#10;With the split, I can position each half independently for my body.&lt;/p&gt;&#10;&lt;h3 id="key-wells"&gt;Key wells &lt;a class="anchor" href="#key-wells" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Curved wells bring keycaps closer to your finger pads along natural arcs, so you extend and lift your fingers less.&#10;Flat boards make you lift and extend fingers more and move farther between rows.&#10;The Glove80&amp;rsquo;s wells are subtle but noticeable after hours of typing.&lt;/p&gt;&#10;&lt;h3 id="thumb-clusters"&gt;Thumb clusters &lt;a class="anchor" href="#thumb-clusters" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Modifiers, Backspace, Enter, and other frequent keys can live under your strongest digits—the thumbs—instead of overloading pinkies.&#10;Big space bars under‑utilize thumbs and push more work to pinkies and corners.&#10;On the Glove80, my thumbs handle multiple keys that would normally require pinky reaches.&lt;/p&gt;&#10;&lt;h3 id="tenting"&gt;Tenting &lt;a class="anchor" href="#tenting" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Tenting means raising one side of the keyboard to adjust the angle.&#10;I tent the halves to a mild angle so my forearms don&amp;rsquo;t have to twist as much (less pronation) and my wrists stay more neutral.&#10;Most standard keyboards cannot tent at all, which forces your palms completely flat and pulls your shoulders inward.&lt;/p&gt;&#10;&lt;h3 id="switches"&gt;Switches &lt;a class="anchor" href="#switches" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;I use Kailh Choc Red Pro switches on my Glove80.&#10;They are linear with a low actuation force, which feels light and comfortable for long typing.&#10;I don&amp;rsquo;t have much experience with other switches, so this is not a comparison—just what works for me.&lt;/p&gt;&#10;&lt;figure id="figure-left-half-of-my-glove80-showing-the-columnar-columns-thumb-cluster-and-mild-tenting"&gt;&lt;img src="https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/glove80-left_hu_bc6b49e7cec10dca.webp" srcset="https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/glove80-left_hu_837731d0947f519f.webp 267w, https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/glove80-left_hu_bc6b49e7cec10dca.webp 507w, https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/glove80-left_hu_bd4285bb8af2fc40.webp 800w" sizes="auto, (max-width: 760px) 100vw, 720px" width="507" height="760" alt="Left half of my Glove80 on the desk" loading="lazy" data-zoomable&gt;&lt;figcaption&gt;Left half of my Glove80 showing the columnar columns, thumb cluster, and mild tenting.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;Taken together, these differences mean less strain and more consistent typing for me than on row‑staggered boards.&lt;/p&gt;&#10;&lt;h2 id="the-first-month-comfort-vs-disruption"&gt;The first month: Comfort vs. disruption &lt;a class="anchor" href="#the-first-month-comfort-vs-disruption" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;After spending a month on the Glove80, I found it much more comfortable than expected.&#10;At the same time, it completely disrupted my typing strategy—what I had learned on a traditional layout didn’t transfer to the columnar layout of the Glove80.&lt;/p&gt;&#10;&lt;h3 id="what-was-frustrating"&gt;What was frustrating &lt;a class="anchor" href="#what-was-frustrating" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;In the first couple of days, my typing speed tanked and it was extremely frustrating.&#10;On the first day, I was at 22 wpm—slower than hunt-and-peck typing.&#10;I was constantly looking at the keyboard, trying to use the right fingers for the right keys.&#10;On a traditional keyboard I had my own strategy—basically three fingers per hand—and I was actually very fast with it.&#10;But that didn&amp;rsquo;t transfer at all to the columnar layout; using the &amp;ldquo;right&amp;rdquo; finger for each column felt natural once learned, but it wasn&amp;rsquo;t native to me at first.&#10;I did not want to give up and kept going despite the massive frustration.&#10;Maybe what kept me going was the sunk‑cost fallacy of $400 (which is mid-range for split ergonomic keyboards, they typically run 200-600 USD).&lt;/p&gt;&#10;&lt;h2 id="practice-tools-that-helped"&gt;Practice tools that helped &lt;a class="anchor" href="#practice-tools-that-helped" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I started with &lt;a href="https://www.keybr.com/" target="_blank" rel="noopener"&gt;Keybr&lt;/a&gt; to learn key‑by‑key.&#10;Once I finished that, I switched to using &lt;a href="https://monkeytype.com/" target="_blank" rel="noopener"&gt;MonkeyType&lt;/a&gt; exclusively.&#10;After 1–2 months I had already reached ~85 wpm (words per minute—average typing speed is 40 wpm, programmers often type 60-80 wpm).&#10;I haven&amp;rsquo;t improved a whole lot since then, but I also haven&amp;rsquo;t done dedicated typing practice.&#10;While writing this post I tried MonkeyType again and I&amp;rsquo;m now ~90 wpm.&lt;/p&gt;&#10;&lt;figure id="figure-my-keybr-progress-during-the-first-4-weeks-starting-at-20-wpm-both-speed-and-accuracy-steadily-improved-over-each-lesson"&gt;&lt;img src="https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/keybr-progress_hu_ce6b7ffe359f8bb0.webp" srcset="https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/keybr-progress_hu_7d861ceda887b016.webp 400w, https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/keybr-progress_hu_ce6b7ffe359f8bb0.webp 760w, https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/keybr-progress_hu_6c3cec7aa5118231.webp 1200w" sizes="auto, (max-width: 760px) 100vw, 720px" width="760" height="415" alt="Keybr progress graph showing typing speed and accuracy improvement" loading="lazy" data-zoomable&gt;&lt;figcaption&gt;My Keybr progress during the first 4 weeks: starting at ~20 wpm, both speed and accuracy steadily improved over each lesson.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;Beyond the tools, a few things helped with the transition:&#10;the Glove80&amp;rsquo;s columnar layout actually forces you to use the correct finger for each column—using the wrong finger feels completely unnatural and awkward, so I had to abandon my old three-finger strategy.&#10;I also had to accept the short-term speed dip while accuracy improved, and adding slight tenting helped keep my wrists more neutral.&lt;/p&gt;&#10;&lt;p&gt;Today, it feels completely natural for me to type on this keyboard.&lt;/p&gt;&#10;&lt;h2 id="programmable-features-that-make-a-difference"&gt;Programmable features that make a difference &lt;a class="anchor" href="#programmable-features-that-make-a-difference" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;These keyboards let you program behaviors that eliminate awkward reaches and repetitive strain.&#10;Here&amp;rsquo;s what I actually use:&lt;/p&gt;&#10;&lt;h3 id="mod-tap-one-key-two-functions"&gt;Mod-tap: One key, two functions &lt;a class="anchor" href="#mod-tap-one-key-two-functions" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Keys do different things based on tap vs. hold.&#10;All my symbols work this way:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Tap &lt;code&gt;1&lt;/code&gt; = &amp;ldquo;1&amp;rdquo;, hold for ~200ms = &amp;ldquo;!&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;Tap &lt;code&gt;,&lt;/code&gt; = &amp;ldquo;,&amp;rdquo;, hold = &amp;ldquo;&amp;lt;&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;Tap &lt;code&gt;.&lt;/code&gt; = &amp;ldquo;.&amp;rdquo;, hold = &amp;ldquo;&amp;gt;&amp;rdquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This keeps everything on the home row without reaching to a symbols row.&lt;/p&gt;&#10;&lt;h3 id="sticky-modifiers-tap-instead-of-hold"&gt;Sticky modifiers: Tap instead of hold &lt;a class="anchor" href="#sticky-modifiers-tap-instead-of-hold" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;All my modifiers are &amp;ldquo;sticky&amp;rdquo;—tap them once and they latch for the next key:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Tap &lt;code&gt;Command&lt;/code&gt; + &lt;code&gt;Shift&lt;/code&gt;, then tap &lt;code&gt;T&lt;/code&gt; = reopens last tab&lt;/li&gt;&#10;&lt;li&gt;No more finger gymnastics holding three keys at once&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;With a single thumb movement on my left hand, I can reopen a tab quickly.&lt;/p&gt;&#10;&lt;h3 id="layers-multiple-keyboards-in-one"&gt;Layers: Multiple keyboards in one &lt;a class="anchor" href="#layers-multiple-keyboards-in-one" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Multiple virtual keymaps on one keyboard.&#10;You can momentarily switch or toggle to a layer to get different keys under the same physical switches.&#10;Common patterns include a symbols layer, a navigation layer, and a numbers/function layer—all reachable from home row.&lt;/p&gt;&#10;&lt;figure id="figure-one-of-my-layers-digits-act-as-modtaps-for-symbols-and-common-modifiers-live-under-the-thumbs"&gt;&lt;img src="https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/layout-layer-1_hu_d7cc455a5cbab8a5.webp" srcset="https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/layout-layer-1_hu_d31d10a3d9920b1f.webp 400w, https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/layout-layer-1_hu_d7cc455a5cbab8a5.webp 760w, https://www.nijho.lt/post/glove80-split-ergonomic-keyboard/layout-layer-1_hu_97691c8ef86e3a18.webp 1200w" sizes="auto, (max-width: 760px) 100vw, 720px" width="760" height="381" alt="Glove80 layer: symbols and numbers via mod‑taps with sticky modifiers under the thumbs" loading="lazy" data-zoomable&gt;&lt;figcaption&gt;One of my layers: digits act as mod‑taps for symbols, and common modifiers live under the thumbs.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;h3 id="the-hyper-key-shortcut"&gt;The &amp;ldquo;hyper&amp;rdquo; key shortcut &lt;a class="anchor" href="#the-hyper-key-shortcut" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;If I hold the &lt;code&gt;Home&lt;/code&gt; key, it acts as if I&amp;rsquo;m pressing &lt;code&gt;Ctrl&lt;/code&gt; + &lt;code&gt;Alt&lt;/code&gt; + &lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;Command&lt;/code&gt; simultaneously (the &amp;ldquo;hyper&amp;rdquo; key I mentioned earlier).&#10;Since few apps use that combo by default, I map it to custom commands:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;Home&lt;/code&gt; + &lt;code&gt;T&lt;/code&gt; → open Terminal&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Home&lt;/code&gt; + &lt;code&gt;B&lt;/code&gt; → open Browser&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Home&lt;/code&gt; + &lt;code&gt;C&lt;/code&gt; → open Calendar&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Home&lt;/code&gt; + &lt;code&gt;S&lt;/code&gt; → open Slack&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This hyper key setup enabled my keyboard-first workflow across macOS (using &lt;a href="https://github.com/basnijholt/dotfiles/tree/main/configs/keyboard-maestro" target="_blank" rel="noopener"&gt;Keyboard Maestro&lt;/a&gt;) and Linux (using &lt;a href="https://github.com/basnijholt/dotfiles/tree/main/configs/hypr" target="_blank" rel="noopener"&gt;Hyprland&lt;/a&gt;).&#10;The same muscle memory works across both systems, relieving me from tapping Command+Tab like a mad person.&lt;/p&gt;&#10;&lt;details&gt;&#10; &lt;summary&gt;More programmable tricks I use (details)&lt;/summary&gt;&#10; &lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Double‑tap &lt;code&gt;Shift&lt;/code&gt; → emulate mouse behavior on keyboard&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A quick double‑tap of &lt;code&gt;Shift&lt;/code&gt; toggles my mouse behavior layer so I can move/scroll/click without leaving the home row.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Double‑tap &lt;code&gt;Command&lt;/code&gt; → macOS‑style word navigation on Linux&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;I use this to mirror macOS word‑jump behavior in Linux editors/terminals, so &lt;code&gt;⌘&lt;/code&gt; + arrows behaves the same everywhere.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Combos for common keys&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;E&lt;/code&gt; + &lt;code&gt;D&lt;/code&gt; → &lt;code&gt;Enter&lt;/code&gt;; &lt;code&gt;R&lt;/code&gt; + &lt;code&gt;F&lt;/code&gt; → &lt;code&gt;Space&lt;/code&gt;.&#10;This lets me press Enter and Space with my left hand while my right hand is on the mouse, since those keys sit on the right side on many layouts.&#10;I also keep most app‑switch launchers on the left side so my left hand can trigger them while my right hand stays on the mouse.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Shift + Backspace → Delete&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Backspace morphs into Delete when Shift is held—handy on macOS/Linux.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Tap dance to momentary vs. toggle a layer&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Single tap for a momentary “Lower,” double tap to lock it on; keeps symbols/nav nearby without mode churn.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Mouse keys with speed profiles&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Separate slow/fast/warp cursor and scroll speeds for precision vs. movement.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Delete to start/end of line&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;One chord deletes left to line start; another deletes right to line end—great for editors.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Tuning for fewer misfires&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Tap‑preferred hold‑taps and a ~200–220 ms tapping term match my timing.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;p&gt;None of this requires you to become a firmware expert on day one.&#10;Even a couple of well‑chosen mod‑taps, one sticky key, and a single &amp;ldquo;symbols + navigation&amp;rdquo; layer can remove a lot of awkward reaches.&lt;/p&gt;&#10;&lt;h2 id="what-id-tell-my-past-self"&gt;What I&amp;rsquo;d tell my past self &lt;a class="anchor" href="#what-id-tell-my-past-self" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Expect an initial drop in speed; it&amp;rsquo;s normal.&lt;/li&gt;&#10;&lt;li&gt;Columnar layouts reward correct finger usage; looking down at first is fine.&lt;/li&gt;&#10;&lt;li&gt;Start simple: one or two mod‑taps, one sticky modifier, one extra layer.&lt;/li&gt;&#10;&lt;li&gt;Practice compounds. MonkeyType and Keybr were enough for me.&lt;/li&gt;&#10;&lt;li&gt;Don&amp;rsquo;t let sunk‑cost thinking scare you into quitting, but also don&amp;rsquo;t over‑engineer your layout on day one.&lt;/li&gt;&#10;&lt;li&gt;You won&amp;rsquo;t lose the ability to type on normal keyboards. When I type on my laptop&amp;rsquo;s built‑in keyboard, I just use my original three-finger strategy and have no issues. It&amp;rsquo;s like developing two different muscle memories based on the keyboard.&lt;/li&gt;&#10;&lt;li&gt;Gaming consideration: WASD sits off the natural columns on a columnar split. I briefly tried a shooter and it felt awkward—unless you&amp;rsquo;re willing to reprogram and relearn gaming muscle memory, FPS games don&amp;rsquo;t work well. I only played Factorio on it, which worked fine.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="where-i-am-now"&gt;Where I am now &lt;a class="anchor" href="#where-i-am-now" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;As of November 2025, I’m ~90 wpm, and it feels completely natural to type on the Glove80.&#10;I reached 85 wpm within 1–2 months and have mostly stayed in that range since, with a small bump recently.&#10;The comfort gains are real, and the programmability (mod‑tap, sticky keys, and layers) turned out to be as exciting in practice as it sounded when I first discovered it.&#10;Was the $400 worth it?&#10;Absolutely!&#10;I probably spent many thousands of hours on it so far, so amortizing it over its lifetime, it&amp;rsquo;s well worth it for me.&#10;Plus it makes me feel like a leet hacker.&lt;/p&gt;&#10;&lt;p&gt;My current Glove80 layout: &lt;a href="https://my.glove80.com/#/layout/user/c5342d66-e6ed-4d04-9ae0-2dfc9cd87930" target="_blank" rel="noopener"&gt;view it here&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="whats-next"&gt;What&amp;rsquo;s next? &lt;a class="anchor" href="#whats-next" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The Glove80 perfectly meets my needs—I have no practical reason to switch.&#10;But the nerd inside me is curious about other options in the split keyboard ecosystem.&#10;The &lt;a href="https://github.com/foostan/crkbd" target="_blank" rel="noopener"&gt;Corne&lt;/a&gt;, &lt;a href="https://svalboard.com/" target="_blank" rel="noopener"&gt;Svalboard&lt;/a&gt;, and &lt;a href="https://cyboard.digital/" target="_blank" rel="noopener"&gt;Cyboard Imprint&lt;/a&gt; all take quite different approaches and seem interesting to explore.&#10;Whether I&amp;rsquo;ll actually try them or stick with what works is an open question—sometimes the best keyboard is the one you&amp;rsquo;ve already mastered.&lt;/p&gt;&#10;&lt;h2 id="community-and-support"&gt;Community and support &lt;a class="anchor" href="#community-and-support" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The MoErgo Glove80 community is extremely welcoming.&#10;Stephen, the designer, is very active and responsive—when I requested a small feature for the &lt;a href="https://my.glove80.com/" target="_blank" rel="noopener"&gt;layout editor&lt;/a&gt;, it went live within a day.&lt;/p&gt;&#10;</description></item><item><title>Open-sourcing my dotfiles: a practical, cross-platform terminal setup 🏠</title><link>https://www.nijho.lt/post/dotfiles/</link><pubDate>Sat, 05 Apr 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/dotfiles/</guid><description>&lt;h2 id="introduction"&gt;Introduction &lt;a class="anchor" href="#introduction" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Many of us spend a significant amount of time in the terminal.&#10;Over the years, I&amp;rsquo;ve found that investing in a well-organized and consistent command-line environment pays dividends in productivity and, frankly, makes the daily grind more enjoyable.&#10;After refining my personal setup across more than 10 different machines – ranging from my primary MacBooks to Linux servers (x86/ARM), Raspberry Pis in my &lt;a href="https://www.nijho.lt/post/homelab/"&gt;homelab&lt;/a&gt;, cloud VMs, and even my iPhone via iSH – I&amp;rsquo;ve decided it&amp;rsquo;s time to share it publicly.&#10;The need for a consistent experience across such diverse hardware and operating systems was a major driving force behind this setup&amp;rsquo;s evolution.&lt;/p&gt;&#10;&lt;p&gt;Today, I&amp;rsquo;m open sourcing my complete &lt;a href="https://github.com/basnijholt/dotfiles" target="_blank" rel="noopener"&gt;dotfiles repository&lt;/a&gt; 🎉.&#10;This isn&amp;rsquo;t about presenting a &amp;ldquo;perfect&amp;rdquo; solution, but rather sharing a practical system that has evolved to handle real-world needs like cross-platform consistency, easy setup on new machines, and integrating modern CLI tools effectively.&#10;If you&amp;rsquo;re looking for ideas to streamline your own terminal workflow, I hope you find something useful here.&lt;/p&gt;&#10;&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#introduction"&gt;Introduction&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#why-open-source-now"&gt;Why Open Source Now?&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#core-ideas--highlights"&gt;Core Ideas &amp;amp; Highlights&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#1-cross-platform--shell-agnostic"&gt;1. Cross-Platform &amp;amp; Shell Agnostic&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-modularity-for-sanity"&gt;2. Modularity for Sanity&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-automation-via-dotbot"&gt;3. Automation via Dotbot&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-hassle-free-cli-tools-with-dotbins"&gt;4. Hassle-Free CLI Tools with &lt;code&gt;dotbins&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-sensible-ssh-key-management"&gt;5. Sensible SSH Key Management&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6-macos-declarative-setup-with-nix-darwin"&gt;6. (macOS) Declarative Setup with Nix-Darwin&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#a-note-on-alternatives--design-choices"&gt;A Note on Alternatives &amp;amp; Design Choices&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#a-look-inside-structure"&gt;A Look Inside: Structure&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#getting-started"&gt;Getting Started&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#a-note-on-secrets"&gt;A Note on Secrets&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="why-open-source-now"&gt;Why Open Source Now? &lt;a class="anchor" href="#why-open-source-now" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I have maintained my dotfiles for many years in a private repository.&#10;Sharing this setup feels like a natural step for a few reasons:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Sharing Solutions:&lt;/strong&gt; This setup incorporates solutions to problems I&amp;rsquo;ve wrestled with, like managing binaries without &lt;code&gt;sudo&lt;/code&gt; (leading to my &lt;a href="https://github.com/basnijholt/dotbins" target="_blank" rel="noopener"&gt;&lt;code&gt;dotbins&lt;/code&gt;&lt;/a&gt; tool), achieving &lt;a href="https://www.nijho.lt/post/ssh-1password-funtoo-keychain/"&gt;consistent SSH agent behavior&lt;/a&gt;, or getting Python environments to activate seamlessly with &lt;a href="https://direnv.net/" target="_blank" rel="noopener"&gt;direnv&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Giving Back:&lt;/strong&gt; I&amp;rsquo;ve learned a lot from countless other dotfiles repos and articles shared by the community. It feels right to contribute my own approach.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Transparency &amp;amp; Learning:&lt;/strong&gt; Open sourcing allows others to see how different pieces fit together and perhaps adapt ideas for their own configurations.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;However, the driving force was the recent creation of my &lt;a href="https://www.nijho.lt/post/dotbins/"&gt;&lt;code&gt;dotbins&lt;/code&gt; tool&lt;/a&gt; and honestly, I just want to share &amp;ldquo;my way&amp;rdquo; of doing things.&lt;/p&gt;&#10;&lt;h2 id="core-ideas--highlights"&gt;Core Ideas &amp;amp; Highlights &lt;a class="anchor" href="#core-ideas--highlights" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My setup is built around a few key principles aimed at practicality and efficiency:&lt;/p&gt;&#10;&lt;h3 id="1-cross-platform--shell-agnostic"&gt;1. Cross-Platform &amp;amp; Shell Agnostic &lt;a class="anchor" href="#1-cross-platform--shell-agnostic" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;It&amp;rsquo;s designed to work reliably on macOS (&lt;code&gt;aarch64&lt;/code&gt;) and various Linux distros (&lt;code&gt;x86_64&lt;/code&gt;, &lt;code&gt;aarch64&lt;/code&gt;).&#10;While Zsh is my preference (leveraging &lt;a href="https://ohmyz.sh/" target="_blank" rel="noopener"&gt;Oh-My-Zsh&lt;/a&gt;), the core configurations in &lt;code&gt;configs/shell/&lt;/code&gt; are sourced by both &lt;code&gt;.zshrc&lt;/code&gt; and &lt;code&gt;.bash_profile&lt;/code&gt;, ensuring basic compatibility.&lt;/p&gt;&#10;&lt;h3 id="2-modularity-for-sanity"&gt;2. Modularity for Sanity &lt;a class="anchor" href="#2-modularity-for-sanity" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Instead of one giant config file, the shell setup is broken down logically:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;configs/shell/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 00_prefer_zsh.sh &lt;span class="c1"&gt;# Switches Bash users to Zsh if available&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 10_aliases.sh &lt;span class="c1"&gt;# Common aliases&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 20_exports.sh &lt;span class="c1"&gt;# Environment variables&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 30_misc.sh &lt;span class="c1"&gt;# Dotbins init, secrets sourcing&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 40_keychain.sh &lt;span class="c1"&gt;# SSH agent setup (Keychain/1Password)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 50_python.sh &lt;span class="c1"&gt;# Python env helpers (conda, uv, direnv)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ... and others for Zsh specifics, SLURM, etc.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── main.sh &lt;span class="c1"&gt;# Sources the relevant files above&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This makes it much easier to understand, maintain, and debug specific parts of the configuration. My actual &lt;code&gt;.zshrc&lt;/code&gt; and &lt;code&gt;.bash_profile&lt;/code&gt; just source &lt;code&gt;main.sh&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h3 id="3-automation-via-dotbot"&gt;3. Automation via Dotbot &lt;a class="anchor" href="#3-automation-via-dotbot" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;The setup does not require &lt;code&gt;sudo&lt;/code&gt; access, and the installation process is entirely in the user&amp;rsquo;s home directory!&lt;/div&gt;&lt;/aside&gt;&#10;&lt;p&gt;A core goal here is a true &lt;a href="https://github.com/basnijholt/dotfiles/blob/main/install" target="_blank" rel="noopener"&gt;&lt;code&gt;./install&lt;/code&gt;&lt;/a&gt; and done setup.&#10;&lt;a href="https://github.com/anishathalye/dotbot" target="_blank" rel="noopener"&gt;Dotbot&lt;/a&gt; is key to this automation.&#10;Setting up a new machine or syncing changes is streamlined using this tool.&#10;The &lt;a href="https://github.com/basnijholt/dotfiles/blob/main/install.conf.yaml" target="_blank" rel="noopener"&gt;&lt;code&gt;install.conf.yaml&lt;/code&gt;&lt;/a&gt; file defines which config files get symlinked where, &lt;em&gt;and&lt;/em&gt; runs initial setup commands.&#10;This includes updating submodules and, importantly, using &lt;code&gt;uv tool install&lt;/code&gt; to install a curated list of essential Python CLI tools (&lt;code&gt;ruff&lt;/code&gt;, &lt;code&gt;pre-commit&lt;/code&gt;, &lt;code&gt;dotbins&lt;/code&gt; itself, etc.) globally, ensuring they&amp;rsquo;re immediately available after installation.&#10;For remote machines, &lt;a href="https://github.com/basnijholt/dotfiles/blob/main/scripts/sync-dotfiles.sh" target="_blank" rel="noopener"&gt;&lt;code&gt;scripts/sync-dotfiles.sh&lt;/code&gt;&lt;/a&gt; handles pulling updates and optionally re-running the install.&lt;/p&gt;&#10;&lt;h3 id="4-hassle-free-cli-tools-with-dotbins"&gt;4. Hassle-Free CLI Tools with &lt;code&gt;dotbins&lt;/code&gt; &lt;a class="anchor" href="#4-hassle-free-cli-tools-with-dotbins" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Modern CLI tools are fantastic, but installing them everywhere, especially without &lt;code&gt;sudo&lt;/code&gt;, can be a pain.&#10;I built &lt;a href="https://github.com/basnijholt/dotbins" target="_blank" rel="noopener"&gt;&lt;code&gt;dotbins&lt;/code&gt;&lt;/a&gt; to solve this.&#10;It downloads pre-compiled binaries for specified tools directly from GitHub releases, organizing them by platform/architecture.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Snippet from ~/.dotbins/dotbins.yaml&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;delta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;dandavison/delta&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Git diff tool&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;eza&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;eza-community/eza&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Modern &amp;#39;ls&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;zoxide&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ajeetdsouza/zoxide&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Smarter &amp;#39;cd&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;starship&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;starship/starship&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Shell prompt&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;atuin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;atuinsh/atuin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Shell history sync&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# ... plus tools with shell integration code&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The shell setup automatically adds the correct binary path and runs any needed initialization.&#10;More details in my &lt;a href="https://www.nijho.lt/post/dotbins/"&gt;&lt;code&gt;dotbins&lt;/code&gt; post&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="5-sensible-ssh-key-management"&gt;5. Sensible SSH Key Management &lt;a class="anchor" href="#5-sensible-ssh-key-management" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Using &lt;a href="https://www.funtoo.org/Funtoo:Keychain" target="_blank" rel="noopener"&gt;Funtoo Keychain&lt;/a&gt;, often integrated with the 1Password CLI for passphrase retrieval, means I typically only deal with my SSH key passphrase once per login session.&#10;This setup is detailed &lt;a href="https://www.nijho.lt/post/ssh-1password-funtoo-keychain/"&gt;here&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="6-macos-declarative-setup-with-nix-darwin"&gt;6. (macOS) Declarative Setup with Nix-Darwin &lt;a class="anchor" href="#6-macos-declarative-setup-with-nix-darwin" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;On my Macs, I use &lt;a href="https://github.com/LnL7/nix-darwin" target="_blank" rel="noopener"&gt;Nix-Darwin&lt;/a&gt; to manage system settings and even Homebrew packages declaratively (&lt;code&gt;configs/nix-darwin/&lt;/code&gt;).&#10;Running &lt;code&gt;nixswitch&lt;/code&gt; applies the entire configuration, making macOS setups highly reproducible.&lt;/p&gt;&#10;&lt;h2 id="a-note-on-alternatives--design-choices"&gt;A Note on Alternatives &amp;amp; Design Choices &lt;a class="anchor" href="#a-note-on-alternatives--design-choices" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;You might wonder why I haven&amp;rsquo;t adopted certain popular tools or approaches. Here&amp;rsquo;s some rationale behind the choices made in this setup:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Why not &lt;code&gt;fish&lt;/code&gt; shell?&lt;/strong&gt; While &lt;code&gt;fish&lt;/code&gt; offers many appealing modern features (and &lt;a href="https://fishshell.com/blog/rustport/" target="_blank" rel="noopener"&gt;its Rust rewrite is intriguing&lt;/a&gt;!), a core requirement for my setup is broad compatibility. I need my core shell environment to function reliably even on minimal Linux systems (servers, containers, HPC nodes) where &lt;code&gt;bash&lt;/code&gt; is often the only guarantee. For this reason, I use &lt;code&gt;zsh&lt;/code&gt; as a powerful, yet largely POSIX-compatible, middle ground that works well across my diverse environments without requiring a non-standard shell installation everywhere.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Why iTerm2 on macOS?&lt;/strong&gt; I&amp;rsquo;ve experimented with newer terminals like WezTerm, Ghostty, Kitty, and Alacritty. Many offer benefits like impressive speed and GPU rendering. However, I consistently return to &lt;a href="https://iterm2.com/" target="_blank" rel="noopener"&gt;iTerm2&lt;/a&gt;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Criticisms &amp;amp; Rebuttals:&lt;/strong&gt; iTerm2 is often criticized for being &amp;ldquo;bloated&amp;rdquo; or &amp;ldquo;slow,&amp;rdquo; and historically, its settings weren&amp;rsquo;t easily version controllable. Frankly, on modern hardware, any perceived slowness is negligible for my use cases. More importantly, iTerm2 &lt;em&gt;does&lt;/em&gt; allow its profiles to be saved as JSON (see &lt;a href="https://github.com/basnijholt/dotfiles/blob/main/configs/iterm/Profiles.json" target="_blank" rel="noopener"&gt;my &lt;code&gt;Profiles.json&lt;/code&gt;&lt;/a&gt; in this repo), making the configuration easily version controlled via dotfiles.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;The Killer Feature:&lt;/strong&gt; The primary reason I stick with iTerm2 is its robust &lt;strong&gt;Semantic History&lt;/strong&gt; feature. The ability to Cmd-Click URLs/filenames in terminal output – even complex ones with line numbers like &lt;code&gt;src/my_module/file.py:123&lt;/code&gt; – and have them open directly in VS Code at the correct line is indispensable for my debugging and development workflow. I haven&amp;rsquo;t found this replicated with the same reliability and ease of configuration elsewhere.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Other Features:&lt;/strong&gt; I also like simple features selecting text and (without &lt;code&gt;⌘+C&lt;/code&gt;!) pasting it right back into the terminal, and the window and tab management features.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Ghostty Example:&lt;/strong&gt; I recently tried Ghostty and liked many aspects, but quickly ran into limitations that highlighted my reliance on iTerm2 features, such as the lack of built-in text search, scrollbars, and crucially, the clickable file paths with line numbers (&lt;a href="https://bsky.app/profile/basnijholt.bsky.social/post/3lehtwv2pxc2j" target="_blank" rel="noopener"&gt;as discussed here&lt;/a&gt;).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Why Dotbot/Git over &lt;code&gt;chezmoi&lt;/code&gt;?&lt;/strong&gt; &lt;a href="https://www.chezmoi.io/" target="_blank" rel="noopener"&gt;Chezmoi&lt;/a&gt; is a very popular and powerful dotfiles manager, often praised for its templating and management features. However, I prefer the directness of using &lt;code&gt;git&lt;/code&gt; for version control and Dotbot for simple symlinking. My setup &lt;em&gt;is&lt;/em&gt; the Git repository, which feels intuitive. Crucially, I rely heavily on &lt;strong&gt;Git submodules&lt;/strong&gt; (perhaps Git&amp;rsquo;s least loved feature 🤔) to manage external tools and plugins directly within my dotfiles repo. This submodule-centric approach integrates seamlessly with a standard Git workflow, which made Dotbot a more natural fit for me than chezmoi&amp;rsquo;s model.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;No &lt;code&gt;sudo&lt;/code&gt; Required:&lt;/strong&gt; A key design principle is that the installation process via &lt;code&gt;./install&lt;/code&gt; (Dotbot symlinking, &lt;code&gt;uv tool install&lt;/code&gt;, &lt;code&gt;dotbins&lt;/code&gt; fetching binaries) operates &lt;em&gt;entirely within the user&amp;rsquo;s home directory&lt;/em&gt;. No &lt;code&gt;sudo&lt;/code&gt; access is needed to get the core environment up and running. This makes the setup viable in restricted environments like HPC clusters, shared servers, or locked-down corporate machines where admin rights aren&amp;rsquo;t available.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="a-look-inside-structure"&gt;A Look Inside: Structure &lt;a class="anchor" href="#a-look-inside-structure" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The repository is organized to keep things separated logically:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── configs/ &lt;span class="c1"&gt;# Configs (atuin, bash, git, nix, shell, zsh...)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── install &lt;span class="c1"&gt;# Main installation script (runs dotbot)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── install.conf.yaml &lt;span class="c1"&gt;# Dotbot: Links configs, runs setup commands&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── scripts/ &lt;span class="c1"&gt;# Utility scripts (syncing, backups, helpers)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── submodules/ &lt;span class="c1"&gt;# External tools managed as submodules (dotbot, dotbins, plugins...)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── README.md &lt;span class="c1"&gt;# Detailed overview&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="getting-started"&gt;Getting Started &lt;a class="anchor" href="#getting-started" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;If you want to try this setup or adapt parts of it:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; &lt;code&gt;git&lt;/code&gt; is essential. SSH access to GitHub is needed if you fork and want to manage the private &lt;code&gt;secrets&lt;/code&gt; submodule or other private submodules.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Clone:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Clone recursively to get submodules&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone --recurse-submodules -j8 git@github.com:basnijholt/dotfiles.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; dotfiles&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Install:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./install&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This single command runs Dotbot, which handles creating configuration symlinks, updating Git submodules, &lt;em&gt;and&lt;/em&gt; installing numerous Python tools via &lt;code&gt;uv&lt;/code&gt; (as defined in &lt;code&gt;install.conf.yaml&lt;/code&gt;).&#10;Combined with &lt;code&gt;dotbins&lt;/code&gt; automatically fetching other pre-compiled binaries, your environment should be remarkably complete after this step.&#10;Restart your shell after it finishes.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;⚠️ Important: Customize!&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Fork the repository first!&lt;/strong&gt; Don&amp;rsquo;t use my configuration directly, especially &lt;code&gt;configs/git/gitconfig&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;Update &lt;code&gt;configs/git/gitconfig&lt;/code&gt; with &lt;em&gt;your&lt;/em&gt; name and email.&lt;/li&gt;&#10;&lt;li&gt;Review &lt;code&gt;install.conf.yaml&lt;/code&gt; – remove links or shell commands you don&amp;rsquo;t need. You can see the full list of Python tools installed via &lt;code&gt;uv&lt;/code&gt; &lt;a href="https://github.com/basnijholt/dotfiles/blob/main/install.conf.yaml" target="_blank" rel="noopener"&gt;here&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;Modify &lt;code&gt;configs/shell/&lt;/code&gt; files to suit your workflow.&lt;/li&gt;&#10;&lt;li&gt;Adjust the &lt;code&gt;dotbins&lt;/code&gt; configuration (&lt;code&gt;submodules/dotbins/dotbins.yaml&lt;/code&gt;) to include &lt;em&gt;your&lt;/em&gt; favorite tools.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="a-note-on-secrets"&gt;A Note on Secrets &lt;a class="anchor" href="#a-note-on-secrets" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Sensitive information (API keys, etc.) is &lt;em&gt;not&lt;/em&gt; stored directly in the public repository.&#10;I use a private Git repository included as a submodule (&lt;code&gt;secrets/&lt;/code&gt;).&#10;This requires SSH authentication.&#10;Within that private repo, I use &lt;code&gt;gpg&lt;/code&gt; and &lt;a href="https://github.com/sobolevn/git-secret" target="_blank" rel="noopener"&gt;git-secret&lt;/a&gt; to encrypt sensitive files, adding another layer of security.&#10;You&amp;rsquo;ll need your own strategy for managing secrets, whether it&amp;rsquo;s a similar private repo, environment variables, or a dedicated secrets manager.&lt;/p&gt;&#10;&lt;h2 id="conclusion"&gt;Conclusion &lt;a class="anchor" href="#conclusion" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This dotfiles setup represents my ongoing effort to build a productive, consistent, and enjoyable terminal environment across a diverse range of machines – from personal laptops to &lt;a href="https://www.nijho.lt/post/homelab/"&gt;homelab servers&lt;/a&gt; and cloud instances.&#10;It solves real problems I&amp;rsquo;ve encountered in maintaining that consistency.&#10;By sharing it, I hope to offer some practical ideas and perhaps save others some time in crafting their own ideal setup.&lt;/p&gt;&#10;&lt;p&gt;Feel free to explore the &lt;a href="https://github.com/basnijholt/dotfiles" target="_blank" rel="noopener"&gt;repository&lt;/a&gt;, borrow what you find useful, and adapt it to your needs.&#10;If you find it helpful, consider giving it a star!&#10;If you have suggestions or find issues, contributions are welcome!&lt;/p&gt;&#10;&lt;p&gt;Happy terminal tinkering!&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;&lt;strong&gt;Further Reading &amp;amp; Links:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/basnijholt/dotfiles" target="_blank" rel="noopener"&gt;My Dotfiles Repository on GitHub&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Blog Post: &lt;a href="https://www.nijho.lt/post/homelab/"&gt;My Homelab Setup&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Blog Post: &lt;a href="https://www.nijho.lt/post/terminal-ninja/"&gt;Be a Ninja in the Terminal 🥷&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Blog Post: &lt;a href="https://www.nijho.lt/post/dotbins/"&gt;dotbins: Managing Binary Tools in Your Dotfiles 🧰&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Blog Post: &lt;a href="https://www.nijho.lt/post/ssh-1password-funtoo-keychain/"&gt;Combining Keychain and 1Password CLI for SSH Agent Management&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/anishathalye/dotbot" target="_blank" rel="noopener"&gt;Dotbot&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/basnijholt/dotbins" target="_blank" rel="noopener"&gt;Dotbins&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/sobolevn/git-secret" target="_blank" rel="noopener"&gt;Git Secret&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://iterm2.com/" target="_blank" rel="noopener"&gt;iTerm2&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>Combining Keychain and 1Password CLI for ssh-agent management</title><link>https://www.nijho.lt/post/ssh-1password-funtoo-keychain/</link><pubDate>Sun, 30 Mar 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/ssh-1password-funtoo-keychain/</guid><description>&lt;h2 id="combining-keychain-and-1password-cli-for-ssh-agent-management"&gt;Combining Keychain and 1Password CLI for SSH Agent Management &lt;a class="anchor" href="#combining-keychain-and-1password-cli-for-ssh-agent-management" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;For about a decade, I&amp;rsquo;ve relied on two key tools in my development workflow: &lt;a href="https://www.funtoo.org/Funtoo:Keychain" target="_blank" rel="noopener"&gt;Funtoo Keychain&lt;/a&gt; for managing my &lt;code&gt;ssh-agent&lt;/code&gt; and 1Password for securely storing secrets.&#10;While I used them extensively, I never actually integrated them directly for SSH key passphrase handling.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;I wrote about Keychain before in &lt;a href="../terminal-ninja/#-keychain-ssh-key-management-made-simple"&gt;this post&lt;/a&gt;.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;p&gt;Recently, with the advent of &lt;a href="https://developer.1password.com/docs/ssh/get-started/" target="_blank" rel="noopener"&gt;1Password&amp;rsquo;s built-in SSH agent&lt;/a&gt;, I gave it a try, attracted by the promise of managing keys directly within my vault.&#10;However, I quickly found myself frequently prompted for my master password or biometrics, which interrupted my flow more often than I preferred compared to Keychain&amp;rsquo;s persistence.&lt;/p&gt;&#10;&lt;p&gt;This led me back to the reliable &amp;ldquo;unlock once per session&amp;rdquo; behavior of Keychain.&#10;But the experience using the 1Password Command-Line Interface (&lt;code&gt;op&lt;/code&gt;) during that time sparked an idea: could I combine the persistence of Keychain with the secure passphrase retrieval of the &lt;code&gt;op&lt;/code&gt; CLI?&#10;The answer is yes, and this post outlines the setup that achieves that balance.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The Goal:&lt;/strong&gt; Use 1Password as the secure vault for the SSH key passphrase but rely on &lt;code&gt;keychain&lt;/code&gt; to manage the &lt;code&gt;ssh-agent&lt;/code&gt; process and ensure the key, once unlocked, remains available for the entire login session without further prompts from 1Password.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;Requires 1Password CLI (&lt;code&gt;op&lt;/code&gt;) and Funtoo Keychain installed.&#10;This post assumes you &lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#generating-a-new-ssh-key" target="_blank" rel="noopener"&gt;have a working SSH key&lt;/a&gt; and a &lt;a href="https://developer.1password.com/docs/cli/get-started/" target="_blank" rel="noopener"&gt;1Password with the CLI installed and authenticated&lt;/a&gt;.&#10;Run &lt;code&gt;brew install --cask 1password-cli&lt;/code&gt; and &lt;code&gt;brew install keychain&lt;/code&gt; to install them.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;p&gt;&lt;strong&gt;Why This Approach?&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;This setup directly addresses the trade-off I encountered.&#10;Funtoo &lt;code&gt;keychain&lt;/code&gt; excels at starting &lt;code&gt;ssh-agent&lt;/code&gt; reliably on login and keeping keys available throughout a session with just one initial unlock.&#10;While the native 1Password agent is convenient for vault integration, its session management, in my experience, led to more frequent authentication prompts than desired for long-running sessions.&lt;/p&gt;&#10;&lt;p&gt;By using &lt;code&gt;keychain&lt;/code&gt; for agent management and calling the &lt;code&gt;op&lt;/code&gt; CLI via the standard &lt;code&gt;SSH_ASKPASS&lt;/code&gt; mechanism &lt;em&gt;only&lt;/em&gt; for the initial key load, we get the best of both worlds: 1Password&amp;rsquo;s secure storage for the passphrase and Keychain&amp;rsquo;s persistent agent access with minimal prompting after the first unlock.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The Components:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Funtoo &lt;code&gt;keychain&lt;/code&gt;:&lt;/strong&gt; Manages &lt;code&gt;ssh-agent&lt;/code&gt; lifecycle and loads specified keys.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;1Password CLI (&lt;code&gt;op&lt;/code&gt;):&lt;/strong&gt; Securely retrieves secrets (the passphrase) from your 1Password vault. Requires &lt;code&gt;op&lt;/code&gt; to be installed and logged in.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;askpass-1password.sh&lt;/code&gt;:&lt;/strong&gt; A small helper script that &lt;code&gt;ssh-add&lt;/code&gt; (via &lt;code&gt;keychain&lt;/code&gt;) calls to get the passphrase. This script invokes &lt;code&gt;op&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;setup_ssh_agent.sh&lt;/code&gt;:&lt;/strong&gt; A script sourced by your shell startup file (&lt;code&gt;.zshrc&lt;/code&gt;, &lt;code&gt;.bashrc&lt;/code&gt;, etc.) to orchestrate the setup.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Step 1: Create the &lt;code&gt;askpass&lt;/code&gt; Helper Script&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;This script simply calls &lt;code&gt;op read&lt;/code&gt; to fetch the passphrase using its &lt;a href="https://developer.1password.com/docs/cli/secret-reference-syntax/" target="_blank" rel="noopener"&gt;Secret Reference URI&lt;/a&gt;.&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="https://developer.1password.com/img/cli/copy-secret-reference-dark.png" alt="Copy Secret Reference screenshot" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;ul&gt;&#10;&lt;li&gt;Find your SSH key item in 1Password.&lt;/li&gt;&#10;&lt;li&gt;Locate the passphrase field, click the options/arrow, and copy the &amp;ldquo;Copy Secret Reference&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Create the script at &lt;code&gt;~/.ssh/askpass-1password.sh&lt;/code&gt;:&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ~/.ssh/askpass-1password.sh&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Provides the SSH key passphrase from 1Password CLI via SSH_ASKPASS&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Paste your Secret Reference URI here&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;OP_SECRET_REFERENCE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;op://YourVault/YourSSHKeyItem/password&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Use &amp;#39;op read&amp;#39; to retrieve and print the passphrase to stdout&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Requires 1Password CLI (&amp;#39;op&amp;#39;) to be installed and authenticated.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;op &lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$OP_SECRET_REFERENCE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;Make it executable: &lt;code&gt;chmod u+x ~/.ssh/askpass-1password.sh&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Step 2: Create the Setup Orchestration Script&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;This script checks if &lt;code&gt;op&lt;/code&gt; is available and conditionally configures &lt;code&gt;keychain&lt;/code&gt; to use the helper script.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;(Adjust path &lt;code&gt;~/dotfiles/scripts/setup_ssh_agent.sh&lt;/code&gt; as needed)&lt;/em&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/zsh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ~/dotfiles/scripts/setup_ssh_agent.sh - Sets up ssh-agent via keychain.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# If &amp;#39;op&amp;#39; CLI and the askpass helper script are available, uses 1Password for passphrase.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Intended to be sourced by .zshrc or similar.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;_askpass_helper&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.ssh/askpass-1password.sh&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;_askpass_vars_set&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Check if &amp;#39;op&amp;#39; CLI is installed and the helper script is usable&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;command&lt;/span&gt; -v op &amp;gt;/dev/null 2&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; -f &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$_askpass_helper&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; -x &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$_askpass_helper&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Configure environment for 1Password helper script&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;SSH_ASKPASS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$_askpass_helper&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;SSH_ASKPASS_REQUIRE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;prefer&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;# Use ASKPASS even in terminals&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;_askpass_vars_set&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Execute keychain to start/find agent, load key, and set env vars&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# (Adjust key name &amp;#39;id_ed25519&amp;#39; as needed)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt;keychain --eval --quiet --agents ssh --inherit any-once id_ed25519&lt;span class="k"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Clean up ASKPASS variables if they were set&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nv"&gt;$_askpass_vars_set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;unset&lt;/span&gt; SSH_ASKPASS&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;unset&lt;/span&gt; SSH_ASKPASS_REQUIRE&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Step 3: Source the Setup Script in &lt;code&gt;.zshrc&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Add this to your &lt;code&gt;~/.zshrc&lt;/code&gt; (or equivalent):&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# --- SSH Agent Configuration (via keychain &amp;amp; 1Password) ---&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Source the dedicated setup script if it exists.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;_ssh_setup_script&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/dotfiles/scripts/setup_ssh_agent.sh&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; -f &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$_ssh_setup_script&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$_ssh_setup_script&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# --- End SSH Agent Configuration ---&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;How It Works:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;When you start a new shell session, &lt;code&gt;.zshrc&lt;/code&gt; sources &lt;code&gt;setup_ssh_agent.sh&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;The script checks if &lt;code&gt;op&lt;/code&gt; is installed and the &lt;code&gt;askpass-1password.sh&lt;/code&gt; helper is ready.&lt;/li&gt;&#10;&lt;li&gt;If yes, it sets the &lt;code&gt;SSH_ASKPASS&lt;/code&gt; and &lt;code&gt;SSH_ASKPASS_REQUIRE&lt;/code&gt; environment variables.&lt;/li&gt;&#10;&lt;li&gt;It runs &lt;code&gt;keychain --eval id_ed25519&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;keychain&lt;/code&gt; starts or connects to &lt;code&gt;ssh-agent&lt;/code&gt; and uses &lt;code&gt;ssh-add&lt;/code&gt; to load &lt;code&gt;id_ed25519&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;ssh-add&lt;/code&gt; sees &lt;code&gt;SSH_ASKPASS&lt;/code&gt; is set and executes &lt;code&gt;askpass-1password.sh&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;The helper script runs &lt;code&gt;op read ...&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;The 1Password CLI handles authentication (prompting for your master password or using biometrics/system auth &lt;em&gt;if necessary&lt;/em&gt; based on its current session state – typically only if the &lt;code&gt;op&lt;/code&gt; session has expired).&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;op read&lt;/code&gt; outputs the passphrase.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;ssh-add&lt;/code&gt; receives the passphrase and unlocks the key, adding it to the agent.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;keychain --eval&lt;/code&gt; outputs the necessary &lt;code&gt;export SSH_AUTH_SOCK=...&lt;/code&gt; commands.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;eval&lt;/code&gt; executes these commands, configuring your current shell to use the agent.&lt;/li&gt;&#10;&lt;li&gt;The &lt;code&gt;ASKPASS&lt;/code&gt; variables are unset.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;After years of using Funtoo Keychain and 1Password separately, and a brief foray into the native 1Password agent, this combined approach hits the sweet spot for me.&#10;It leverages 1Password&amp;rsquo;s secure vault for storing the SSH key passphrase but restores the &amp;ldquo;unlock once per session&amp;rdquo; convenience I appreciate from &lt;code&gt;keychain&lt;/code&gt;.&#10;It requires a single passphrase entry via 1Password when the key is first added (typically on login/boot), after which the key remains available via the standard &lt;code&gt;ssh-agent&lt;/code&gt; mechanism without further 1Password interaction for that session.&lt;/p&gt;&#10;</description></item><item><title>dotbins: managing binary tools in your dotfiles 🧰</title><link>https://www.nijho.lt/post/dotbins/</link><pubDate>Tue, 11 Mar 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/dotbins/</guid><description>&lt;p&gt;In my &lt;a href="../terminal-ninja/"&gt;previous post about terminal productivity&lt;/a&gt;, I shared a setup combining tools like &lt;code&gt;zsh&lt;/code&gt;, &lt;code&gt;oh-my-zsh&lt;/code&gt;, &lt;code&gt;zsh-z&lt;/code&gt;, and various plugins to create a highly efficient command-line environment. While that setup served me well for years, I&amp;rsquo;ve recently encountered a challenge: incorporating modern, compiled CLI tools across all my environments without administrative privileges.&lt;/p&gt;&#10;&lt;p&gt;Today, I&amp;rsquo;m excited to &lt;a href="https://github.com/basnijholt/dotbins/" target="_blank" rel="noopener"&gt;introduce &lt;strong&gt;&lt;code&gt;dotbins&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; - a solution I created to solve this exact problem.&lt;/p&gt;&#10;&lt;h2 id="the-modern-cli-tools-problem"&gt;The Modern CLI Tools Problem &lt;a class="anchor" href="#the-modern-cli-tools-problem" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Over the past few years, we&amp;rsquo;ve seen an explosion of incredible, modern CLI tools written in languages like Rust and Go.&#10;Tools like:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/ajeetdsouza/zoxide" target="_blank" rel="noopener"&gt;&lt;code&gt;zoxide&lt;/code&gt;&lt;/a&gt; (a smarter, faster alternative to &lt;code&gt;zsh-z&lt;/code&gt;)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/sharkdp/bat" target="_blank" rel="noopener"&gt;&lt;code&gt;bat&lt;/code&gt;&lt;/a&gt; (a &lt;code&gt;cat&lt;/code&gt; replacement with syntax highlighting)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/eza-community/eza" target="_blank" rel="noopener"&gt;&lt;code&gt;eza&lt;/code&gt;&lt;/a&gt; (a modern &lt;code&gt;ls&lt;/code&gt; alternative)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/dandavison/delta" target="_blank" rel="noopener"&gt;&lt;code&gt;delta&lt;/code&gt;&lt;/a&gt; (a better diff viewer for Git)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/junegunn/fzf" target="_blank" rel="noopener"&gt;&lt;code&gt;fzf&lt;/code&gt;&lt;/a&gt; (a fuzzy finder for your terminal)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/BurntSushi/ripgrep" target="_blank" rel="noopener"&gt;&lt;code&gt;ripgrep&lt;/code&gt;&lt;/a&gt; (a faster, better &lt;code&gt;grep&lt;/code&gt;)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/atuinsh/atuin" target="_blank" rel="noopener"&gt;&lt;code&gt;atuin&lt;/code&gt;&lt;/a&gt; (a shell history with search and sync)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;These tools significantly enhance terminal productivity, but they come with a catch: &lt;strong&gt;they&amp;rsquo;re compiled binaries&lt;/strong&gt;, not simple scripts.&#10;While my previous setup worked well because all the tools were basic shell scripts I could include as submodules in my dotfiles repository, these modern alternatives require installation.&lt;/p&gt;&#10;&lt;p&gt;This became frustrating when working on:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Remote systems where I lacked admin/sudo permissions&lt;/li&gt;&#10;&lt;li&gt;Machines that I use only temporarily&lt;/li&gt;&#10;&lt;li&gt;Systems where I didn&amp;rsquo;t want to install package managers&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I&amp;rsquo;d spend time carefully setting up my dotfiles with all my configurations, only to find that the actual tools they relied on weren&amp;rsquo;t available.&lt;/p&gt;&#10;&lt;h2 id="enter-dotbins-"&gt;Enter &lt;code&gt;dotbins&lt;/code&gt; 🧰 &lt;a class="anchor" href="#enter-dotbins-" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/basnijholt/dotbins/" target="_blank" rel="noopener"&gt;&lt;code&gt;dotbins&lt;/code&gt;&lt;/a&gt; was born out of this frustration.&#10;It&amp;rsquo;s a utility that manages pre-compiled binaries for CLI tools across multiple platforms and architectures, right in your dotfiles repository.&lt;/p&gt;&#10;&lt;p&gt;The key insight: &lt;strong&gt;track pre-compiled binaries in a separate Git repository&lt;/strong&gt; (using Git LFS for efficiency), include this repository as a submodule in your dotfiles, and ensure all your essential tools are immediately available on any system.&lt;/p&gt;&#10;&lt;p&gt;No package manager, no sudo, no problem.&lt;/p&gt;&#10;&lt;h2 id="how-dotbins-works"&gt;How &lt;code&gt;dotbins&lt;/code&gt; Works &lt;a class="anchor" href="#how-dotbins-works" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;dotbins&lt;/code&gt; handles several critical tasks:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Downloads&lt;/strong&gt; binaries directly from GitHub releases for your selected tools&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Organizes&lt;/strong&gt; them by platform (macOS, Linux) and architecture (amd64, arm64)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Tracks&lt;/strong&gt; installed versions and update timestamps&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Extracts&lt;/strong&gt; binaries from archives in various formats&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Integrates&lt;/strong&gt; seamlessly with your shell via a simple PATH addition&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;The configuration is straightforward - a YAML file where you define which tools you want and how to get them:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ripgrep&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;BurntSushi/ripgrep&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;extract_binary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;binary_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;rg&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;binary_path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ripgrep-*/rg&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;asset_patterns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;linux&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ripgrep-{version}-{arch}-unknown-linux-musl.tar.gz&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;macos&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ripgrep-{version}-{arch}-apple-darwin.tar.gz&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;arch_map&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;amd64&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;x86_64&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;arm64&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;aarch64&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="my-workflow-a-two-repository-approach"&gt;My Workflow: A Two-Repository Approach &lt;a class="anchor" href="#my-workflow-a-two-repository-approach" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;My approach uses two repositories:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Private dotfiles repository&lt;/strong&gt; containing all my configurations&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Public &lt;a href="https://github.com/basnijholt/mydotbins" target="_blank" rel="noopener"&gt;mydotbins repository&lt;/a&gt;&lt;/strong&gt; containing all the binaries&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;I include &lt;code&gt;mydotbins&lt;/code&gt; as a submodule in my dotfiles repository.&#10;This separation keeps large binary files out of my main dotfiles repository and allows me to share the binary collection publicly while keeping my personal configurations private.&lt;/p&gt;&#10;&lt;p&gt;When I clone my dotfiles on a new system, I get not just my configuration files, but also all the CLI tools I depend on for productivity.&lt;/p&gt;&#10;&lt;h2 id="modern-alternatives-to-my-previous-setup"&gt;Modern Alternatives to My Previous Setup &lt;a class="anchor" href="#modern-alternatives-to-my-previous-setup" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;With &lt;code&gt;dotbins&lt;/code&gt;, I&amp;rsquo;ve been able to upgrade several tools from my previous setup:&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Old Tool&lt;/th&gt;&#10;&lt;th&gt;Modern Alternative&lt;/th&gt;&#10;&lt;th&gt;Advantage&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;a href="https://github.com/agkozak/zsh-z" target="_blank" rel="noopener"&gt;&lt;code&gt;zsh-z&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;a href="https://github.com/ajeetdsouza/zoxide" target="_blank" rel="noopener"&gt;&lt;code&gt;zoxide&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&lt;td&gt;Faster, smarter, works across shells&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;code&gt;cat&lt;/code&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;a href="https://github.com/sharkdp/bat" target="_blank" rel="noopener"&gt;&lt;code&gt;bat&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&lt;td&gt;Syntax highlighting, Git integration&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;a href="https://github.com/eza-community/eza" target="_blank" rel="noopener"&gt;&lt;code&gt;eza&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&lt;td&gt;Better formatting, Git integration&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;a href="https://github.com/BurntSushi/ripgrep" target="_blank" rel="noopener"&gt;&lt;code&gt;ripgrep&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&lt;td&gt;Much faster, respects &lt;code&gt;.gitignore&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Control + R&lt;/td&gt;&#10;&lt;td&gt;&lt;a href="https://github.com/atuinsh/atuin" target="_blank" rel="noopener"&gt;&lt;code&gt;atuin&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&lt;td&gt;Shell history with search and sync&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;Default Git diff&lt;/td&gt;&#10;&lt;td&gt;&lt;a href="https://github.com/dandavison/delta" target="_blank" rel="noopener"&gt;&lt;code&gt;delta&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&lt;td&gt;Syntax highlighting, better visual diffs&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;N/A&lt;/td&gt;&#10;&lt;td&gt;&lt;a href="https://github.com/junegunn/fzf" target="_blank" rel="noopener"&gt;&lt;code&gt;fzf&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&lt;td&gt;Fuzzy finding makes everything better&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;N/A&lt;/td&gt;&#10;&lt;td&gt;&lt;a href="https://github.com/atuinsh/atuin" target="_blank" rel="noopener"&gt;&lt;code&gt;atuin&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&lt;td&gt;Shell history with search and sync&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;The best part? All of these are now automatically available on every machine where I clone my dotfiles, without any additional installation steps.&lt;/p&gt;&#10;&lt;h2 id="getting-started-with-dotbins"&gt;Getting Started with &lt;code&gt;dotbins&lt;/code&gt; &lt;a class="anchor" href="#getting-started-with-dotbins" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;If you&amp;rsquo;d like to adopt this approach, here&amp;rsquo;s how to get started:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Install &lt;code&gt;dotbins&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install dotbins&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Or better yet, use uv:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx dotbins&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Create a configuration file at &lt;code&gt;~/.config/dotbins/config.yaml&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;tools_dir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;~/.mydotbins/tools&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;platforms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;linux&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;amd64&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;arm64&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;macos&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;arm64&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Add your favorite tools here&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fzf&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;junegunn/fzf&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;extract_binary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;binary_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;fzf&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;binary_path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;fzf&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;asset_patterns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;fzf-{version}-{platform}_{arch}.tar.gz&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;platform_map&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;macos&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;darwin&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Initialize and download your tools:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotbins init&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotbins update&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Add the shell integration to your &lt;code&gt;.zshrc&lt;/code&gt; or &lt;code&gt;.bashrc&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# dotbins - Add platform-specific binaries to PATH&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;_os&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;uname -s &lt;span class="p"&gt;|&lt;/span&gt; tr &lt;span class="s1"&gt;&amp;#39;[:upper:]&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;[:lower:]&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$_os&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;darwin&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;_os&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;macos&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;_arch&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;uname -m&lt;span class="k"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$_arch&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;x86_64&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;_arch&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;amd64&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$_arch&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aarch64&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$_arch&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;arm64&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;_arch&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;arm64&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.mydotbins/tools/&lt;/span&gt;&lt;span class="nv"&gt;$_os&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$_arch&lt;/span&gt;&lt;span class="s2"&gt;/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;(Optional) Track your binaries in a separate Git repository with Git LFS for efficiency&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="finding-new-tools-to-add"&gt;Finding New Tools to Add &lt;a class="anchor" href="#finding-new-tools-to-add" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Not sure which pattern to use for a new tool? The &lt;code&gt;analyze&lt;/code&gt; command is here to help:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotbins analyze sharkdp/bat&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will suggest a configuration for the tool based on its GitHub release assets.&lt;/p&gt;&#10;&lt;h2 id="conclusion-the-evolution-of-my-terminal-setup"&gt;Conclusion: The Evolution of My Terminal Setup &lt;a class="anchor" href="#conclusion-the-evolution-of-my-terminal-setup" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;With &lt;a href="https://github.com/basnijholt/dotbins/" target="_blank" rel="noopener"&gt;&lt;code&gt;dotbins&lt;/code&gt;&lt;/a&gt;, my terminal productivity setup has evolved beyond what I described in my &lt;a href="../terminal-ninja/"&gt;previous post&lt;/a&gt;.&#10;I can now seamlessly incorporate the best modern CLI tools without worrying about installation or administrative privileges.&lt;/p&gt;&#10;&lt;p&gt;The beauty of this approach is its portability—I get a consistent, powerful environment on any machine where I clone my dotfiles.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re a terminal power user who works across multiple environments, give &lt;a href="https://github.com/basnijholt/dotbins" target="_blank" rel="noopener"&gt;&lt;code&gt;dotbins&lt;/code&gt;&lt;/a&gt; a try.&#10;It might just be the missing piece in your dotfiles setup!&lt;/p&gt;&#10;</description></item><item><title>My macOS setup: Homebrew, apps, and defaults 🍏</title><link>https://www.nijho.lt/post/setting-up-macos/</link><pubDate>Fri, 21 Apr 2023 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/setting-up-macos/</guid><description>&lt;aside class="callout callout-warning"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z"/&gt;&lt;/svg&gt;&lt;div&gt;Since end-2024, I have been using &lt;a href="https://github.com/nix-darwin/nix-darwin" target="_blank" rel="noopener"&gt;Nix-Darwin&lt;/a&gt; to set up my MacOS installations.&#10;See my &lt;a href="https://github.com/basnijholt/dotfiles" target="_blank" rel="noopener"&gt;&lt;code&gt;dotfiles&lt;/code&gt;&lt;/a&gt; repo and the &lt;a href="https://www.nijho.lt/post/dotfiles/" target="_blank" rel="noopener"&gt;dotfiles blog post&lt;/a&gt; for more details.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="introduction"&gt;Introduction &lt;a class="anchor" href="#introduction" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Setting up a new MacOS installation can be a tedious process. This blog post will guide you through the essential steps and applications to install when setting up your fresh MacOS environment.&#10;I&amp;rsquo;ll cover a few unavoidable manual installations, homebrew, iTerm and VS Code font, oh-my-zsh, but can automate most other things.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Note that this is just what I have been doing for the last years, and you might want to do things differently.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;This post is based on a GitHub Gist I have been maintaining since 2015-03 with &amp;gt;160 revisions by now, see it at &lt;a href="https://gist.github.com/basnijholt/2df9845af97c69811b44" target="_blank" rel="noopener"&gt;&lt;code&gt;basnijholt/install-fresh-macOS.md&lt;/code&gt;&lt;/a&gt;&lt;/div&gt;&lt;/aside&gt;&#10;&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#introduction"&gt;Introduction&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#1-manual-installations"&gt;1. Manual Installations&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-homebrew"&gt;2. Homebrew&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#1--browsers"&gt;1. 🌐 Browsers&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2--productivity-tools"&gt;2. 🛠️ Productivity Tools&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3--communication"&gt;3. 📣 Communication&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4--development"&gt;4. 💻 Development&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5--graphics-and-design"&gt;5. 🎨 Graphics and Design&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6--terminal-and-shell"&gt;6. 🖥️ Terminal and Shell&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#7--fonts"&gt;7. 🅰️ Fonts&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#8--file-management-and-utilities"&gt;8. 📂 File Management and Utilities&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#9--security-and-privacy"&gt;9. 🔒 Security and Privacy&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#10--multimedia"&gt;10. 🎥 Multimedia&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#11--office-and-document-management"&gt;11. 📄 Office and Document Management&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#12--finance-and-cryptocurrency"&gt;12. 📈 Finance and Cryptocurrency&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#13--miscellaneous"&gt;13. 🎲 Miscellaneous&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-increase-sudo-password-timeout"&gt;3. Increase &lt;code&gt;sudo&lt;/code&gt; Password Timeout&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-oh-my-zsh"&gt;4. oh-my-zsh&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-set-your-mac-hostcomputer-name"&gt;5. Set Your Mac Host/Computer Name&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6-quick-dock-hiding"&gt;6. Quick Dock Hiding&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#7-iterm-and-vs-code-font"&gt;7. iTerm and VS Code Font&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="1-manual-installations"&gt;1. Manual Installations &lt;a class="anchor" href="#1-manual-installations" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;First, let&amp;rsquo;s manually install some essential tools and software:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="https://brew.sh/" target="_blank" rel="noopener"&gt;homebrew&lt;/a&gt;, the essential package manager for MacOS&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://mamba.readthedocs.io/en/latest/installation.html#micromamba" target="_blank" rel="noopener"&gt;micromamba&lt;/a&gt;, my preferred conda package manager which is blazingly fast&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.google.com/chrome/" target="_blank" rel="noopener"&gt;Chrome&lt;/a&gt; (manual install because the brew version doesn&amp;rsquo;t work with 1Password)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/basnijholt/fileup" target="_blank" rel="noopener"&gt;File-up&lt;/a&gt;, a simple tool I made to upload files to an FTP server and copy the URL to the clipboard &lt;strong&gt;(optional)&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Set a &lt;a href="https://github.com/StevenBlack/hosts" target="_blank" rel="noopener"&gt;&lt;code&gt;host&lt;/code&gt;&lt;/a&gt; file to block unwanted websites and advertisements.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="2-homebrew"&gt;2. Homebrew &lt;a class="anchor" href="#2-homebrew" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Homebrew is a powerful package manager for MacOS. It allows you to quickly and easily install, update, and remove software.&lt;/p&gt;&#10;&lt;details&gt;&#10;&lt;summary&gt;To install a long list of essential applications and tools, run the following commands in your terminal (click to unfold):&lt;/summary&gt;&#10;&lt;!-- CODE:BASH:START --&gt;&#10;&lt;!-- python brew-cmd.py --&gt;&#10;&lt;!-- CODE:END --&gt;&#10;&lt;!-- OUTPUT:START --&gt;&#10;&lt;!-- ⚠️ This content is auto-generated by `markdown-code-runner`. --&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install --cask &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; adobe-creative-cloud &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; adobe-digital-editions &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; airflow &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; avast-security &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; balenaetcher &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bartender &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bettertouchtool &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; brave-browser &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cakebrew &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; calibre &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; chromedriver &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cryptomator &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; db-browser-for-sqlite &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; disk-inventory-x &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; docker &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dropbox &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; eqmac &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; exodus &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; filebot &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; firefox &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; flux &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; github &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; google-chrome &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; handbrake &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; hiddenbar &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; homebrew/cask-fonts/font-fira-code &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; inkscape &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; istat-menus &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; iterm2 &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; jabref &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; karabiner-elements &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; keepingyouawake &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; licecap &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; lulu &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; lyx &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; macfuse &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mactex &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mactracker &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mendeley &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; microsoft-azure-storage-explorer &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; microsoft-office &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; microsoft-teams &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; monitorcontrol &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mounty &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mpv &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; musicbrainz-picard &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; nordvpn &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; obs &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; obsidian &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; onyx &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; protonmail-bridge &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; qbittorrent &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; qlvideo &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; raycast &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rectangle &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rotki &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sabnzbd &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; selfcontrol &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; signal &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; skype &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sloth &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; spotify &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; steam &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; switchresx &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; syncthing &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; teamviewer &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; telegram &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tor-browser &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tunnelblick &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; unclack &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; universal-media-server &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; visual-studio-code &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; vlc &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; webtorrent &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; xquartz &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; zoom&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; autossh &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; azure-cli &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bat &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; brew-cask-completion &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cointop &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gh &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gifsicle &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; git &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; git-extras &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; git-lfs &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; git-secret &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gnupg &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; go &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; graphviz &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gromgit/fuse/ext4fuse-mac &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gromgit/fuse/ntfs-3g-mac &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gromgit/fuse/sshfs-mac &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; homebrew/tex/git-latexdiff &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; htop &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; hugo &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; imagemagick &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; jq &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; keychain &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; micro &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; microsoft/git/git-credential-manager-core &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; nano &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; openjdk &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pipx &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rbenv &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rclone &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rsync &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ruby &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rustup-init &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ssh-copy-id &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; starship &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; terraform &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tmux &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; wget &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; yq &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; zsh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!-- OUTPUT:END --&gt;&#10;&lt;/details&gt;&#10;&lt;p&gt;Otherwise, you can install the essential applications and tools one by one.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;This content below is automatically generated from &lt;a href="https://github.com/basnijholt/nijho.lt/blob/main/content/post/setting-up-macos/brew.json" target="_blank" rel="noopener"&gt;this &lt;code&gt;json&lt;/code&gt; file&lt;/a&gt; and &lt;a href="https://github.com/basnijholt/markdown-code-runner/blob/main/markdown_code_runner.py" target="_blank" rel="noopener"&gt;&lt;code&gt;markdown-code-runner&lt;/code&gt;&lt;/a&gt;&lt;/div&gt;&lt;/aside&gt;&#10;&lt;!-- CODE:BASH:START --&gt;&#10;&lt;!-- python brew-section.py --&gt;&#10;&lt;!-- CODE:END --&gt;&#10;&lt;!-- OUTPUT:START --&gt;&#10;&lt;!-- ⚠️ This content is auto-generated by `markdown-code-runner`. --&gt;&#10;&lt;h3 id="1--browsers"&gt;1. 🌐 Browsers &lt;a class="anchor" href="#1--browsers" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="brave-browser-"&gt;Brave Browser 🛡️🦁&lt;/h4&gt;&#10;&lt;p&gt;A privacy-focused browser with built-in adblocker and support for Chrome extensions, rewarding content creators via BAT tokens.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask brave-browser&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/brave-browser" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/brave/brave-browser" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://support.brave.com/hc/en-us" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="chrome-"&gt;Chrome 🌐💨&lt;/h4&gt;&#10;&lt;p&gt;A fast and user-friendly browser with seamless Google service integration and extensive extension library.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask google-chrome&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/google-chrome" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/googlechrome/" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://support.google.com/chrome/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="firefox-"&gt;Firefox 🔓🦊&lt;/h4&gt;&#10;&lt;p&gt;An open-source browser prioritizing user privacy and security, offering a customizable experience with various add-ons.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask firefox&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/firefox" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/mozilla-mobile/firefox-ios" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://support.mozilla.org/en-US/products/firefox" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="2--productivity-tools"&gt;2. 🛠️ Productivity Tools &lt;a class="anchor" href="#2--productivity-tools" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="bartender-"&gt;Bartender 🍸🖥️&lt;/h4&gt;&#10;&lt;p&gt;A utility to organize and manage your Mac&amp;rsquo;s menu bar icons, improving aesthetics and accessibility.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask bartender&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/bartender" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="bettertouchtool-"&gt;BetterTouchTool 👆🛠️&lt;/h4&gt;&#10;&lt;p&gt;A customizable input device manager that enables advanced gesture control and shortcuts for your Mac.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask bettertouchtool&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/bettertouchtool" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/fifafu/BetterTouchTool" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://docs.bettertouchtool.net/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="graphviz-"&gt;Graphviz 📊🖋️&lt;/h4&gt;&#10;&lt;p&gt;An open-source graph visualization software, capable of representing structural information as diagrams of abstract graphs and networks.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install graphviz&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/graphviz" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://gitlab.com/graphviz/graphviz" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://graphviz.org/documentation/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="hiddenbar-"&gt;HiddenBar 📏🖥️&lt;/h4&gt;&#10;&lt;p&gt;A lightweight tool to hide menu bar icons and declutter your Mac&amp;rsquo;s interface.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask hiddenbar&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/hiddenbar" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt; and &lt;a href="https://github.com/dwarvesf/hidden" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="jq-"&gt;JQ 📄🔍&lt;/h4&gt;&#10;&lt;p&gt;A lightweight and flexible command-line JSON processor, enabling data extraction, transformation, and manipulation of JSON data.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install jq&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/jq" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/stedolan/jq" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://stedolan.github.io/jq/manual/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="karabiner-elements-"&gt;Karabiner-Elements ⌨️🔧&lt;/h4&gt;&#10;&lt;p&gt;A powerful keyboard customizer allowing you to remap keys, create shortcuts, and improve typing efficiency on your Mac.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask karabiner-elements&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/karabiner-elements" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/pqrs-org/Karabiner-Elements" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://karabiner-elements.pqrs.org/docs/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="keepingyouawake-"&gt;KeepingYouAwake ☕💻&lt;/h4&gt;&#10;&lt;p&gt;A utility to prevent your Mac from going to sleep or turning off the display when you need it to stay active.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask keepingyouawake&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/keepingyouawake" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt; and &lt;a href="https://github.com/newmarcel/KeepingYouAwake" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="obsidian-"&gt;Obsidian 📝🔗&lt;/h4&gt;&#10;&lt;p&gt;A powerful note-taking and knowledge management application that uses plain text files with Markdown support.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask obsidian&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/obsidian" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/obsidianmd" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://help.obsidian.md/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="raycast-"&gt;Raycast ⚡🖱️&lt;/h4&gt;&#10;&lt;p&gt;A productivity tool that allows you to control your Mac using powerful and customizable command-based actions.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask raycast&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/raycast" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/raycast" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.raycast.com/docs/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="rectangle-"&gt;Rectangle 🖼️⌨️&lt;/h4&gt;&#10;&lt;p&gt;A window management tool to easily resize and position windows on your Mac using keyboard shortcuts or snap-to-edge functionality.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask rectangle&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/rectangle" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/rxhanson/Rectangle" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/rxhanson/Rectangle/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="istat-menus-"&gt;iStat Menus 📊🌡️&lt;/h4&gt;&#10;&lt;p&gt;A comprehensive system monitor providing detailed information about your Mac&amp;rsquo;s performance through customizable menu bar icons.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask istat-menus&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/istat-menus" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="3--communication"&gt;3. 📣 Communication &lt;a class="anchor" href="#3--communication" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="microsoft-teams-"&gt;Microsoft Teams 📞📈&lt;/h4&gt;&#10;&lt;p&gt;A collaboration and communication platform for businesses, integrating chat, meetings, file sharing, and more.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask microsoft-teams&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/microsoft-teams" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/microsoft" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://docs.microsoft.com/en-us/microsoftteams/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="signal-"&gt;Signal 🔐💬&lt;/h4&gt;&#10;&lt;p&gt;A secure and private messaging app with end-to-end encryption, supporting voice and video calls.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask signal&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/signal" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/signalapp" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://support.signal.org/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="skype-"&gt;Skype 📱🌍&lt;/h4&gt;&#10;&lt;p&gt;A widely used communication tool for voice and video calls, instant messaging, and file sharing.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask skype&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/skype" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/skype" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://support.skype.com/en/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="telegram-"&gt;Telegram 🚀🔒&lt;/h4&gt;&#10;&lt;p&gt;A cloud-based messaging platform with a focus on speed and security, supporting large groups and file sharing.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask telegram&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/telegram" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/telegramdesktop" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://telegram.org/faq" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="zoom-"&gt;Zoom 📹🔗&lt;/h4&gt;&#10;&lt;p&gt;A popular video conferencing tool for virtual meetings, webinars, and collaboration.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask zoom&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/zoom" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/zoom" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://support.zoom.us/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="4--development"&gt;4. 💻 Development &lt;a class="anchor" href="#4--development" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="airflow-"&gt;Airflow 🌬️📊&lt;/h4&gt;&#10;&lt;p&gt;The ultimate way to watch your videos on Chromecast, Apple TV and AirPlay 2 enabled TVs.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask airflow&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/airflow" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="autossh-"&gt;Autossh 🔗🔐&lt;/h4&gt;&#10;&lt;p&gt;A tool for automatically starting and maintaining SSH connections.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install autossh&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/autossh" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/autossh" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.harding.motd.ca/autossh/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="azure-cli-"&gt;Azure CLI ☁️🔧&lt;/h4&gt;&#10;&lt;p&gt;A command-line tool for managing Azure resources.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install azure-cli&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/azure-cli" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/Azure/azure-cli" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://docs.microsoft.com/en-us/cli/azure/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="bat-"&gt;Bat 🦇📄&lt;/h4&gt;&#10;&lt;p&gt;A &lt;code&gt;cat&lt;/code&gt; command clone with syntax highlighting and Git integration.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install bat&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/bat" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/sharkdp/bat" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/sharkdp/bat/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="chromedriver-"&gt;Chromedriver 🌐🚦&lt;/h4&gt;&#10;&lt;p&gt;A WebDriver for running web tests with Chrome.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask chromedriver&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/chromedriver" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/SeleniumHQ" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://sites.google.com/chromium.org/driver/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="docker-"&gt;Docker 🐳📦&lt;/h4&gt;&#10;&lt;p&gt;A platform for developing, shipping, and running containerized applications.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask docker&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/docker" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/docker" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://docs.docker.com/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="git-credential-manager-core-"&gt;Git Credential Manager Core 🧑‍💻🔑&lt;/h4&gt;&#10;&lt;p&gt;A cross-platform credential helper for Git for HTTPS authentication.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install microsoft/git/git-credential-manager-core&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://github.com/git-ecosystem/git-credential-manager" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="git-extras-"&gt;Git Extras ➕🔧&lt;/h4&gt;&#10;&lt;p&gt;Extra utilities and scripts for Git.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install git-extras&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/git-extras" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/tj/git-extras" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/tj/git-extras/blob/master/Commands.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="git-lfs-"&gt;Git LFS 🗄️🔗&lt;/h4&gt;&#10;&lt;p&gt;A Git extension for versioning large files.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install git-lfs&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/git-lfs" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/git-lfs" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://git-lfs.github.com/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="git-secret-"&gt;Git Secret 🤫🔐&lt;/h4&gt;&#10;&lt;p&gt;A tool for storing sensitive data in Git repositories.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install git-secret&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/git-secret" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/sobolevn/git-secret" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://git-secret.io/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="git-"&gt;Git 🧑‍💻🔄&lt;/h4&gt;&#10;&lt;p&gt;A widely used distributed version control system.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install git&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/git" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/git" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://git-scm.com/doc" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="go-"&gt;Go 🏃‍♂️🔤&lt;/h4&gt;&#10;&lt;p&gt;An open-source programming language designed for simplicity and concurrency.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install go&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/go" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/golang" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://golang.org/doc/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="hugo-"&gt;Hugo 🌐🛠️&lt;/h4&gt;&#10;&lt;p&gt;A fast and flexible static site generator.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install hugo&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/hugo" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/gohugoio/hugo" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://gohugo.io/documentation/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="java-"&gt;Java ☕💻&lt;/h4&gt;&#10;&lt;p&gt;A popular programming language and development platform.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install openjdk&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/openjdk" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/openjdk" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://openjdk.java.net" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="micro-"&gt;Micro ✍️🖥️&lt;/h4&gt;&#10;&lt;p&gt;A modern and intuitive terminal-based text editor.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install micro&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/micro" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/zyedidia/micro" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/zyedidia/micro/blob/master/runtime/help/help.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="nano-"&gt;Nano 📝🔍&lt;/h4&gt;&#10;&lt;p&gt;A simple and easy-to-use terminal text editor.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install nano&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/nano" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/nanorc" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.nano-editor.org/dist/latest/nano.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="rbenv-"&gt;Rbenv 💎🔧&lt;/h4&gt;&#10;&lt;p&gt;A Ruby version management tool.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install rbenv&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/rbenv" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/rbenv/rbenv" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/rbenv/rbenv#readme" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="ruby-"&gt;Ruby 💎💻&lt;/h4&gt;&#10;&lt;p&gt;A dynamic, open-source programming language focused on simplicity and productivity.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install ruby&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/ruby" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/ruby" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.ruby-lang.org/en/documentation/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="rustup-init-"&gt;Rustup-Init 🦀🛠️&lt;/h4&gt;&#10;&lt;p&gt;A toolchain installer for the Rust programming language.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install rustup-init&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/rustup-init" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/rust-lang/rustup" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://rust-lang.github.io/rustup/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="terraform-"&gt;Terraform 🌍🛠️&lt;/h4&gt;&#10;&lt;p&gt;An infrastructure as code software tool for managing cloud resources.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install terraform&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/terraform" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/hashicorp/terraform" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.terraform.io/docs/index.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="visual-studio-code-"&gt;Visual Studio Code 💻✏️&lt;/h4&gt;&#10;&lt;p&gt;A powerful and extensible code editor with integrated Git and debugging support.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask visual-studio-code&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/visual-studio-code" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/microsoft/vscode" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://code.visualstudio.com/docs" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="5--graphics-and-design"&gt;5. 🎨 Graphics and Design &lt;a class="anchor" href="#5--graphics-and-design" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="gifsicle-"&gt;Gifsicle 🎞️🛠️&lt;/h4&gt;&#10;&lt;p&gt;A command-line tool for creating, editing, and optimizing GIF animations and images.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install gifsicle&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/gifsicle" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/kohler/gifsicle" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.lcdf.org/gifsicle/man.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="imagemagick-"&gt;ImageMagick 🖼️🛠️&lt;/h4&gt;&#10;&lt;p&gt;A powerful command-line tool for creating, editing, and converting bitmap images, supporting a wide range of image formats.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install imagemagick&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/imagemagick" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/ImageMagick/ImageMagick" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://imagemagick.org/script/index.php" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="inkscape-"&gt;Inkscape ✏️🖼️&lt;/h4&gt;&#10;&lt;p&gt;A professional vector graphics editor that supports various file formats, offering a powerful set of drawing tools for graphic design.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask inkscape&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/inkscape" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/inkscape/inkscape" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://inkscape.org/doc/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="obs-open-broadcaster-software-"&gt;OBS (Open Broadcaster Software) 🎮🎥&lt;/h4&gt;&#10;&lt;p&gt;A powerful and customizable software for live streaming and screen recording, widely used by content creators and gamers.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask obs&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/obs" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/obsproject/obs-studio" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://obsproject.com/wiki/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="6--terminal-and-shell"&gt;6. 🖥️ Terminal and Shell &lt;a class="anchor" href="#6--terminal-and-shell" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="brew-cask-completion-"&gt;Brew-Cask-Completion 🍺📝&lt;/h4&gt;&#10;&lt;p&gt;Shell completion for the Homebrew-Cask command, providing helpful suggestions and autocompletion.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install brew-cask-completion&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/brew-cask-completion" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="github-cli-gh-"&gt;GitHub CLI (gh) 🐙💻&lt;/h4&gt;&#10;&lt;p&gt;A command-line tool for managing GitHub repositories, issues, pull requests, and more, directly from the terminal.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install gh&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/gh" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/cli/cli" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://cli.github.com/manual/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="htop-"&gt;Htop 📊🖥️&lt;/h4&gt;&#10;&lt;p&gt;An interactive process viewer for Unix systems, providing a real-time, color-coded view of system resources and processes.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install htop&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/htop" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/htop-dev/htop" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://htop.dev/docs/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="starship-"&gt;Starship 🚀⭐&lt;/h4&gt;&#10;&lt;p&gt;A minimal, fast, and customizable shell prompt for any shell.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install starship&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/starship" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/starship/starship" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://starship.rs/guide/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="tmux-"&gt;Tmux 📺🔀&lt;/h4&gt;&#10;&lt;p&gt;A terminal multiplexer for managing multiple terminal sessions within a single window.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install tmux&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/tmux" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/tmux/tmux" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/tmux/tmux/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="xquartz-"&gt;XQuartz 🎨🖥️&lt;/h4&gt;&#10;&lt;p&gt;An open-source X Window System implementation for macOS that allows running X11 applications, enabling compatibility with many Unix programs.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask xquartz&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/xquartz" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/XQuartz" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.xquartz.org/Documentation.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="zsh-"&gt;Zsh 🐚🚀&lt;/h4&gt;&#10;&lt;p&gt;An interactive and highly extensible Unix shell.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install zsh&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/zsh" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/zsh-users" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="http://zsh.sourceforge.net/Doc/Release/index.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="iterm2-"&gt;iTerm2 🖥️🎛️&lt;/h4&gt;&#10;&lt;p&gt;A highly customizable and powerful terminal emulator for macOS.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask iterm2&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/iterm2" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/gnachman/iTerm2" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://iterm2.com/documentation.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="7--fonts"&gt;7. 🅰️ Fonts &lt;a class="anchor" href="#7--fonts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="font-fira-code-"&gt;Font Fira Code 📝🔠&lt;/h4&gt;&#10;&lt;p&gt;A monospaced font with programming ligatures, designed for a modern coding experience. Enhances readability and aesthetics in code editors.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask homebrew/cask-fonts/font-fira-code&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://github.com/tonsky/FiraCode" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt; and &lt;a href="https://github.com/tonsky/FiraCode/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="8--file-management-and-utilities"&gt;8. 📂 File Management and Utilities &lt;a class="anchor" href="#8--file-management-and-utilities" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="balenaetcher-"&gt;BalenaEtcher 💾🚀&lt;/h4&gt;&#10;&lt;p&gt;A user-friendly tool for flashing OS images onto SD cards and USB drives, simplifying the creation of bootable media.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask balenaetcher&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/balenaetcher" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/balena-io/etcher" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/balena-io/etcher/blob/master/docs/USER-DOCUMENTATION.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="cakebrew-"&gt;Cakebrew 🍰🍺&lt;/h4&gt;&#10;&lt;p&gt;A GUI for managing Homebrew packages, providing an easy way to search, install, and update software.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask cakebrew&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/cakebrew" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/brunophilipe/Cakebrew" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/brunophilipe/Cakebrew/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="cryptomator-"&gt;Cryptomator 🔒☁️&lt;/h4&gt;&#10;&lt;p&gt;An open-source encryption solution for cloud storage services, offering transparent, client-side encryption for data security.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask cryptomator&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/cryptomator" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/cryptomator/cryptomator" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://docs.cryptomator.org/en/latest/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="db-browser-for-sqlite-"&gt;DB Browser for SQLite 🗃️🔍&lt;/h4&gt;&#10;&lt;p&gt;A high-quality, visual tool to create, design, and edit SQLite database files, streamlining database management.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask db-browser-for-sqlite&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/db-browser-for-sqlite" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/sqlitebrowser/sqlitebrowser" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://sqlitebrowser.org/docs/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="disk-inventory-x-"&gt;Disk Inventory X 💽📊&lt;/h4&gt;&#10;&lt;p&gt;A disk usage utility for macOS that displays folder and file sizes in a visual treemap, enabling quick identification of large files.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask disk-inventory-x&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/disk-inventory-x" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/jerrod/disk-inventory-x" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="http://www.derlien.com/help/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="dropbox-"&gt;Dropbox ☁️📁&lt;/h4&gt;&#10;&lt;p&gt;A popular cloud storage service that seamlessly synchronizes files across devices, making file sharing and collaboration easy.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask dropbox&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/dropbox" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/dropbox" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.dropbox.com/help" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="mpv-"&gt;MPV 🎞️🎧&lt;/h4&gt;&#10;&lt;p&gt;A free, open-source, and cross-platform media player with minimalistic design, supporting a wide range of media formats.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask mpv&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/mpv" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/mpv-player/mpv" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://mpv.io/manual/master/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="mounty-"&gt;Mounty 🗻💽&lt;/h4&gt;&#10;&lt;p&gt;A user-friendly tool for mounting and writing to NTFS drives on macOS, providing seamless read/write access.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask mounty&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/mounty" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt; and &lt;a href="https://github.com/sindresorhus/mounty" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="rclone-"&gt;Rclone 🔄☁️&lt;/h4&gt;&#10;&lt;p&gt;A command-line program to manage files on various cloud storage services, supporting synchronization, copying, and more.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install rclone&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/rclone" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/rclone/rclone" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://rclone.org/docs/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="rsync-"&gt;Rsync 🔄📁&lt;/h4&gt;&#10;&lt;p&gt;A powerful file transfer utility that uses delta encoding and compression to minimize data transfer, optimizing file synchronization.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install rsync&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/rsync" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/rsync/rsync" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://rsync.samba.org/documentation.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="ssh-copy-id-"&gt;SSH-Copy-ID 🔑🔗&lt;/h4&gt;&#10;&lt;p&gt;A utility to install your public key on a remote machine&amp;rsquo;s authorized_keys, simplifying the setup of passwordless SSH connections.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install ssh-copy-id&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/ssh-copy-id" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/beautifulcode/ssh-copy-id-for-OSX" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.ssh.com/academy/ssh/copy-id" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="syncthing-"&gt;Syncthing ⚙️☁️&lt;/h4&gt;&#10;&lt;p&gt;A decentralized, open-source file synchronization tool that securely shares and synchronizes files between devices without relying on cloud services.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask syncthing&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/syncthing" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/syncthing/syncthing" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://docs.syncthing.net/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="universal-media-server-"&gt;Universal Media Server 📺🌐&lt;/h4&gt;&#10;&lt;p&gt;A versatile media server that supports various devices and streaming protocols, allowing you to stream your media files across your home network.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask universal-media-server&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/universal-media-server" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/UniversalMediaServer/UniversalMediaServer" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.universalmediaserver.com/about/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="wget-"&gt;Wget 🌐⬇️&lt;/h4&gt;&#10;&lt;p&gt;A command-line utility for downloading files from the internet, supporting HTTP, HTTPS, and FTP protocols.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install wget&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/wget" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/mirror/wget" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.gnu.org/software/wget/manual/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="9--security-and-privacy"&gt;9. 🔒 Security and Privacy &lt;a class="anchor" href="#9--security-and-privacy" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="avast-security-"&gt;Avast Security 🛡️🐜&lt;/h4&gt;&#10;&lt;p&gt;A comprehensive antivirus and security suite, offering protection against various threats, as well as VPN and cleanup features.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask avast-security&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/avast-security" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="gnupg-gpg-"&gt;GnuPG (GPG) 🔐🔑&lt;/h4&gt;&#10;&lt;p&gt;A complete and free implementation of the OpenPGP standard, providing encryption, signing, and key management capabilities.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install gnupg&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/gnupg" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/gpg/gnupg" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://gnupg.org/documentation/index.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="keychain-"&gt;Keychain 🔑🔗&lt;/h4&gt;&#10;&lt;p&gt;A tool for managing ssh-agent and GnuPG agent, designed to make key management easier and more convenient.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install keychain&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/keychain" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/funtoo/keychain" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.funtoo.org/Keychain" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="lulu-"&gt;LuLu 🚦🔥&lt;/h4&gt;&#10;&lt;p&gt;A lightweight, open-source firewall for macOS, offering control over outgoing connections and protecting against unauthorized access.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask lulu&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/lulu" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/objective-see/LuLu" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://objective-see.com/products/lulu.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="nordvpn-"&gt;NordVPN 🌐🔒&lt;/h4&gt;&#10;&lt;p&gt;A popular VPN service providing a secure and encrypted connection, allowing access to geo-restricted content and protecting your privacy.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask nordvpn&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/nordvpn" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/nordvpn" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://support.nordvpn.com/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="protonmail-bridge-"&gt;ProtonMail Bridge 📧🔐&lt;/h4&gt;&#10;&lt;p&gt;A desktop application enabling the use of ProtonMail with your preferred email client, ensuring end-to-end encryption and privacy.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask protonmail-bridge&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/protonmail-bridge" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/ProtonMail" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://protonmail.com/bridge/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="tor-browser-"&gt;Tor Browser 🕵️‍♀️🌐&lt;/h4&gt;&#10;&lt;p&gt;A privacy-focused browser that routes your traffic through the Tor network, ensuring anonymity and access to hidden services on the dark web.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask tor-browser&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/tor-browser" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/TheTorProject" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://tb-manual.torproject.org/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="tunnelblick-"&gt;Tunnelblick 🚇🔗&lt;/h4&gt;&#10;&lt;p&gt;A free, open-source VPN client for macOS, providing an easy-to-use interface for connecting to OpenVPN servers.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask tunnelblick&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/tunnelblick" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/Tunnelblick/Tunnelblick" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://tunnelblick.net/cHelp.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="10--multimedia"&gt;10. 🎥 Multimedia &lt;a class="anchor" href="#10--multimedia" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="handbrake-"&gt;HandBrake 🎞️🔧&lt;/h4&gt;&#10;&lt;p&gt;A versatile video converter and transcoder, supporting a wide range of formats and offering advanced customization options.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask handbrake&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/handbrake" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/HandBrake/HandBrake" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://handbrake.fr/docs/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="licecap-"&gt;LICEcap 🖥️🎥&lt;/h4&gt;&#10;&lt;p&gt;A lightweight screen capture tool, allowing you to create animated GIFs directly from your desktop.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask licecap&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/licecap" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/justinfrankel/licecap" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="http://www.cockos.com/licecap/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="musicbrainz-picard-"&gt;MusicBrainz Picard 🎵🔖&lt;/h4&gt;&#10;&lt;p&gt;An open-source music tagger, using the MusicBrainz database to automatically update and organize your audio files&amp;rsquo; metadata.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask musicbrainz-picard&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/musicbrainz-picard" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/metabrainz/picard" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://picard-docs.musicbrainz.org/en/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="spotify-"&gt;Spotify 🎧🎶&lt;/h4&gt;&#10;&lt;p&gt;A popular music streaming service, offering access to millions of songs, podcasts, and personalized playlists with a free or premium account.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask spotify&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/spotify" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/spotify" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://support.spotify.com/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="steam-"&gt;Steam 🎮🌐&lt;/h4&gt;&#10;&lt;p&gt;A digital distribution platform for purchasing and managing video games, providing a vast library of titles and social features.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask steam&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/steam" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/ValveSoftware" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://help.steampowered.com/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="vlc-"&gt;VLC 📺🔊&lt;/h4&gt;&#10;&lt;p&gt;A versatile and open-source media player, supporting a wide range of audio and video formats, as well as streaming and conversion capabilities.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask vlc&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/vlc" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/videolan/vlc" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.videolan.org/doc/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="webtorrent-"&gt;WebTorrent 🌐⚡&lt;/h4&gt;&#10;&lt;p&gt;A user-friendly torrent client that runs directly in your browser, enabling streaming of torrent files without the need for a separate application.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask webtorrent&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/webtorrent" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/webtorrent" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://webtorrent.io/docs" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="eqmac-"&gt;eqMac 🎚️🎶&lt;/h4&gt;&#10;&lt;p&gt;An open-source audio equalizer for macOS, enhancing your listening experience with customizable presets and manual adjustments.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask eqmac&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/eqmac" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/bitgapp/eqMac" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/bitgapp/eqMac/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="11--office-and-document-management"&gt;11. 📄 Office and Document Management &lt;a class="anchor" href="#11--office-and-document-management" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="adobe-creative-cloud-"&gt;Adobe Creative Cloud 🎨🖥️&lt;/h4&gt;&#10;&lt;p&gt;A suite of creative applications for graphic design, video editing, web development, and more, including Photoshop, Illustrator, and Premiere Pro.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask adobe-creative-cloud&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/adobe-creative-cloud" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/adobe" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://helpx.adobe.com/support/creative-cloud.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="adobe-digital-editions-"&gt;Adobe Digital Editions 📚🔖&lt;/h4&gt;&#10;&lt;p&gt;An ebook reader and manager, supporting various formats and DRM-protected files, as well as syncing across devices.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask adobe-digital-editions&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/adobe-digital-editions" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/adobe" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://helpx.adobe.com/digital-editions.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="calibre-"&gt;Calibre 📚🔧&lt;/h4&gt;&#10;&lt;p&gt;An open-source ebook management tool, offering format conversion, syncing, and organization features, as well as a built-in reader.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask calibre&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/calibre" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/kovidgoyal/calibre" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://manual.calibre-ebook.com/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="filebot-"&gt;FileBot 📁🔍&lt;/h4&gt;&#10;&lt;p&gt;A media file organization tool, simplifying the renaming and sorting of TV shows, movies, and music files.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask filebot&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/filebot" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/filebot/filebot" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.filebot.net/forums/viewforum.php?f=4" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="jabref-"&gt;JabRef 📖🔗&lt;/h4&gt;&#10;&lt;p&gt;An open-source reference manager, enabling the organization and citation of scientific publications in BibTeX and other formats.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask jabref&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/jabref" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/JabRef/jabref" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://docs.jabref.org/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="lyx-"&gt;LyX 📄🎓&lt;/h4&gt;&#10;&lt;p&gt;A document processor that combines the power of LaTeX with a user-friendly graphical interface, simplifying the creation of professional-looking documents.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask lyx&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/lyx" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/lyx/lyx" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.lyx.org/Documentation" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="mactex-"&gt;MacTeX 📚🔣&lt;/h4&gt;&#10;&lt;p&gt;A comprehensive TeX distribution for macOS, including LaTeX, various utilities, and documentation.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask mactex&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/mactex" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/TeX-Live" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="http://www.tug.org/mactex/mactex-help.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="mactracker-"&gt;Mactracker 🍎💾&lt;/h4&gt;&#10;&lt;p&gt;A comprehensive database of Apple hardware and software, providing detailed specifications, history, and support information.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask mactracker&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/mactracker" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/Mactracker" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://mactracker.ca/help.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="mendeley-"&gt;Mendeley 📚🔗&lt;/h4&gt;&#10;&lt;p&gt;A reference manager and academic social network, simplifying the organization, annotation, and citation of research papers.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask mendeley&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/mendeley" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/mendeley" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.mendeley.com/guides" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="microsoft-office-"&gt;Microsoft Office 📝💼&lt;/h4&gt;&#10;&lt;p&gt;A suite of productivity applications, including Word, Excel, PowerPoint, and Outlook, designed for creating, editing, and managing documents.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask microsoft-office&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/microsoft-office" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/microsoft" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://support.microsoft.com/en-us/office" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="onyx-"&gt;OnyX ⚙️🖥️&lt;/h4&gt;&#10;&lt;p&gt;A multifunctional utility for macOS, offering maintenance, optimization, and personalization features, as well as advanced options for power users.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask onyx&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/onyx" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/titanium-software" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.titanium-software.fr/en/onyx.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="12--finance-and-cryptocurrency"&gt;12. 📈 Finance and Cryptocurrency &lt;a class="anchor" href="#12--finance-and-cryptocurrency" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="cointop-"&gt;Cointop 💹📈&lt;/h4&gt;&#10;&lt;p&gt;A command-line interface for tracking cryptocurrency market data, with an interactive and customizable dashboard.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install cointop&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/cointop" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/miguelmota/cointop" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/miguelmota/cointop/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="exodus-"&gt;Exodus 💰🔒&lt;/h4&gt;&#10;&lt;p&gt;A user-friendly cryptocurrency wallet, supporting a wide range of assets, exchange features, and portfolio management.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask exodus&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/exodus" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/exodusmovement" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://support.exodus.io/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="13--miscellaneous"&gt;13. 🎲 Miscellaneous &lt;a class="anchor" href="#13--miscellaneous" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="ext4fuse-"&gt;Ext4Fuse 🐧💽&lt;/h4&gt;&#10;&lt;p&gt;A macOS filesystem extension enabling read-only support for the ext4 file system, commonly used on Linux systems.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install gromgit/fuse/ext4fuse-mac&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://github.com/gerard/ext4fuse" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt; and &lt;a href="https://github.com/gerard/ext4fuse/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="git-latexdiff-"&gt;Git LaTeXdiff 📄🔍&lt;/h4&gt;&#10;&lt;p&gt;A command-line tool for generating diff files for LaTeX documents, simplifying the tracking of changes and collaboration on LaTeX projects.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install homebrew/tex/git-latexdiff&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://github.com/git-latexdiff" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt; and &lt;a href="https://gitlab.com/git-latexdiff/git-latexdiff/-/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="github-"&gt;GitHub 🧑‍💻🔄&lt;/h4&gt;&#10;&lt;p&gt;The official GitHub desktop client, simplifying repository management, version control, and collaboration on macOS.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask github&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/github" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/desktop/desktop" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://docs.github.com/en/desktop" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="macfuse-"&gt;MacFuse 💽🔗&lt;/h4&gt;&#10;&lt;p&gt;A macOS filesystem extension enabling the use of non-native filesystems, offering compatibility with a wide range of formats.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask macfuse&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/macfuse" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/osxfuse" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://osxfuse.github.io/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="microsoft-azure-storage-explorer-"&gt;Microsoft Azure Storage Explorer ☁️🗃️&lt;/h4&gt;&#10;&lt;p&gt;A graphical tool for managing Azure Blob Storage, offering convenient access, organization, and management of your cloud storage.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask microsoft-azure-storage-explorer&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/microsoft-azure-storage-explorer" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/microsoft/AzureStorageExplorer" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://docs.microsoft.com/en-us/azure/storage/common/storage-explorer-overview" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="monitorcontrol-"&gt;MonitorControl 🖥️🎚️&lt;/h4&gt;&#10;&lt;p&gt;A utility for controlling your external monitor&amp;rsquo;s settings, such as brightness and volume, directly from your macOS menu bar.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask monitorcontrol&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/monitorcontrol" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/MonitorControl/MonitorControl" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/MonitorControl/MonitorControl/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="ntfs-3g-"&gt;NTFS-3G 🖥️🔗&lt;/h4&gt;&#10;&lt;p&gt;A macOS filesystem extension providing read-write support for the NTFS file system, commonly used on Windows systems.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install gromgit/fuse/ntfs-3g-mac&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://github.com/tuxera/ntfs-3g" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt; and &lt;a href="https://www.tuxera.com/community/ntfs-3g-manual/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="qlvideo-"&gt;QLVideo 🎥👀&lt;/h4&gt;&#10;&lt;p&gt;A QuickLook plugin for macOS, providing thumbnail previews and playback of various video formats directly in Finder.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask qlvideo&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/qlvideo" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/Marginal/QLVideo" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/Marginal/QLVideo/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="rotki-"&gt;Rotki 💹🔐&lt;/h4&gt;&#10;&lt;p&gt;An open-source portfolio tracking and tax reporting tool for cryptocurrencies, offering extensive customization and privacy options.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask rotki&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/rotki" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/rotki/rotki" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://rotki.readthedocs.io/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="sabnzbd-"&gt;SABnzbd 🌐🗞️&lt;/h4&gt;&#10;&lt;p&gt;A binary newsreader for Usenet, offering automation features, a web interface, and compatibility with popular download management tools.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask sabnzbd&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/sabnzbd" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/sabnzbd/sabnzbd" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://sabnzbd.org/wiki/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="sshfs-"&gt;SSHFS 💻🔗&lt;/h4&gt;&#10;&lt;p&gt;A macOS filesystem extension enabling mounting of remote filesystems via SSH, providing secure and convenient access to remote files.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install gromgit/fuse/sshfs-mac&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://github.com/libfuse/sshfs" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt; and &lt;a href="https://github.com/libfuse/sshfs/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="selfcontrol-"&gt;SelfControl 🚫🕒&lt;/h4&gt;&#10;&lt;p&gt;A productivity tool for macOS, allowing you to block access to distracting websites and applications for a set period of time.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask selfcontrol&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/selfcontrol" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/SelfControlApp/selfcontrol" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://selfcontrolapp.com/documentation/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="sloth-"&gt;Sloth 🐌💻&lt;/h4&gt;&#10;&lt;p&gt;A macOS utility for displaying open files and network connections, offering insights into system resource usage and potential bottlenecks.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask sloth&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/sloth" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/sveinbjornt/Sloth" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/sveinbjornt/Sloth/blob/master/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="switchresx-"&gt;SwitchResX 🖥️🔍&lt;/h4&gt;&#10;&lt;p&gt;A display resolution management tool for macOS, enabling custom resolutions, aspect ratios, and refresh rates for your monitor.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask switchresx&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/switchresx" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/MonitorControl/MonitorControl" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://www.madrau.com/support/support/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="teamviewer-"&gt;TeamViewer 🌐💻&lt;/h4&gt;&#10;&lt;p&gt;A remote desktop and collaboration tool, offering screen sharing, file transfer, and remote control capabilities for personal and professional use.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask teamviewer&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/teamviewer" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/teamviewer" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://community.teamviewer.com/English/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="unclack-"&gt;Unclack 🎤🔇&lt;/h4&gt;&#10;&lt;p&gt;A utility for macOS that automatically mutes your microphone while you type, preventing unwanted noise during conference calls and voice recordings.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask unclack&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/unclack" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/will-stone/unclack" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/will-stone/unclack/blob/main/README.md" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="flux-"&gt;f.lux 🌞🌛&lt;/h4&gt;&#10;&lt;p&gt;A screen color temperature adjustment tool, reducing eye strain and promoting healthy sleep patterns by adapting your display to the time of day.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask flux&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/flux" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/fluxtream" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://justgetflux.com/faq.html" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="pipx-"&gt;pipx 🐍📦&lt;/h4&gt;&#10;&lt;p&gt;A package manager for installing and running Python applications in isolated environments, ensuring clean and conflict-free installations.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install pipx&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/pipx" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/pipxproject/pipx" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://pipxproject.github.io/pipx/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="qbittorrent-"&gt;qBittorrent ⚡📁&lt;/h4&gt;&#10;&lt;p&gt;A free and open-source torrent client, featuring a clean interface, powerful search capabilities, and minimal resource usage.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install --cask qbittorrent&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/cask/qbittorrent" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/qbittorrent/qBittorrent" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://github.com/qbittorrent/qBittorrent/wiki" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="yq-"&gt;yq 📄🔧&lt;/h4&gt;&#10;&lt;p&gt;A command-line tool for parsing and manipulating YAML files, offering powerful filtering and editing capabilities.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Install with &lt;code&gt;brew install yq&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;See the &lt;a href="https://formulae.brew.sh/formula/yq" target="_blank" rel="noopener"&gt;formula &lt;em class="fas fa-flask fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, &lt;a href="https://github.com/mikefarah/yq" target="_blank" rel="noopener"&gt;repo &lt;em class="fab fa-github fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;, and &lt;a href="https://mikefarah.gitbook.io/yq/" target="_blank" rel="noopener"&gt;docs &lt;em class="fas fa-book fa-fw" style="margin-right: 0.2em;"&gt; &lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;!-- OUTPUT:END --&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;&lt;a href="https://github.com/Homebrew/homebrew-core/issues/75656" target="_blank" rel="noopener"&gt;osxfuse (and thus sshfs) is deprecated from Homebrew&lt;/a&gt;, there is this &lt;a href="https://github.com/gromgit/homebrew-fuse" target="_blank" rel="noopener"&gt;tap&lt;/a&gt; [&lt;a href="https://github.com/Homebrew/brew/blob/master/docs/Interesting-Taps-and-Forks.md#unsupported-interesting-taps" target="_blank" rel="noopener"&gt;here&lt;/a&gt;] that I can use to install osxfuse and sshfs.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="3-increase-sudo-password-timeout"&gt;3. Increase &lt;code&gt;sudo&lt;/code&gt; Password Timeout &lt;a class="anchor" href="#3-increase-sudo-password-timeout" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;To increase the sudo password timeout, follow the instructions provided in this &lt;a href="https://apple.stackexchange.com/a/51763" target="_blank" rel="noopener"&gt;StackExchange answer&lt;/a&gt;.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="4-oh-my-zsh"&gt;4. oh-my-zsh &lt;a class="anchor" href="#4-oh-my-zsh" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/robbyrussell/oh-my-zsh" target="_blank" rel="noopener"&gt;oh-my-zsh&lt;/a&gt; is a popular framework for managing your Zsh configuration. Follow the download instructions provided in the link, or use the &lt;code&gt;dotfiles&lt;/code&gt; folder if you have it.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="5-set-your-mac-hostcomputer-name"&gt;5. Set Your Mac Host/Computer Name &lt;a class="anchor" href="#5-set-your-mac-hostcomputer-name" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;To set a custom host or computer name for your Mac, open a terminal and run the following commands:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;your-custom-name&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo scutil --set HostName &lt;span class="nv"&gt;$NAME&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo scutil --set LocalHostName &lt;span class="nv"&gt;$NAME&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo scutil --set ComputerName &lt;span class="nv"&gt;$NAME&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dscacheutil -flushcache&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#10;&lt;h2 id="6-quick-dock-hiding"&gt;6. Quick Dock Hiding &lt;a class="anchor" href="#6-quick-dock-hiding" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;For a cleaner desktop experience, follow this &lt;a href="https://apple.stackexchange.com/a/34097" target="_blank" rel="noopener"&gt;StackExchange answer&lt;/a&gt; to enable quick dock hiding.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="7-iterm-and-vs-code-font"&gt;7. iTerm and VS Code Font &lt;a class="anchor" href="#7-iterm-and-vs-code-font" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The Fira Code font is a popular choice for developers. To set it as the default font for iTerm and Visual Studio Code:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;iTerm should be set by &lt;a href="https://github.com/basnijholt/dotfiles/blob/57c1b0d9b3a54f8beb93db42fd48c97eb0c67bec/pub/iterm/Profiles.json#L63" target="_blank" rel="noopener"&gt;&lt;code&gt;Profiles.json&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Follow the &lt;a href="https://github.com/tonsky/FiraCode/wiki/VS-Code-Instructions" target="_blank" rel="noopener"&gt;VS Code instructions&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="conclusion"&gt;Conclusion &lt;a class="anchor" href="#conclusion" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;After completing these steps, restart your Mac. You now have a fully customized and functional MacOS environment, ready for productivity and creativity. Enjoy your freshly set-up MacOS!&lt;/p&gt;&#10;</description></item><item><title>My VS Code setup: extensions and shortcuts ⚡</title><link>https://www.nijho.lt/post/vscode-extensions-and-shortcuts/</link><pubDate>Sun, 16 Apr 2023 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/vscode-extensions-and-shortcuts/</guid><description>&lt;p&gt;Visual Studio Code, or VSCode, has rapidly become one of the most popular code editors available today, and for good reason. With a vast amount of development activity behind it, VSCode is a powerful and extensible platform that allows users to customize it to their needs through a wide variety of extensions. As a long-time Sublime Text user, I was initially skeptical about making the switch due to concerns about performance. However, as I spent more time using VSCode, I became convinced of its many benefits and have since made it my go-to editor for all my development needs, particularly for Python.&lt;/p&gt;&#10;&lt;p&gt;In this blog post, I will share my personal setup for turbocharging Python development in VSCode, including my favorite extensions and most-used keystrokes. By tailoring your editor to your specific requirements and preferences, you can maximize productivity and minimize keystrokes, making your development experience as smooth and efficient as possible.&lt;/p&gt;&#10;&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#my-most-common-shortcuts"&gt;My most common Shortcuts&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#my-favorite-extensions"&gt;My favorite extensions&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#1-github-copilot"&gt;1. GitHub Copilot&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#2-gitlens"&gt;2. GitLens&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#3-python-and-pylance"&gt;3. Python and Pylance&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#4-jupyter"&gt;4. Jupyter&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#5-sublime-keybindings"&gt;5. Sublime Keybindings&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#6-remote-containers-ssh-and-remote-extension-pack"&gt;6. Remote Containers, SSH, and Remote Extension Pack&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#7-indent-rainbow"&gt;7. Indent Rainbow&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#8-code-spell-checker"&gt;8. Code Spell Checker&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#ruff"&gt;Ruff&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#github-codespaces-remotehub-and-pull-request"&gt;GitHub Codespaces, RemoteHub, and Pull Request&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#rainbow-csv"&gt;Rainbow CSV&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#better-comments"&gt;Better Comments&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#markdown-preview-enhanced"&gt;Markdown Preview Enhanced&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#markdown-all-in-one"&gt;Markdown All in One&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#wakatime"&gt;WakaTime&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#other-extensions-i-use"&gt;Other extensions I use&lt;/a&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#latex-workshop"&gt;LaTeX Workshop&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#live-share"&gt;Live Share&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#azure-account-and-repos"&gt;Azure Account and Repos&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#codesnap"&gt;CodeSnap&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#micromamba"&gt;Micromamba&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#markdownlint"&gt;Markdownlint&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#prettier"&gt;Prettier&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#code-runner"&gt;Code Runner&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#go"&gt;Go&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#home-assistant"&gt;Home Assistant&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#azure-pipelines-resource-groups-storage-and-terraform"&gt;Azure Pipelines, Resource Groups, Storage, and Terraform&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#docker"&gt;Docker&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#autodocstring"&gt;AutoDocstring&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#xml-and-yaml"&gt;XML and YAML&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#rust-analyzer"&gt;Rust Analyzer&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#even-better-toml"&gt;Even Better TOML&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#terrastruct"&gt;Terrastruct&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#pdf"&gt;PDF&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#ltex"&gt;LTeX&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#intellicode-api-usage-examples-and-intellicode"&gt;IntelliCode API Usage Examples and IntelliCode&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#vscode-icons"&gt;vscode-icons&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="my-most-common-shortcuts"&gt;My most common Shortcuts &lt;a class="anchor" href="#my-most-common-shortcuts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Personally, I use the Sublime Keymap extension to add Sublime Text keybindings to VSCode.&lt;/p&gt;&#10;&lt;p&gt;It is a valuable extension for those who are transitioning from Sublime Text to Visual Studio Code or simply prefer Sublime Text&amp;rsquo;s keybindings.&#10;This extension replicates Sublime Text&amp;rsquo;s keyboard shortcuts in VSCode, allowing you to maintain your productivity and muscle memory.&lt;/p&gt;&#10;&lt;p&gt;Here are &lt;em&gt;&lt;strong&gt;my&lt;/strong&gt;&lt;/em&gt; commonly used shortcuts when using the Sublime Keymap extension and the default VSCode keybindings (if missing both are the same):&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th&gt;Keybinding (Sublime)&lt;/th&gt;&#10;&lt;th&gt;Keybinding (VS Code)&lt;/th&gt;&#10;&lt;th&gt;Description&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + Shift + P (Mac) / Ctrl + Shift + P (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Open the command palette&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + P (Mac) / Ctrl + P (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Quick file navigation&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + D (Mac) / Ctrl + D (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Select the next occurrence of the current word&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + U (Mac) / Ctrl + U (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Undo the last &amp;ldquo;select next word&amp;rdquo; operation&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Alt + up/down arrow&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Move the selected lines up or down&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Alt + Shift + up/down arrows&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Duplicate the selected lines above or below&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + Shift + L (Mac) / Ctrl + Shift + L (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;strong&gt;Shift + Alt + L&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;Place a cursor at the end of all selected lines&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Control + - (minus)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Navigate to the previous location in the editor&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + T (Mac) / Ctrl + T (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + P (Mac) / Control + P (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;Browse files in the workspace&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + R (Mac) / Ctrl + R (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + Shift + O (Mac) / Ctrl + Shift + O (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;Open the command palette and search for definitions in the file (bonus, add a &lt;code&gt;:&lt;/code&gt;, to get &lt;code&gt;@:&lt;/code&gt; to group by functions, methods, variables, etc.)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + B (Mac) / Ctrl + B (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Toggle the visibility of the sidebar (explorer, search, etc.)&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + Shift + F (Mac) / Ctrl + Shift + F (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Search across all files in your workspace&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + Shift + E (Mac) / Ctrl + Shift + E (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Open the file explorer&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Control + Space&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Open the autocomplete menu&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + Mouse click&lt;/strong&gt; or &lt;strong&gt;F12&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Go to the definition of the selected word&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + I&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Open GitHub Copilot prompt inline&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + Shift + I&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Open GitHub Copilot prompt in sidebar&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Shift + Alt + F&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Autoformat&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + Control + G&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;strong&gt;Command + Shift + L (Mac) / Ctrl + Shift + L (Windows)&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;Select all occurrences of current word&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;F2&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Rename symbol&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Ctrl + `&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Open the integrated terminal&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;strong&gt;Alt + Z&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td&gt;&lt;em&gt;same&lt;/em&gt;&lt;/td&gt;&#10;&lt;td&gt;Toggle word wrap&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="my-favorite-extensions"&gt;My favorite extensions &lt;a class="anchor" href="#my-favorite-extensions" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I have ranked my top 8 extensions, which I would recommend to anyone who is looking to improve their productivity and efficiency in VSCode.&lt;/p&gt;&#10;&lt;h3 id="1-github-copilot"&gt;1. GitHub Copilot &lt;a class="anchor" href="#1-github-copilot" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;GitHub Copilot is an AI-powered code completion extension that provides seamless integration with the Copilot service, helping you write code faster and smarter.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension GitHub.copilot&lt;/code&gt; to install the GitHub Copilot extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://user-images.githubusercontent.com/37570492/212964557-8d832278-61bb-4288-a8a7-47f35859e868.gif" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="2-gitlens"&gt;2. GitLens &lt;a class="anchor" href="#2-gitlens" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;GitLens supercharges the built-in Git support in VSCode, providing useful insights into your code history and changes, including advanced blame annotations, code lens, and more.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension eamodio.gitlens&lt;/code&gt; to install the GitLens extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/633fc030f6f6b372d6d487c2bd35a8346507f0b2/images/docs/revision-navigation.gif" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="3-python-and-pylance"&gt;3. Python and Pylance &lt;a class="anchor" href="#3-python-and-pylance" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;These extensions offer comprehensive support for Python development, with features like IntelliSense, linting, debugging, and code navigation. Pylance enhances Python support with improved code completion, type checking, and language features.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-python.python&lt;/code&gt; to install the Python extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-python.python" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-python.vscode-pylance&lt;/code&gt; to install the Pylance extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img src="https://raw.githubusercontent.com/microsoft/vscode-python/d905cf0555e0032cfe10a2af2b925e686246e30e/images/InterpreterSelectionZoom.gif" alt="" loading="lazy" data-zoomable&gt;&#10;&lt;img src="https://github.com/microsoft/pylance-release/raw/77c8d25c51376faa488e69b8fb670ddc64c5bb3e/images/all-features.gif" alt="" loading="lazy" data-zoomable&gt;&lt;/p&gt;&#10;&lt;h3 id="4-jupyter"&gt;4. Jupyter &lt;a class="anchor" href="#4-jupyter" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The Jupyter extensions enable you to work with Jupyter Notebooks in VSCode, with support for running cells, debugging, and more. Jupyter Keymap adds customizable keyboard shortcuts for Jupyter commands.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-toolsai.jupyter&lt;/code&gt; to install the Jupyter extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&#10;&lt;img src="https://github.com/Microsoft/vscode-jupyter/raw/e3eee370c97505ce390858a4645f73bc1b3912fc/images/Jupyter%20README/notebookui.png" alt="" loading="lazy" data-zoomable&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="5-sublime-keybindings"&gt;5. Sublime Keybindings &lt;a class="anchor" href="#5-sublime-keybindings" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Sublime Keybindings adds keybindings from Sublime Text to VSCode, making it easier for developers familiar with Sublime Text to transition to VSCode.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-vscode.sublime-keybindings&lt;/code&gt; to install the Sublime Keybindings extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="6-remote-containers-ssh-and-remote-extension-pack"&gt;6. Remote Containers, SSH, and Remote Extension Pack &lt;a class="anchor" href="#6-remote-containers-ssh-and-remote-extension-pack" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;These extensions provide support for working with remote development environments in VSCode, such as developing inside a container or connecting to remote machines via SSH. The Extension Pack bundles all the remote development extensions for convenience.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-vscode-remote.remote-ssh-edit&lt;/code&gt; to install the Remote SSH Edit extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh-edit" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-vscode-remote.vscode-remote-extensionpack&lt;/code&gt; to install the Remote Extension Pack &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-vscode.remote-explorer&lt;/code&gt; to install the Remote Explorer extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-explorer" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-vscode.remote-repositories&lt;/code&gt; to install the Remote Repositories extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-repositories" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://microsoft.github.io/vscode-remote-release/images/remote-containers-readme.gif" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="7-indent-rainbow"&gt;7. Indent Rainbow &lt;a class="anchor" href="#7-indent-rainbow" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Indent Rainbow is a VSCode extension that colorizes indentation levels in your code, making it easier to visualize and navigate complex code structures.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension oderwat.indent-rainbow&lt;/code&gt; to install the Indent Rainbow extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://raw.githubusercontent.com/oderwat/vscode-indent-rainbow/913f5a704b54730a5cea5a4de97e245fcd8c8596/assets/example.png" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="8-code-spell-checker"&gt;8. Code Spell Checker &lt;a class="anchor" href="#8-code-spell-checker" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Code Spell Checker is a helpful extension that checks your code and comments for spelling errors, helping you maintain clean and professional code.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension streetsidesoftware.code-spell-checker&lt;/code&gt; to install the Code Spell Checker extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://raw.githubusercontent.com/streetsidesoftware/vscode-spell-checker/main/images/example.gif" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="ruff"&gt;Ruff &lt;a class="anchor" href="#ruff" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Ruff is a Visual Studio Code extension that provides support for the Ruff linter, an extremely fast Python linter written in Rust. It offers numerous features such as built-in caching, autofix support, and a comprehensive set of built-in rules. Ruff aims to replace multiple tools like Flake8, isort, pydocstyle, yesqa, eradicate, pyupgrade, and autoflake, while executing much faster than any individual tool.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension charliermarsh.ruff&lt;/code&gt; to install the Ruff extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/1309177/205176932-44cfc03a-120f-4bad-b710-612bdd7765d6.gif" alt="" loading="lazy" data-zoomable&gt;&#10;&lt;img src="https://user-images.githubusercontent.com/1309177/205175987-82e23e21-14bb-467d-9ef0-027f24b75865.gif" alt="" loading="lazy" data-zoomable&gt;&lt;/p&gt;&#10;&lt;h3 id="github-codespaces-remotehub-and-pull-request"&gt;GitHub Codespaces, RemoteHub, and Pull Request &lt;a class="anchor" href="#github-codespaces-remotehub-and-pull-request" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;These GitHub extensions provide seamless integration with various GitHub services, including Codespaces (cloud-based development environments), RemoteHub (browse remote repositories), and Pull Request management.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension GitHub.codespaces&lt;/code&gt; to install the GitHub Codespaces extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension GitHub.remotehub&lt;/code&gt; to install the GitHub RemoteHub extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.remotehub" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension GitHub.vscode-pull-request-github&lt;/code&gt; to install the GitHub Pull Request extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://github.com/Microsoft/vscode-pull-request-github/raw/HEAD/.readme/demo.gif" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="rainbow-csv"&gt;Rainbow CSV &lt;a class="anchor" href="#rainbow-csv" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Rainbow CSV adds syntax highlighting for CSV and TSV files in VSCode, making it easier to read and analyze data by color-coding columns.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension mechatroner.rainbow-csv&lt;/code&gt; to install the Rainbow CSV extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=mechatroner.rainbow-csv" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://i.imgur.com/ryjBI1R.png" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="better-comments"&gt;Better Comments &lt;a class="anchor" href="#better-comments" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Better Comments is a VSCode extension that helps improve the readability of your code comments by adding color and style to different types of comments, such as TODOs, highlights, questions, and alerts.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension aaron-bond.better-comments&lt;/code&gt; to install the Better Comments extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://github.com/aaron-bond/better-comments/raw/084a906e73a3ca96d5319441714be8e3a2a8c385/images/better-comments.PNG" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="markdown-preview-enhanced"&gt;Markdown Preview Enhanced &lt;a class="anchor" href="#markdown-preview-enhanced" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Markdown Preview Enhanced is a feature-rich extension that provides a real-time preview of your Markdown files, supporting various Markdown flavors, interactive diagrams, and more.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension shd101wyy.markdown-preview-enhanced&lt;/code&gt; to install the Markdown Preview Enhanced extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://user-images.githubusercontent.com/1908863/28495106-30b3b15e-6f09-11e7-8eb6-ca4ca001ab15.png" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="markdown-all-in-one"&gt;Markdown All in One &lt;a class="anchor" href="#markdown-all-in-one" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Markdown All in One is a comprehensive extension that provides a range of features for working with Markdown files in VSCode, including syntax highlighting, auto-completion, table of contents, and more.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension yzhang.markdown-all-in-one&lt;/code&gt; to install the Markdown All in One extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://raw.githubusercontent.com/yzhang-gh/vscode-markdown/78775f6caeb353bee905d7f72702364467b10ef1/images/gifs/toggle-bold.gif" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="wakatime"&gt;WakaTime &lt;a class="anchor" href="#wakatime" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;WakaTime is an open source VS Code plugin for metrics, insights, and time tracking automatically generated from your programming activity. This service will keep a summary of how much time you spend in which project and which programming language.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension WakaTime.vscode-wakatime&lt;/code&gt; to install the WakaTime extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=WakaTime.vscode-wakatime" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://wakatime.com/static/img/ScreenShots/Screen-Shot-2016-03-21.png" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h2 id="other-extensions-i-use"&gt;Other extensions I use &lt;a class="anchor" href="#other-extensions-i-use" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The following extensions are not as essential as the ones listed above, but I still find them useful for various tasks.&lt;/p&gt;&#10;&lt;h3 id="latex-workshop"&gt;LaTeX Workshop &lt;a class="anchor" href="#latex-workshop" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;LaTeX Workshop is a comprehensive extension for working with LaTeX documents in VSCode, featuring syntax highlighting, building and previewing, IntelliSense, and more.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension James-Yu.latex-workshop&lt;/code&gt; to install the LaTeX Workshop extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://github.com/James-Yu/LaTeX-Workshop/raw/2a843a258002f05807203c078715dd6836faeeb8/demo_media/preview.gif" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="live-share"&gt;Live Share &lt;a class="anchor" href="#live-share" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Visual Studio Live Share is a real-time collaboration extension that allows you to share your workspace with others, enabling pair programming, code reviews, and collaborative debugging.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-vsliveshare.vsliveshare&lt;/code&gt; to install the Live Share extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vsliveshare.vsliveshare" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://aka.ms/vsls/quickstart/invite" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="azure-account-and-repos"&gt;Azure Account and Repos &lt;a class="anchor" href="#azure-account-and-repos" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;These extensions offer a range of Azure-related functionality, including managing your Azure account, working with Azure Repos, exploring remote resources, and browsing remote Git repositories.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-vscode.azure-account&lt;/code&gt; to install the Azure Account extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-vscode.azure-repos&lt;/code&gt; to install the Azure Repos extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-repos" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="codesnap"&gt;CodeSnap &lt;a class="anchor" href="#codesnap" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;CodeSnap is a handy extension for creating beautiful code screenshots directly from your editor, making it easier to share code snippets on social media, blog posts, or documentation.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension adpyke.codesnap&lt;/code&gt; to install the CodeSnap extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=adpyke.codesnap" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure&gt;&lt;img src="https://user-images.githubusercontent.com/6897215/233820944-bfb1f980-4eb6-4bbd-8118-a960888b2d32.png" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;h3 id="micromamba"&gt;Micromamba &lt;a class="anchor" href="#micromamba" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The Micromamba extension for VSCode integrates the Micromamba package manager, making it easier to manage Conda environments and packages within the editor.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension corker.vscode-micromamba&lt;/code&gt; to install the Micromamba extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=corker.vscode-micromamba" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="markdownlint"&gt;Markdownlint &lt;a class="anchor" href="#markdownlint" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Markdownlint is a VSCode extension that provides linting and style-checking for Markdown files, ensuring consistent and clean Markdown content.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension DavidAnson.vscode-markdownlint&lt;/code&gt; to install the Markdownlint extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="prettier"&gt;Prettier &lt;a class="anchor" href="#prettier" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Prettier is a powerful code formatter that supports multiple languages, including JavaScript, TypeScript, HTML, CSS, and more. It enforces a consistent code style across your project.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension esbenp.prettier-vscode&lt;/code&gt; to install the Prettier extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="code-runner"&gt;Code Runner &lt;a class="anchor" href="#code-runner" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Code Runner is a versatile extension that enables you to quickly run code snippets or whole files for multiple programming languages within VSCode, without the need to switch to an external terminal.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension formulahendry.code-runner&lt;/code&gt; to install the Code Runner extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="go"&gt;Go &lt;a class="anchor" href="#go" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The Go extension by the Go team provides rich language support for the Go programming language, with features like IntelliSense, debugging, linting, and code navigation.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension golang.go&lt;/code&gt; to install the Go extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=golang.go" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="home-assistant"&gt;Home Assistant &lt;a class="anchor" href="#home-assistant" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The Home Assistant extension for VSCode provides integration with Home Assistant configuration files, offering syntax highlighting, auto-completion, and validation.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension keesschollaart.vscode-home-assistant&lt;/code&gt; to install the Home Assistant extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=keesschollaart.vscode-home-assistant" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="azure-pipelines-resource-groups-storage-and-terraform"&gt;Azure Pipelines, Resource Groups, Storage, and Terraform &lt;a class="anchor" href="#azure-pipelines-resource-groups-storage-and-terraform" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;These Microsoft Azure extensions provide powerful integrations with various Azure services, allowing you to manage pipelines, resource groups, storage, and Terraform configurations directly within VSCode.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-azure-devops.azure-pipelines&lt;/code&gt; to install the Azure Pipelines extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-azure-devops.azure-pipelines" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-azuretools.vscode-azureresourcegroups&lt;/code&gt; to install the Azure Resource Groups extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureresourcegroups" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-azuretools.vscode-azurestorage&lt;/code&gt; to install the Azure Storage extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurestorage" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-azuretools.vscode-azureterraform&lt;/code&gt; to install the Azure Terraform extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureterraform" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="docker"&gt;Docker &lt;a class="anchor" href="#docker" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The Docker extension adds rich support for working with Docker containers and images in VSCode, including building, managing, and deploying containerized applications.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension ms-azuretools.vscode-docker&lt;/code&gt; to install the Docker extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="autodocstring"&gt;AutoDocstring &lt;a class="anchor" href="#autodocstring" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;AutoDocstring is a helpful extension that automatically generates docstrings for Python functions and classes, following popular docstring formats like Google, NumPy, and reStructuredText.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension njpwerner.autodocstring&lt;/code&gt; to install the AutoDocstring extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="xml-and-yaml"&gt;XML and YAML &lt;a class="anchor" href="#xml-and-yaml" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;These extensions by Red Hat provide rich language support for XML and YAML, including syntax highlighting, validation, code navigation, and more.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension redhat.vscode-xml&lt;/code&gt; to install the XML extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension redhat.vscode-yaml&lt;/code&gt; to install the YAML extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="rust-analyzer"&gt;Rust Analyzer &lt;a class="anchor" href="#rust-analyzer" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Rust Analyzer is a powerful language server for the Rust programming language, offering features like syntax highlighting, code navigation, and auto-completion.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension rust-lang.rust-analyzer&lt;/code&gt; to install the Rust Analyzer extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="even-better-toml"&gt;Even Better TOML &lt;a class="anchor" href="#even-better-toml" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Even Better TOML is a VSCode extension that provides syntax highlighting, validation, and auto-completion for TOML (Tom&amp;rsquo;s Obvious, Minimal Language) configuration files.&lt;/p&gt;&#10;&lt;h3 id="terrastruct"&gt;Terrastruct &lt;a class="anchor" href="#terrastruct" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Terrastruct is a VSCode extension that helps you visualize your Terraform dependency graphs as interactive diagrams, making it easier to understand complex infrastructure-as-code projects.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension Terrastruct.d2&lt;/code&gt; to install the Terrastruct extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=Terrastruct.d2" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="pdf"&gt;PDF &lt;a class="anchor" href="#pdf" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The PDF extension allows you to view and manage PDF files directly within VSCode, with support for zooming, rotating, and searching text.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension tomoki1207.pdf&lt;/code&gt; to install the PDF extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=tomoki1207.pdf" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="ltex"&gt;LTeX &lt;a class="anchor" href="#ltex" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;LTeX is a grammar and spell checker extension for LaTeX, Markdown, and other markup languages, with support for multiple languages and customizable rules.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension valentjn.vscode-ltex&lt;/code&gt; to install the LTeX extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=valentjn.vscode-ltex" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="intellicode-api-usage-examples-and-intellicode"&gt;IntelliCode API Usage Examples and IntelliCode &lt;a class="anchor" href="#intellicode-api-usage-examples-and-intellicode" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;These extensions by the Visual Studio Expt Team provide AI-powered code completion and code examples, helping you write code faster and with fewer errors.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension VisualStudioExptTeam.intellicode-api-usage-examples&lt;/code&gt; to install the IntelliCode API Usage Examples extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.intellicode-api-usage-examples" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension VisualStudioExptTeam.vscodeintellicode&lt;/code&gt; to install the IntelliCode extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="vscode-icons"&gt;vscode-icons &lt;a class="anchor" href="#vscode-icons" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;vscode-icons is a popular extension that adds file icons to VSCode, making it easier to identify file types in the file explorer.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;code --install-extension vscode-icons-team.vscode-icons&lt;/code&gt; to install the vscode-icons extension &lt;a href="https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons" target="_blank" rel="noopener"&gt;(docs)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>Working faster in the terminal 🥷</title><link>https://www.nijho.lt/post/terminal-ninja/</link><pubDate>Sat, 15 Apr 2023 00:00:00 +0000</pubDate><guid isPermaLink="false">/post/terminal-ninja/</guid><description>&lt;aside class="callout callout-warning"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z"/&gt;&lt;/svg&gt;&lt;div&gt;Originally written in April 2023 but slightly updated in March 2025.&#10;Since then, I have published my entire &lt;a href="https://github.com/basnijholt/dotfiles" target="_blank" rel="noopener"&gt;&lt;code&gt;dotfiles&lt;/code&gt;&lt;/a&gt; repo, see the &lt;a href="https://www.nijho.lt/post/dotfiles/" target="_blank" rel="noopener"&gt;dotfiles blog post&lt;/a&gt; for more details.&#10;Since writing this post, I switched from &lt;code&gt;z-zsh&lt;/code&gt; to &lt;a href="https://github.com/ajeetdsouza/zoxide" target="_blank" rel="noopener"&gt;&lt;code&gt;zoxide&lt;/code&gt;&lt;/a&gt;, and from &lt;code&gt;autoenv&lt;/code&gt; to &lt;a href="https://direnv.net/" target="_blank" rel="noopener"&gt;&lt;code&gt;direnv&lt;/code&gt;&lt;/a&gt;, and am using a bunch of other modern CLI tools.&lt;/div&gt;&lt;/aside&gt;&#10;&lt;p&gt;Welcome to a world of terminal productivity!&#10;When helping others with programming problems on their computer, I often find myself in their terminal, and feel like walking through sand.&#10;When I show how awesome of an experience it can be, I often find myself repeating the same suggestions over and over again.&#10;So, I decided to write this guide to help others set up their terminal in a similar fashion.&#10;Let&amp;rsquo;s explore the wonders of &lt;a href="https://www.zsh.org/" target="_blank" rel="noopener"&gt;&lt;code&gt;zsh&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://ohmyz.sh/" target="_blank" rel="noopener"&gt;&lt;code&gt;oh-my-zsh&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://wiki.gentoo.org/wiki/Keychain" target="_blank" rel="noopener"&gt;&lt;code&gt;keychain&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://starship.rs/" target="_blank" rel="noopener"&gt;&lt;code&gt;starship&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/hyperupcall/autoenv" target="_blank" rel="noopener"&gt;&lt;code&gt;autoenv&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/agkozak/zsh-z" target="_blank" rel="noopener"&gt;&lt;code&gt;z&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/zsh-users/zsh-autosuggestions" target="_blank" rel="noopener"&gt;&lt;code&gt;zsh-autosuggestions&lt;/code&gt;&lt;/a&gt;, and other useful tools!&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="https://camo.githubusercontent.com/18cdb04e93fe276412b588dbed23bc328614bf7a4d09ea4d8862d38f1c466c65/687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c74757a6a766251364c31717a677078392e676966" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;details class="toc" open&gt;&lt;summary&gt;Table of contents&lt;/summary&gt;&lt;nav id="TableOfContents"&gt;&#10; &lt;ul&gt;&#10; &lt;li&gt;&lt;a href="#-dotfiles-version-control-your-configuration-files"&gt;💾 Dotfiles: Version Control Your Configuration Files&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#-the-power-of-zsh-and-oh-my-zsh"&gt;🐚 The Power of Zsh and Oh-my-zsh&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#-oh-my-zsh-z-plugin-jump-around"&gt;🚀 Oh-my-zsh Z Plugin: Jump Around!&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#-oh-my-zsh-dirhistory-plugin-time-travel-through-directories"&gt;⏰ Oh-my-zsh Dirhistory Plugin: Time Travel Through Directories&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#-oh-my-zsh-git-plugin-turbocharge-your-git-workflow"&gt;🔧 Oh-my-zsh Git Plugin: Turbocharge Your Git Workflow&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#-keychain-ssh-key-management-made-simple"&gt;🔑 Keychain: SSH Key Management Made Simple&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#-starship-a-sleek-informative-shell-prompt"&gt;🌌 Starship: A Sleek, Informative Shell Prompt&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#-autoenv-smart-environment-management"&gt;🌍 Autoenv: Smart Environment Management&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#-zsh-autosuggestions-command-suggestions-as-you-type"&gt;💡 Zsh-autosuggestions: Command Suggestions as You Type&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#-bat-a-supercharged-cat-alternative"&gt;🦇 Bat: A Supercharged Cat Alternative&lt;/a&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;a href="#-putting-it-all-together"&gt;🧩 Putting it All Together&lt;/a&gt;&lt;/li&gt;&#10; &lt;/ul&gt;&#10;&lt;/nav&gt;&lt;/details&gt;&#10;&#10;&lt;h2 id="-dotfiles-version-control-your-configuration-files"&gt;💾 Dotfiles: Version Control Your Configuration Files &lt;a class="anchor" href="#-dotfiles-version-control-your-configuration-files" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Configuration files are the key to a personalized terminal experience.&#10;Keeping a &lt;code&gt;dotfiles&lt;/code&gt; folder where you store and version control your config files ensures they&amp;rsquo;re safe, portable, and easily shared.&lt;/p&gt;&#10;&lt;p&gt;By keeping your &lt;code&gt;.bashrc&lt;/code&gt;, &lt;code&gt;.zshrc&lt;/code&gt;, and other configuration files under version control, you can:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Track changes and easily revert to previous versions if something breaks.&lt;/li&gt;&#10;&lt;li&gt;Sync your settings across multiple machines, recreating your setup anywhere.&lt;/li&gt;&#10;&lt;li&gt;Share your configurations with others, helping them improve their own terminal experience.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;A powerful approach is to not only track your configuration files but also to include plugins and tools as git submodules in your dotfiles repository. This keeps everything organized and makes it easy to update or share your complete setup.&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;s an example of submodules I track in my dotfiles repository:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;submodule &lt;span class="s2"&gt;&amp;#34;configs/zsh/oh-my-zsh&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; submodules/oh-my-zsh&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; git@github.com:robbyrussell/oh-my-zsh.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;submodule &lt;span class="s2"&gt;&amp;#34;configs/zsh/zsh-syntax-highlighting&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; submodules/zsh-syntax-highlighting&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; git@github.com:zsh-users/zsh-syntax-highlighting.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;submodule &lt;span class="s2"&gt;&amp;#34;configs/zsh/zsh-autosuggestions&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; submodules/zsh-autosuggestions&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; git@github.com:zsh-users/zsh-autosuggestions.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;submodule &lt;span class="s2"&gt;&amp;#34;submodules/keychain&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; submodules/keychain&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; git@github.com:funtoo/keychain.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;submodule &lt;span class="s2"&gt;&amp;#34;configs/zsh/k&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; submodules/k&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; git@github.com:supercrabtree/k.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;submodule &lt;span class="s2"&gt;&amp;#34;submodules/.tmux&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; submodules/tmux&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; https://github.com/gpakosz/.tmux.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;submodule &lt;span class="s2"&gt;&amp;#34;configs/zsh/autoenv&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; submodules/autoenv&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; https://github.com/hyperupcall/autoenv&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;submodule &lt;span class="s2"&gt;&amp;#34;submodules/bypass-paywalls-chrome&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; submodules/bypass-paywalls-chrome&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; git@github.com:iamadamdev/bypass-paywalls-chrome.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;submodule &lt;span class="s2"&gt;&amp;#34;submodules/dotbot&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; submodules/dotbot&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; https://github.com/anishathalye/dotbot&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;submodule &lt;span class="s2"&gt;&amp;#34;dotbot&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="nv"&gt;ignore&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; dirty&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# (... a couple more ...)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To start version controlling your dotfiles, create a new Git repository, add your config files and submodules, then commit and push to a remote repository for safekeeping.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/anishathalye/dotbot" target="_blank" rel="noopener"&gt;Dotbot&lt;/a&gt; is highly recommended for automating the installation of your dotfiles.&lt;/p&gt;&#10;&lt;aside class="callout callout-note"&gt;&lt;svg class="ico" viewBox="0 0 256 256" aria-hidden="true"&gt;&lt;path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"/&gt;&lt;/svg&gt;&lt;div&gt;Although I keep my dotfiles in a Git repository, I have not made it public. I might do so in the future, let me know if you&amp;rsquo;re interested!&lt;/div&gt;&lt;/aside&gt;&#10;&lt;h2 id="-the-power-of-zsh-and-oh-my-zsh"&gt;🐚 The Power of Zsh and Oh-my-zsh &lt;a class="anchor" href="#-the-power-of-zsh-and-oh-my-zsh" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The first step toward terminal efficiency is choosing the right shell.&#10;Zsh is a powerful, versatile, and user-friendly shell with features that significantly improve the command line experience.&#10;Oh-my-zsh adds even more functionality as a framework for managing Zsh configurations.&#10;It brings themes, plugins, and functions that make the terminal more powerful and enjoyable to use.&lt;/p&gt;&#10;&lt;p&gt;Setting up Zsh and Oh-my-zsh is straightforward:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Install Zsh (check your system&amp;rsquo;s package manager for instructions).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Install Oh-my-zsh by running:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sh -c &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Edit your &lt;code&gt;.zshrc&lt;/code&gt; file and add the following lines to customize your plugins and theme:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ZSH_THEME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;robbyrussell&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;# or any other theme you like&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;plugins&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;git z dirhistory &lt;span class="nb"&gt;history&lt;/span&gt; sudo&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="-oh-my-zsh-z-plugin-jump-around"&gt;🚀 Oh-my-zsh Z Plugin: Jump Around! &lt;a class="anchor" href="#-oh-my-zsh-z-plugin-jump-around" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Quick navigation through the file system is essential for productivity.&#10;&lt;a href="https://github.com/agkozak/zsh-z" target="_blank" rel="noopener"&gt;Z&lt;/a&gt; is a fantastic utility that lets you jump to directories based on frequency and recency of use.&#10;With Z, you can instantly leap to any frequently-used folder without typing the full path.&lt;/p&gt;&#10;&lt;p&gt;To set up Z, add the following lines to your &lt;code&gt;.zshrc&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;plugins&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;... z ...&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="nv"&gt;$ZSH&lt;/span&gt;/oh-my-zsh.sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;figure&gt;&lt;img src="https://github.com/agkozak/zsh-z/raw/da8dee3ccaf882d1bf653c34850041025616ceb5/img/demo.gif" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;p&gt;Alternative: &lt;a href="https://github.com/ajeetdsouza/zoxide" target="_blank" rel="noopener"&gt;zoxide&lt;/a&gt;, a more modern and faster version of Z in Rust.&#10;Need to try it myself.&lt;/p&gt;&#10;&lt;h2 id="-oh-my-zsh-dirhistory-plugin-time-travel-through-directories"&gt;⏰ Oh-my-zsh Dirhistory Plugin: Time Travel Through Directories &lt;a class="anchor" href="#-oh-my-zsh-dirhistory-plugin-time-travel-through-directories" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The &lt;code&gt;dirhistory&lt;/code&gt; plugin makes navigating directories incredibly simple with keyboard shortcuts:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;ALT-LEFT&lt;/strong&gt;: Move back to previously visited directories.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;ALT-RIGHT&lt;/strong&gt;: Undo the effect of ALT-LEFT, returning to the directories you moved back from.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;ALT-UP&lt;/strong&gt;: Move up one level in the directory hierarchy (equivalent to &lt;code&gt;cd ..&lt;/code&gt;).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;ALT-DOWN&lt;/strong&gt;: Move into the first directory found in alphabetical order within the current directory.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;To set up the Oh-my-zsh &lt;code&gt;dirhistory&lt;/code&gt; plugin, add the following lines to your &lt;code&gt;.zshrc&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;plugins&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;... dirhistory ...&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="nv"&gt;$ZSH&lt;/span&gt;/oh-my-zsh.sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This plugin makes directory navigation a breeze, reducing the need for repetitive typing.&lt;/p&gt;&#10;&lt;h2 id="-oh-my-zsh-git-plugin-turbocharge-your-git-workflow"&gt;🔧 Oh-my-zsh Git Plugin: Turbocharge Your Git Workflow &lt;a class="anchor" href="#-oh-my-zsh-git-plugin-turbocharge-your-git-workflow" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;For developers who use Git frequently, typing out full commands like &lt;code&gt;git checkout&lt;/code&gt; and &lt;code&gt;git commit&lt;/code&gt; gets tedious.&#10;&lt;a href="https://github.com/ohmyzsh/ohmyzsh/tree/5d3e86e2a48adf7a308773f8f1b725d187c7c5ef/plugins/git#git-plugin" target="_blank" rel="noopener"&gt;The &lt;code&gt;git&lt;/code&gt; plugin&lt;/a&gt; in Oh-my-zsh provides useful aliases that save time and keystrokes.&#10;Here are some of the most commonly used aliases:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;gco&lt;/code&gt;: &lt;code&gt;git checkout&lt;/code&gt; - Switch branches or restore working tree files.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gd&lt;/code&gt;: &lt;code&gt;git diff&lt;/code&gt; - Show changes between the working tree and the index or a tree.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;g&lt;/code&gt;: &lt;code&gt;git&lt;/code&gt; - The git command itself.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gcb&lt;/code&gt;: &lt;code&gt;git checkout -b&lt;/code&gt; - Create a new branch and switch to it.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gc&lt;/code&gt;: &lt;code&gt;git commit --verbose&lt;/code&gt; - Create a new commit with a verbose message.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gc!&lt;/code&gt;: &lt;code&gt;git commit --verbose --amend&lt;/code&gt; - Amend the previous commit with a verbose message.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;ga&lt;/code&gt;: git add - Add file contents to the index.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gca&lt;/code&gt;: &lt;code&gt;git commit --verbose --all&lt;/code&gt; - Commit all changes with a verbose message.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gca!&lt;/code&gt;: &lt;code&gt;git commit --verbose --all --amend&lt;/code&gt; - Amend the previous commit with a verbose message.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gcp&lt;/code&gt;: &lt;code&gt;git cherry-pick&lt;/code&gt; - Apply the changes introduced by some existing commits.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gst&lt;/code&gt;: &lt;code&gt;git status&lt;/code&gt; - Show the working tree status.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gp&lt;/code&gt;: &lt;code&gt;git push&lt;/code&gt; - Update remote refs along with associated objects.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gmom&lt;/code&gt;: &lt;code&gt;git merge origin/$(git_main_branch)&lt;/code&gt; - Merge changes from the main branch.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;grbom&lt;/code&gt;: &lt;code&gt;git rebase origin/$(git_main_branch)&lt;/code&gt; - Rebase current branch onto the main branch.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gfa&lt;/code&gt;: &lt;code&gt;git fetch --all --prune --jobs=10&lt;/code&gt; - Fetch all remote branches and remove any stale remote-tracking references, using 10 parallel jobs.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;To set up the Oh-my-zsh &lt;code&gt;git&lt;/code&gt; plugin, add the following lines to your &lt;code&gt;.zshrc&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;plugins&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;... git ...&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="nv"&gt;$ZSH&lt;/span&gt;/oh-my-zsh.sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Check out the full list of &lt;a href="https://github.com/ohmyzsh/ohmyzsh/tree/5d3e86e2a48adf7a308773f8f1b725d187c7c5ef/plugins/git#git-plugin" target="_blank" rel="noopener"&gt;Git aliases&lt;/a&gt; that the Git plugin provides.&lt;/p&gt;&#10;&lt;h2 id="-keychain-ssh-key-management-made-simple"&gt;🔑 Keychain: SSH Key Management Made Simple &lt;a class="anchor" href="#-keychain-ssh-key-management-made-simple" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://wiki.gentoo.org/wiki/Keychain" target="_blank" rel="noopener"&gt;Keychain&lt;/a&gt; is a tool that manages SSH keys, making secure access to remote systems much more convenient.&#10;It&amp;rsquo;s especially useful when working with Git repositories or remote servers via SSH.&lt;/p&gt;&#10;&lt;p&gt;With Keychain, you only need to &lt;em&gt;&lt;strong&gt;enter your SSH password once&lt;/strong&gt;&lt;/em&gt; after rebooting, and it will remember it for future sessions.&lt;/p&gt;&#10;&lt;p&gt;To set up Keychain, clone it to your dotfiles directory:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone git@github.com:funtoo/keychain.git ~/dotfiles/keychain&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then add these lines to your &lt;code&gt;.bash_profile&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;hostname&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Linux&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/dotfiles/dotfiles/keychain/&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; ps -p &lt;span class="nv"&gt;$SSH_AGENT_PID&lt;/span&gt; &amp;gt; /dev/null&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ssh-agent is already running&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;keychain --eval --quiet id_ed25519&lt;span class="sb"&gt;`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;fi&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;uname&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Darwin&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;keychain --eval --quiet --agents ssh --inherit any-once id_ed25519&lt;span class="sb"&gt;`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-starship-a-sleek-informative-shell-prompt"&gt;🌌 Starship: A Sleek, Informative Shell Prompt &lt;a class="anchor" href="#-starship-a-sleek-informative-shell-prompt" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://starship.rs/" target="_blank" rel="noopener"&gt;Starship&lt;/a&gt; is a minimal, blazing-fast, and fully customizable shell prompt that provides essential information at a glance.&#10;It shows details about your current environment, such as Git branch, Python virtual environment, and more.&lt;/p&gt;&#10;&lt;p&gt;Setting up Starship is simple:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Install it using the appropriate command for your system:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://starship.rs/install.sh &lt;span class="p"&gt;|&lt;/span&gt; bash&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Add the following line to your &lt;code&gt;.bashrc&lt;/code&gt; or &lt;code&gt;.zshrc&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;starship init zsh&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;video controls&gt;&#10; &lt;source src="https://starship.rs/demo.webm" type="video/webm"&gt;&#10; Your browser does not support the video tag.&#10;&lt;/video&gt;&#10;&lt;h2 id="-autoenv-smart-environment-management"&gt;🌍 Autoenv: Smart Environment Management &lt;a class="anchor" href="#-autoenv-smart-environment-management" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;When working with multiple projects, each often requires specific environment settings.&#10;&lt;a href="https://github.com/hyperupcall/autoenv" target="_blank" rel="noopener"&gt;Autoenv&lt;/a&gt; automates the process of activating and deactivating these settings when you enter or leave a directory.&lt;/p&gt;&#10;&lt;p&gt;For example, you can create a &lt;code&gt;.env&lt;/code&gt; file in your project directory to automatically activate a Python environment:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda activate myenv&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To set up Autoenv:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Clone the repository (or add it to your &lt;code&gt;dotfiles&lt;/code&gt;):&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone git://github.com/hyperupcall/autoenv.git ~/.autoenv&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Add the following line to your &lt;code&gt;.zshrc&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.autoenv/activate.sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="-zsh-autosuggestions-command-suggestions-as-you-type"&gt;💡 Zsh-autosuggestions: Command Suggestions as You Type &lt;a class="anchor" href="#-zsh-autosuggestions-command-suggestions-as-you-type" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/zsh-users/zsh-autosuggestions" target="_blank" rel="noopener"&gt;Zsh-autosuggestions&lt;/a&gt; suggests commands based on your command history as you type.&#10;This saves keystrokes and makes repetitive tasks much faster.&lt;/p&gt;&#10;&lt;p&gt;To set up Zsh-autosuggestions:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Clone the repository:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/zsh-users/zsh-autosuggestions.git &lt;span class="nv"&gt;$ZSH_CUSTOM&lt;/span&gt;/plugins/zsh-autosuggestions&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Add the following line to your &lt;code&gt;.zshrc&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="nv"&gt;$ZSH_CUSTOM&lt;/span&gt;/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;figure&gt;&lt;img src="https://user-images.githubusercontent.com/6897215/233818577-189256ff-b1e2-4790-984e-6fd191df5c00.gif" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;p&gt;Alternative: &lt;a href="https://direnv.net/" target="_blank" rel="noopener"&gt;&lt;code&gt;direnv&lt;/code&gt;&lt;/a&gt;, very similar to &lt;code&gt;autoenv&lt;/code&gt;, but seems more widely used.&#10;Still need to try it myself.&lt;/p&gt;&#10;&lt;h2 id="-bat-a-supercharged-cat-alternative"&gt;🦇 Bat: A Supercharged Cat Alternative &lt;a class="anchor" href="#-bat-a-supercharged-cat-alternative" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/sharkdp/bat" target="_blank" rel="noopener"&gt;Bat&lt;/a&gt; is a modern replacement for the &lt;code&gt;cat&lt;/code&gt; command with syntax highlighting, Git integration, and other enhancements that make viewing files in the terminal much more pleasant.&lt;/p&gt;&#10;&lt;p&gt;Installing Bat is straightforward with most package managers:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install bat &lt;span class="c1"&gt;# macOS&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install bat &lt;span class="c1"&gt;# Ubuntu/Debian&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To seamlessly replace &lt;code&gt;cat&lt;/code&gt; with &lt;code&gt;bat&lt;/code&gt; while maintaining the simple behavior when needed, add this to your &lt;code&gt;.zshrc&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;command&lt;/span&gt; -v bat &lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&amp;gt; /dev/null&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;alias&lt;/span&gt; &lt;span class="nv"&gt;cat&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;bat --plain --paging=never&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This alias makes &lt;code&gt;bat&lt;/code&gt; behave like &lt;code&gt;cat&lt;/code&gt; by default (without line numbers or fancy formatting), but you can still use the &lt;code&gt;bat&lt;/code&gt; command directly when you want the enhanced features.&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="https://imgur.com/rGsdnDe.png" alt="" loading="lazy" data-zoomable&gt;&lt;/figure&gt;&lt;p&gt;Bat is particularly useful when viewing code files, configuration files, or any text that benefits from syntax highlighting, making it easier to quickly understand the content at a glance.&lt;/p&gt;&#10;&lt;h2 id="-putting-it-all-together"&gt;🧩 Putting it All Together &lt;a class="anchor" href="#-putting-it-all-together" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;With these powerful tools at your disposal, you&amp;rsquo;re now equipped to make your terminal experience faster, more efficient, and more enjoyable.&#10;These tools work together to reduce repetitive typing, simplify complex workflows, and provide helpful information when you need it.&#10;Each component adds something valuable to your terminal setup, creating a seamless and productive environment.&lt;/p&gt;&#10;&lt;p&gt;Try implementing these tools one by one, and see how they transform your command-line experience.&#10;Feel free to reach out if you have questions about any of the tools mentioned.&#10;Happy terminal customizing!&lt;/p&gt;&#10;</description></item></channel></rss>