I can’t believe it has been a whole five years since I last wrote a list of my top five development tools for the year! Time really does fly, especially in the Laravel world, where Taylor Otwell continues to pump out awesome projects that improve and extend the Laravel ecosystem.
Indeed, two of my Top Five Development Tools this year are creations of Taylor, although neither of them occupy the top spot. So, without further ado, here are my Top Five Development Tools for 2018!
Although I might be stretching the definition of “development tool” on this one, Laravel Spark saves a huge amount of time in the development of a typical SAAS app by providing user management, recurring payments, basic application metrics and a whole bunch of other stuff without compromising quality. Of course, you end up locked into the Laravel Framework, VueJS and Bootstrap, but if (like me) these are your favourite frameworks to build with anyway then this isn’t a problem. If you want to spin up a Minimum Viable Product to see if your idea can get traction before you quit your day job, I can honestly say that dropping US$99 on Laravel Spark is money well spent, as it will save you at least 20 hours of development time and probably more like 40-80 hours (and I guarantee your version won't be as robust, reliable, scalable, beautiful and as well-tested as Laravel Spark, which has probably had several man-years of development done on it by now). I know a lot of people would baulk at spending this kind of money, as they see their side projects as hobbies and are willing to spend hours and hours re-implementing functionality that already exists because, well, they find it fun. And good for them! But if you are approaching your side project with a more commercial mindset, it is hard to argue against the logic of spending US$99 to save yourself the effort of re-implementing everything that Laravel Spark provides.
Some time ago I discovered Bash Git Prompt, an “informative and and fancy bash prompt for Git” users. And informative it is! Once configured, whenever you’re in a directory that is a git repo, Bash Git Prompt will show the branch name, the number of modified files, the number of unstaged files and a whole heap of other useful information. Although this information is basically a summary of what you would normally get from running
git status, it is extremely handy to have this summary as you are working through things at the command line. The information I rely on all the time is the number of commits that need to be pushed or pulled from the default repository. Bash Git Prompt can be configured reasonably easily and, in fact, my settings are a bit different from standard, so the example screen shot below may look a little strange to those people who use the standard settings.
In the example above, we can see the up arrow with the number 2 next to it, indicating that there are two commits locally that need to be pushed to the remote repository. Then we can see the circle with the number 2 next to it, which designates the two deleted files. And finally, we can see the ellipsis followed by the number 3, indicating that there are three files that have been modified but not yet staged. Also, the tick at the start of the line indicates that the previous command exited cleanly (i.e. with a return code of zero). It is possible to add loads more information and the configuration options are endless. It really is a remarkable tool and I honestly could not live without it now.
Regardless of whether you are a solo operator or a part of a large team, I am a firm believer in tracking all time spent on all tasks, because without that information you cannot possibly provide accurate estimates for future tasks. After spending quite a bit of time researching and trialling various timesheet tools, I have settled on Timecamp for my timesheet tracking needs. For me, the two killer features of Timecamp are:
Some alternative solutions had great phone apps that looked amazing but didn't record time properly, which was a shame, and others had amazing web UI’s but were too pricy. Timecamp sits in a really nice place in terms of functionality and price. Although I have encountered a few minor glitches with it, their technical support team always responds with advice and/or bug fixes very quickly.
Unveiled at Laracon Australia in October, 2018, Laravel Telescope is a very, very cool debugging tool for Laravel apps. It is added to an existing project using composer and, by default, makes itself available on the
/telescope route. (Full installation instructions can be found here.) Laravel Telescope basically hooks into the existing event handling facilities and logs some or all of the events that run through the application. These include HTTP requests, Artisan commands, database queries, exceptions, etc. Although Telescope is primarily intended for debugging, there are facilities to selectively log only certain events, so it is possible to run Telescope in production, which could be extremely helpful in some circumstances. Needless to say, I’m a huge fan of Laravel Telescope and if I wasn’t already a Laravel convert, I think Telescope alone could be enough of an incentive to move from another framework, as this tool really is that powerful. And it’s free!
As good as Laravel Telescope is, I can honestly say that the one tool I discovered during 2018 that was an absolute game-changer in terms of saving time and improving the way I worked was Deployer, a “deployment tool for PHP”. That description, which is straight off their web site, very much understates the tool’s sophistication and power.
My need for a better deployment solution arose when my team grew and the development process became a bit more complicated and the home grown scripts that we had been maintaining for years started to show their weaknesses. Whilst the home grown scripts covered the basics quite well, using the common symlink approach to enable hot deployments and version rollback, they did not automatically clean up old deployments and they didn't handle errors very well. After investigating and assessing a number of solutions, I eventually settled on Deployer and I haven't looked back. Deployer comes with “recipes” for executing deployments with a number of frameworks and seems to have pretty good support for various target operating systems. My use has primarily been with OS X as the client and Debian 8/9 as the target server and it has worked absolutely seamlessly.
Deployer is very similar to composer in that you download it, use it, occasionally run the self-update command and that’s about it. It supports a number of frameworks out of the box and is insanely easy to adjust and extend. Seriously, if you are responsible for the deployment of PHP applications and are using home grown scripts, you should immediately stop what you are doing and check out Deployer, because it will almost certainly provide a far superior deployment experience.