Setting up a new M4 MacBook Air
Setting up a new MacBook as a software engineer
Getting a new MacBook is exciting but also presents the perfect chance to start fresh without the baggage of old installations. This post shares my journey selecting a new MacBook model and setting it up from scratch with all the essential tools and apps that make a developer's life easier.
Why I decided to get a new MacBook
After seven years of heavy use, my 2018 Intel MacBook Pro was showing signs of age. The battery had degraded, it was slow and I needed a change.
Instead of migrating my old setup, I deliberately started fresh to eliminate years of digital cruft — old dependencies, forgotten background services, and outdated configurations that can cause subtle performance issues. The clean slate also gave me a chance to discover newer, better tools for my workflow.
Choosing the right model and specs
Decision time. With several MacBook models available, I needed to pick the one that would best serve my development needs for the next few years.
I settled on the M4 MacBook Air with 24GB of unified memory, and 512GB of storage.
The specs of the MacBook Air are surprisingly comparable to the Pro at about 60-70% of the price. There are some tradeoffs, of course. The Air has noticeably worse display and speakers compared to the Pro models. The biggest potential downside is the lack of active cooling, which means sustained heavy workloads might eventually cause thermal throttling - though in my typical development workflow, this rarely becomes an issue.
For my needs, the Air offered the best balance of performance, portability and value. The lightweight design makes it perfect for working from different locations, and when I need more screen real estate, I connect to external displays at my desk.
Essential apps for productive development
With a fresh system, I began installing the core applications that would form the foundation of my development workflow. These are the apps I installed on day one:
Raycast
Raycast has completely replaced Spotlight for me. It's a keyboard-driven launcher that goes far beyond what Apple's built-in tool can do. I use it to:
- Launch applications with just a few keystrokes
- Raycast notes for quick note taking
- Access clipboard history
- Manage projects in Linear

What puts Raycast above alternatives like Alfred is its modern interface, smooth performance on Apple Silicon, and the growing ecosystem of extensions built by developers.
Arc Browser
Arc is relatively new but has transformed how I interact with the web. Unlike Chrome or Safari, Arc organizes tabs into spaces, making it easier to separate work, personal, and project contexts. Its minimal interface maximizes screen space, and features like command bar and built-in notes reduce the need for additional tools.
Ghostty
This GPU-accelerated terminal emulator is blazingly fast and remarkably smooth. Compared to older options like iTerm, Ghostty feels native to Apple Silicon with instant rendering and minimal resource usage. It supports ligatures for programming fonts, has excellent color scheme options, and starts instantly.
1Password
Security is non-negotiable for development work. 1Password stores all my credentials, SSH keys, API tokens, and license information. The developer features like CLI integration and secure environment variable handling are invaluable. With biometric authentication, accessing credentials is both secure and convenient.
Cursor
This AI-enhanced code editor based on VS Code has completely changed my coding workflow. The built-in AI assistant understands context from my entire codebase and helps with everything from complex refactors to documentation generation. It even helped me write this blog post.
Notion
All my documentation, project planning, and knowledge management happens in Notion. Its flexible database structure lets me create custom views for different aspects of my work.
Magnet
Window management on macOS has always been lacking compared to Windows. Magnet solves this with keyboard shortcuts and screen edge snapping for arranging windows. I've customized the shortcuts to match my muscle memory, making it effortless to organize my workspace with split views for code, terminal, and documentation.
These applications form the backbone of my productivity system. While there are certainly other tools I've added since day one, these were the essentials that helped me get back to productive work quickly.
Setting up the perfect terminal environment
I spend a good chunk of time in the terminal, so getting it configured properly was a priority. Here's how I set up my command-line environment:
Installing essential tools
First, I installed Homebrew to manage packages:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Then I installed oh-my-zsh to enhance the terminal experience. I use the git plugin which provides a load of aliases like gst
for git status
, it pairs well with the you-should-use plugin which lets you know if you have an alias for the command you're trying to run which saves you from trawling through the long list of aliases in the plugin docs:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
I prefer the spaceship prompt for its clean look and helpful contextual information:
brew install spaceship
For Node.js development, I installed nvm to manage different versions:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
nvm install 22
And corepack with pnpm to manage packages:
npm install -g corepack
corepack enable pnpm
Finally, some basic git configuration with 1Password commit signing:
[user]
name = Dan Billson
email = ...
signingkey = ...
[push]
autoSetupRemote = true
[pull]
ff = only
[gpg]
format = ssh
[gpg "ssh"]
program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"
[commit]
gpgsign = true
The commit signing setup with 1Password is a security enhancement worth implementing. It verifies that commits are actually coming from you, prevents commit spoofing, and adds a layer of trust when contributing to projects. With 1Password handling the signing keys, there's no need to manage separate GPG keys across devices - it just works securely with your existing password manager.
With these tools installed, my terminal was ready for serious development work. This simple setup provides everything I need for daily coding tasks while being easy to reproduce on a new machine.
Conclusion
After a couple of days with the M4 MacBook Air, I'm thoroughly impressed with how it handles my development workload. Despite its thin, fanless design, it powers through tasks that would have brought my old Intel MacBook to its knees. The battery easily lasts a full day of coding.
Starting from scratch was absolutely the right choice. Not only did it force me to reevaluate which tools truly add value to my workflow, but it also eliminated years of accumulated cruft, resulting in a snappier, more reliable machine.
What's your MacBook setup like? Do you have different must-have apps or configuration tips? I'd love to hear what other developers are using to optimize their machines - reach out on Twitter.