Setup

This is a roughly up to date version of my "setup" as a student/coder/person, and the tools I choose to use.

Tech

Mac

Hardware

My 2018 15 inch MacBook Pro is my daily driver and what I use to get ~90% of my work done and where I spend most of my time. Therefore, it is also where most of my software I use is.

  • Specs
    • 2.9 GHz 6-Core Intel Core i9
    • 16 GB 2400 MHz DDR4
    • 500GB SSD
    • Radeon Pro 55X
  • Accessories

    Besides the required dongles, I have a number of accessories I frequently use with my Mac.

    • Over time, I have acquired three S2716DGR Dell monitors. I have them on a monitor stand, with a horizontal one in the center and two vertical ones on the sides. If I where to start over, I probably would not do these monitors again, as the TN panel makes it sub-optimal for off viewing angles in a multi-monitor setup, and 4k would have been better than 144Hz, but am still really happy with the setup. Cannot particularly recommend the monitor stand, it is a bit flimsy and loose.
    • I got a WD 10TB external hard drive I use for Time Machine backup as well as archiving old projects
    • For audio, I mostly use my Airpods, but will occasionally connect my ATH-M50's (that is correct, without the X) if I want more sound cancellation.
    • Another incredibly useful 'accessory' is a book. When using your laptop docked, place it on top of a book, being sure to let the vents on the back is off the back of the book. Will make your laptop a lot quieter.
    • Input Devices
      • I, like many tech people, love mechanical keyboards. My current daily driver is the Happy Hacking Keyboard Professional 2, which I absolutely love for its switches, look, key layout, and more. I do have to give an honorable mention to the Pok3r, with Cherry MX blues which served me well for a long time.
      • I switch between three mouse-input devices pretty regularly, which helps manage RSI pains and each device has it's own benefits:
        • The Logitech MX Ergo, which I especially use if I am going to take my laptop somewhere
        • A Magic Trackpad, because nothing beats it when it comes to switching between multiple desktops
        • A Logitech MX Master, a incredibly comfortable mouse (though, the side buttons suck).

Software

This is going to be the meat and potatoes of this setup guide, as I put a lot of thought into the software I use.

  • Getting setup

    Not sure what to call this section, but this section is the software / process I use to setup my computer. I might be old fashioned, or it is a reflect from my time in IT, but I personally try and do a complete reinstall and wipe of everything on my computer once or twice a year. This ensured that my backups are all good, and no junk is accumulating, which happens a lot as someone who likes to hack around and try things out. As a result, I try and put some good effort into making a "reproducible" macOS setup.

    • chezmoi: An incredible tool for managing your dotfiles through git. By installing chezmoi (through Homebrew), I get all the configuration files for my editors, shell, and other software.
    • Homebrew: I cannot speak more highly of Homebrew in terms of making it easy to install and manage software on macOS. Through chezmoi, I use a brew bundle to install just about all the other software on this list. The Brewfile is tracked with chezmoi, so as I make changes to my setup it in a central location tracked with git.

    Unfortunately, this only gets you so far. Even with the Apple ecosystem, not everything syncs. I have a bit list of changes I want to make to my Mac when setting up a new one, and also recurring tasks to make sure I have backups to restore from. For example, setting the date format, showing extensions in Finder, all things that I need to remember to do when setting up a new computer.

  • GUI Applications

    This is software I use that doesn't directly get my work done, but I use to help me get my work done. Which isn't to say it isn't serious, because I spend a lot of time using this software. This in roughly in order of how significant these applications are to my workflow.

    • Omnifocus organizes just about every single aspect of my life. Just about task I need to complete goes into Omnifocus for some period of time. I could have a whole page on my Omnifocus setup, but it involves large number of projects with small tasks, and some perspectives to help me stay on top of it all.
    • Emacs (specifically Emacs For Mac OS X) is my main text editor. Of course, I have heavily modified it with additions like magit, company and helm.
    • Notion is where I keep everything long term that isn't associated with a specific project. I have a lot of lists in here, from possible projects, to recipes, etc. This is also where I do my weekly review notes, an idea from David Allens GTD methodology. I try to use it as a personal Wikipedia. Note, no actual "notes" from class or anything go in here.
    • Alfred is a spotlight alternative. I find it faster (it doesn't search for files or folders unless you start with a single quote), and I have a helpful workflow I use to add tasks to my Omnifocus inbox.
    • Dash is a great documentation aggregator application. It lets you directly search documentation instead of searching online, as well as save it offline. I also like having a window/application dedicated to documentation, instead of just a browser tab.
    • Anki is an incredible flashcard / repeated learning tool. In it, I have random facts I want to be able to keep in my head and go through it every day. Having this habit really helps me remember things that I would have naturally easily forgotten.
    • BitBar is a great tool that lets you take things from stdout and put them in the mac menu bard. I currently have
    • Keyboard Maestro is a great automation tool. I don't utilize it nearly to it's full potential, but the more I use it the more I want to use it and I hope to make it a larger part of my workflow soon.
    • VMWare Fusion is expensive, but if you bite the bullet it is by far the best VM host I have used on macOS. It works well with Linux and Windows, both of which I sometimes have to use for school.
    • VLC will never fail at playing a video or audio file that you have. Very useful to have around.
    • Screens 4 is a screen sharing app I use to connect to a old 2012 MacBook Pro I have running as a server when I am not at home.
    • OpenAudible I don't need to describe here, the website makes it clear what it does.
    • BBEdit is a great text editor when I am not spending a ton of time modifying contents, and need something I know won't add any nonsense. I use it a bit more for HTML and CSS.
    • Reeder is my RSS client of choice. I do not use any 3rd party services, I just have RSS on macOS.
    • App Cleaner for trying to get rid of those pesky Library files after you uninstall an App. Less used now that I am using Homebrew more
    • Backblaze - Another round of backups.
    • 1Password - Everyone should have a password manager, I use this one.
    • HazeOver dims windows that currently don't have focus. If you have a multiple monitor setup / have a bad habit of not closing anything, this can help keep focus on what you are actively working on, and that calendar app in the corner is even less distracting.
    • cdto lets you put a button in finder that will open the current folder in terminal (terminal.app). That combined with open . lets me quickly go between the terminal and Finder.
    • GitKraken is my git GUI application of choice. I generally use git from the terminal, but when staging only sections of my code or wanting good visualization of branch history, a good GUI is really helpful. I have heard good things about Fork, but have yet to give it a serious try.
    • GPG Keychain for a similar reason to GitKraken, a good GUI fronted for managing my gpg keys.
    • CodeRunner is an app I use as a swiss army knife for dealing with different programming languages. It is really useful to me when I have to use a programming language I don't frequently use (like C, or Node.js or something) but just need to run a short program. It is not an exceptional IDE, but it supports many languages out of the box.
    • DasiyDisk lets you easily manage the space on your Mac. I only have 512 GB of storage on my laptop, and I try to avoid using features of iCloud Drive or Dropbox that make it look like your files are on your computer but really are not.
    • Mail.app, Calendar.app, Contacts.app, Preview.app I am putting into the category of "intense alternatives exist, but I have not put a serious effort into trying them / haven't been impressed enough to justify the transition". Nobody is writing blog posts about how much they love these apps, or how it changed their startup, but they are simple enough for me, and if it ain't broke don't fix it.
  • CLI applications

    Here are some useful command line programs I have installed and use.

    • pandoc converts just about any document format to any other document format. Can convert word to html to markdown to whatever you can imagine. The formatting is obviously not perfect, but is great for quickly dealing with .docx you don't want to open in word.
    • tldr gives you everything you want out of a manpage without having to read the manpage. I use it over man over half the time.
    • onefetch gives you a bunch of useful information about a git repo.
    • htop I slightly prefer to top
    • youtube-dl
    • fzf is a quick and easy way to search for files
    • wtf helps you convert tech lingo
    • ssh-copy-id makes it stupid easy to setup ssh key authentication