Category: Life

  • Serverless Services for Serverful CMSes

    I’m big on setting goals and areas of focus for the short term. My general goals and mantra for 2017 are summed up in the post Harder, Better, Faster, Stronger… I usually like to see where I’m at halfway through the year and adjust accordingly to either get back on track or set some different goals.

    So far, 2017 has been crazy busy and a lot of fun. We celebrated the birth of our daughter January 11th and the fun (and work!) has not stopped. Being a parent has been awesome, and our daughter is an exceptionally easy infant. I know others don’t have as easy of a time, but this gal is already sitting, standing, eating pureed food, and smiling ear to ear. We love her a ton! (more…)

  • Local PHP and NodeJS Version Control

    When working on projects with your local computer, it’s essential to be able to test new versions of the languages you’re using. Browser JavaScript is fairly straightforward: use the browser, make sure it’s updated, etc.

    However, with server-side languages (like PHP, NodeJS, Python, Go, etc.), there’s a little more nuance. Some systems come with languages installed on them (I tend to work on a Mac), but they usually come with a single version, and there isn’t a UI or straightforward way to update them.

    We tend to have vertualized environments for this kind of thing, but if you’re looking to install and easily switch between local versions versions of a language you’re running, these two repositories might be helpful.

    Note: I’m on a Mac, so these are what I use.


    I’ve been using Homebrew PHP for a bit now and really like how easy it is to get, use, and upgrade different PHP versions.

    There are installation instructions in the Github repo, as well as commands for downloading, upgrading, and changing PHP versions. Since those commands are hard to remember, I’ve created a few bash functions and put them in my .bash_aliases file:

    # PHP version management for Homebrew PHP
    phpget () { brew install shivammathur/php/php@"$1" }
    phpswitch () { brew link --overwrite --force shivammathur/php/php@"$1" }
    phpupgrade () { brew upgrade shivammathur/php/php@"$1" }

    Now if I want to switch to a different PHP version, I just type phpswitch 8.2 into my terminal and I’m up and running with 8.2.x.

    This has made testing new PHP features and staying up to date with package requirements easy.


    Similarly, using Node Version Manager has been a breeze for switching between versions of NodeJS.

    Installation instructions and commands are available in the repo.

    Here are some examples of commands you can use (from the repo):

    $ nvm use 16
    Now using node v16.9.1 (npm v7.21.1)
    $ node -v
    $ nvm install 12
    Now using node v12.22.6 (npm v6.14.5)
    $ nvm ls
    ->     v16.15.0
    default -> 12.20.0 (-> v12.20.0)
    node -> stable (-> v16.15.0) (default)
    stable -> 16.15 (-> v16.15.0) (default)
    $ nvm ls-remote
    (will output all the versions available to install... too many to list here 🤓)

    Easy as that… and pie 🥧 😋.

    Photo by Ilya Pavlov on Unsplash

  • Setting Up or Resetting My Macbook

    Every now and then, fresh start is a good idea.

    These are some notes and links I’ve accrued from resetting my Macbook a time or two.

    These are just notes and links, they might be non-sensical, if you think I should polish them up, let me know.


    • get RaspberryPi and Linux images
    • SSH keys
    • .dotfiles and user files
    • file folders like Documents, Photos, etc.
    • double check all applications are in the Homebrew installs or accounted for

    Desktop and Screen Savers

    Ok, I’m ready, this is what I do

    Pretty much in this order…

    Remove Startup Chime

    In MacOS Monterey (at least), you can disable this in the System Preference (thank goodness!), otherwise, you can try:

    # Disable:
    sudo nvram SystemAudioVolume=%80
    sudo nvram -d SystemAudioVolume
    # Disable
    sudo nvram StartupMute=%01 
    # Enable (why, I don't know)
    sudo nvram StartupMute=%00


    • Key Repeat -> Fast
    • Delay Until Repeat -> Short
    • Disable
      • “Correct spelling automatically”
      • “Capitalize words automatically”
      • “Add period with double-space”
      • “Use smart quotes and dashes”
    • Make Spotlight something crazy

    Application setup

    1. Homebrew: install HB and then brew install everything else
    2. Set up my .dotfiles
    3. Get Fira Font for terminal and VSCode
    4. Oh my zsh and Spaceship prompt
    5. Chrome, set as default, log in should pull over all extensions and bookmarks
    6. Get old SSH keys or ssh key setup
    7. Node Version Manager and install latest version of Node and any other versions I need (current using 10, 12, 16)
    8. Composer global installs
    9. NPM global installs
    10. Install VSCode extensions
    11. Atom One Dark for VSC
    12. Install Logitch Options

    Homebrew Installs

    brew install \\
      4k-video-downloader \\
      alfred \\
      amazon-music \\
      authy \\
      bartender \\
      balenaetcher \\
      bitwarden \\
      boop \\
      cleanmymac \\
      clipy \\
      discord \\
      disk-inventory-x \\
      firefox \\
      fork \\
      google-chrome \\
      insomnia \\
      kindle \\
      lastpass \\
      lens \\
      licecap \\
      local \\
      macdown \\
      mamp \\
      nosql-workbench \\
      notion \\
      obs \\
      obsidian \\
      oracle-jdk \\
      pgadmin4 \\
      postman \\
      rectangle \\
      rocket \\
      screaming-frog-seo-spider \\
      sequel-ace \\
      simplenote \\
      skitch \\
      slack \\
      spotify \\
      tableplus \\
      toggl-track \\
      transmit \\
      tunnelblick \\
      visual-studio-code \\
      vlc \\
      whatsapp \\
      zoom \\

    Global NPM Installs

    npm install -g gatsby-cli netlify-cli serverless trash-cli typescript

    Global Composer Installs

    composer global require laravel/installer

    VSC Code

    code CLI will need to be installed:

    • Launch VS Code.
    • Open the Command Palette (⇧⌘P) and type ‘shell command’ to find the Shell Command: Install ‘code’ command in PATH command.
    • Restart VSCode
    • Then do the following to get the installed extensions
    Get a list of what I have installed: 
    code --list-extensions | xargs -L 1 echo code --install-extension
    Will output something like (copy, paste and hit enter in Terminal)
    code --install-extension aaron-bond.better-comments
    code --install-extension akamud.vscode-theme-onedark
    code --install-extension alexcvzz.vscode-sqlite
    code --install-extension anthonydiametrix.ACF-Snippet
    code --install-extension apollographql.vscode-apollo
    code --install-extension bmewburn.vscode-intelephense-client
    code --install-extension calebporzio.better-phpunit
    code --install-extension dbaeumer.vscode-eslint
    code --install-extension dsznajder.es7-react-js-snippets
    code --install-extension eamodio.gitlens
    code --install-extension EditorConfig.EditorConfig
    code --install-extension esbenp.prettier-vscode
    code --install-extension fabiospampinato.vscode-highlight
    code --install-extension file-icons.file-icons
    code --install-extension GraphQL.vscode-graphql
    code --install-extension hbenl.vscode-mocha-test-adapter
    code --install-extension hbenl.vscode-test-explorer
    code --install-extension ikappas.phpcs
    code --install-extension mariusschulz.yarn-lock-syntax
    code --install-extension mgmcdermott.vscode-language-babel
    code --install-extension mikestead.dotenv
    code --install-extension ms-azuretools.vscode-docker
    code --install-extension ms-python.python
    code --install-extension ms-python.vscode-pylance
    code --install-extension ms-vscode-remote.remote-containers
    code --install-extension ms-vscode.test-adapter-converter
    code --install-extension neilbrayfield.php-docblocker
    code --install-extension nikitaKunevich.snippet-creator
    code --install-extension onecentlin.laravel-blade
    code --install-extension onecentlin.laravel5-snippets
    code --install-extension patbenatar.advanced-new-file
    code --install-extension persoderlind.vscode-phpcbf
    code --install-extension Prisma.prisma
    code --install-extension ryannaddy.laravel-artisan
    code --install-extension sleistner.vscode-fileutils
    code --install-extension streetsidesoftware.code-spell-checker
    code --install-extension tungvn.wordpress-snippet
    code --install-extension wix.vscode-import-cost
    code --install-extension wordpresstoolbox.wordpress-toolbox
    code --install-extension xabikos.JavaScriptSnippets
    code --install-extension xdebug.php-debug


    Chrome: Sign into accounts, make sure to open preferences, and “On startup” should be set to “Continue where you left off”.

    Setup, PHPCS and Formatting

    intellij idea – Code reformatting on save in PhpStorm or other jetbrains ide – Stack Overflow

    PHP CodeSniffer and Code Formatting

    • SSH Keys to Strattic Code
    • Jira integration?
    • Set up AWS CLI with account and aws configure --profile strattic-dev it.
    • CleanMyMac license from old computer
    • Transmit license from old computer

    Third party mouse issues:

    Connecting iMessage from iPhone:

    Factory Reset

    Dev Setup resources:


    laptop computer 2006 to current” by elizabeth.hargis is marked with Public Domain Mark 1.0.

  • Wait, wuuut? Where did my CMS go?!

    Static, headless, decoupled, Jamstack, serverless (geez, are there any more names for this stuff?!) sites have already made their way into the mainstream of WordPress and other CMS development. While these sites offer speed, scalability, and security, there are also inherent pitfalls and “gotchas” to be aware of when building in this ways for WordPress and other CMS platforms. We’ll define some terms, talk about how to frame the issues of working in this way, and look at several options for building out reliable and resilient solutions for customers and clients in this area.

  • An Ideal WordPress Workflow Development & Deployment Workflow

    I know the title is a mouthful, but, this was a lot of fun to put together 🤓…

    This talk was for Certified Fresh Events (, and this was the abstract:

    At over 40% of the web, WordPress maintains a massive footprint on the Internet. While this platform, with its 20+ years of code, can easily be dreaded, misunderstood, and dismissed as antiquated, WordPress continues to evolve with the latest JavaScript technologies, is used and is beloved by marketers and enterprises to manage their content (that is, there is a lot of capital behind this CMS!). In this talk we’ll cover what you need to know about WordPress code, database, and file structure, as well as a development and deployment workflow that will serve you well in the headless/static ecosystem, and show you how to avoid common pitfalls of mixed up code and overwritten production databases.