My principles

Technologies and tools

Allow me to briefly describe the key tools and principles used in my work:

  • I use Git for version control. I utilise private repositories, as well as Github and Bitbucket for all of my code. I spend most of my time in commandline, but for complex diff views I use SourceTree.
  • Docker for container image builds - to make sure every environment that my work runs on is the same and can be repeatedly reproduced
  • PHP / Nginx / FPM / MySQL - the usual tools in any web developer's toolkit
  • Xdebug - THE CORE of what I do - when something does not work, I need to understand WHY, and there is no better way than to step through the code line-by-line
  • Javascript / React / Knockout.js / Zend / Symphony / Varnish - all the technologies required to run Magento e-commerce shops
  • bash, zsh, shell scripting and utilising Linux every step of the way
  • MacOS - all flavours and versions since I started using a Mac in 2009
  • PhpStorm as an IDE of choice, however I spend most time in iTerm2 and mostly edit text files in vim and TextMate
  • Windows and WSL - VS Code and WSL is a big part of the current development community's work, I enjoy exploring the capabilities and pushing the boundaries of what I can do on a Microsoft-based machine

Security first

No website can function if security is not taken care of as the first concern.

  • I apply all of the industry standard principles in verifying that every line of my code corresponds to the best security practices. This means that every environment is isolated, secure and never published to the world.
  • Every package used MUST be updated to the latest available version, provided in does not break the rest of the build. This is a compromise that needs to be observed every time, as a website that is not taking customer orders is no good, no matter how secure it is.

Verifiable stability

To make sure the website and the build is stable means developing it in a way that changes can be tested before they are visible to the customers. This is a principle that can not be broken.

  • NEVER DEVELOP IN PRODUCTION.

To ensure all changes are tested before they go live I utilise Vagrant and Docker for my local development. I build all these environments line-by-line, handcrafting every change to make sure that they can be re-used on every machine. Whatever work is done, can be run on Linux, Windows and Mac, and will be functioning identically every single time.

Off-site backups

Every project I work on must strive to implement rotational backups of every configuration file, webroot and database. They MUST be stored off-site in case the production infrastructure breaks down. I use shell scripting in bash and utilise scp to copy files to secondary servers and off-line hard drives. Ideally every website needs to have 2 copies and more of every daily rotational backup. For larger businesses with more security and stability concerns, hourly and atomic backups need to be implemented and database clustering needs to be used to ensure integrity in information updates.

Github

My evolving work on Magento 2 Docker can be found here.

Go Back