Tools I Use

In my career I have found that a massive help to enhancing productivity is finding good tools that help alleviate the complexity of building products and features. In that regard I would like to share some of the tools that I use both personally and professionally.

At home I use a Windows machine and at work I use a Macbook Pro M2. Regardless of the OS, there are tools that can help ease the burden of a developer's day to day tasks. Here are some of the tools that I use:

Windows Tools

  • WSL2: if you are developing on windows and not using WSL2, you are missing out. It is a game changer for windows. It helps you run a full linux kernel on your windows machine. You can seamlessly work in a linux environment, incorporate Docker containers, and run linux commands. It is a must have for any developer working on windows.
  • Windows Terminal: This is a new terminal that Microsoft has released. It is a great terminal that allows you to have multiple tabs, and multiple panes in each tab. It is a great tool for managing multiple terminal windows.
  • Laragon: Laragon stops you having to deal with the complexities of setting up a local development environment. It helps you focus on building the apps you use and also helps you not pollute your system with multiple installations of node or php. It allows you to easily switch between versions of PHP and Node. It also has a nice pretty urls which are autogenerated for you. It is a free tool that helps deal with the complexities of setting up projects and allows you to get straight to building your application. It appears that the developer may not be able to continue development on the project, but it is still a great tool.

Mac Tools

  • Warp: Warp is an excellent and performant terminal for Mac that allows me a lot of convenience and functionality. It makes working with the terminal a breeze. Lots of customisation options and a great UI, with modern editor utility to help speed up your workflow. I highly recommend teh warp docker plugin if you are also working with Docker containers.
  • Rectangle: Rectangle is a window manager for Mac that allows you to easily move and resize windows. Coming from Windows I found teh window management in Mac somewhat lacking, although this is likely due to my unfamiliarity with it. Rectangle has made it much easier to manage windows on my Mac, especially with multiple monitors.
  • Alfred: Alfred is is Mac's spotlight search on steroids. It is a great tool that allows you to quickly search for files, applications, and even run scripts. It has a lot of functionality that can be added through plugins.
  • Herd: Herd is for Mac what Laragon was for Windows. It does have all the features that Laragon had, but some of them are only available in the premium version. I would highly recommend it if you can justify the cost though. The free version still makes setting up local dev environments a breeze, but you may need to handle databases and a few other things until you can upgrade.
  • DBngin: DBngin is an all in one database management tool. It allows you to easily manage your databases and switch between different versions of MySQL, Postgres, and Redis. If you don't want to setup and organise Docker containers this will allow you to handle the databases you need for your projects.

Universal Tools

  • JetBrains Suite: I use the JetBrains suite of IDE's for my development. I use PHPStorm for PHP development and WebStorm for Javascript development. They are a feature heavy group of specialised IDEs that have a lot of utility out of the box.
    • PHPStorm: PHPStorm is a great IDE for PHP development. It has a lot of features that make developing in PHP a breeze. It has great support for Laravel and Symfony. It is a paid IDE but it is worth the money if you are doing a lot of PHP development. If you are developing in Laravel, I also strongly recommend paying for the Laravel IDEA plugin. It is a great plugin that adds a lot of Laravel specific features to PHPStorm.
    • WebStorm: WebStorm is for JS devs what PHPStorm is for PHP devs. It is a paid IDE but it is worth the money if you are doing a lot of Javascript development.
    • WriterSide: Writerside is a handy markdown editor that I use for writing markdown files. I use this mainly to define functional requirements, flesh out specs, and write documentation. I also use it for personal notes on systems and processes that I work with.
  • VS Code: VSCode is great if you can't justify the licensing for the Jetbrains IDE's. I used this extensively until I was fortunate enough to work for a company that pays for the Jetbrains Suite. There are huge amounts of plugins available so you can customise your editor to your workflow.
  • Docker: Docker is pretty much a standard in the industry, even if you aren't in a DevOps role you should definitely learn the basics.
  • Postman: Postman is a great tool for testing API's. It allows you to easily test your API's and see the responses in a nice format.
  • Git: Git is a must have for any developer. It is a version control system that allows you to track changes in your codebase. Some of us remember the bad old days before good version control. I would strongly recommend any developer learn the more advanced functionalities git can provide. It is absolutely necessary in any team based development.
  • zsh: zsh is my shell of choice and the obligatory inclusion of oh-my-zsh. It is a great shell that has a lot of functionality out of the box. I have customised my zsh shell to include a lot of plugins that help me with my day to day tasks. Frequent complex tasks can be built into shell functions and called from the command line. For an example, I have a shell function that will easily allow you to select a running docker container, backup the database and save to a file. This means i can quickly do this before manipulating the database whilst working on a feature. I have a companion command that will restore the database from the file. This is a huge time saver for me.