Infrastructure Skills

The objective of this page is to give additional context relating to the skills I have with respect to managing the infrastructure of a project such as packages and dependencies management, containerisation, source control, project management, etc.
iTerm2 and Oh My Zsh
  • Terminal
  • Project Management

I am a proficient power-user of the terminal. The high majority of my terminal knowledge is Unix-based (Mac and Ubuntu), so I believe my knowledge in the Windows terminal is more limited. I know a lot of the commands are similar but don't know the differences between the operating systems. WSL somewhat compensates for that, however, I much prefer to do my development on a Mac.

To varying degrees, I can use the terminal for package management with tools like 'brew', 'pip', 'pyenv', 'poetry', 'conda', 'npm', and 'pipenv'.

I can create some shell scripts to automate some frequently repeated processes, although I would lean towards using Python where possible to perform scripting tasks.

Docker
  • Docker
  • Containerised Development & Deployment

I build all of my project's development environments using Docker within the terminal.

I am well versed in building projects using Docker and understand volume mapping, networks, building efficient images, etc

I have tested a lot of Python images and eventually found that some of the recommended lighter packages such as 'alpine' is actually more hassle than its worth. This is because you need to add/remove dependencies to get the images to build all for the sake of the overall build being that bit smaller. I have settled on the 'Buster' version which works for my projects.

Git and GitHUb
  • Git / GitHub
  • Source Control & Project Management

I am proficient in the command line for most of the basic and intermediate Git commands required to manage a project such as add, remove, commit, push, pull, branch, merge, status, diff, log. I would need to quickly look up some of the lesser used commands.

I have made a few contributions to open source projects. These have mainly been in improving the documentation and testing coverage (tox/travis).

I would like to learn more about GitHub Actions as this seems like the next progression in CI/CD since it's so closely coupled with GitHub. I haven't found a need to use this yet as my deployment strategy is using Heroku which, after the first deployment, is relatively simple when compared to deploying to a Linux server such as Linode or Digital Ocean.

I do use GitHub Actions to run test suites prior to deployment in addition to some housekeeping tasks within my repos.

Browse other skills...