<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.5">Jekyll</generator><link href="https://bradschwartz.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://bradschwartz.io/" rel="alternate" type="text/html" /><updated>2024-05-16T22:51:54+00:00</updated><id>https://bradschwartz.io/feed.xml</id><title type="html">/home/bradschwartz</title><subtitle>There's no place like $HOME</subtitle><author><name>Brad Schwartz</name></author><entry><title type="html">My Dev Environment</title><link href="https://bradschwartz.io/blog/my-dev-environment.html" rel="alternate" type="text/html" title="My Dev Environment" /><published>2023-04-26T00:00:00+00:00</published><updated>2023-04-26T00:00:00+00:00</updated><id>https://bradschwartz.io/blog/my-dev-environment</id><content type="html" xml:base="https://bradschwartz.io/blog/my-dev-environment.html"><![CDATA[<p>I spend a lot of time on my computer, and have built up some fairly
opinionated ways of how I like my system set up. Nearly everything
here is managed through my <a href="https://github.com/bradschwartz/dotfiles">dotfiles</a>.</p>

<h2 id="my-system">My System</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>neofetch 
                    <span class="s1">'c.          brad@Brads-MBP.lan 
                 ,xNMM.          ------------------ 
               .OMMMMo           OS: macOS 13.3.1 22E261 arm64 
               OMMM0,            Host: MacBookPro18,3 
     .;loddo:'</span> loolloddol<span class="p">;</span><span class="nb">.</span>      Kernel: 22.4.0 
   cKMMMMMMMMMMNWMMMMMMMMMM0:    Uptime: 1 day, 1 hour 
 .KMMMMMMMMMMMMMMMMMMMMMMMWd.    Packages: 172 <span class="o">(</span>brew<span class="o">)</span> 
 XMMMMMMMMMMMMMMMMMMMMMMMX.      Shell: bash 5.2.15 
<span class="p">;</span>MMMMMMMMMMMMMMMMMMMMMMMM:       Resolution: 1512x982 
:MMMMMMMMMMMMMMMMMMMMMMMM:       DE: Aqua 
.MMMMMMMMMMMMMMMMMMMMMMMMX.      WM: Rectangle 
 kMMMMMMMMMMMMMMMMMMMMMMMMWd.    Terminal: Apple_Terminal 
 .XMMMMMMMMMMMMMMMMMMMMMMMMMMk   Terminal Font: SFMonoPowerline-Medium 
  .XMMMMMMMMMMMMMMMMMMMMMMMMK.   CPU: Apple M1 Pro 
    kMMMMMMMMMMMMMMMMMMMMMMd     GPU: Apple M1 Pro 
     <span class="p">;</span>KMMMMMMMWXXWMMMMMMMk.      Memory: 3818MiB / 32768MiB 
       .cooc,.    .,coo:.
</code></pre></div></div>

<h2 id="installing-tools">Installing Tools</h2>

<p>For now, I use <a href="https://brew.sh">Homebrew</a> to manage installing as
much as possible. I recently had to bootstrap my machine from start and outside
of a half dozen commands and installing brew, everything is managed for me.</p>

<p>I leverage <a href="https://github.com/Homebrew/homebrew-bundle">Homebrew Bundle</a> especially
hard - it essentially lets me generate manifests of everything I have installed
in a <a href="https://github.com/bradschwartz/dotfiles/blob/HEAD/Brewfile">Brewfile</a>
(and accompanying lockfile).</p>

<p>Definitely interested in checking out some of the more fancy package managers,
like Nix or Guix, but they seem to have a much steeper learning curve
and installation process - for now I’m happy with Homebrew and no build daemons.</p>

<h2 id="writing-code">Writing Code</h2>

<p>For the last few years I’ve been rocking <a href="https://code.visualstudio.com/">VSCode</a>.
I played around with the a full FOSS build of it (<a href="https://vscodium.com/">VSCodium</a>)
but found it was more trouble than it was worth getting extensions installed,
and missed some of the propietary only ones. Again, all of those configurations
are stored in my <a href="https://github.com/bradschwartz/dotfiles/blob/HEAD/visual-studio-code/Library/Application%20Support/Code/User/settings.json">dotfiles</a>.</p>

<p>When I first started programming as an intern in college, my boss
made me use Emacs - and I definitely still would say it won the editor war ;).
I’ve been getting back into it recently and have really figured out all
my prior shortcomings were due to not going deep into customization.
I just upgrade to Emacs version 29 (unreleased) for a lot of the new builtin
capabilities like <code class="language-plaintext highlighter-rouge">use-package</code> for package management, native compilation,
and <code class="language-plaintext highlighter-rouge">tramp-container</code>. The tramp-contaner package is especially powerful
with recent tools like DevContainers, which I’m slowly introducing to my
workflows.</p>

<p>Emacs customizations has been great to really setup my environment the way I like it,
while also not hiding how everything is working. Installing a new package,
adding a language server for it, and hooking up emacs to actually run the LSP
is super easy. For Rust it was as simple as:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">## Install the language server for Rust and ensure it's in the PATH</span>
<span class="nv">$ </span>brew <span class="nb">install </span>rust-analyzer
</code></pre></div></div>

<div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">;; $HOME/emacs.d/init.el</span>
<span class="c1">;; Install rust major mode and configure the built-in LSP server to run!</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">rust-mode</span>
	<span class="ss">:hook</span> <span class="p">((</span><span class="nv">rust-mode</span> <span class="o">.</span> <span class="nv">eglot-ensure</span><span class="p">))</span>
<span class="p">)</span>
</code></pre></div></div>

<h2 id="shell">Shell</h2>

<p>I’m a strong Bash purist, although I always make sure to upgrade from the
MacOS default of 3.2 to whatever is latest, currently 5.x. I’ve played around
with a few of the popular terminal emulators like
<a href="https://github.com/alacritty/alacritty">Alacritty</a>, <a href="https://www.warp.dev/">Warp</a>,
and <a href="https://wezfurlong.org/wezterm/">Wezterm</a>, but haven’t found a convincing
enough reason to stop using the default Terminal.app.</p>

<p>All installed through Homebrew and in no particular order, some of my must-have
CLI tools that I always reach for:</p>

<ol>
  <li><a href="https://brew.sh">brew</a> - how everything is (un)installed</li>
  <li><a href="https://github.com/BurntSushi/ripgrep">ripgrep</a> - a better <code class="language-plaintext highlighter-rouge">grep</code></li>
  <li><a href="https://github.com/sharkdp/bat">bat</a> - a better <code class="language-plaintext highlighter-rouge">cat</code></li>
  <li><a href="https://starship.rs/">starship</a> - a fast shell prompt with sane defaults</li>
  <li><a href="https://www.gnu.org/software/stow/">stow</a> - symlink manager and how I manage my dotfiles!</li>
</ol>]]></content><author><name>Brad Schwartz</name></author><category term="blog" /><category term="dotfiles" /><category term="shell" /><summary type="html"><![CDATA[I spend a lot of time on my computer, and have built up some fairly opinionated ways of how I like my system set up. Nearly everything here is managed through my dotfiles.]]></summary></entry></feed>