My Cross‑Platform Development Setup: Windows, Mac, ChromeOS, and Essential Tools
The article details a developer's personal workstation ecosystem, covering hardware choices, operating systems, and a suite of cross‑platform tools such as Barrier, WezTerm, zsh, Neovim, Tmux, Tmuxinator, and Ddev, illustrating how they integrate to streamline PHP, JavaScript, and Docker workflows.
My primary programming work involves PHP, JavaScript (including Node), CSS, HTML, and shell scripts, with occasional use of other languages.
Hardware
I write this article on my main machine, a Windows 11 PC primarily for gaming.
The company provides me with a MacBook Pro for VPN access and video meetings, but I mainly use it as a Docker host and network proxy, preferring a mouse over the Apple keyboard.
I also have a ChromeOS laptop that I sometimes use on the kitchen table; I may switch it to Linux in the future.
Operating System
All work is done via Ubuntu under WSL on Windows 11, SSH from the ChromeOS laptop, or Barrier on the MacBook Pro.
WSL2 works well, allowing X server usage, though I rarely need X applications.
Desktop – Barrier
Barrier, a fork of the closed‑source Synergy, acts as a software KVM, letting me move the mouse and keyboard seamlessly between the PC and the MacBook.
Terminal – WezTerm
I recently adopted WezTerm because it is cross‑platform, configurable in Lua, and avoids the limitations of other terminals.
Shell – zsh
I use zsh for its compatibility with bash and its POSIX‑compliant scripts, avoiding oh‑my‑zsh and aliases.
Editor – Neovim
After years with Vim, I switched to Neovim for its asynchronous features, LSP support, and embedded terminal, despite some plugin instability.
Productivity
Tmux
Tmux is a terminal multiplexer that lets me detach and reattach sessions across machines.
Tmuxinator
Tmuxinator wraps tmux to manage multiple projects. Example output:
❯ tmuxinator ls
tmuxinator projects:
bc biascan ec fabric gce ifpma
leith leith-2023 msgan chickenland ngs ngs-new
ods ren renaissance scramble sf sf-cms
sf-forms sf-myplans sgh srnSample project configuration:
windows:
- cms:
- ddev start
- storybook:
panes:
- watcher:
- cd web/storybook
- yarn watch
- middleware:
- workon mw8
- logs:
panes:
- cms:
- workon ngs
- docker exec -it ngs-cms-php drush -y --uri=ngs-cms.shore.signal.sh -r /shore_site/web ws --tail --full --extended --count=1
- new-cms:
- workon ngs-cms-2022
- docker exec -it ngs-cms-2022-app vendor/drush/drush/drush ws --extended
- middleware:
- workon mw8
- docker exec -it ngs-middleware-app vendor/drush/drush/drush ws --extended
- build-services:
panes:
- new-cms:
- workon ngs-cms-2022
- cd web/storybook
- yarn storybookDdev
Ddev creates containerized development environments for PHP, Node, and experimental Python projects, simplifying stack management and version switching.
Uses Mutagen for fast file syncing on macOS.
Easy reconfiguration of PHP and Node versions.
Can launch third‑party GUI apps (e.g., TablePlus, DBeaver) from the command line.
Supports community‑maintained add‑ons.
21CTO
21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
