
I recently received a new 16-inch MacBook Pro with the latest Apple M3 chip for my work computer. I had heard rave reviews about the blazing-fast Apple M1 and M2 chips, so I was incredibly excited to get my hands on a machine powered by the new M3 chip.
In this blog post, I’ll walk through the steps I took to configure my new device for a smooth transition into my workflow.
My main goals were to:
- Seamlessly access commonly used links and logins via exporting Chrome bookmarks and 1Password.
- Customizing an aesthetically pleasing terminal environment with
iTerm2
,Oh My Zsh
andPowerLevel10K Theme
- Get my work project repositories running properly with
PyCharm
andAws Cli
.
If you’re a data scientist, python developer, or anyone who uses the Terminal and AWS cli for your daily job, you may find this guide helpful when setting up a new MacBook, especially transitioning from intel chip to apple silicon chip-powered machine.
1. Export Chrome Bookmarks
I often keep my browser bookmarks in my personal google account. The new laptop came with Slack and my work google account which doesn’t have all the bookmarks I frequently need. Here’s how I exported bookmarks from my old laptop and imported them into the new one.
- On the old laptop, open Chrome with my personal google account and go to
chrome://bookmarks/

- Click the vertical three-dot menu » "Export Bookmarks"

- An HTML file downloads containing all bookmarks (e.g.
Wen_bookmarks_Feb-2023.html
) - Drag this file to Slack and send it to myself
- On my new M3, download the html from my Slack. Go to
chrome://bookmarks/
» "Import Bookmarks" » Select the HTML file just downloaded.
Voila! Now all my crucial bookmarks are available on the new M3 device for easy access. Shout out to my husband for showing me this handy Chrome trick 😊
Note: For migrating 1password to a new device, I followed this guide.
2. Install Visual Studio Code
I typically use PyCharm for work projects and VS Code for editing loose files and dotfiles. I much prefer typing code .zshrc
over vim or nano editor to edit dot files like .ssh/config
or zsh settings.
That’s why I want to install VS Code before I do the terminal customization.
- Download VS Code for macOS
- Open VS Code and open the Command Palette (Cmd+Shift+P)
- Type
shell command
to find the Shell Command: Install ‘code’ command in PATH command.

- Restart the terminal for the new
$PATH
value to take effect. You’ll be able to typecode .zshrc
to customize your terminal.
Speaking of customizing our terminal and making it powerful, colorful, and delightful, we need four things:
- Homebrew – Package manager for macOS
- iTerm2 – Customizable terminal emulator
- Oh My Zsh – Powerful & themeable shell
- Powerlevel10k theme – cool and sleek theme for Zsh
3. Install Homebrew
- command + spacebar → search "Terminal"
- run the below command to install homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Follow the prompt to add Homebrew to Path
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/[username]/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
- Turn off analytics so Brew won’t send your data to Google
brew analytics off
4. Install iTerm2
brew install --cask iterm2
After that, close "Terminal" and open "iTerm"
- Open iTerm2 → Settings → Profiles → Colors → Color Presets → select "Tango Dark"

5. Install Oh My Zsh
Zsh has replaced bash to become the default shell for macOS since macOS Catalina. Before we would need to add PATH to .bash_profile
, now we do that in .zshrc
file.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
6. Install PowerLevel10K Theme
Run this to install PowerLevel10K:
git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k
- type
code ~/.zshrc
to use VS code to edit your.zshrc
file - Change the
ZSH_THEME
ZSH_THEME="powerlevel10k/powerlevel10k"
Isn’t it lovely to edit dot files with vscode’s syntax highlight and usual copy & paste?! 😊

Save the file and run source ~/.zshrc
, you’ll be prompted to install "Meslo Nerd Font", type "y" to proceed.
After applying the new font, if you open Apple terminal, you might notice that the font is not displaying correctly.

You can go to Terminal → Settings → Profiles → Text → click Change under Font and select MesloLGS NF
family.

Close to save. And the apple terminal is making sense again! Even though I’ll probably use iterm2 for most of the terminal work, but it’s still nice to have Apple terminal as a backup.

Next, we’re going to type p10k configure
to start the Powerlevel10k configuration wizard.
You’ll get 4 questions like below, and I’m pretty sure all the answers are "Yes". so just keep pressing "y" 4 times.

Then the real customization starts -> I like Rainbow style so type "3".

It’s a pretty user-friendly configuration process and you can choose what suits your taste. For reference, below are my choices:
- Character Set: Unicode
- Show current time? 12-hour format
- Prompt Separators: Round
- Prompt Heads: Sharp
- Prompt Tails: Round
- Prompt Height: Two lines
- Prompt Connection: Dotted
- Prompt Frame: Full
-
Connection & Frame Color: Lightest (Note: this is because I use dark screen)
- Prompt Spacing: Compact
- Icons: Many icons
- Prompt Flow: Concise
- Enable Transient Prompt? Yes
- Instant Prompt Mode: Verbose (recommended)
Save and see the Before vs After:


7. Install AWS Cli and Session Manager Plugin
Up until Feb 7th, 2024, if you try to install AWS CLI using offical guide for Apple M1~M3, you’ll get the below error and be prompted to install Rosetta 2, which you really don’t need.

The solution is to use brew: brew install awscli
We can verify this by the following command:

Next, I installed Session Manager Plugin (paste below one by one)
# step 1: download the session manager bundle
❯ curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac_arm64/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"
# step 2: unzip
❯ unzip sessionmanager-bundle.zip
# step 3: install
❯ sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin
After step 3, you will see sth like below:

You can also type session-manager-plugin
to double verify, and you can be double reassured if you see the below output:
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.
Final step in regarding of AWS setup, I want to configure my AWS profiles. I have two AWS accounts – one for Outside organization and the other one for our third-party collaborator.
- First, if I just type
aws configure list
, I wouldn’t see any configuration since this is a new laptop and I just installed aws cli via brew - I use
aws configure --profile <profile_name>
to configure each profile. (Note: You’ll need your Access Key ID, Secret Access Key, and region name ready in order to configure your profile.)
# Configure my outside profile
$ aws configure --profile wen_outside
AWS Access Key ID [None]: Axxxxx
AWS Secret Access Key [None]: wxxxx
Default region name [None]: us-east-1
Default output format [None]: json
# Configure my miso profile
$ aws configure --profile wen_miso
AWS Access Key ID [None]: Axxxx
AWS Secret Access Key [None]: 5xxxxxxx
Default region name [None]: us-west-2
Default output format [None]: json
# Set my outside profile as default profile
$ export AWS_DEFAULT_PROFILE=wen_outside
Now if I run aws configure list-profiles
I should see both of my profiles. And if we type aws configure list
again, it will show the configuration of your default AWS profile.

8. Transfer SSH Keys from the Old Laptop
Once upon a time, my former coworker had added my old laptop to SSH into our AWS production server, and I wanted to avoid the process of generating a new pair of SSH key from my new laptop and then requesting DevOps to add my new key pairs. If you have similar concerns, the below steps might be helpful to you.
🚫 Don’t
- Open
id_isa
andid_rsa.pub
in a text editor and copy & paste contents into Slack - Paste contents back into files on the new laptop using the text editor
I tried this, but got an "invalid format" error when attempting SSH:
❯ ssh prod-discovery
Load key "/Users/wyang/.ssh/id_rsa": invalid format
[email protected]: Permission denied (publickey).
The reason is that when you are using Slack and different text editors, it can sometimes introduce invisible characters such as line breaks or white spaces.
✅ Do this instead
# In old laptop's terminal
$ cp ~/.ssh/id_rsa ~/Desktop
$ cp ~/.ssh/id_rsa.pub ~/Desktop
Then drag the two files and send it to yourself via Slack.
Download these two files, which will be saved in ~/Downloads
directory.
# In your new laptop's terminal or iterm2
$ cp ~/Downloads/id_rsa ~/.ssh/
$ cp ~/Downloads/id_rsa.pub ~/.ssh/
In my case, the ~/.ssh
directory on my new laptop already contains files with the same names (id_rsa
and id_rsa.pub
) since I foolishly did "Don’t" 😅 . So I used -f
option to force the overwrite.
# In my iterm2
$ cp -f ~/Downloads/id_rsa ~/.ssh/
$ cp -f ~/Downloads/id_rsa.pub ~/.ssh/
After that, I can access our Prod server successfully! 🥳

And that wraps up my guide for configuring an efficient developer environment on the new M3 MacBook Pro! That gave me enough to get started working on my job. I’m sure this won’t be a complete checklist, but hopefully, it helps you hit the ground running. If you have any recommended must-do tips, do share – I’d love to learn more on optimizing macOS for developer productivity!
PS: I wrote this on the day of the Chinese Lunar New Year – May the Year of the Dragon 🐉 be filled with courage and curiosity!