Skip to main content

Ovid 💻

Notes

11/23/21 - I wrote a quick post about why I purchased it and why I named it Ovid @ https://davidawindham.com/ovid and I'll document the rest of the it here. Picked him up from the Apple Store. Moved my old laptop so that I could share the screen for referencing configuration. Booted her up and loaded up activity monitor and command line top to watch the processes. I always avoid using the migration assistant so that I can start clean. My main goal is to keep the machine as minimal and simple as possible. I am going to try and avoid running any x86 processes under Rosetta in my attempt to go fully ARM https://davidawindham.com/arm/.

 

Log

23.11.26 - Vecel bumped their default Ruby runtime to v3.2 so I decided to switch out the global on this machine. Had a build error and had to install libyaml manually.

david@ovid🏛 :~/sites/daw_til(main○) » rbenv install 3.2.1
BUILD FAILED (macOS 14.1.1 using ruby-build 20230208.1)
warning: It seems your ruby installation is missing psych (for YAML output)
david@ovid🏛 :~/sites/daw_til(main○) » brew install libyaml
# set global version
david@ovid🏛 :~/sites/daw_til(main○) » rbenv global 3.2.1
david@ovid🏛 :~/sites/daw_til(main○) » ruby --version
ruby 3.2.1 (2023-02-08 revision 31819e82c8) [arm64-darwin23]
# rollback local version on project
rbenv local 3.0.3

23.11.18 - Updated my Homebrew package. Httpd was failing a graceful restart again from a config error but I noted a PHP Imagick log error below which was related to the updates. Will need to pecl the imagick versions again.

david@ovid🏛 :~ » brew --version
Homebrew 4.1.20-47-g5fa5f3b
david@ovid🏛 :~ » brew info
211 kegs, 190,355 files, 7.2GB
david@ovid🏛 :~ » brew outdated
bdw-gc (8.2.2) < 8.2.4
cmocka (1.1.6) < 1.1.7
gh (2.23.0) < 2.39.1
gnu-getopt (2.38.1) < 2.39.2
go (1.19.6) < 1.21.4
heroku/brew/heroku (7.68.1) < 8.1.9
jasper (4.0.0) < 4.1.0
libmaxminddb (1.7.1) < 1.8.0
libpthread-stubs (0.4) < 0.5
mongodb/brew/mongodb-database-tools (100.6.1) < 100.9.1
nss (3.88.1) < 3.94
pandoc (3.1) < 3.1.9
pyenv (2.3.13) < 2.3.32
python@3.11 (3.11.4_1) < 3.11.6_1
python@3.9 (3.9.16) < 3.9.18_1
redis (7.0.8) < 7.2.3
ruby-build (20230208.1) < 20231114
x264 (r3095) < r3108
david@ovid🏛 :~ » brew services restart httpd
// 👉🏼 noticed a config errors in the log will need to fix later
[Sat Nov 18 08:33:12.574367 2023] [mpm_prefork:notice] [pid 3886] AH00169: caught SIGTERM, shutting down
PHP Warning: Version warning: Imagick was compiled against ImageMagick version 1808 but version 1809 is loaded. Imagick will run but may behave surprisingly in Unknown on line 0

23/02/19 - Homebrew v4.0.1. Added MariaDB v10.11.2 to some recent servers and wanted to match versions. Noticed that my old plist for httpd was not starting alongside of the default Apache. Also had to keep a ruby/python/php matches. Other upgrades noted below:

david@ovid🏛 :/opt/homebrew/var/log(master○) » brew outdated
cmocka (1.1.5) < 1.1.6
composer (2.5.3) < 2.5.4
curl (7.87.0) < 7.88.0_1
dav1d (1.0.0) < 1.1.0
dbus (1.14.4) < 1.14.6
gh (2.21.2) < 2.23.0
go (1.19.5) < 1.19.6
guile (3.0.8_4) < 3.0.9
heroku/brew/heroku (7.67.1) < 7.68.1
htop (3.2.1) < 3.2.2
libheif (1.14.2_1) < 1.15.1
liblinear (2.45) < 2.46
mariadb (10.10.3) < 10.11.2
node (19.6.0) < 19.6.1
node@14 (14.21.2_1) < 14.21.3
node@16 (16.19.0_1) < 16.19.1
nss (3.87) < 3.88.1
openssl@3 (3.0.7) < 3.0.8
pandoc (2.19.2) < 3.1
php (8.2.2) < 8.2.3
postgresql@14 (14.6_1, 14.6_1) < 14.7
pyenv (2.3.11) < 2.3.13
python@3.10 (3.10.4, 3.10.10) < 3.10.10_1
python@3.11 (3.11.2) < 3.11.2_1
python@3.9 (3.9.13_1) < 3.9.16
ruby-build (20221225) < 20230208.1
rust (1.66.1) < 1.67.1

23/01/17 - updated homebrew and ran upgrades: brew services restart mariadb/redis/httpd/mongod. other pkgs updated heroku,gh,postgres,python3.10.4,php8.2.1,postgresql@14,mongod6.0.3,

david@ovid🏛 :~/sites/daw_til(master⚡) » brew --version
Homebrew 3.6.19
david@ovid🏛 :~ » brew outdated
gobject-introspection (1.72.0) < 1.74.0
node@14 (14.19.1) < 14.21.2_1
php@7.4 (7.4.29) < 7.4.33
python@3.10 (3.10.4) < 3.10.9
python@3.9 (3.9.13_1) < 3.9.16

System


Preferences

General : Auto / Accent multi
Desktop & Screen Save : Dark Grey Desktop color, Screen Saver 10min Monterey
Dock & Menu Bar : Remove all default, Auto Hide Dock Left w/ Magnification, no recent apps or indicators
Mission Control : set Hot Corners
Notifications & Focus : turn off all notifications except Kerberos, Calendar, Mail, Messages & Reminders. Turn on Focus automatically from 6-10am and 6-10pm weekdays.
Internet Accounts : add email accounts w/ mail, contacts, calendar. iCloud: enable drive, photos, mail, contacts, calendars, reminders, notes, safari, KeyChain, find my mac. turn off all iCloud drive except pages.
Passwords : Wallet & Pay: only on phone/tablet
ScreenTime : disabled
Security & Privacy : Allow apps from identified developers. FileVault:Off, Firewall:On, Privacy:disable all location. show location icon in menu bar.
Network : Set up WiFi, Advanced -> DNS Bluetooth : add keyboard/TrackPad
Sound :default
Keyboard :Text:add period with double-space Touch ID : setup
TrackPad :scroll direction un-natural
Displays : configure external monitors
Printer : Add epson wireless
Battery : turn off display 7min. optimize battery charging, wake for network access
Sharing : rename, file/screen airplay sharing.
Time Machine : set backup disk on network
Startup Disk : rename hard drive to network machine name.

MacOS

Arrange software based on usage and function

  • Pages, Notes, Reminders
  • Numbers, Keynote
  • Calendar, Contacts, Mail, Facetime, Messages
  • Photos, QuickTime, Preview
  • Activity Monitor, Disk Utility, Console, Color Meter

Finder

  • Change sidebar order and add my default work folders ( Projects / Sites )
  • Add QLMarkdown and Syntax Highlight Extensions ( as HomeBrew Casks )
david@ovid:~ » brew install --cask qlmarkdown
david@ovid:~ » brew install --cask syntax-highlight

Xcode

Install command line developer tools. Xcode still requires Rosetta to run some builds and since I don't regularly do Swift development, I can let the app sit without installing Rosetta

david@ovid:~ » xcode-select –install

Git - set --global .gitignore/.gitconfig - version included with Xcode

david@ovid:~/sites/dotfiles(master○) » git version
git version 2.30.1 (Apple Git-130)

Terminal

SSH Keys - move existing keys, generate fresh keys
GPG Keys - move existing, generate fresh, validate Github
Git Auth/Keys - keychain
Vim & Vundle - plugins ( NERDTree, NERDTree-Git, Fugative ) colors ( sunburst, vividchalk, solarized )

david@ovid:~ » git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

dotfiles @ https://code.davidawindham.com/david/dotfiles

Oh My Zsh - ( aliases, plugins, theme ) macos, git, gulp, grunt, brew, yarn, textmate, vscode, history-substring-search, zsh-autosuggestions, zsh-syntax-highlighting

david@ovid:~ » sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
david@ovid:~ » git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
david@ovid:~ » git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

New Features

david@ovid:~ » networkQuality ( network tests )
david@ovid:~ » aea ( Manipulate Apple Encrypted Archives )

 

Development


Reference for Apple Silicon compatibility - https://doesitarm.com

Text Editors

Textmate - set as default editor, shell support global .tm_properties
Jet Brains - WebStorm, CLion, Rider, GoLand, Rust, RubyMine, PyCharm, PhpStorm
Visual Studio Code - Insiders (Universal Build) - plugins ( Sunburst, One Dark Pro, Transmit, Vim, GitLens, Github Markdown, Markdown Lint, Spell Check, icon )
Atom - dropped b/c x86. Microsoft now owns Github and any package I used there is now on VS Code.
Sublime - dropped Sublime and Merge
Nova - trying out Nova from Panic Inc.
Kaleidoscope - for complex/visual diffs.

Homebrew

Homebrew - trying to avoid all x86 packages *installed in /opt/homebrew for ARM

david@ovid:~/sites/dotfiles(master○) » arch
arm64
david@ovid:~/sites/dotfiles(master○) » brew doctor
Your system is ready to brew.
david@ovid:~/sites/dotfiles(master○) » brew --version
Homebrew 3.3.5
Homebrew/homebrew-core (git revision c29456a994b; last commit 2021-11-25)
david@ovid:~/sites/dotfiles(master○) »
david@ovid:~/sites/_a » brew config
HOMEBREW_VERSION: 3.3.5
ORIGIN: https://github.com/Homebrew/brew
HEAD: 354718c40a4e7cc4e5d1d4b03fdce8b992e04e8a
Last commit: 6 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: c32f243acaddffb510bc5c640e83202e5101690c
Core tap last commit: 36 minutes ago
Core tap branch: master
HOMEBREW_PREFIX: /opt/homebrew
HOMEBREW_CASK_OPTS: []
HOMEBREW_CORE_GIT_REMOTE: https://github.com/Homebrew/homebrew-core
HOMEBREW_MAKE_JOBS: 10
Homebrew Ruby: 2.6.8 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
CPU: 10-core 64-bit arm_firestorm_icestorm
Clang: 13.0.0 build 1300
Git: 2.30.1 => /Applications/Xcode.app/Contents/Developer/usr/bin/git
Curl: 7.77.0 => /usr/bin/curl
macOS: 12.0.1-arm64
CLT: 13.1.0.0.1.1633545042
Xcode: 13.1
Rosetta 2: false

david@ovid:~ » brew list
==> Formulae
aom gmp libidn2 mkcert pkg-config
apr gnu-getopt libksba mongodb-community postgresql
apr-util gnupg liblqr mongodb-database-tools pyenv
argon2 gnutls libmaxminddb mongosh python@3.9
aspell go libnghttp2 mpdecimal rbenv
autoconf groonga libomp msgpack readline
bdw-gc guile libpng ncurses redis
brotli htop libpq nettle rtmpdump
c-ares httpd libsodium node@14 ruby-build
ca-certificates icu4c libssh2 npth rust
curl imagemagick libtasn1 nspr shared-mime-info
dart imath libtiff nss sqlite
docbook jbig2dec libtool oniguruma tidy-html5
docbook-xsl jpeg libunistring openexr tokyo-cabinet
fontconfig jpeg-xl libusb openjpeg unbound
freetds krb5 libuv openldap unixodbc
freetype libassuan libvmaf openssl@1.1 webp
gd libde265 libzip p11-kit x265
gdbm libevent little-cms2 pandoc xmlto
gettext libffi m4 pcre xz
gh libgcrypt macos-term-size pcre2 zstd
ghostscript libgpg-error mariadb php
giflib libheif mecab php@7.4
glib libidn mecab-ipadic pinentry

==> Casks
qlmarkdown syntax-highlight

david@ovid:~ » brew services list
Name Status User File
httpd started david ~/Library/LaunchAgents/homebrew.mxcl.httpd.plist
mariadb started david ~/Library/LaunchAgents/homebrew.mxcl.mariadb.plist
mongodb-community stopped
php stopped
php@7.4 stopped
postgresql stopped
redis stopped
unbound stopped

Packages Not ARM64

❌ - Imagick -> ffmpeg -> gnutls, libbluray
Reference for M1 compatibility in Homebrew - https://github.com/Homebrew/brew/issues/7857
Also see Brew Analytics - https://formulae.brew.sh/analytics/install/365d/

Languages

Apple is removing languages from the OS via Xcode 11 release notes: "Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. In future versions of macOS, scripting language runtimes won't be available by default, and may require you to install an additional package." Instead of adding four or five versions of each language to support legacy codebase, I'm going to bring modify the old projects.

PHP - 8.1.0 / 7.4.26 ( still have to support 7.4 )

david@ovid:~ » php --ini           
Configuration File (php.ini) Path: /opt/homebrew/etc/php/8.1
Loaded Configuration File: /opt/homebrew/etc/php/8.1/php.ini
Additional .ini files parsed: /opt/homebrew/etc/php/8.1/conf.d/ext-opcache.ini

david@ovid:~ » php -v
PHP 8.1.0 (cli) (built: Nov 28 2021 01:31:19) (NTS)
david@ovid:~ » pecl list
Installed packages, channel pecl.php.net:
=========================================
Package Version State
redis 5.3.4 stable
xdebug 3.1.1 stable

david@ovid:/opt/homebrew/lib/php/pecl/20210902(stable○) » brew unlink php
david@ovid:/opt/homebrew/lib/php/pecl/20210902(stable○) » brew link php@7.4

david@ovid:/opt/homebrew/lib/php/pecl/20210902(stable○) » php -v
PHP 7.4.26 (cli) (built: Nov 28 2021 16:40:00) ( NTS )
david@ovid:/opt/homebrew/lib/php/pecl/20210902(stable○) » pecl list
Installed packages, channel pecl.php.net:
=========================================
Package Version State
redis 5.3.4 stable
xdebug 3.1.1 stable

Python - 3.9.9 ( brew ) / 2.7.18 ( system )

david@ovid:~/.pyenv » python --version 
Python 2.7.18
david@ovid:~ » brew install pyenv
david@ovid:~ » echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
david@ovid:~ » echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
#### symlink homebrew versions to pyenv ####
david@ovid:~/.pyenv » ln -s $(brew --cellar python)/* ~/.pyenv/versions/
david@ovid:~/.pyenv » python3 -m pip install --upgrade setuptools
david@ovid:~/.pyenv » python3 --version
Python 3.9.9

Ruby - 3.0.3 ( switched from using rvm to rbenv )

david@ovid:~ » brew install rbenv ruby-build
david@ovid:~ » echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
david@ovid:~ » echo 'eval "$(rbenv init -)"' >> ~/.zshrc
david@ovid:~ » rbenv install 3.0.3
david@ovid:~ » ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.arm64e-darwin21]
david@ovid:~ » rbenv global 3.0.3
david@ovid:~ » ruby -v
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [arm64-darwin21]

GoLang 1.17.2

david@ovid:~ » go version       
go version go1.17.2 darwin/arm64

Rust - 1.56.1 (still haven't learned Rust 🛠 )

david@ovid:~ » rustc --version
rustc 1.56.1
david@ovid:~ » go version
go version go1.17.2 darwin/arm64

Dart ( 2.4.1 added Apple silicon support )

david@ovid:~ » brew tap dart-lang/dart
david@ovid:~ » dart --version
Dart SDK version: 2.14.4 (stable) (Wed Oct 13 11:11:32 2021 +0200) on "macos_arm64"

Encryption

SSL ( Open, Libre, Boring ) - Apple now defaults to LibreSSL but a lot of packages depend on OpenSSL. Using Open in zsh by default.
GNUPG - via homebrew mkcert - FF needs the CA manually added which is in Library/Application Support/mkcert

Nginx & Apache

Using Homebrew to manage the httpd version.

david@ovid🏛 :/opt/homebrew/etc/httpd/extra(master○) » which httpd                              1
/opt/homebrew/bin/httpd
// custom domains in /extra/httpd-vhosts.conf
// custom hosts in /etc/hosts
brew services stop/start/restart httpd

mkcert

cd /opt/homebrew/etc/httpd/ssl/
mkcert ex.ovid

Node.js & NVM

  • v.16.13.0 is Universal and has LTS
  • Will bring my older Node.js projects up to this version
david@ovid:~ » curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
david@ovid:~ » nvm install --lts
david@ovid:~/sites/dotfiles(master○) » nvm
Node Version Manager (v0.37.2)
david@ovid:~/sites/dotfiles(master○) » node -v
v16.13.0
david@ovid:~/sites/daw_til(master○) » npm -v
8.1.0
  • ran into a bug 🪲 where the ~/.npm directory was not installed.
david@ovid:~/sites/daw_til(master○) » npm install       
npm ERR! code EACCES
npm ERR! syscall mkdir
npm ERR! path /Users/david/.npm/_cacache
npm ERR! errno -13
npm ERR!
npm ERR! Your cache folder contains root-owned files, due to a bug in
npm ERR! previous versions of npm which has since been addressed.
npm ERR!
npm ERR! To permanently fix this problem, please run:
npm ERR! sudo chown -R 501:20 "/Users/david/.npm"
david@ovid:~ » sudo mkdir .npm
david@ovid:~/sites/daw_til(master○) » sudo chown -R $(whoami) ~/.npm
npm notice New patch version of npm available! 8.1.0 -> 8.1.4
david@ovid:~/sites/daw_til(master⚡) » npm install -g npm@8.1.4

Databases

SQLite
PostgreSQL

david@ovid:~ » brew services start postgresql
david@ovid:~ » createdb `whoami`
david@ovid:~ » psql
psql (14.1)

MySQL MariaDB ( switched from MySQL will migrate next server )

david@ovid:~ » sqlite3
SQLite version 3.36.0 2021-06-18 18:58:49
david@ovid:~ » mysql --version
mysql Ver 15.1 Distrib 10.6.4-MariaDB, for osx10.17 (arm64) using readline 5.1
david@ovid:~ » brew services start mariadb
david@ovid:~ » sudo /opt/homebrew/bin/mysql_secure_installation
david@ovid:~ » sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password PASSWORD

MongoDB ( Community ) - moved from an open source license so it was dropped by homebrew.

david@ovid:~ » brew tap mongodb/brew
david@ovid:~ » brew services start mongodb-community
david@ovid:~ » mongosh
Current Mongosh Log ID: 61a6b434921fe21dc8ab3733
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000
Using MongoDB: 5.0.4
Using Mongosh: 1.1.4

Redis ( 6.2.6 ) - via homebrew

david@ovid:~ » redis-cli --version
redis-cli 6.2.6

DBngin - use for spot installs
Tables Plus
PHPMyAdmin

Integration

Docker
Vercel / Now
Insomnia
Postman

Audit & Testing

GoAccess ( log viewer )
Proxyman
Screaming Frog

Frameworks

JavaScript ( Typescript ) - Node, Express, React, Preact, React Native, Vue, Svelte
PHP - Laravel, Drupal, Wordpress
Python - Flask, Django
Go - Gorilla
Ruby - Rails, Sinatra
Rust - Rocket

Software


Browsers

Safari
Chrome ( extensions - dev tools theme, postman, stylus )
Firefox ( Developer Edition )

Communications

Final Draft
Slack
Keybase
Authy
Zoom

Productivity

Quicksilver, Alfred, Launchbar
Objective Development - Launchbar/Little Snitch
Side Mirror
Obsidian
Pandoc

Design

Adobe ( Illustrator, Photoshop, InDesign, Acrobat Pro(x86), Premier )
Sketch
Sip

A/V

Rogue Amoeba - Audio Hijack / Airfoil / Satellite
Ace ( System Kernel Extension )
ExistentialAudio/BlackHole
Spotify
Monitor Control
VLC
Telestream - Screenflow / Wirecast / Presenter

 

Peripheral


ViewSonic VP3881 - Manual
Lenovo 32q-20 - Manual
Klipsch Pro Media 2.1 - Manual
Blue Yeti - Manual
FujiFilm XT2 - Manual
TP-Link Archer AX50 / RE505X