$ 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
Setting up for Developing on Apple MacBook Pro m4 48GB RAM
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
- Open Xcode and accept license agreements
- Install iOS Simulator
- 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.
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