You are here: Home / Setting up for Developing on Apple MacBook Pro m4 48GB RAM

Setting up for Developing on Apple MacBook Pro m4 48GB RAM

Information on clean setup preparing and using brand new MacBook Pro m4 pro with 48 GB ram, for Flutter, Dart, Python, Java, C#, .Net, JavaScript, Node, React, Angular, Kubernetes, Selenium, AI, etc.

 

I am a technologist and recreational therapist, with decades of on and off experience in many areas.

I'm currently in a phase of my life where I need to juggle multiple jobs at once, in different levels of  the spectra of roles and ranking, for different sectors and industries.

In the tech industry I am currently working full-time, part-time, employee, fractional, and contract jobs.

Anywhere from strategic C-level and architect, to hands-on systems administrator (SysOps / DevOps / MLOps / AIOps), software developer/coder, project manager, documentation writer, security auditor, and the whole end-to-end.

In so many areas the tech industry has unfortunately regressed back to the 1970s, 80s, and early 90s.

 

<begin rant>

Sadly, so much that was learned to advance computer science, information technology, cyber security, and related disciplines from learned experience of the best approaches for successful strategies, methodologies, technologies,

and approaches from the late 90s and early 2000s haven't been considered/transferred to the new technicians and project leaders, so most of them are starting all over, making all the same mistakes made in the 20th century,

 rather than progressing forward, building on prior knowledge.

At least in my lifetime, we are now in at least the third (or fourth-plus, depending on from where you start count) cycle of CS/IT related technology iteration and regression.

This means we're back to having to juggle so many different languages just to accomplish a single project, having to once again think in terms similar to "stacks" rather than solutions-oriented thinking, etc.

Standards and Integration is a total mess again, hosting is becoming increasingly re-centralized and by the bit/byte, and most developers increasingly refuse to document, trying to create fallacious philosphies to justify their laziness,

with too many focused only on short-term Dilbert-like looking busy GSD. In fear and ignorance they are increasingly trying to make clients _more_ dependent on them, rather than following my philosophy about planning ahead, 

just in case, about getting hit by a bus (allowing others to be able to continue your work smoothly). They are increasingly sacrificing long-term scalability, security etc., sabotaging open source communities and products with

disturbingly increasing mercenary tactics, all for for short-term looking busy, and constantly reinventing the wheel when 80%+ of the time that is just not necessary. [1, 2, 3, 4,...]

</end rant>

 

Rant aside, I needed to pick up a much "beefier" newer Mac for some current and upcoming development projects.

This week I purchased a new MacBook Pro m4 with 48 GB memory.

I tried using the 24GB one, but it wasn't anywhere near enough for my projects (it was maxed out within a day).

Hopefully this 48GB version will be sufficient for my current projects.

 

Since I'm setting it up fresh, I figured I would share the lengthy checklist required to make it usable, as well as any issues I come across getting everything up and running, both as notes for myself,

and to potentially help others that may run into similar issues.

 

Install Chrome Web Browser

 

...

 

Install Xcode Command Line Tools

# Install Xcode from App Store
xcode-select --install
# After installation, install Xcode Command Line Tools
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch

 

Change Default Shell From zsh to bash

The default interactive shell is now zsh.

To update your account to use zsh, please run `chsh -s /bin/zsh`.

For more details, please visit https://support.apple.com/kb/HT208050.

env | grep SHELL
SHELL=/bin/zsh
dev$ chsh -s /bin/bash
Changing shell for dev.
Password for dev:
dev$ env | grep SHELL
SHELL=/bin/bash

 

 

Setup Homebrew

 

Verify Brew is _not_ yet installed:

dev$ which brew

Shouldn't show anything installed yet.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
dev$ echo >> /Users/dev/.bash_profile
dev$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/devm4-1/.bash_profile
dev$ eval "$(/opt/homebrew/bin/brew shellenv)"
dev$ which brew
/opt/homebrew/bin/brew

 

Install Git

brew install git
dev$ brew install git
==> Downloading https://formulae.brew.sh/api/formula.jws.json
==> Downloading https://formulae.brew.sh/api/cask.jws.json
==> Downloading https://ghcr.io/v2/homebrew/core/git/manifests/2.48.1
######################################################################################################################## 100.0%
==> Fetching dependencies for git: libunistring, gettext and pcre2
==> Downloading https://ghcr.io/v2/homebrew/core/libunistring/manifests/1.3
######################################################################################################################## 100.0%
==> Fetching libunistring
==> Downloading https://ghcr.io/v2/homebrew/core/libunistring/blobs/sha256:3cd26bae2d5fcf61294f14c18e5e7ec773a59ed1bf710fb92055
######################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/gettext/manifests/0.23.1
######################################################################################################################## 100.0%
==> Fetching gettext
==> Downloading https://ghcr.io/v2/homebrew/core/gettext/blobs/sha256:9179f473099573a8c4a42f70e39f1a36376914d6b634e0975b5cb514d
######################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/pcre2/manifests/10.44
######################################################################################################################## 100.0%
==> Fetching pcre2
==> Downloading https://ghcr.io/v2/homebrew/core/pcre2/blobs/sha256:c3f9e7a70ebc0986af6f0b7c69ac1495fdf4c7420ad831d3daa9c86c448
######################################################################################################################## 100.0%
==> Fetching git
==> Downloading https://ghcr.io/v2/homebrew/core/git/blobs/sha256:93411cd96da6dceec87bf10ebbd97d28f175628bef0cb277ca9609c2cff37
######################################################################################################################## 100.0%
==> Installing dependencies for git: libunistring, gettext and pcre2
==> Installing git dependency: libunistring
==> Downloading https://ghcr.io/v2/homebrew/core/libunistring/manifests/1.3
Already downloaded: /Users/devm4-1/Library/Caches/Homebrew/downloads/a570da63bc1839c7e217f203abd54d4d873ebd6b99f6e88994d0e79e2ebe987c--libunistring-1.3.bottle_manifest.json
==> Pouring libunistring--1.3.arm64_sequoia.bottle.tar.gz
🍺  /opt/homebrew/Cellar/libunistring/1.3: 59 files, 5.4MB
==> Installing git dependency: gettext
==> Downloading https://ghcr.io/v2/homebrew/core/gettext/manifests/0.23.1
==> Pouring gettext--0.23.1.arm64_sequoia.bottle.tar.gz
🍺  /opt/homebrew/Cellar/gettext/0.23.1: 2,052 files, 22.2MB
==> Installing git dependency: pcre2
==> Downloading https://ghcr.io/v2/homebrew/core/pcre2/manifests/10.44
Already downloaded: /Users/devm4-1/Library/Caches/Homebrew/downloads/22ed791461c5bf400adde8c3b432c1230866aa1db3c5cb81e06a6ff21cac96ee--pcre2-10.44.bottle_manifest.json
==> Pouring pcre2--10.44.arm64_sequoia.bottle.tar.gz
🍺  /opt/homebrew/Cellar/pcre2/10.44: 237 files, 6.3MB
==> Installing git
==> Pouring git--2.48.1.arm64_sequoia.bottle.tar.gz
==> Caveats
The Tcl/Tk GUIs (e.g. gitk, git-gui) are now in the `git-gui` formula.
Subversion interoperability (git-svn) is now in the `git-svn` formula.
Bash completion has been installed to:
  /opt/homebrew/etc/bash_completion.d
==> Summary
🍺  /opt/homebrew/Cellar/git/2.48.1: 1,699 files, 54.8MB
==> Running `brew cleanup git`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Caveats
==> git
The Tcl/Tk GUIs (e.g. gitk, git-gui) are now in the `git-gui` formula.
Subversion interoperability (git-svn) is now in the `git-svn` formula.
 
Bash completion has been installed to:
  /opt/homebrew/etc/bash_completion.d
# Configure basic Git settings
git config --global user.name "Your Name"
git config --global user.email "your.email@company.com"

 

Configure git to Use Vi/Vim as Default Editor

(my preferred cross-platform desktop and server default editor)

# Configure vim as default editor

git config --global core.editor "vim"

 

Recommended Git Configuration

 

# Configure detailed logging
git config --global log.decorate auto
# Set vim diff tool
git config --global diff.tool vimdiff
git config --global merge.tool vimdiff
# Configure pull strategy
git config --global pull.rebase false

  

Install Flutter & Dart SDK Using Homebrew

 

Install fvm using Homebrew - install fvm

brew install --cask flutter
Downloading https://formulae.brew.sh/api/cask.jws.json
==> Downloading https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_arm64_3.27.4-stable.zi
######################################################################################################################## 100.0%
==> Installing Cask flutter
==> Linking Binary 'dart' to '/opt/homebrew/bin/dart'
==> Linking Binary 'flutter' to '/opt/homebrew/bin/flutter'
==> Linking Binary 'flutter' to '/opt/homebrew/share/flutter'
🍺 flutter was successfully installed!

 

$ flutter doctor
  ╔════════════════════════════════════════════════════════════════════════════╗
║                 Welcome to Flutter! - https://flutter.dev                  ║
  ║                                                                            ║
  ║ The Flutter tool uses Google Analytics to anonymously report feature usage ║
║ statistics and basic crash reports. This data is used to help improve      ║
║ Flutter tools over time.                                                   ║
  ║                                                                            ║
  ║ Flutter tool analytics are not sent on the very first run. To disable      ║
  ║ reporting, type 'flutter config --no-analytics'. To display the current    ║
  ║ setting, type 'flutter config'. If you opt out of analytics, an opt-out    ║
  ║ event will be sent, and then no further information will be sent by the    ║
  ║ Flutter tool.                                                              ║
  ║                                                                            ║
  ║ By downloading the Flutter SDK, you agree to the Google Terms of Service.  ║
  ║ The Google Privacy Policy describes how data is handled in this service.   ║
  ║                                                                            ║
  ║ Moreover, Flutter includes the Dart SDK, which may send usage metrics and  ║
  ║ crash reports to Google.                                                   ║
  ║                                                                            ║
  ║ Read about data we send with crash reports:                                ║
  ║ https://flutter.dev/to/crash-reporting                                     ║
  ║                                                                            ║
  ║ See Google's privacy policy:                                               ║
  ║ https://policies.google.com/privacy                                        ║
  ║                                                                            ║
  ║ To disable animations in this tool, use                                    ║
  ║ 'flutter config --no-cli-animations'.                                      ║
  ╚════════════════════════════════════════════════════════════════════════════╝ 
Doctor summary (to see all details, run flutter doctor -v):
[!] Flutter (Channel stable, 3.27.4, on macOS 15.1 24B2083 darwin-arm64, locale en-US)
    ✗ Downloaded executables cannot execute on host.
      See https://github.com/flutter/flutter/issues/6207 for more information.
      Flutter requires the Rosetta translation environment on ARM Macs. Try running:
        sudo softwareupdate --install-rosetta --agree-to-license
 [✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
    (or visit https://flutter.dev/to/macos-android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.
[✗] Xcode - develop for iOS and macOS
    ✗ Xcode installation is incomplete; a full installation is necessary for iOS and macOS development.
      Download at: https://developer.apple.com/xcode/
    Or install Xcode via the App Store.
      Once installed, run:
        sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
        sudo xcodebuild -runFirstLaunch
    ✗ CocoaPods not installed.
        CocoaPods is a package manager for iOS or macOS platform code.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/to/platform-plugins
      For installation instructions, see https://guides.cocoapods.org/using/getting-started.html#installation
[✗] Chrome - develop for the web (Cannot find Chrome executable at /Applications/Google Chrome.app/Contents/MacOS/Googl

    Chrome)
  ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[!] Android Studio (not installed)
[✓] VS Code (version 1.96.4)
[✓] Connected device (1 available)
[✓] Network resources
 
! Doctor found issues in 5 categories.
The Flutter CLI developer tool uses Google Analytics to report usage and diagnostic
data along with package dependencies, and crash reporting to send basic crash
reports. This data is used to help improve the Dart platform, Flutter framework,
and related tools.
 
Telemetry is not sent on the very first run. To disable reporting of telemetry,
run this terminal command: 
    flutter --disable-analytics
 
If you opt out of telemetry, an opt-out event will be sent, and then no further
information will be sent. This data is collected in accordance with the Google
Privacy Policy (https://policies.google.com/privacy).

 

Install Rosetta translation environment on ARM Macs

 

 sudo softwareupdate --install-rosetta --agree-to-license
Password:
By using the agreetolicense option, you are agreeing that you have run this tool with the license only option and have read and agreed to the terms.
If you do not agree, press CTRL-C and cancel this process immediately.
2025-02-05 22:48:20.555 softwareupdate[9549:266326] Package Authoring Error: 072-12297: Package reference com.apple.pkg.RosettaUpdateAuto is missing installKBytes attribute
Install of Rosetta 2 finished successfully

 

 

 

 

Install Dart SDK Independently with Homebrew - optional

 

dev$ brew tap dart-lang/dart
==> Tapping dart-lang/dart
Cloning into '/opt/homebrew/Library/Taps/dart-lang/homebrew-dart'...
remote: Enumerating objects: 4814, done.
remote: Counting objects: 100% (1122/1122), done.
remote: Compressing objects: 100% (179/179), done.
remote: Total 4814 (delta 1062), reused 945 (delta 943), pack-reused 3692 (from 2)
Receiving objects: 100% (4814/4814), 838.48 KiB | 2.54 MiB/s, done.
Resolving deltas: 100% (3520/3520), done.
Tapped 60 formulae (97 files, 1.1MB).

 

dev$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
==> Checking for `sudo` access (which may request your password)...
Password:
==> This script will install:
/opt/homebrew/bin/brew
/opt/homebrew/share/doc/homebrew
/opt/homebrew/share/man/man1/brew.1
/opt/homebrew/share/zsh/site-functions/_brew
/opt/homebrew/etc/bash_completion.d/brew
/opt/homebrew
Press RETURN/ENTER to continue or any other key to abort:
==> /usr/bin/sudo /usr/sbin/chown -R devm4-1:admin /opt/homebrew
==> Downloading and installing Homebrew...
==> Updating Homebrew...
Updated 1 tap (homebrew/core).
Warning: /opt/homebrew/bin is not in your PATH.
  Instructions on how to configure your shell for Homebrew
  can be found in the 'Next steps' section below.
==> Installation successful!
==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics
No analytics data has been sent yet (nor will any be during this install run).
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations
==> Next steps:
- Run these commands in your terminal to add Homebrew to your PATH:
    echo >> /Users/devm4-1/.bash_profile
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/devm4-1/.bash_profile
  eval "$(/opt/homebrew/bin/brew shellenv)"
- Run brew help to get started
- Further documentation:
    https://docs.brew.sh

 

dev$ brew install dart
==> Fetching dart-lang/dart/dart
==> Downloading https://storage.googleapis.com/dart-archive/channels/stable/release/3.6.2/sdk/dartsdk-macos-arm64-release.zip
######################################################################################################################## 100.0%
==> Installing dart from dart-lang/dart
==> Caveats
Please note the path to the Dart SDK:
  /opt/homebrew/opt/dart/libexec
==> Summary
🍺  /opt/homebrew/Cellar/dart/3.6.2: 1,036 files, 581.8MB, built in 4 seconds
==> Running `brew cleanup dart`..
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
dev$ 

 

 

 

Platform-Specific Setup

 

 

Flutter iOS Development

  1. Open Xcode and accept license agreements
  2. Install iOS Simulator
  3. Configure Flutter for iOS:

 

flutter config --enable-ios
flutter doctor

 

 

 

Flutter Android Development

  • Open Android Studio
  • Install Android SDK
  • Configure Flutter for Android:

 

flutter config --enable-android
flutter doctor

 

 

 

Flutter Desktop Development

# Enable Flutter desktop support

flutter config --enable-macos-desktop
flutter config --enable-windows-desktop
flutter config --enable-linux-desktop

 

 

Install Xcode + Apple Developer + TestFlight

 

Use Apple App Store to install.

 

Use Apple App Store to install Apple Developer

 

 

Use Apple App Store to install Apple TestFlight

 

 

Install CocoaPods

 

https://guides.cocoapods.org/using/getting-started.html#installation

Install rbenv:

brew install rbenv

 

Initialize rbenv in bash:

echo 'eval "$(rbenv init -)"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bashrc
source ~/.bash_profile

 

Install latest stable Ruby:

rbenv install 3.2.3
rbenv global 3.2.3

 

Verify the installation:

ruby -v # Should show 3.2.3 or newer

dev$ ruby -v
ruby 3.2.3 (2024-01-18 revision 52bb2ac0a6) [arm64-darwin24]

 

Install CocoaPods:

gem install cocoapods
...
...
...
Installing ri documentation for cocoapods-1.16.2
Done installing documentation for rexml, nanaimo, colored2, claide, CFPropertyList, atomos, xcodeproj, ruby-macho, nap, molinillo, gh_inspector, fourflusher, escape, cocoapods-try, netrc, cocoapods-trunk, cocoapods-search, cocoapods-plugins, cocoapods-downloader, cocoapods-deintegrate, ffi, ethon, typhoeus, public_suffix, fuzzy_match, concurrent-ruby, httpclient, algoliasearch, addressable, tzinfo, securerandom, i18n, connection_pool, benchmark, activesupport, cocoapods-core, cocoapods after 5 seconds
37 gems installed

A new release of RubyGems is available: 3.4.19 → 3.6.3!
Run `gem update --system 3.6.3` to update your installation.

gem update --system 3.6.3

 

Add gem binary path to your PATH in bash
echo 'export PATH="$PATH:$(ruby -e 'puts Gem.user_dir')/bin"' >> ~/.bashrc
echo 'export PATH="$PATH:$(ruby -e 'puts Gem.user_dir')/bin"' >> ~/.bash_profile
source ~/.bashrc
source ~/.bash_profile

 

Verify the installation:
pod --version

devm4-1$ pod --version
1.16.2

 

which pod

devm4-1$ which pod
/Users/devm4-1/.rbenv/shims/pod

 

Sudo-less installation

 

If you do not want to grant RubyGems admin privileges for this process, you can tell RubyGems to install into your user directory by passing either the --user-install flag to gem install or by configuring the RubyGems environment. The latter is in our opinion the best solution. To do this open up terminal and create or edit your .bash_profile with your preferred editor. Then enter these lines into the file:

 

vi ~/.bash_profile
export
GEM_HOME=$HOME/.gem export PATH=$GEM_HOME/bin:$PATH

save file and either open new session, or run the commands at the cli before next steps.

export GEM_HOME=$HOME/.gem
export PATH=$GEM_HOME/bin:$PATH

 

 

 

 

 

Note that if you choose to use the --user-install option, you will still have to configure your .bash_profile file to set the PATH or use the command prepended by the full path. You can find out where a gem is installed with gem which cocoapods. E.g.

 

$ gem install cocoapods --user-install
$ gem which cocoapods
/Users/eloy/.gem/ruby/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods.rb
$ /Users/eloy/.gem/ruby/2.0.0/bin/pod install

 

 

 

 

Setup Simulator with simctl

https://notificare.com/blog/2020/05/22/Using-iOS-Simulator-with-the-Command-Line/

 

 

Or, setup image with Xcode, for example, iOS 16:

sudo xcodebuild -downloadPlatform iOS -buildVersion 16.0 -exportPath ./SimulatorRuntimes/

open -a Simulator

 

 

 

Install Visual Studio Code (VSCode)

 

brew install --cask visual-studio-code 
==> Downloading https://formulae.brew.sh/api/cask.jws.json
==> Downloading https://update.code.visualstudio.com/1.96.4/darwin-arm64/stable
==> Downloading from https://vscode.download.prss.microsoft.com/dbazure/download/stable/cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cb
######################################################################################################################## 100.0%
==> Installing Cask visual-studio-code
==> Moving App 'Visual Studio Code.app' to '/Applications/Visual Studio Code.app'
==> Linking Binary 'code' to '/opt/homebrew/bin/code'
🍺  visual-studio-code was successfully installed!

 

Install Android Studio

 

brew install --cask android-studio 
==> Downloading https://redirector.gvt1.com/edgedl/android/studio/install/2024.2.2.13/android-studio-2024.2.2.13-mac_arm.dmg
==> Downloading from https://r1---sn-bvvbaxivnuxqjvhj5nu-nx5z.gvt1.com/edgedl/android/studio/install/2024.2.2.13/android-studio
######################################################################################################################## 100.0%
==> Installing Cask android-studio
==> Moving App 'Android Studio.app' to '/Applications/Android Studio.app'
==> Linking Binary 'studio' to '/opt/homebrew/bin/studio'
🍺  android-studio was successfully installed!

 

Install Android cmdline-tools:

cd ~/Library/Android/sdk/cmdline-tools


If directory doesn't exist::

mkdir -p ~/Library/Android/sdk/cmdline-tools

 

Download and install cmdline-tools:

cd ~/Library/Android/sdk/cmdline-tools
curl -O https://dl.google.com/android/repository/commandlinetools-mac-10406996_latest.zip
unzip commandlinetools-mac-10406996_latest.zip
mv cmdline-tools latest
rm commandlinetools-mac-10406996_latest.zip

 

Add to PATH (for bash):


echo 'export ANDROID_HOME=$HOME/Library/Android/sdk' >> ~/.bash_profile
echo 'export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin' >> ~/.bash_profile
source ~/.bash_profile

Add to PATH (for zsh):


echo 'export ANDROID_HOME=$HOME/Library/Android/sdk' >> ~/.zshrc
echo 'export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin' >> ~/.zshrc
source ~/.zshrc

Accept Android licenses:

flutter doctor --android-licenses

 

Run Android Emulator:

which adb

Copy the path and run the command to display a list of emulators. The output may look something like this:

/Users/user_name/Library/Android/sdk/platform-tools/adb

To get a list of devices, change the path to the emulator.

$ /Users/<user_name>/Library/Android/sdk/tools/emulator -list-avds

Copy the name of the needed device and run the command

$ /Users/<user_name>/Library/Android/sdk/tools/emulator -avd <device name>

Open the Emulators in Android Studio

Click on the Tools tab -> AVD Manager

or

Click on the AVD Manager icon on the top icons bar.

 

 

 

 

Cloud Development Setup

 

Azure CLI

brew install azure-cli

Login to Azure:

az login

  

AWS CLI

 brew install awscli

Configure AWS credentials:

aws configure

 

 

Google Cloud SDK

 

brew install --cask google-cloud-sdk

Initialize GCloud:

gcloud init

 

 

Additional Development Tools

 

 

.NET Development

 

Install .NET SDK:

brew install --cask dotnet-sdk

 

Verify installation:

dotnet --version

 

 

Docker Desktop:

brew install --cask docker

 Verify install:

$ docker --version
Docker version 27.5.1, build 9f9e405

 

Node.js (for web development):

Install node version manager (nvm):

brew install nvm

You should create NVM's working directory if it doesn't exist:

  mkdir ~/.nvm

 

Add the following to your shell profile e.g. ~/.profile or ~/.zshrc:

export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"  # This loads nvm
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

 

You can set $NVM_DIR to any location, but leaving it unchanged from /opt/homebrew/Cellar/nvm/0.40.1 will destroy any nvm-installed Node installations upon upgrade/reinstall.

  Verify install

$ nvm --version
0.40.1

 

Select node version, for example, latest version of 18, download, install, and set as default:

$ nvm install 18
Downloading and installing node v18.20.6...
Downloading https://nodejs.org/dist/v18.20.6/node-v18.20.6-darwin-arm64.tar.xz...
############################################################################################################################################################################ 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v18.20.6 (npm v10.8.2)
Creating default alias: default -> 18 (-> v18.20.6)

node --version
v18.20.6

 

 

Container and Orchestration Tools

 

 

Kubernetes Tools

 

Install kubectl:

brew install kubectl

 

Install Helm package manager:

brew install helm

 

Install k9s for Kubernetes cluster management:

brew install k9s

 

Install kubectx and kubens for context/namespace switching:

brew install kubectx

 

Install Lens Kubernetes IDE (optional):

brew install --cask lens

 

Verify installations:

kubectl version --client
helm version
k9s version

 

 

Talos

 

Install talosctl:

brew install talos-systems/talos/talosctl

 

Verify installation:

talosctl version

 

Install Sidero Metal management tools (if needed):

brew tap siderolabs/talos
brew install siderolabs/talos/sidero-tools

 

Configure Talos defaults:

talosctl config context default

 

 

 

Kubernetes and Talos Configuration

 

 

Kubernetes Context Setup

 

Create default kubeconfig:

mkdir -p ~/.kube
touch ~/.kube/config

 

Set up autocompletion (for zsh):

echo 'source <(kubectl completion zsh)' >> ~/.zshrc
echo 'source <(helm completion zsh)' >> ~/.zshrc

Alternatively setup autocompletion for bash:

...TODO...

 

 

Talos Configuration

 

Generate Talos configurations:

talosctl gen config cluster-name https://cluster-endpoint:6443
talosctl config endpoint <cluster-endpoint>

 

Set up basic node configuration:

talosctl config node <node-ip>

 

Local Development Cluster

 

Install minikube for local development:

dev$ brew install minikube
==> Downloading https://formulae.brew.sh/api/formula.jws.json
==> Downloading https://formulae.brew.sh/api/cask.jws.json
==> Downloading https://ghcr.io/v2/homebrew/core/minikube/manifests/1.35.0
############################################################################################################################################################################ 100.0%
==> Fetching minikube
==> Downloading https://ghcr.io/v2/homebrew/core/minikube/blobs/sha256:7892fe64bf008ddcbb54b27bca16d162ba2ac2d6aae8c5a80459e4dc063fd6f7
############################################################################################################################################################################ 100.0%
==> Pouring minikube--1.35.0.arm64_sequoia.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /opt/homebrew/etc/bash_completion.d
==> Summary
🍺  /opt/homebrew/Cellar/minikube/1.35.0: 10 files, 118.2MB
==> Running `brew cleanup minikube`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
dev$ minikube start --driver=hyperkit
😄  minikube v1.35.0 on Darwin 15.3 (arm64)
✨  Using the hyperkit driver based on user configuration
❌  Exiting due to DRV_UNSUPPORTED_OS: The driver 'hyperkit' is not supported on darwin/arm64

 

NOTE: For Apple Silicon (M4) Macs, we need to use a different driver for minikube since hyperkit isn't supported on arm64. Perhaps use the Docker driver instead, which is recommended for macOS on Apple Silicon.

If you didn't run this earlier (should have) in this checklist, then run: 1. brew install --cask docker

2. Start Docker Desktop and wait for it to be running

 

Then start minikube with the docker driver:

minikube start --driver=docker

 

If you want to make docker the default driver to avoid specifying it each time:

minikube config set driver docker

 

 

 

Start local cluster:

minikube start --driver=hyperkit

 

Enable necessary addons:

minikube addons enable ingress
minikube addons enable metrics-server

 

 

 

Selenium

 

 

Selenium Grid Setup

 

Install Selenium dependencies:

brew install --cask chromedriver
brew install --cask firefox
brew install --cask google-chrome

 

Install Selenium tools:

brew install selenium-server

 

Install Python bindings (if using Python for testing):

pip3 install selenium

 

Install Node.js bindings (if using JavaScript for testing):

npm install selenium-webdriver

 

Install Flutter driver:

flutter pub add webdriver

 

Selenium Grid Setup

Create Selenium Grid configuration:

cat << EOF > selenium-grid-config.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
name: selenium-config
data:
SE_NODE_MAX_SESSIONS: "5"
SE_NODE_OVERRIDE_MAX_SESSIONS: "true"
EOF

 

Deploy Selenium Grid to Kubernetes

kubectl apply -f selenium-grid-config.yaml

 

 

 

 

AI Development Environment

 

 

Python AI Environment Setup

 

Install Python 3.11 (stable for most AI frameworks):

brew install python@3.11

 

Install pip and venv:

python3.11 -m ensurepip --upgrade
python3.11 -m pip install --upgrade pip

 

Create a dedicated AI development environment:

python3.11 -m venv ~/ai-dev
source ~/ai-dev/bin/activate

 

Install core AI/ML packages:


pip install numpy pandas scipy matplotlib jupyter notebook

 

Install PyTorch with M4 (Apple Silicon) support:

pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu

 

Install Other ML Frameworks:

pip install tensorflow-macos tensorflow-metal # Apple Silicon optimized TF
pip install keras
pip install scikit-learn
pip install spacy
python -m spacy download en_core_web_sm # English language model

 

Install Hugging Face Transformers:

pip install transformers datasets accelerate

 

LLM Development Tools

 

Install Llama.cpp dependencies:

brew install cmake

 

# Clone and build Llama.cpp
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build && cd build
cmake .. -DLLAMA_METAL=ON # Enable Metal support for M4
make -j

# Install Jan.ai
brew install --cask jan

# Install LocalAI (for running local models)
brew install localai

# Install model management tools
pip install huggingface_hub
pip install torch-launch # For distributed training

# Install optimization tools
pip install bitsandbytes # For 4-bit quantization
pip install optimum # Hugging Face optimization toolkit

 

 

Monitoring and Visualization

 

# Install TensorBoard
pip install tensorboard

# Install Weights & Biases
pip install wandb

# Install MLflow
pip install mlflow

# Install Optuna for hyperparameter optimization
pip install optuna

 

 

Jupyter Configuration

 

# Generate Jupyter config
jupyter notebook --generate-config

# Install Jupyter extensions for AI development
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

# Install useful Jupyter packages
pip install ipywidgets
pip install jupyterlab

 

 

 

AI Development Configuration

 

 

Model Management

 

# Create directory structure for AI projects
mkdir -p ~/ai-projects/{models,datasets,checkpoints,logs}

# Configure HuggingFace cache location
export TRANSFORMERS_CACHE=~/ai-projects/models
export HF_HOME=~/ai-projects/models

# Configure PyTorch cache
export TORCH_HOME=~/ai-projects/models

 

 

 

Training Configuration

 

# Create default training configuration
cat << EOF > ~/ai-projects/training-config.yaml
training:
batch_size: 32
learning_rate: 2e-5
num_epochs: 3
gradient_accumulation_steps: 1
warmup_steps: 500
weight_decay: 0.01
fp16: true
bf16: false
gradient_checkpointing: true
EOF

 

 

Ollama

 

...

 

 

 

Jan.ai Configuration

 

# Configure Jan.ai model directory
mkdir -p ~/.jan/models
echo 'export JAN_MODEL_DIR=~/.jan/models' >> ~/.zshrc

# Set up model download directory
mkdir -p ~/.jan/downloads
echo 'export JAN_DOWNLOAD_DIR=~/.jan/downloads' >> ~/.zshrc

 

 

LocalAI Setup

 

# Create LocalAI configuration directory
mkdir -p ~/.localai
cp /usr/local/etc/localai/config.yaml ~/.localai/

# Configure model paths
cat << EOF >> ~/.localai/config.yaml
model_path: ~/.jan/models
temp_path: /tmp/localai
api_key: "" # Set this for API authentication
EOF

 

 

 

 

 

IDE Extensions

 

 

 

VS Code Extensions

 

 

  • Flutter
  • Dart
  • Azure Tools
  • AWS Toolkit
  • Google Cloud Tools
  • Docker
  • Remote Development
  • Git Lens
  • Flutter Widget Snippets
  • Vim

 

 

 

 

 

 

 

Virtual Machine Support

 

 

VMware Setup

brew install --cask vmware-fusion

 

 

 

 

VirtualBox (Alternative)

brew install --cask virtualbox

 

 

 

Environment Validation

# Flutter
flutter doctor -v

# iOS
xcrun simctl list

# Android
adb devices

# .NET
dotnet --info

# Cloud CLIs
az --version
aws --version
gcloud --version

 

 

 

 

Security Configuration

# Generate SSH key
ssh-keygen -t ed25519 -C "your.email@company.com"

# Start SSH agent
eval "$(ssh-agent -s)"

# Add SSH key to agent
ssh-add ~/.ssh/id_ed25519

 

 

 

 

Environment Validation

# Flutter
flutter doctor -v

# iOS
xcrun simctl list

# Android
adb devices

# .NET
dotnet --info

# Cloud CLIs
az --version
aws --version
gcloud --version

 

 

 

 

 

Flutter Accessibility

 

 

 

 WCAG

 

 

Other Flutter-related Accessibility Checking Processes and Tools to use

 

 

 

Install Postman

 

 

 

IAM, SSO, SAML, OIDC, OpenID, and related tools 

 

 

 

 

SAML-Tracer Browser Extension

 

Chrome: https://chromewebstore.google.com/detail/saml-tracer/mpdajninpobndbfcldcmbpnnbhibjmch?hl=en

 

Firefox: https://addons.mozilla.org/en-US/firefox/addon/saml-tracer/

 

 Azure AD B2C Policy Explorer

 

Extension For VSCode: https://marketplace.visualstudio.com/items?itemName=AzureADB2CTools.aadb2c

 

 

 

 

 

 

 

 

 

Navigation