Here’s a rundown of the tools and applications I use to set up my development environment on both macOS and Linux. These have proven useful in my workflow, but your mileage may vary.
macOS Setup
First thing I do is go to Settings -> Trackpad -> Enable Tap to click.
Package Management
- Homebrew: The go-to package manager for macOS. Pretty much essential. But I am thinking of learning nix for more package management goodness and reproducibility.
Terminal Enhancements
- Oh My Zsh: A framework for managing Zsh configuration. Makes the terminal a bit more user-friendly.
- Plugins I use:
- zsh-autosuggestions: Suggests commands as you type based on history and completions.
- zsh-syntax-highlighting: Provides syntax highlighting for the shell zsh.
- autojump: A faster way to navigate your filesystem.
- Plugins I use:
Productivity Tools
- Raycast: A launcher that’s more powerful than Spotlight. I use it for quick calculations and most importantly clipboard history. This also has window management, but i am too lazy to switch from rectangle.
- Rectangle: Simple but effective window management app. Have gotten very used to the shortcuts, never looked back even with the latest MacOS window management.
- Notion Calendar: This was Cron earlier. Basically alerts me before my meetings and shows it in the menu bar.
Development Tools
- Docker client: I use OrbStack as a lightweight Docker client. It is super useful on M1 apps. This works fine for 99% of my use cases. The one time I needed some rosetta customization, I had to use the full Docker Desktop.
- Warp: A new terminal app that supports multiple tabs, multiline editing, longer command history. I don’t like that it asks for signup at the start because it is VC driven so 🤷♂️. Skill issue on my part.
- Cursor: An IDE with AI capabilities. I am faster with this.
Web Browsing
- Brave browser: A Chromium-based browser with built-in ad-blocking and tracking prevention.
Utilities
- Mos App: I use an external mouse and the scrolling direction is reversed. This app fixes that, along with some smoothening of the scrolling.
Command Line Tools
- bat: A
catclone with syntax highlighting. Nice for quick file views. - fzf: Fuzzy finder for the command line. Great for searching through command history.
Note-taking
- Notes: Apple Notes, Google Docs, Cursor
Python Environment
- uv: A fast Python package installer and virtual environment manager. I recently switched to this from miniconda, which I used previously. So far, uv seems faster and more lightweight, but I’m still in the process of fully transitioning.
Some useful mac shortcuts
fn + deleteto delete a word backwards (windows delete key)- Press
fntwice to get emoji picker cmd + shift + .to view hidden files in findercmd + shift + 3to take a screenshot of the entire screen and save it to the desktopctrl + cmd + shift + 3to take a screenshot of the entire screen and copy it to the clipboardcmd + shift + 4to take a screenshot of the selected windowctrl + cmd + shift + 4to take a screenshot of the selected window and copy it to the clipboardcmd + shift + 5to screen record via Quicktimecmd + ~to switch between multiple windows of the same appcmd + tabto switch between apps
Some useful chrome shortcuts
cmd + option + arrow-keysto switch between tabs in browser (Chrome based ig)cmd + shift + tto reopen the last closed tab
Some useful Cursor/VSCode shortcuts (MacOS)
cmd + shift + pto bring up the command palettecmd + pto bring up the file navigatorcmd + shift + eto explore the file systemcmd + shift + fto search for filescmd + shift + dto open debugger- If you want to move up/down the current line or selection,
alt+arrow-keysworks. cmd + left-arrowto move to the beginning of the linecmd + right-arrowto move to the end of the linecmd + deleteto delete the entire line to the left of the cursor- Select a word and do
cmd + dto find occurrences of the word in the file. Match for case and exactness on the tooltip that appears. - Multiple cursors can be done using
cmd + doroption + click.
Linux Setup
Terminal Enhancements
- Oh My Zsh: Same setup as on macOS.
- Plugins: zsh-autosuggestions, zsh-syntax-highlighting, autojump
Docker Installation
For Linux, I typically install Docker using the official script:
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
Nvidia drivers
Command to install the recommended drivers:
sudo ubuntu-drivers autoinstall
Will add more here soon.
Some useful terminal shortcuts (Linux)
ctrl + ato move to the beginning of the linectrl + eto move to the end of the linectrl + lto clear the screenctrl + uto delete the entire linectrl + wto delete the word before the cursorctrl + rto search through command historyctrl + shift + rto reverse search through command history and executectrl + cto cancel the current commandctrl + shift + cto copy the current selection (cmd + con macOS)ctrl + shift + vto paste the copied text (cmd + von macOS)ctrl + zto suspend the current commandctrl + dto exit the current shell
contents
- macOS Setup
- Package Management
- Terminal Enhancements
- Productivity Tools
- Development Tools
- Web Browsing
- Utilities
- Command Line Tools
- Note-taking
- Python Environment
- Some useful mac shortcuts
- Some useful chrome shortcuts
- Some useful Cursor/VSCode shortcuts (MacOS)
- Linux Setup
- Terminal Enhancements
- Docker Installation
- Nvidia drivers
- Some useful terminal shortcuts (Linux)