Also: Best web hosting services
The fact is, I gain a lot of productivity from Mac-specific apps, particularly Final Cut Pro X for video production. I like being able to run Windows, Linux, and Mac applications on the same machine, which is only possible on a Mac (I’ll talk more about that below). While Windows offers a robust command-line environment, I like having a full Linux-style command line as well as a complete complement of the Mac’s well-integrated graphical tools.
In this article, I’m going to show you the tools I use. Many are cross-platform, while others are Mac-specific. While I have coded Mac apps and iOS apps in the past, my coding now is entirely for the web. I maintain 10 open-source WordPress plugins, including a donations plugin that supports more than 10,000 nonprofits and a site privacy plugin that supports more than 20,000 sites.
While I have programmed in many languages in the past (and written my own), my current projects involve coding primarily in PHP and JavaScript, with CSS, HTML, and SQL (as well as some frameworks) rounding out the mix. To create and maintain the code, I use the wide range of tools shown below. In this piece, I’m going to show you the installed tools. In a future piece, I’ll dive back in and show you the cloud-based services that help get the job done.
And with that, let’s get started.
What about you?
So there you have it. Those are my main developer tools that help me get the job done. What about you? Are you coding? If so, what are the software tools that help you be the most productive? Let us know in the comments below.
My weapon of choice has been PhpStorm. I’ve been using it for years. It has an excellent integrated debugging environment that allows for both local and remote debugging. It also has a wide range of other integrated features I use daily, ranging from its own terminal window to file synchronization to version control and line-by-line file history. Plus, it has a rich selection of plugins that expand and enhance the coding experience.
Some of my favorite plugins include:
Rainbow Brackets: A wonderful plugin that matches brackets not only with lines but colors. It makes it very easy to see what code belongs to what other code.String Manipulation: All sorts of string tweaks, case conversions, and more.WordPress: Syntax and WordPress-aware function formatting, along with support for WordPress hooks. A must for any WordPress plugin coder.
This might seem like a minor feature, but when switching between IDE and browser thousands of times a day, those saved mouse movements really do add up. Because Shortcut Bar allows grouping, I also have links grouped for local and remote server testing locations. I mentioned Parallels Desktop in my intro to this article. I find the ability to run Windows, Mac, and Linux on the same machine to be hugely helpful in certain circumstances. That said, I’ve been running Windows on my upstairs office Mac, which is the one with the most speed and capacity. That machine is also the machine I use for video production. My primary development machine is actually downstairs, next to the couch. This goes back to the days of when my dog was a pup, and he used to go through withdrawal when I worked in the office. Now, it’s quite pleasant to work with him on my lap, and I’ve set up a full workstation that allows me to sit in the living room and share my lap with both the keyboard and the dog. That machine is a 2013 i7 iMac with 32GB of RAM. It’s ideal for development, but it’s just not fast enough for multiple streams of 4K video. It’s also no longer fast enough to really successfully host a Windows Desktop. Which brings me to… When I want to connect into Windows from the downstairs dev machine, I use Microsoft Remote Access. This is a free download from the Mac OS App store, and provides a full remote interface into my Windows 10 machine. Be aware that if you plan to use Microsoft Remote Access, you need to be running Windows 10 Pro. Windows Home does not support remote access. Oh, and in case you’re wondering why this setup doesn’t seem to have a mobile, programming-in-a-coffee-shop component, it’s simple: the pandemic. Once it became clear that all my coding work would be done at home, I consolidated my development onto a fixed machine with good capacity and optimized for gigabit Ethernet between the machines. If we were still living in the “old normal,” I’d have a much more cloud-centric implementation. I miss coffee shops. My most common use is to open a database table and search for “value contains” or “option_name contains” and look for the results. It’s fast and allows me to manipulate the data as part of my development process. I should point out that PhpStorm also has a database browser, but I find Sequel Pro to be more efficient for my use. It is an incredibly powerful cross-app scripting tool that’s also very easy to use. I regularly spin up special-purpose scripts to run a task that would otherwise take a long time. Some of my scripts are very powerful and cross multiple applications. Others, like the Stripe Fill Test in the screenshot, does one thing, over and over. Let’s talk about that one. When developing the Stripe payment gateway for my donations plugin, I had to initiate a test payment, probably a thousand times. As I coded and tested and debugged, I had to fill in the same credit card fields with the same test data, over and over and over. A simple script in Keyboard Maestro did all that for me. Instead of hand-filling the data for every single pass, I just let Keyboard Maestro do it for me. If I type “codex,” it will take whatever follows and use that as a search string to the WordPress developer codex. Typing “plugin,” searches the WordPress plugin repository. Typing “zdme,” searches ZDNet for articles I’ve written with the search string. I use this constantly for placing links into articles. Now, these may seem simple, and you can set up Chrome to do custom searches, but again, as with Shortcut Bar, this saves mouse moves and keystrokes. If I need to see the definition for a WordPress function, a tap gets it for me, without ever needing to go to the mouse. You can follow my day-to-day project updates on social media. Be sure to follow me on Twitter at @DavidGewirtz, on Facebook at Facebook.com/DavidGewirtz, on Instagram at Instagram.com/DavidGewirtz, and on YouTube at YouTube.com/DavidGewirtzTV.