<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>/home/bradschwartz</title>
    <subtitle>There&#39;s no place like $HOME</subtitle>
    <link rel="self" type="application/atom+xml" href="https://bradschwartz.io/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://bradschwartz.io"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2023-04-26T00:00:00+00:00</updated>
    <id>https://bradschwartz.io/atom.xml</id>
    <entry xml:lang="en">
        <title>My Dev Environment</title>
        <published>2023-04-26T00:00:00+00:00</published>
        <updated>2023-04-26T00:00:00+00:00</updated>
        
        <author>
          <name>Brad Schwartz</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://bradschwartz.io/blog/my-dev-environment/"/>
        <id>https://bradschwartz.io/blog/my-dev-environment/</id>
        
        <content type="html" xml:base="https://bradschwartz.io/blog/my-dev-environment/">&lt;p&gt;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 &lt;a rel=&quot;external&quot; href=&quot;https://github.com/bradschwartz/dotfiles&quot;&gt;dotfiles&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;my-system&quot;&gt;My System&lt;/h2&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;$ neofetch 
                    &amp;#39;c.          brad@Brads-MBP.lan 
                 ,xNMM.          ------------------ 
               .OMMMMo           OS: macOS 13.3.1 22E261 arm64 
               OMMM0,            Host: MacBookPro18,3 
     .;loddo:&amp;#39; loolloddol;.      Kernel: 22.4.0 
   cKMMMMMMMMMMNWMMMMMMMMMM0:    Uptime: 1 day, 1 hour 
 .KMMMMMMMMMMMMMMMMMMMMMMMWd.    Packages: 172 (brew) 
 XMMMMMMMMMMMMMMMMMMMMMMMX.      Shell: bash 5.2.15 
;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 
     ;KMMMMMMMWXXWMMMMMMMk.      Memory: 3818MiB / 32768MiB 
       .cooc,.    .,coo:.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;installing-tools&quot;&gt;Installing Tools&lt;/h2&gt;
&lt;p&gt;For now, I use &lt;a rel=&quot;external&quot; href=&quot;https://brew.sh&quot;&gt;Homebrew&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;I leverage &lt;a rel=&quot;external&quot; href=&quot;https://github.com/Homebrew/homebrew-bundle&quot;&gt;Homebrew Bundle&lt;/a&gt; especially
hard - it essentially lets me generate manifests of everything I have installed
in a &lt;a rel=&quot;external&quot; href=&quot;https://github.com/bradschwartz/dotfiles/blob/HEAD/Brewfile&quot;&gt;Brewfile&lt;/a&gt;
(and accompanying lockfile).&lt;/p&gt;
&lt;p&gt;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&#39;m happy with Homebrew and no build daemons.&lt;/p&gt;
&lt;h2 id=&quot;writing-code&quot;&gt;Writing Code&lt;/h2&gt;
&lt;p&gt;For the last few years I&#39;ve been rocking &lt;a rel=&quot;external&quot; href=&quot;https://code.visualstudio.com/&quot;&gt;VSCode&lt;/a&gt;.
I played around with the a full FOSS build of it (&lt;a rel=&quot;external&quot; href=&quot;https://vscodium.com/&quot;&gt;VSCodium&lt;/a&gt;)
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 &lt;a rel=&quot;external&quot; href=&quot;https://github.com/bradschwartz/dotfiles/blob/HEAD/visual-studio-code/Library/Application%20Support/Code/User/settings.json&quot;&gt;dotfiles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;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&#39;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 &lt;code&gt;use-package&lt;/code&gt; for package management, native compilation,
and &lt;code&gt;tramp-container&lt;/code&gt;. The tramp-contaner package is especially powerful
with recent tools like DevContainers, which I&#39;m slowly introducing to my
workflows.&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;## Install the language server for Rust and ensure it&amp;#39;s in the PATH
$ brew install rust-analyzer
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code data-lang=&quot;elisp&quot;&gt;;; $HOME/emacs.d/init.el
;; Install rust major mode and configure the built-in LSP server to run!
(use-package rust-mode
	:hook ((rust-mode . eglot-ensure))
)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;shell&quot;&gt;Shell&lt;/h2&gt;
&lt;p&gt;I&#39;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&#39;ve played around
with a few of the popular terminal emulators like
&lt;a rel=&quot;external&quot; href=&quot;https://github.com/alacritty/alacritty&quot;&gt;Alacritty&lt;/a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https://www.warp.dev/&quot;&gt;Warp&lt;/a&gt;,
and &lt;a rel=&quot;external&quot; href=&quot;https://wezfurlong.org/wezterm/&quot;&gt;Wezterm&lt;/a&gt;, but haven&#39;t found a convincing
enough reason to stop using the default Terminal.app.&lt;/p&gt;
&lt;p&gt;All installed through Homebrew and in no particular order, some of my must-have
CLI tools that I always reach for:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://brew.sh&quot;&gt;brew&lt;/a&gt; - how everything is (un)installed&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://github.com/BurntSushi/ripgrep&quot;&gt;ripgrep&lt;/a&gt; - a better &lt;code&gt;grep&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://github.com/sharkdp/bat&quot;&gt;bat&lt;/a&gt; - a better &lt;code&gt;cat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://starship.rs/&quot;&gt;starship&lt;/a&gt; - a fast shell prompt with sane defaults&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://www.gnu.org/software/stow/&quot;&gt;stow&lt;/a&gt; - symlink manager and how I manage my dotfiles!&lt;/li&gt;
&lt;/ol&gt;
</content>
        
    </entry>
</feed>
