Tools on my favourite list

OS
IDE
Other Tools

OS

Mac OS X is my current development OS of choice. It is Linux compatible enough so that I can take most open source software and compile it for OS X, as is. I recently had occasion to help someone setup a Windows based development environment for a PHP project deployed to AWS Beanstalk. I thanked my lucky stars that I developed it on a Mac.

I was a Windows based developer for over a decade, since Windows 3.1 to be exact. I evangelized Windows development and Microsoft Visual Studio, in every place I worked, way back in the late 90's. At the time this was the most comfortable and productive C/C++ development environment. Just the edit and continue feature made debugging an order of magnitude faster than having to compile and re-run.

The last Windows OS that I used regularly was Windows Vista. I was getting tired of major UI paradigm shifts from version to version and got a MacBook Pro. I used Parallels Desktop to run the familiar Windows tools as a transition. It took some time to migrate my habits but I cannot imagine going back.

My current development machine is an iMac Pro 5k Retina 27". I used to have two 24" monitors, which took up a fair share of real estate. A single 27" screen is more compact and practical. The retina resolution is just eye-candy. This is the best development environment that I have ever worked with from both hardware and software perspectives. The iMac is dead quiet, letting me focus on the work.

With the last upgrade to Sierra I cleaned up my hard-disk and with it the Windows 10 VM for Parallels Desktop. I found lately it did nothing but run an upgrade every time I launched it and raise my blood pressure. I will still have to create a windows VM for plugin testing but using Windows OS for me is history.

IDE

Hands down, it is the JetBrains IDE products. They are the best and if you are willing to learn how to use them properly by adjusting your habits then you will wonder how you ever lived without them. I have been using PhpStorm since 2014 and IntelliJ IDEA since 2015. I am still "discovering" new features, especially now that I am trying to hack functionality into the IDE that it did not foresee as a viable option. The features are new to me, not to the IDE. There simply is so much functionality that it will probably continue to amaze me for the foreseeable future.

The IDEs are integrated with everything you need to work on a project. The integration is intelligent so code completions, error checking, inspections, etc apply to every aspect. This includes the database, VCS, bash scripts, HTML, JavaScript, git ignore files. The list is extensive. Once you get your plugins and configuration set up you rarely have to leave the IDE to do anything your development activity will demand.

When I started using the IDEs, I felt that these IDEs are spectacularly designed and implemented. After going deep into some of the implementation code I feel even more convinced about that statement. They run on every popular platform, are blazing fast and getting faster with every release. The intelligence of these products has no equal in the development arena. They are very actively improved and supported. I have found my new "development home."

Many tools try to do a lot and wind up doing some things well and others poorly. These IDEs are the exception. They do it all to a high degree of excellence with an eye candy GUI.

If you have not used a JetBrains IDE before, do yourself a favour and get the IntelliJ Ultimate trial or the IntelliJ Community edition and see what you have been missing. Just give yourself a bit of time to learn the lay of the land. These products are a universe of functionality that is well worth exploring.

In my humble and biased opinion, both Markdown Navigator and MIA: MissingInActions plugins make documentation and code editing in these IDEs even better.

Indispensable Plugins

I find these plugins a must have, which I immediately install in all my IDEs:

Other Tools

  • git and GitHub for VCS. I would have given a kidney for this VCS combination in 1990's and 2000's when I was managing development teams. Today they are free.

  • marketcircle Daylite for organizing communications, tasks, projects. It is the best e-mails/communications/leads CRM made for OS X and iOS products which integrates with Apple Mail and works like magic. Now supports Windows. It helped me clear out by inbox clutter from 200+ red flagged e-mails in half a day. Best of all I get to classify and create project tasks right in Apple Mail in a few seconds allowing me to keep my inbox clear with minimal distraction from what I am doing. An amazing tool and worth every penny.

  • BeyondCompare for directory and file diffs. I discovered this tool when it was still in version 1 and only supported Windows. It is now at version 4 and supports Windows, Mac OS X and Linux. I always had it installed on my systems, even when I was not doing development.

  • Transmit from Panic for FTP and Amazon S3 sync. Not much to say. It is an icon in its class.

  • Scrivener from Literature & Latte. This is an amazing writing and thought organizing tool that does its job without getting in the way. It is smooth and orthogonal in its features and implementation. Although dubbed as a writer's tool, which it is, it is applicable to more uses than that. I use it to organize almost random bits of information that I need in one aspect of development or another. It helps me "remember" how I solved something a few months back so I can repeat the process.

  • Scapple from Literature & Latte. The easiest and snappiest free form idea organizer. I use it to rough out concepts with minimal interference from the tool. Simple and well designed.

  • Path Finder, replacement for Mac OS X Finder. Having come to OS X from more than a decade of Windows use, I found that the OS X beats Windows in usability, practically in everything except the GUI file manipulation. This app mitigates the OS X shortcomings in this department although it cannot eliminate them entirely. I could not work on the Mac without it. I still find the OS X file search capability mediocre at best. Brain-dead would be a more accurate description but that is a minor annoyance in the grand scheme of things.

  • Laravel PHP framework for site development. Extremely well designed, easy to customize and a joy to work with when you get the hang of it. I started with 4.2 and migrated to 5.1, which is a great improvement over the older version. I customized and released a couple of packages (Laravel 5 Translation Manager and Laravel 5 Scaffold Generators to make development even easier. There are tons of packages available and non-laravel PHP packages can be easily "wrapped" for Laravel, should the need arise.

    The documentation is oversimplified and you need to get comfortable reading the source code to do more than just basic stuff. That said, the source is well worth the read. Having started with PHP development in 2014, I found its source a cookbook of elegant solutions.

  • Apache 2.4, Php 5.6, 7.0 & 7.2 for site development with MySQL backend. Hosting is on AWS, with Elastic Beanstalk for load balancing and instance creations with RDS MySQL backend. AWS has a bit of a learning curve, to say the least. Once you get over that it is dead simple to maintain and feature rich. I don't deploy my app the 'usual' way because it wasn't working for me. composer would run out of memory when executing an update on the 1GB memory machines. I was forced to figure out how to deploy without composer. The benefit is that a new deployment takes a minute or two vs. 10 to 15 that is expected with the 'usual' method. Sure it would be nice just to push a new version to GitHub and forget, but cutting the deployment delay has its advantage and did I mention that it actually works, which is a huge benefit all by itself.