Raph’s Blog

  • Demystifying Software Versioning

    Commit hashes, build versions, backwards compatibility, forwards compatibility, package versions. Version 1, 2, 2.5, or 110319504efd76a2bbadd61af4c46562577bd15d. The list goes on, and the jargon more vague as our industry matures. For many within software product development (both technical and non-technical) this can become overwhelming. In this post, I’ve attempted to make concise the most common forms of versioning in the hope that it will help cut through the jargon, and streamline understanding of versioning within software delivery.

    Read more…
  • Demystifying CDN and the Fastly Outage

    Similar to my previous post about Demystifying Cyber Security Jargon this post will attempt to demystify CDN jargon to non-technical people. In the hope that an understanding of technical concepts become more accessible to more people. Recently, the media has been reporting on the fastly outage that had caused a raft of high traffic websites to go down. These websites include: Reddit, Amazon, CNN, and the New York Times. The scale of this list meant that a large portion of the internet was partially inaccessible for a small period of time.

    Read more…
  • Demystifying Cyber Security Jargon

    IT Professionals are guilty of using complicated jargon for things that can be explained in a simpler fashion. This post will attempt to demystify cyber security phrases that are casually thrown about by IT professionals. Its eventual aim is to educate and aid non-technical people to make informed cyber security decisions. Identity When IT professionals refer to an “identity” they are referring to something that reveals information about a real life human.

    Read more…
  • Azure CLI within PowerShell

    In a previous post, I justified the usage of Python as a scripting language for Azure deployment automation. One of the points made was the ease in which the Azure CLI can be used within the Python ecosystem. In many scenarios though, the usage of Python may not be appropriate due to existing technologies being used within a team or organisation. Today, I’ll demonstrate how to use the Azure CLI within a PowerShell script, but first, the justification for its usage.

    Read more…
  • Bicep vs Terraform

    Microsoft recently released a production-ready version of Bicep. An infrastructure language that compiles down to ARM Templates that can subsequently be deployed into Azure. Bicep deployment is supported in the Azure CLI as a native infrastructure language and all the compilation happens in the background. % az deployment group create --template-file ./main.bicep -g an-example-resource-group In addition, the tooling is maturing rapidly across the development ecosystem. Similarly, Terraform is a mature framework has support from Microsoft and other cloud vendors(https://docs.

    Read more…
  • Python to Automate Azure Deployments

    During a review of a previous blog post, my colleague Paul Glavich asked me to justify the technology choice of Python as a scripting language to automate Azure deployments. I told him that justifying the decision in the current post may render the justification insufficient, as such, I promised him that I will attempt to justify this decision in a subsequent blog post (the details of our dialogue is on this GitHub pull request).

    Read more…
  • DevSecOps on Azure using Terraform and Python

    This post will demonstrate how to create a segregated Azure Cloud environment (a resource group and service connection from Azure DevOps) that can be used by development teams to provision their own infrastructure and deploy their compiled code. All in an automated and secure manner. Teams can then setup their own release pipelines using the provisioned resource group and service connection. The service connection created will only have permission to a single resource group within Azure.

    Read more…
  • LADA - A Framework for Receiving Feedback

    Giving feedback is a skill that is refined over time. People are different, in different situations, across different activities, and environments. There isn’t ever a clear-cut situational precursor to people when giving them feedback, and delivering feedback in the incorrect way for the situation at hand, could cause negative consequences. I believe the first step in being able to give good feedback is knowing how to receive feedback from others. It is a behaviour that overlaps with giving feedback, and overtime, I’ve learnt to be patient and welcoming to the person giving me feedback, and have given this advice to others with a degree of success.

    Read more…
  • Avoiding the Disjointed Features Syndrome

    The “disjointed features syndrome” is a phenomenon that occurs when features are built with the resulting product being a collection of features that may not integrate correctly, have inconsistent user interfaces, and/or user experiences. For example, the below table has the following features: It has four legs; and Is able to be placed on a flat surface. Although the table above satisfies all the requirements, it’s still an unusable product.

    Read more…
  • Monorepositories in Azure DevOps

    There are many advantages associated with monorepositories including (among other things): Contractual changes between components (services, user interfaces, and databases) can be pull requested into master together as a single unit of integration, thus reducing the risk of version inconsistencies between components; Documentation as code and production code can be pull requested into master together as a single unit of integration, thus limiting the risk of documentation drift; Local development setup doesn’t assume the path of components, thus limiting the risk of divergent local development environments across the development team; and Consistent patterns across code-bases can be enforced more easily.

    Read more…