<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Git on Chris Reddington</title><link>https://chrisreddington.com/tags/git/</link><description>Recent content in Git on Chris Reddington</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Thu, 03 Apr 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://chrisreddington.com/tags/git/index.xml" rel="self" type="application/rss+xml"/><item><title>Rubber Duck Thursdays - Sshh, let's talk about secrets.</title><link>https://chrisreddington.com/video/2025-04-03-rubber-duck-thursdays/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/2025-04-03-rubber-duck-thursdays/</guid><description>&lt;p&gt;This episode focuses on why secrets should never exist in source code and how GitHub&amp;rsquo;s newly unbundled security products help prevent and detect secret leaks.&lt;/p&gt;
&lt;p&gt;After the weekly GitHub Changelog review — covering the new GPT-4o Copilot completions model, repository ownership limits, GitHub Desktop updates, Copilot mobile multi-model support, and GitHub Issues dashboard improvements — Chris dives into the headline topic: GitHub Advanced Security splitting into two standalone products, Secret Protection ($19/month) and Code Security ($30/month), now available for GitHub Team plans without requiring Enterprise.&lt;/p&gt;</description></item><item><title>ClickOps over GitOps</title><link>https://chrisreddington.com/video/clickops-over-gitops/</link><pubDate>Thu, 27 Oct 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/clickops-over-gitops/</guid><description>&lt;p&gt;The gap between raw Kubernetes and a developer-friendly PaaS is where the most interesting tooling is being built today. GitOps gives teams a declarative, version-controlled way to manage their clusters — but the infrastructure expertise required can be a steep barrier. ClickOps offers a different angle: let developers click a dashboard, and let the platform handle the YAML.&lt;/p&gt;
&lt;p&gt;In this episode, Chris is joined by Laszlo Folgas, founder of Gimlet.io, to explore how you can combine the accessibility of a UI with the reliability of a GitOps-driven workflow.&lt;/p&gt;</description></item><item><title>Policy as [versioned] code - you're doing it wrong</title><link>https://chrisreddington.com/video/policy-as-versioned-code/</link><pubDate>Thu, 15 Sep 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/policy-as-versioned-code/</guid><description>&lt;p&gt;Chris Nesbitt-Smith presents the case for treating governance policy the same way we treat source code — versioned, iterable, peer-reviewed, and continuously improved. Drawing on his experience advocating modern engineering practices within UK government, Chris explains why policies fail and what it takes to make them work.&lt;/p&gt;
&lt;h2 id="key-topics-covered"&gt;Key Topics Covered&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Why policies fail&lt;/strong&gt;: Policies are usually written once, emotionally, as a reaction to a specific incident. They quickly become outdated, overcomplicated, and disconnected from real risk — leading developers to work around them rather than with them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The lift pitch&lt;/strong&gt;: Using a story of a CIO, Product Manager, developer, and cleaner sharing a lift, Chris illustrates the different stakeholder perspectives on policy — risk ownership, delivery velocity, and day-to-day practicality — and how good policy serves all of them simultaneously.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policy as code&lt;/strong&gt;: Storing policy in version control (Git/GitHub), enforcing it through automated CI/CD pipelines, and treating compliance as a test suite lets teams iterate on policy as fast as the threat landscape changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes admission control&lt;/strong&gt;: The specific technical context — using Kubernetes policy engines (such as OPA/Gatekeeper or Kyverno) to enforce rules at deployment time, giving developers fast and understandable feedback in their existing workflow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Iterative, not waterfall&lt;/strong&gt;: Attempting to write perfect policy upfront causes the same failures as waterfall software delivery. Small, incremental improvements with clear rationale are more effective and more trusted by the teams subject to them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Culture over tooling&lt;/strong&gt;: Tooling is the easy part. The real challenge is helping people understand &lt;em&gt;why&lt;/em&gt; a policy exists. When developers understand the consequence, they follow the spirit of the policy — not just its letter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From this talk you&amp;rsquo;ll learn how to use a software development pattern and product ways of thinking towards how your organization can manage policy; achieve continual updates to policy allowing the risk mitigations to move as fast as the risk does, not get in the way and be easy to measure compliance.&lt;/p&gt;</description></item><item><title>Tales from the Real World on DevOps</title><link>https://chrisreddington.com/video/devops-tales-from-the-real-world/</link><pubDate>Fri, 17 Sep 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/devops-tales-from-the-real-world/</guid><description>&lt;p&gt;In this episode Chris is joined by &lt;a href="https://thomasthornton.cloud"&gt;Thomas Thornton&lt;/a&gt;, a DevOps specialist at Kainos in Belfast, for a grounded, real-world discussion on what DevOps actually looks like at scale.&lt;/p&gt;
&lt;h2 id="whats-covered"&gt;What&amp;rsquo;s covered&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DevOps as culture&lt;/strong&gt; — why DevOps is far more than a buzzword, and how to bring stakeholders beyond dev and ops into the conversation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Version control fundamentals&lt;/strong&gt; — why getting Git right is the prerequisite to everything else in a CI/CD workflow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Branching strategies&lt;/strong&gt; — trunk-based development vs. feature branches, managing environment drift, and when fewer branches is better&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI/CD pipeline design&lt;/strong&gt; — starting simple, avoiding over-engineering, and incrementally adding checks and quality gates&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure as Code&lt;/strong&gt; — using Terraform modules vs. copy-paste resources, and the long-term payoff of DRY pipelines&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes and GitOps&lt;/strong&gt; — how pull-based GitOps (e.g. Flux/ArgoCD) enables scalable, consistent deployments across 120+ applications and multiple clusters&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Practical advice for all levels&lt;/strong&gt; — tips for those just starting out, those mid-journey, and those looking to take a mature DevOps practice further&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thomas brings examples from a real environment spanning 83 Azure subscriptions, making this one of the most grounded DevOps conversations on the channel.&lt;/p&gt;</description></item><item><title>Cloud Drops - What is Continuous Integration (CI)?</title><link>https://chrisreddington.com/video/cloud-drops-what-is-continuous-integration/</link><pubDate>Tue, 20 Jul 2021 00:01:00 +0000</pubDate><guid>https://chrisreddington.com/video/cloud-drops-what-is-continuous-integration/</guid><description>&lt;p&gt;Modern software teams use version control branches so engineers can develop independently without blocking each other. Continuous Integration formalises the step of merging those branches back into the main codebase by requiring every change to pass an automated build and test suite before it can be accepted. Tools like GitHub Actions and Azure Pipelines automate compilation, unit tests, integration tests, and other quality checks triggered on every pull request, providing rapid feedback — if a build breaks or tests fail, the engineer knows immediately rather than discovering hard-to-trace bugs later in production.&lt;/p&gt;</description></item><item><title>Discussing the Cloud with Chris GitHub Architecture and GitHub setup</title><link>https://chrisreddington.com/video/discussing-cloud-with-chris-architecture-and-github/</link><pubDate>Tue, 20 Apr 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/discussing-cloud-with-chris-architecture-and-github/</guid><description>&lt;p&gt;Karl Cooke (Implementation Specialist at Action Point Technology Group, blogger at &lt;a href="https://irishtechie.com"&gt;irishtechie.com&lt;/a&gt;) turns the tables on Chris Reddington, interviewing him about the architecture and GitHub workflow behind CloudWithChris.com.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Platform Architecture&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The site is a three-layer stack:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Azure DNS&lt;/strong&gt; — public DNS zone with an apex domain redirect to &lt;code&gt;www&lt;/code&gt;, plus separate subdomains for preview, staging, and the podcast feed (&lt;code&gt;podcasts.cloudwithchris.com&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure CDN&lt;/strong&gt; — global edge caching with a rules engine for HTTP→HTTPS redirects and security header injection&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure Storage&lt;/strong&gt; — static website hosting for all HTML, CSS, JS, and media assets; chosen for its low cost, simplicity, and natural fit with static content&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Security Hardening&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>V014 - Tech Roundup #14 Azure, DevOps &amp; GitHub Blogs, Azure Updates &amp; New CloudWithChris content</title><link>https://chrisreddington.com/video/weekly-vlog-014/</link><pubDate>Sun, 04 Apr 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/weekly-vlog-014/</guid><description>&lt;p&gt;In this Easter Sunday livestream, Chris rounds up a bumper week of tech news. Azure highlights include Microsoft being named a Forrester Wave leader in Function-as-a-Service platforms — validating the Azure Functions investment — a Cost Management recap for March, and enterprise-scale landing zone guidance from Sarah Lean. A rapid-fire Azure update pass-through covers the new AKS &lt;code&gt;run command&lt;/code&gt; feature (enabling ad-hoc commands through the Azure API plane on private clusters while respecting RBAC), AKS node image auto-upgrade, Open Service Mesh add-on for AKS, GA of Kubernetes 1.20 in AKS, and Azure Static Web Apps deployment without a DevOps pipeline.&lt;/p&gt;</description></item><item><title>Why use Git, How it Works and what's going on behind the scenes?</title><link>https://chrisreddington.com/blog/git-getting-started-to-advanced/</link><pubDate>Thu, 01 Apr 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/git-getting-started-to-advanced/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve recently released a few &lt;a href="https://chrisreddington.com/series/cloud-drops"&gt;Cloud Drops&lt;/a&gt; episodes on Git related content. The &lt;a href="https://chrisreddington.com/episode/cloud-drops-git-behind-scenes"&gt;&amp;lsquo;Git Behind the Scenes&amp;rsquo;&lt;/a&gt; video was incredibly well received. I&amp;rsquo;m also aware from my day-to-day discussions that there&amp;rsquo;s a mix of experiences with Git, so also made a &lt;a href="https://chrisreddington.com/episode/cloud-drops-git-101"&gt;Git 101 Video&lt;/a&gt;. In this Cloud World that we live in, version control is an important concept beyond the &amp;rsquo;traditional&amp;rsquo; developers. Infrastructure Engineers can now version control their Infrastructure as Code, or maintenance scripts. Data Scientists can version control their experiments and tests. And of course, developers can version control the code for their software.&lt;/p&gt;</description></item><item><title>Cloud Drops - Git 101 - Why use Git, and how to get started</title><link>https://chrisreddington.com/video/cloud-drops-git-101/</link><pubDate>Tue, 30 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/cloud-drops-git-101/</guid><description>&lt;p&gt;Git is a distributed version control system — unlike centralised tools, every developer clones the full repository and history to their own machine, enabling productive offline work and independent branching without locking files.&lt;/p&gt;
&lt;p&gt;The core workflow starts with &lt;code&gt;git init&lt;/code&gt; to create a new repository in any folder, then &lt;code&gt;git add&lt;/code&gt; to stage changes and &lt;code&gt;git commit -m &amp;quot;message&amp;quot;&lt;/code&gt; to record them. &lt;code&gt;git status&lt;/code&gt; shows which files are staged, modified, or untracked, while &lt;code&gt;git log&lt;/code&gt; displays the full commit history. Once you create a remote repository on GitHub (or Azure DevOps, GitLab, Bitbucket), &lt;code&gt;git remote add origin &amp;lt;url&amp;gt;&lt;/code&gt; links it to your local repo, and &lt;code&gt;git push&lt;/code&gt; sends your commits up. Use &lt;code&gt;git pull&lt;/code&gt; to receive changes others have pushed, or &lt;code&gt;git clone &amp;lt;url&amp;gt;&lt;/code&gt; to bring down an entirely new repository. VS Code&amp;rsquo;s built-in Source Control panel provides a visual interface for all these operations, and the Git Credential Manager handles credential storage for private repositories across platforms.&lt;/p&gt;</description></item><item><title>V013 - Weekly Technology Vlog #13 (Lots of Azure, DevOps &amp; GitHub) Blogs, Quick-fire Azure Updates</title><link>https://chrisreddington.com/video/weekly-vlog-013/</link><pubDate>Sun, 28 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/weekly-vlog-013/</guid><description>&lt;p&gt;Weekly Vlog #13 covers an action-packed Azure week, with standout blog posts including Mark Russinovich&amp;rsquo;s Ignite session on Azure innovation, enterprise landing zones with modular designs, zonal disaster recovery enhancements via Azure Site Recovery, Security Center compliance updates, and Azure Databricks on Azure. On the Azure DevOps side, Chris highlights &amp;ldquo;DevOps-ing everything as code&amp;rdquo; and community stories touching on Terraform, Bicep, and policy-gated release pipelines.&lt;/p&gt;
&lt;p&gt;The GitHub roundup digs into the GitHub Actions capture-the-flag writeup — revealing how an overly permissive workflow can expose repository secrets — and a fascinating multi-stage exploit chain from the GitHub Security Lab, both underscoring the growing importance of DevSecOps practices with GitHub Advanced Security.&lt;/p&gt;</description></item><item><title>Cloud Drops - How does Git work behind the scenes?</title><link>https://chrisreddington.com/video/cloud-drops-git-behind-scenes/</link><pubDate>Wed, 24 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/cloud-drops-git-behind-scenes/</guid><description>&lt;p&gt;After &lt;code&gt;git init&lt;/code&gt;, Git creates a &lt;code&gt;.git&lt;/code&gt; folder containing HEAD, config, description, and sub-directories including &lt;code&gt;branches&lt;/code&gt;, &lt;code&gt;objects&lt;/code&gt;, and &lt;code&gt;refs&lt;/code&gt;. The HEAD file holds a symbolic ref pointing to the current branch — for example &lt;code&gt;ref: refs/heads/master&lt;/code&gt; — and that ref only materialises as a file under &lt;code&gt;.git/refs/heads/&lt;/code&gt; after the first commit is made. Objects (commits, trees, blobs) are stored compressed in two-character subdirectories under &lt;code&gt;.git/objects/&lt;/code&gt; matching the first two hex characters of their SHA-1 hash. Use &lt;code&gt;git cat-file -p &amp;lt;hash&amp;gt;&lt;/code&gt; to inspect any object: a commit points to a tree, a tree lists blobs and sub-trees, and a blob holds the raw file content. Git deduplicates unchanged files across commits by reusing the same blob hash, saving space. After adding a GitHub remote and pushing, a new &lt;code&gt;refs/remotes/origin/main&lt;/code&gt; file appears, confirming that local and remote tip hashes match.&lt;/p&gt;</description></item><item><title>Using Git LFS to version Podcast Audio files and trigger releases to production with GitHub Actions</title><link>https://chrisreddington.com/blog/git-lfs-for-podcast-audio/</link><pubDate>Wed, 24 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/git-lfs-for-podcast-audio/</guid><description>&lt;p&gt;For some time, I&amp;rsquo;ve been using GitHub actions to update the content of my site (i.e. pages, descriptions, metadata, etc.). Through Hugo, these content updates automatically update the RSS feeds. This then makes the episodes appear in podcast services such as Apple Podcasts, Google Podcasts and Spotify. However, throughout that time I have been manually uploading the podcast files to my storage account. It wasn&amp;rsquo;t a significant overhead, but I kept thinking that there must be a better way to do this. And, there is - I&amp;rsquo;ve implemented it! This blog post will walk you through why I&amp;rsquo;ve made these changes, how I made them and what the result is.&lt;/p&gt;</description></item><item><title>Cloud Drops - Introducing and Setting up Git LFS (Large File Storage)</title><link>https://chrisreddington.com/video/cloud-drops-git-lfs/</link><pubDate>Tue, 23 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/cloud-drops-git-lfs/</guid><description>&lt;p&gt;Storing large binary files directly in Git forces every developer to download the full history of those files on every clone — a growing pain as the number of assets increases. Git LFS solves this by replacing tracked files with small pointer files containing a version, an ID, and a size, while the actual content lives on the remote LFS server. Run &lt;code&gt;git lfs install&lt;/code&gt; once per machine, then &lt;code&gt;git lfs track &amp;quot;*.mp3&amp;quot;&lt;/code&gt; per repository to create a &lt;code&gt;.gitattributes&lt;/code&gt; entry. All subsequent &lt;code&gt;git add&lt;/code&gt;, &lt;code&gt;git commit&lt;/code&gt;, and &lt;code&gt;git push&lt;/code&gt; operations work exactly as normal; LFS handles the upload transparently. When cloning, pass &lt;code&gt;--config lfs.fetchExclude=&amp;quot;*.mp3&amp;quot;&lt;/code&gt; to skip downloading the large files and receive only the lightweight pointers instead.&lt;/p&gt;</description></item><item><title>V012 - Weekly Technology Vlog #12 (Busy week, and quite a few blog posts to cover!)</title><link>https://chrisreddington.com/video/weekly-vlog-012/</link><pubDate>Mon, 22 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/weekly-vlog-012/</guid><description>&lt;p&gt;In this episode, Chris marks three months of weekly vlogging, celebrates crossing 350 subscribers, and recaps a week where content shipped every single day.&lt;/p&gt;
&lt;h2 id="three-months-in"&gt;Three Months In&lt;/h2&gt;
&lt;p&gt;Analytics show a clear correlation between increased publishing frequency and subscriber growth. The channel is approaching the 500-subscriber target for end of 2021.&lt;/p&gt;
&lt;h2 id="last-weeks-content-something-every-day"&gt;Last Week&amp;rsquo;s Content (Something Every Day)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Monday — Weekly Vlog #11:&lt;/strong&gt; DevSecOps-heavy, covering Cache Aside Pattern, GPG Keys Part 3, and a strong Azure security news cycle.&lt;/p&gt;</description></item><item><title>Using GPG Keys to sign Git Commits - Part 4</title><link>https://chrisreddington.com/blog/gpg-git-part-4/</link><pubDate>Wed, 17 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/gpg-git-part-4/</guid><description>&lt;p&gt;Part 4 - The final part (at least for now, until I find somewhere else that we can expand on with this)! This part will focus on porting the keys that we have recently generated onto our YubiKey device. I own a YubiKey NEO, so I&amp;rsquo;ll be using that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note: Be aware that the YubiKey NEO has a limitation where it can only hold keys up to a size of 2048 bits. If you have generated a key longer than this, then the move will fail. You may need to go through the previous blog posts to re-generate the keys. Though I mentioned this limitation in &lt;a href="./blog/gpg-git-part-2"&gt;part 2&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>V011 - Weekly Technology Vlog #11</title><link>https://chrisreddington.com/video/weekly-vlog-011/</link><pubDate>Mon, 15 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/weekly-vlog-011/</guid><description>&lt;p&gt;In this episode, Chris unveils a refreshed visual identity for Cloud With Chris, recaps a DevOps-heavy week of content, and digs into Azure, Azure DevOps, and GitHub news with a strong security theme throughout.&lt;/p&gt;
&lt;h2 id="new-branding"&gt;New Branding&lt;/h2&gt;
&lt;p&gt;The Cloud With Chris stream background and lower-thirds have been redesigned for a more consistent, polished look. The new backdrop carries through to all series going forward.&lt;/p&gt;
&lt;h2 id="recent-content"&gt;Recent Content&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;GPG Keys Part 3:&lt;/strong&gt; The generated GPG keys are now associated with Git commits (&lt;code&gt;git config --global user.signingkey&lt;/code&gt;), and the public key is uploaded to GitHub so commits display the &amp;ldquo;Verified&amp;rdquo; badge. YubiKey integration comes in Part 4 this week.&lt;/p&gt;</description></item><item><title>Using GPG Keys to sign Git Commits - Part 3</title><link>https://chrisreddington.com/blog/gpg-git-part-3/</link><pubDate>Wed, 10 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/gpg-git-part-3/</guid><description>&lt;p&gt;Okay, part 3! At this point, I&amp;rsquo;m assuming that you have already familiarised yourself with &lt;a href="https://chrisreddington.com/blog/gpg-git-part-1"&gt;part 1&lt;/a&gt; and &lt;a href="https://chrisreddington.com/blog/gpg-git-part-2"&gt;part 2&lt;/a&gt; of the series. As a quick recap, part 1 focused on why we would consider using GPG Keys in general. Part 2 focused on how to generate GPG keys along with some recommended practices on splitting out our master (Certification) key, from our specific purpose-driven keys. This post (part 3) focuses on using those keys as part of our usual development workflow using Git. We&amp;rsquo;ll be assuming that GitHub is our end target, as GitHub supports &lt;a href="https://docs.github.com/en/github/authenticating-to-github/managing-commit-signature-verification"&gt;commit signature verification using GPG Keys&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>V010 - Weekly Technology Vlog #10 (Episode backlog until Mid-July! New Microphone, Ignite Content!)</title><link>https://chrisreddington.com/video/weekly-vlog-010/</link><pubDate>Mon, 08 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/weekly-vlog-010/</guid><description>&lt;p&gt;In this milestone tenth episode, Chris marks a birthday and a one-year podcast anniversary, picks up a new microphone, then spends the majority of the runtime covering the best of Microsoft Ignite.&lt;/p&gt;
&lt;h2 id="personal-milestones"&gt;Personal Milestones&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vlog #10 &amp;amp; Birthday:&lt;/strong&gt; A new Shure SM7B microphone arrives — a noticeable audio quality upgrade. Episodes are now booked through to mid-July with more guests lined up into August.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One Year of Cloud With Chris:&lt;/strong&gt; The podcast launched on 1 March 2020.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="recent-content"&gt;Recent Content&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPG Keys Part 2:&lt;/strong&gt; Hands-on guide to generating GPG keys; Part 3 (linking keys to Git commits and uploading to GitHub) is coming this week.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud Gaming Notes Ep. 2:&lt;/strong&gt; Chris and Lee discuss matchmaking in cloud gaming-as-a-service — how cloud infrastructure shapes the player experience when joining sessions dynamically rather than connecting to a fixed server. Next episode covers Sea of Thieves, inventory systems, and in-game economies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sidecar &amp;amp; Ambassador Patterns&lt;/strong&gt; with Peter Piper: Another co-hosted patterns episode with a bingo card of API buzzwords.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DotNet Limerick Azure User Group:&lt;/strong&gt; A live presentation on using GitHub Actions to build and deploy a static podcast/blog site. Recording available on cloudwithchris.com.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="upcoming"&gt;Upcoming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Welsh Azure User Group&lt;/strong&gt; (18 March): Lightning talk — GitHub for podcast/blog deployment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MSHowTo Live with Mert&lt;/strong&gt; (25 March): DevOps discussion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Northern Azure User Group&lt;/strong&gt; (6 April): Sharing the bill with Scott Hanselman.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache Aside Pattern&lt;/strong&gt; episode (this Friday).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPG Keys Part 3&lt;/strong&gt; (this Wednesday).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="microsoft-ignite-highlights"&gt;Microsoft Ignite Highlights&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Azure Cognitive Search — Semantic Search:&lt;/strong&gt; Results ranked by user intent rather than keyword frequency, powered by Microsoft Research models.&lt;/p&gt;</description></item><item><title>Using GPG Keys to sign Git Commits - Part 2</title><link>https://chrisreddington.com/blog/gpg-git-part-2/</link><pubDate>Wed, 03 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/gpg-git-part-2/</guid><description>&lt;p&gt;Hopefully by now you&amp;rsquo;ve had a chance to read &lt;a href="./blog/gpg-git-part-1"&gt;part 1&lt;/a&gt; of this series, which explains why you may be interested in using GPG keys to sign your commits. Congratulations on getting to the second part! In part two, we&amp;rsquo;re going to focus on how I worked through setting up GPG in my Windows environment, and generating a set of keys for use. There were some challenges/hurdles along the way, and we&amp;rsquo;ll talk through those too! I may do another separate blog post at a later point on setting this up within Windows Subsystem for Linux. However, there are plenty of articles that already focus on macOS / Native Linux, so it isn&amp;rsquo;t really the focus of this post.&lt;/p&gt;</description></item><item><title>Using GPG Keys to sign Git Commits - Part 1</title><link>https://chrisreddington.com/blog/gpg-git-part-1/</link><pubDate>Wed, 24 Feb 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/gpg-git-part-1/</guid><description>&lt;p&gt;For a while now, I&amp;rsquo;ve been using GPG Keys to sign my Git Commits to prove that my commits on GitHub are genuine and from me. Over the last few weeks, I&amp;rsquo;ve been inspired by a couple of colleagues (Kudos to Adrian and Julie if you&amp;rsquo;re reading this) to dig out my YubiKey and use these for my key signing activities. While there are several blog posts/samples (e.g. &lt;a href="https://disjoint.ca/til/2017/10/05/a-guide-to-setting-up--managing-gpg-keys-on-a-yubikey-4/"&gt;here&lt;/a&gt;, &lt;a href="https://www.hanselman.com/blog/how-to-setup-signed-git-commits-with-a-yubikey-neo-and-gpg-and-keybase-on-windows"&gt;here&lt;/a&gt; and &lt;a href="https://gist.github.com/chrisroos/1205934"&gt;here&lt;/a&gt;) on the topic already, I encountered a number of roadblocks along the way.&lt;/p&gt;</description></item><item><title>GitHub Codespaces, Visual Studio Code and Remote Containers</title><link>https://chrisreddington.com/video/github-codespaces-and-vscode-remote-containers/</link><pubDate>Fri, 08 Jan 2021 15:30:00 +0000</pubDate><guid>https://chrisreddington.com/video/github-codespaces-and-vscode-remote-containers/</guid><description>&lt;p&gt;Setting up a development environment—installing the right SDK versions, extensions, and tools—wastes hours and creates &amp;lsquo;works on my machine&amp;rsquo; problems. VS Code Remote Containers and GitHub Codespaces solve this with containerised, reproducible dev environments.&lt;/p&gt;
&lt;h2 id="what-youll-learn"&gt;What You&amp;rsquo;ll Learn&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;How the &lt;strong&gt;VS Code Remote Containers extension&lt;/strong&gt; connects your local editor to a Docker container running a full development environment&lt;/li&gt;
&lt;li&gt;The role of &lt;strong&gt;&lt;code&gt;devcontainer.json&lt;/code&gt;&lt;/strong&gt; as a manifest defining your development container&amp;rsquo;s configuration, extensions, and port forwarding&lt;/li&gt;
&lt;li&gt;How to bootstrap a .NET Core dev container using the &lt;strong&gt;microsoft/vscode-dev-containers&lt;/strong&gt; repository samples&lt;/li&gt;
&lt;li&gt;The difference between Remote Containers (local Docker) and &lt;strong&gt;GitHub Codespaces&lt;/strong&gt; (cloud-hosted containers accessible from a browser)&lt;/li&gt;
&lt;li&gt;Using the &lt;strong&gt;GitHub Codespaces VS Code extension&lt;/strong&gt; to connect your local IDE to a cloud-hosted Codespace&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;dotfiles convention&lt;/strong&gt;: GitHub Codespaces automatically applies your &lt;code&gt;~username/dotfiles&lt;/code&gt; repository to personalise every Codespace with your aliases, shell configuration, and shortcuts&lt;/li&gt;
&lt;li&gt;Live demo: editing, previewing, and committing changes to cloudwithchris.com (Hugo static site) entirely within a GitHub Codespace&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="developer-experience-impact"&gt;Developer Experience Impact&lt;/h2&gt;
&lt;p&gt;GitHub Codespaces eliminates onboarding friction—any developer with browser access can contribute to a project within minutes, with a pre-configured environment including the correct language runtime, VS Code extensions, and tooling. No local setup required.&lt;/p&gt;</description></item><item><title>V001 - Weekly Technology Vlog #1 (Blog, Hugo, Azure, GitHub &amp; Azure DevOps)</title><link>https://chrisreddington.com/video/weekly-vlog-001/</link><pubDate>Mon, 04 Jan 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/weekly-vlog-001/</guid><description>&lt;p&gt;Chris kicks off the weekly vlog format with a look back at December 2020. On the open source front, he contributed pull requests to Matt Stratton&amp;rsquo;s Hugo Castanet theme — adding blog functionality and fixing episode number bugs — and began building a new Hugo theme designed for community groups, meetups, and conference platforms with multiple group and event structures. He was recognised as a new user of the month on the Hugo community forum for his support contributions there.&lt;/p&gt;</description></item><item><title>GitHub Actions and Azure - Deploying ARM templates with GitHub Actions</title><link>https://chrisreddington.com/video/github-actions-deploying-infrastructure/</link><pubDate>Wed, 02 Dec 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/github-actions-deploying-infrastructure/</guid><description>&lt;p&gt;Before deploying application code, you need cloud infrastructure in place. This episode demonstrates automating Azure infrastructure provisioning using ARM templates and GitHub Actions.&lt;/p&gt;
&lt;h2 id="what-youll-learn"&gt;What You&amp;rsquo;ll Learn&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;What &lt;strong&gt;ARM templates&lt;/strong&gt; (Azure Resource Manager templates) are and why they&amp;rsquo;re &lt;strong&gt;declarative&lt;/strong&gt;, &lt;strong&gt;deterministic&lt;/strong&gt;, and &lt;strong&gt;idempotent&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;How ARM templates differ from imperative approaches like Azure CLI or PowerShell scripts&lt;/li&gt;
&lt;li&gt;ARM template structure: &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;contentVersion&lt;/code&gt;, &lt;code&gt;parameters&lt;/code&gt;, &lt;code&gt;variables&lt;/code&gt;, &lt;code&gt;resources&lt;/code&gt;, and &lt;code&gt;outputs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Using the &lt;strong&gt;&lt;code&gt;azure/arm-deploy&lt;/code&gt;&lt;/strong&gt; GitHub Action to deploy ARM templates from a workflow&lt;/li&gt;
&lt;li&gt;Repository organisation: separating &lt;code&gt;source/&lt;/code&gt; (application code) from &lt;code&gt;templates/&lt;/code&gt; (ARM templates)&lt;/li&gt;
&lt;li&gt;Adding the &lt;strong&gt;&lt;code&gt;actions/checkout&lt;/code&gt;&lt;/strong&gt; step—and why forgetting it causes cryptic &amp;ldquo;file not found&amp;rdquo; workflow failures&lt;/li&gt;
&lt;li&gt;Using &lt;strong&gt;&lt;code&gt;secureString&lt;/code&gt;&lt;/strong&gt; parameter types to protect secrets in ARM template inputs and outputs&lt;/li&gt;
&lt;li&gt;Browsing the &lt;strong&gt;Azure Quickstart Templates&lt;/strong&gt; gallery for production-ready ARM template samples&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="series-context"&gt;Series Context&lt;/h2&gt;
&lt;p&gt;This is the second episode in the GitHub Actions and Azure series. The infrastructure deployment workflow built here becomes the first job in the multi-job pipeline extended in the next episode to also compile and deploy application code.&lt;/p&gt;</description></item><item><title>GitHub Actions and Azure - Getting started with GitHub Actions and Azure Login</title><link>https://chrisreddington.com/video/github-actions-getting-started/</link><pubDate>Sun, 29 Nov 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/github-actions-getting-started/</guid><description>&lt;p&gt;New to GitHub Actions? This episode is your starting point for automating Azure deployments with GitHub&amp;rsquo;s built-in CI/CD platform.&lt;/p&gt;
&lt;h2 id="what-youll-learn"&gt;What You&amp;rsquo;ll Learn&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The difference between &lt;strong&gt;Git&lt;/strong&gt; and &lt;strong&gt;GitHub&lt;/strong&gt;, and how GitHub Actions fits into your development workflow alongside alternatives like Azure DevOps, GitLab, and Bitbucket&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions workflow YAML structure&lt;/strong&gt;: &lt;code&gt;on&lt;/code&gt; triggers, &lt;code&gt;jobs&lt;/code&gt;, &lt;code&gt;steps&lt;/code&gt;, &lt;code&gt;runs-on&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;How &lt;strong&gt;GitHub-hosted runners&lt;/strong&gt; (Ubuntu, Windows, macOS) work and when to use self-hosted alternatives&lt;/li&gt;
&lt;li&gt;Using the &lt;strong&gt;Azure Login&lt;/strong&gt; action to authenticate against Azure from a workflow&lt;/li&gt;
&lt;li&gt;Creating an &lt;strong&gt;Azure Service Principal&lt;/strong&gt; with the &lt;code&gt;az ad sp create-for-rbac&lt;/code&gt; command and storing credentials as &lt;strong&gt;GitHub Secrets&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Running &lt;strong&gt;Azure CLI&lt;/strong&gt; commands as workflow steps after authentication&lt;/li&gt;
&lt;li&gt;Pinning GitHub Actions to specific versions (e.g., &lt;code&gt;azure/login@v1&lt;/code&gt;) for reproducible, auditable pipelines&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="key-concept-actions-as-repositories"&gt;Key Concept: Actions as Repositories&lt;/h2&gt;
&lt;p&gt;GitHub Actions are themselves open-source repositories. When you reference &lt;code&gt;azure/login@v1&lt;/code&gt;, you&amp;rsquo;re pinning to a specific release tag of the &lt;code&gt;azure/login&lt;/code&gt; GitHub repository. This makes the GitHub Actions ecosystem composable, auditable, and extensible—anyone can submit a pull request to add new capabilities.&lt;/p&gt;</description></item><item><title>GitHub Actions and Azure - Source Controlling our Code using Git</title><link>https://chrisreddington.com/video/github-actions-git/</link><pubDate>Sun, 29 Nov 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/github-actions-git/</guid><description>&lt;p&gt;Before writing a single GitHub Actions workflow, you need a version-controlled project on GitHub. This episode scaffolds a .NET MVC web application with &lt;code&gt;dotnet new mvc&lt;/code&gt; inside a WSL Ubuntu environment, then uses VS Code&amp;rsquo;s Source Control panel to stage the generated files, write an initial commit, and push to a freshly created public GitHub repository — equivalent to running &lt;code&gt;git remote add origin&lt;/code&gt;, &lt;code&gt;git branch -M main&lt;/code&gt;, and &lt;code&gt;git push -u origin main&lt;/code&gt; from the command line.&lt;/p&gt;</description></item><item><title>Deploying Azure Functions and Static Sites with GitHub Actions | Cloud with Chris</title><link>https://chrisreddington.com/video/azure-github-actions/</link><pubDate>Fri, 02 Oct 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/azure-github-actions/</guid><description>&lt;p&gt;Chris uses a real side-project — a multi-tenant card inventory app — to demonstrate GitHub Actions from first principles through to a working CI/CD pipeline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GitHub Actions Fundamentals&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The session opens with a clear explanation of what GitHub Actions are and why they are called &lt;em&gt;workflows&lt;/em&gt; rather than pipelines: Actions are not limited to CI/CD and can respond to any GitHub event, including issue comments, new contributors, and dependency alerts. Core concepts covered include:&lt;/p&gt;</description></item></channel></rss>