How I set up my Mac for development
TL;DR
A new Mac ships with settings built for the general public, not for coding eight hours a day. Before opening an editor, I spend fifteen minutes moving the Dock, speeding up the trackpad and keyboard, turning off autocorrect and installing a handful of tools (Maccy, Docker, VS Code, FFmpeg). Here are those settings, in the order I apply them.
1. Dock and Finder
The default Dock sits at the bottom of the screen, large, and takes half a second to appear. On a laptop display, vertical space matters more than horizontal space.
I move it to the left, small, with magnification on hover. Two ways to get there:
Through System Settings (the shortest path): System Settings > Desktop & Dock. In the "Dock" section, the "Position on screen" menu moves the Dock to the left, the "Size" slider shrinks it, and the "Magnification" checkbox enables hover zoom with its own slider. "Automatically hide and show the Dock" sits just below.
Through the Terminal (to apply all of it at once, or reproduce it on another Mac):
defaults write com.apple.dock orientation -string left
defaults write com.apple.dock tilesize -int 36
defaults write com.apple.dock magnification -bool true
defaults write com.apple.dock largesize -int 64
defaults write com.apple.dock autohide -bool true
killall Dock
One setting has no equivalent in System Settings: the delay before a hidden Dock reappears. By default it is too long. Only the Terminal can shorten it:
defaults write com.apple.dock autohide-delay -float 0
defaults write com.apple.dock autohide-time-modifier -float 0.4;
killall Dock
killall Dock restarts the Dock process so the changes apply immediately, without rebooting the Mac.
2. Keyboard and trackpad
The Mac keyboard repeats keys too slowly by default. Deleting a whole line from the keyboard takes several seconds.
Through System Settings: System Settings > Keyboard. Push both sliders, "Key repeat rate" and "Delay until repeat", to their fastest position (all the way right).
Through the Terminal, to go one notch past what the sliders allow:
defaults write NSGlobalDomain KeyRepeat -int 2
defaults write NSGlobalDomain InitialKeyRepeat -int 15
defaults write -g ApplePressAndHoldEnabled -bool false
The third line has no equivalent in System Settings: it disables the accent menu that opens when you hold a key down. Without it, key repeat does not work in text editors, whatever the two sliders say.
I also turn off autocorrect. Useful on a phone, counterproductive on a physical keyboard: it rewrites what you type against a dictionary, not against your intent. System Settings > Keyboard > "Text Input" section, uncheck "Correct spelling automatically". Spell checking (the underline) stays on, only the rewriting goes away.
For the trackpad: System Settings > Trackpad > "Point & Click" tab, "Tracking speed" slider raised a notch or two above the default.
3. Settings people forget
Three settings that do not announce themselves on first boot:
- Computer name: macOS generates something like "Dimitri's MacBook Pro", which then trails through network shares and SSH logs. Through System Settings: System Settings > General > Sharing, "Computer Name" field at the top of the panel (pencil icon to edit it). Through the Terminal, to also pin the exact network name and not just the display name:
sudo scutil --set ComputerName "short-name" sudo scutil --set LocalHostName "short-name" - Display sleep: one minute of inactivity is too short to read an article or watch a demo without touching the trackpad. System Settings > Lock Screen, "Turn display off when inactive" dropdown, set to ten minutes instead of one.
- Mission Control: by default, macOS reorders Spaces (virtual desktops) by recent use. The result is an app that moves to another desktop on its own and becomes impossible to find. System Settings > Desktop & Dock, at the very bottom of the page ("Mission Control" section), uncheck "Automatically rearrange Spaces based on most recent use".
The pointer: System Settings > Accessibility > Display > "Pointer" tab, "Pointer size" slider up a notch. With an external display next to the laptop, a default-size pointer gets lost easily.
4. Terminal and dev tools
Before installing anything else, Homebrew, the macOS package manager. Everything below starts from it:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Once Homebrew is in place, I add, in order:
-
Docker Desktop: to run containers without installing them locally. Required to test a stack without polluting the system.
brew install --cask dockerLaunch the app once after installing: it starts the Docker daemon in the background, and without it
docker runfails. -
VS Code: default editor, with a minimum of extensions. I add one only when it replaces a command I type more than three times a week.
brew install --cask visual-studio-code -
Multipass: Ubuntu's VM manager, to open an ARM virtual machine in one command when a test needs an isolated environment, without the overhead of a traditional VM.
brew install --cask multipassCreating a first VM then takes one line:
multipass launch --name test. -
FFmpeg: on the command line, to re-encode, cut or join video without going through an editing suite. No graphical interface, just the binary:
brew install ffmpeg
In the terminal, I remap the Fn key and the Control key. On a Mac keyboard they sit swapped compared to a PC keyboard, while Control is in constant use on the command line (Ctrl+C, Ctrl+R, Ctrl+A). That remap lives in System Settings > Keyboard > Keyboard Shortcuts > Modifier Keys.
5. The small tools that pay off daily
Two tools, installed once, that pay every day:
-
Maccy: a clipboard manager that keeps the history of what you copied, text or image. Once you get used to recalling an older copy from the keyboard, going back to a single-item clipboard becomes painful.
brew install --cask maccyOn first launch, macOS asks you to grant Accessibility access (System Settings > Privacy & Security > Accessibility): without that permission, Maccy cannot intercept copies.
-
Caps Lock remapped to Escape: that key never serves in development, while Escape is constant in a terminal or in Vim. Nothing to install, just a setting: System Settings > Keyboard > Keyboard Shortcuts > Modifier Keys > Caps Lock > Escape.
6. What I add on demand
Four tools that do not serve every day, but that I install as soon as a project calls for them:
- Google Drive: syncing large files (video, exports), from the official site rather than a cask (the app modifies the Finder deeply, the native installer works better): drive.google.com.
- VLC: for the video formats QuickTime refuses (MKV in particular) and fine subtitle control.
brew install --cask vlc - Notion: documentation and project tracking, for lack of a tool built specifically for it.
brew install --cask notion - Discord: team communication. On Apple Silicon, screen sharing with audio requires enabling a system extension on first launch (several restarts, a macOS warning to accept).
brew install --cask discord
Fifteen minutes of settings, a handful of brew install commands, and the Mac finally matches a developer's use rather than the default configuration built for everyone else.