My first setup
Every time I get a new laptop, I follow the same ritual. Before installing random apps or writing a single line of code, I take some time to set things up properly. Over the years, this initial configuration has saved me hours of frustration and helped me stay productive from day one.
In this article, I’ll walk you through the first things I always configure when setting up a laptop from scratch.
Install Homebrew
Homebrew is the package manager I use to install and manage tools on macOS (and Linux).
Open the terminal and run:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
When it finishes, follow the on-screen instructions to add Homebrew to your PATH.
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
Verify installation
brew --version
Homebrew
I keep my Homebrew setup intentionally small.
At the moment, I only install what I really use on every machine.
brew install gh
Docker
I use Docker primarily to avoid version conflicts.
By isolating each project’s dependencies, I can switch between different stacks without constantly installing, upgrading, or breaking tools on my local machine. This keeps my environment predictable and my setup lightweight.
You can download Docker Desktop from the official website:
https://www.docker.com/products/docker-desktop/
Visual Studio Code
These are the core settings I apply to Visual Studio Code on every new machine. They focus on consistency, formatting, and a clean editing experience.
{
"workbench.colorTheme": "Sapphire",
"terminal.integrated.fontSize": 14,
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"terminal.integrated.fontFamily": "Meslo LG M DZ for Powerline,monospace",
"terminal.integrated.defaultProfile.osx": "zsh",
"terminal.integrated.cursorStyle": "line",
"terminal.integrated.cursorBlinking": true,
"github.copilot.nextEditSuggestions.enabled": true,
"chat.mcp.gallery.enabled": true,
"gitlens.ai.model": "vscode",
"gitlens.ai.vscode.model": "copilot:gpt-4.1",
"workbench.productIconTheme": "fluent-icons",
"workbench.iconTheme": "material-icon-theme",
"editor.minimap.enabled": false,
"breadcrumbs.enabled": false
}
Extensions
I keep my extension list intentionally short.
Most functionality comes from editor settings rather than plugins.
Extensions I always install:
- ESLint
- GitLens
- Fluent Icons
- Github Copilot Chat
- JavaScript (ES6) code snippets
- json
- Markdown all in one
- Markdown preview
- Material Icon Theme
- npm Intellisense
- Path Intellisense
- Prettier
- SAP CDS Language Support
- Sapphire Theme
- Search node_modules
- Version Lens
- Dev container
I revisit this list regularly and remove anything that no longer provides clear value. A smaller, well-understood toolset scales better over time.
Docker in Visual Studio Code
The most important extension is Dev container from there you can use command + shift + P and look for Dev container: Rebuild and reopen in container.
Here you have my devontainer.json config file
{
"name": "SAP Dev Container",
"build": {
"dockerfile": "Dockerfile"
},
"workspaceFolder": "/workspace",
"mounts": ["source=${localWorkspaceFolder},target=/workspace,type=bind"],
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.defaultProfile.linux": "bash"
},
"extensions": ["ms-azuretools.vscode-docker"]
}
},
"postCreateCommand": "node -v && npm -v && cf --version && btp --version"
}
And the Dockerfile.
Zsh
I use Zsh as my default shell and keep the configuration focused on clarity and speed rather than heavy customization.
brew install zsh
Open the .zshrc file to change the theme
open ~/.zshrc
And change the theme, I use this one:
ZSH_THEME="cloud"
You can check all themes here.
This is not a perfect setup — it’s simply the one that has proven to work best for me. I hope you can find it useful!
Comments