Setup my Mac

Setting up a new Mac is always an exciting experience, especially for developers. It’s like a fresh start, and with the right setup, you can transform your new device into a powerful workstation for coding, testing, and building cool projects. In this guide, I’ll walk you through the exact tools and configuration I use when I set up a new Mac, focusing on Python development and general productivity. Let’s get started!


Step 1: Install Homebrew, Your Package Manager

The first step in setting up a new Mac is to install Homebrew, a package manager that makes it easy to install and manage software and tools on macOS. Run the following command in your Terminal to download and install Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Once Homebrew is installed, update its formulae to ensure the latest versions of the packages are available:

brew update

Step 2: Install pyenv and Manage Python Versions

For Python development, it’s essential to have multiple versions installed (e.g., 3.11, 3.12, 3.13, etc.), especially for testing compatibility across projects. Using pyenv, we can easily manage different Python versions on the same machine.

Install pyenv

Run the following command to install pyenv via Homebrew:

brew install pyenv

Configure pyenv

Update your shell configuration (~/.zshrc) to initialize pyenv and its required environment variables. Add the following lines:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init --path)"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

Then reload your shell:

source ~/.zshrc

Install Required Build Tools

Before installing Python versions, ensure you have the required dependencies:

brew install openssl readline sqlite3 xz zlib

Install Python Versions

Now, install the desired Python versions with pyenv. In this setup, we’ll install Python 3.11.6, 3.12.2, and the latest 3.13 version:

pyenv install 3.11.6
pyenv install 3.12.2
pyenv install 3.13.4

You can check all Python versions installed by running:

pyenv versions

Optionally, set a global Python version (e.g., the latest one):

pyenv global 3.13.4

If you need to switch to a specific Python version for a project, you can use:

pyenv local 3.12.2

Congratulations! You’re now managing multiple Python versions on your machine.


Step 3: Global .gitignore and .env Setup

Create a Global .gitignore File

To streamline your Git workflow, a global .gitignore file will exclude files you never want in your repositories (like macOS system files, Python bytecode, or editor-specific files). Create and configure your global .gitignore file:

  1. Create the file:
    touch ~/.gitignore_global
    
  2. Add common ignores (like .DS_Store, __pycache__, etc.). Edit the file with your favorite editor:
    nano ~/.gitignore_global
    

    Example content:

    # macOS system files
    .DS_Store
    .AppleDouble
    .LSOverride
    
    # Python files
    __pycache__/
    *.py[cod]
    .venv/
    venv/
    
    # Editor-specific files
    .vscode/
    *.swp
    
  3. Configure Git to use the global .gitignore:
    git config --global core.excludesfile ~/.gitignore_global
    

Create a Global .env File

If you frequently use environment variables (e.g., for API keys, database URLs), you can create a global .env file. Here’s how:

  1. Create the .env file in your home directory:
    touch ~/.env
    
  2. Add your environment variables (use placeholders as examples):
    nano ~/.env
    

    Example content:

    # Global Environment Variables
    SECRET_KEY=your-secret-key-here
    DATABASE_URL=mysql://user:password@localhost:3306/mydatabase
    API_KEY=your-api-key-here
    
  3. Automatically source the .env file when your shell starts. Add this line to your ~/.zshrc:
    echo "source ~/.env" >> ~/.zshrc
    
  4. Reload your shell:
    source ~/.zshrc
    

Step 4: Install Essential Apps

Here are the essential apps and tools I install to enhance productivity and development:

Install them via Homebrew:

brew install --cask spotify docker caffeine google-chrome zoom warp cursor

Here’s a quick breakdown of the installed tools:


Step 5: Setup Workspace and Dependencies

Create a Code Directory

Keep all your coding projects organized in a single directory. Run:

mkdir ~/code
cd ~/code

Clone Personal Projects

If you maintain personal projects (e.g., your blog or GitHub repositories), clone them into this directory:

git clone https://github.com/seduerr91/seduerr91.github.io.git

Step 6: Install Granted for AWS Account Management

If you work with AWS, I recommend installing Granted, which simplifies switching between multiple AWS accounts. Install it following the official Granted Setup Guide.


Conclusion

With this setup, your new Mac is transformed into a highly productive development machine. From managing Python environments to organizing code projects, everything is tailored for maximum efficiency and ease of use. Whether you’re writing Python scripts, deploying containers, or just managing your workflow, you now have the tools to handle it all.