<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on Chris Reddington</title><link>https://chrisreddington.com/blog/</link><description>Recent content in Blog on Chris Reddington</description><generator>Hugo</generator><language>en-GB</language><lastBuildDate>Sun, 02 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://chrisreddington.com/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>The Jury Pattern: a mixture of critics for AI code review</title><link>https://chrisreddington.com/blog/mixture-of-critics/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/mixture-of-critics/</guid><description>&lt;p&gt;When I first asked an agent to review its own work, the results were underwhelming. It gave the work a glowing review (of course it did, it had just written it!). Even when I ask the same model to review in a separate session, the pattern holds: a critique might surface caveats, but rarely substantial flaws or disagreement.&lt;/p&gt;&#10;&lt;p&gt;That&amp;rsquo;s what I hope to solve with this pattern. In human code review, we seek out someone with a different perspective because we know that someone who shares our assumptions is unlikely to catch the gaps. The same applies to models.&lt;/p&gt;</description></item><item><title>Agentic memory: what agents should and shouldn't remember</title><link>https://chrisreddington.com/blog/agentic-memory-what-agents-should-remember/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/agentic-memory-what-agents-should-remember/</guid><description>&lt;p&gt;While building some of my own AI-agent based projects, I&amp;rsquo;ve run into the same frustrating loop. An agent would uncover something useful in the work itself (a hidden dependency, an awkward repo rule, a dead end I&amp;rsquo;d already ruled out), and then forget it all in the next session. I&amp;rsquo;d steer it back on course, start fresh later, and watch it head straight for the same mistake again. All that earlier momentum had gone.&lt;/p&gt;</description></item><item><title>AGENTS.md and SKILL.md examples: build a reusable agent toolbox</title><link>https://chrisreddington.com/blog/building-your-agent-toolbox/</link><pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/building-your-agent-toolbox/</guid><description>&lt;p&gt;I was working on a personal project and coming up with a Copilot CLI demo to show and tell at the GitHub Social Club in London. As I started a fresh agent session and typed the setup, I caught myself writing the same lines I&amp;rsquo;d written for some work a few days earlier.&lt;/p&gt;&#10;&lt;p&gt;Those lines covered how I wanted the agent to write a plan, what I expected from the implementation, and how I wanted the work reviewed. I found myself repeatedly hitting the up arrow to recover an earlier prompt. The useful knowledge had nowhere durable to live.&lt;/p&gt;</description></item><item><title>Context engineering: more context isn't better context</title><link>https://chrisreddington.com/blog/context-engineering-more-isnt-better/</link><pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/context-engineering-more-isnt-better/</guid><description>&lt;p&gt;I was in a customer presentation recently where I asked the room whether they were familiar with the term &lt;strong&gt;prompt engineering&lt;/strong&gt;. Almost everyone raised their hand. This wasn&amp;rsquo;t a surprise, given how it&amp;rsquo;s been used &lt;a href="https://github.blog/developer-skills/github/how-to-write-better-prompts-for-github-copilot/"&gt;over the last 3 years&lt;/a&gt; to make sure that being specific, giving examples, and setting clear instructions are part of the conversation around AI tools.&lt;/p&gt;&#10;&lt;p&gt;But then I asked whether they were familiar with &lt;strong&gt;context engineering&lt;/strong&gt;. Only a few people raised their hand, and even fewer were using it as a deliberate way to think about how they work with AI agents. I genuinely expected more people to have heard of it given how much the term has grown over the past year, even if they weren&amp;rsquo;t applying the principles just yet.&lt;/p&gt;</description></item><item><title>The DevRel randomisation trap (and how to stop it)</title><link>https://chrisreddington.com/blog/devrel-randomisation-trap/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/devrel-randomisation-trap/</guid><description>&lt;p&gt;There&amp;rsquo;s a word that came up in my dissertation research that I&amp;rsquo;m all too familiar with: &lt;em&gt;randomised&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;As in, &amp;ldquo;our DevRel team gets randomised constantly.&amp;rdquo; As in, whichever stakeholder has the most urgent request this week determines what the team works on. As in, there&amp;rsquo;s no clear prioritisation framework that makes it possible to say yes to some things and no to others with a clear rationale, so the team ends up trying to do everything and not fully realising the value of it all. If you&amp;rsquo;re in DevRel, you&amp;rsquo;ll possibly recognise this pattern.&lt;/p&gt;</description></item><item><title>From tactics to strategy: the DevRel measurement gap</title><link>https://chrisreddington.com/blog/devrel-tactics-to-strategy/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/devrel-tactics-to-strategy/</guid><description>&lt;p&gt;A pattern I see across DevRel is that teams can usually tell you what they did by using metrics like video views, blog traffic, event attendance, stars on GitHub repositories, community growth and Net Promoter Scores. The visible metrics are rarely the hard part.&lt;/p&gt;&#10;&lt;p&gt;The harder part is working out whether those metrics tell you anything meaningful about impact (tied back to product adoption and improving the developer experience). Many of us practitioners have known that for a long time. DevRel has plenty of vanity metrics: numbers that are easy to collect, easy to report, and easy to mistake for evidence that something important changed. That doesn&amp;rsquo;t make them useless, but they they don&amp;rsquo;t tell the full story on their own.&lt;/p&gt;</description></item><item><title>The feedback loop: how DevRel bridges community and product</title><link>https://chrisreddington.com/blog/devrel-feedback-loop/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/devrel-feedback-loop/</guid><description>&lt;p&gt;There&amp;rsquo;s a phrase you likely hear in DevRel and developer-focused companies: &amp;ldquo;voice of the developer.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;It captures something real, but I think it&amp;rsquo;s too small for the job many teams are doing in reality. I&amp;rsquo;ve been in product meetings where &amp;ldquo;the community wants X&amp;rdquo; landed with a thud, because nobody in the room knew which developers that meant or what they were actually stuck on. Product teams need patterns, examples, and enough context to decide &lt;em&gt;what&lt;/em&gt; should change.&lt;/p&gt;</description></item><item><title>Why developer communities are not brand communities</title><link>https://chrisreddington.com/blog/devrel-communities-not-brand-communities/</link><pubDate>Sat, 21 Mar 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/devrel-communities-not-brand-communities/</guid><description>&lt;p&gt;I&amp;rsquo;ve spent a good chunk of my career working with developer communities (whether that&amp;rsquo;s external communities, or internal ones inside companies), and I&amp;rsquo;ve seen this pattern several times. A program would launch with strong company branding, get some early traction, and then eventually decline. Developers were using the technology and showing up. But they were showing up for the product and each other, not because of a deep attachment to the brand behind the program.&lt;/p&gt;</description></item><item><title>Company context: the conditions that shape DevRel strategy</title><link>https://chrisreddington.com/blog/devrel-company-context-lifecycle/</link><pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/devrel-company-context-lifecycle/</guid><description>&lt;p&gt;I&amp;rsquo;ve seen DevRel teams borrow someone else&amp;rsquo;s playbook and assume it&amp;rsquo;ll work for them too.&lt;/p&gt;&#10;&lt;p&gt;A team sees what a well-regarded DevRel organisation does, the community programs, the content formats, the event strategy, the metrics, and tries to replicate it. It doesn&amp;rsquo;t work as well. Sometimes it doesn&amp;rsquo;t work at all. The conclusion drawn is often something about execution quality or budget. Rarely is the conclusion about context.&lt;/p&gt;&#10;&lt;p&gt;But context is often exactly the issue.&lt;/p&gt;</description></item><item><title>The four pillars of DevRel (and the foundation they rest on)</title><link>https://chrisreddington.com/blog/devrel-four-pillars-authentic-foundation/</link><pubDate>Mon, 16 Mar 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/devrel-four-pillars-authentic-foundation/</guid><description>&lt;p&gt;When I started reviewing the literature on Developer Relations for my dissertation, I expected to find prior academic research that reflected what DevRel teams do. The field has conferences, frameworks, books, and more opinion pieces than I can count.&lt;/p&gt;&#10;&lt;p&gt;What I found (at least academically) was thinner than I expected. The most structured practitioner account came from &lt;a href="https://doi.org/10.1007/978-1-4842-7164-3"&gt;Lewko and Parton&amp;rsquo;s 2021 book&lt;/a&gt;, which maps DevRel activities across four primary domains: Developer Education, Developer Marketing, Developer Success, and Developer Programs, with Developer Experience at the centre as the goal that the whole system is working towards. In my &lt;a href="https://chrisreddington.com/blog/devrel-developer-experience/"&gt;previous post&lt;/a&gt;, I explored why DX sits at the centre. This post moves one layer out: if DX is the centre, these four pillars are the main ways DevRel teams shape it in practice.&lt;/p&gt;</description></item><item><title>Developer experience: prerequisite and product of DevRel</title><link>https://chrisreddington.com/blog/devrel-developer-experience/</link><pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/devrel-developer-experience/</guid><description>&lt;p&gt;I&amp;rsquo;ve written before about &lt;a href="https://chrisreddington.com/blog/devrel-value-creation/"&gt;how DevRel creates value and what that looks like in practice&lt;/a&gt;, and &lt;a href="https://chrisreddington.com/blog/devrel-value-co-creation-not-marketing/"&gt;why DevRel is better understood as value co-creation than as marketing&lt;/a&gt;. My second post described Developer Experience (DX) as the &amp;ldquo;value-in-use&amp;rdquo; dimension of value co-creation: the value a developer actually experiences when using the product. This post picks up from there and focuses on developer experience specifically: what it actually means, why it sits at the centre of DevRel strategy, and the nuance I think most writing on DevRel misses.&lt;/p&gt;</description></item><item><title>Developer Relations is more than marketing. It's co-creation.</title><link>https://chrisreddington.com/blog/devrel-value-co-creation-not-marketing/</link><pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/devrel-value-co-creation-not-marketing/</guid><description>&lt;p&gt;A question that framed my early MBA dissertation research is &amp;ldquo;Why does Developer Relations (DevRel) get described so differently depending on who you ask?&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;Ask a senior marketing leader, and you&amp;rsquo;ll often hear something like: &amp;ldquo;DevRel is a specialised form of developer marketing.&amp;rdquo; It&amp;rsquo;s a framing that Tessa Kriesel challenges in &lt;a href="https://www.advocu.com/post/more-than-marketing-tessa-kriesel-on-the-true-role-of-devrel"&gt;More Than Marketing&lt;/a&gt;, and one I&amp;rsquo;ve heard plenty of people in the industry either defend or push back against.&lt;/p&gt;&#10;&lt;p&gt;I understand where the idea comes from. DevRel involves content, community, events, and advocacy. It contributes to awareness and whether developers decide to use the product. For organisations trying to draw an org chart, marketing is one of the closest boxes on the page.&lt;/p&gt;</description></item><item><title>How does Developer Relations (DevRel) create value? What 13 interviews revealed.</title><link>https://chrisreddington.com/blog/devrel-value-creation/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/devrel-value-creation/</guid><description>&lt;p&gt;What does value creation in Developer Relations actually look like?&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;m not asking what DevRel &lt;em&gt;does&lt;/em&gt;, as there&amp;rsquo;s plenty of descriptions of DevRel activities out there. Nor what it &lt;em&gt;should&lt;/em&gt; do, as there&amp;rsquo;s no shortage of opinion there either. But what does value creation (the specific mechanism by which a DevRel team contributes something meaningful to its organisation and its developer community) actually look like in practice?&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;ve spent a large part of my career in and around Developer Relations, so I&amp;rsquo;ve been thinking about this question for a while. Back in 2024, I decided to stop thinking about it and actually research it.&lt;/p&gt;</description></item><item><title>Context windows, Plan agent, and TDD: What I learned building a countdown app with GitHub Copilot</title><link/><pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Learn how I managed context to keep Copilot focused, used the Plan agent to sharpen vague requirements, and required Test Driven Development practices to catch bugs before users.&lt;/p&gt;</description></item><item><title>Adding Bluesky Comments to My Hugo Site</title><link>https://chrisreddington.com/blog/bluesky-comments-integration/</link><pubDate>Tue, 18 Nov 2025 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/bluesky-comments-integration/</guid><description>&lt;p&gt;I&amp;rsquo;ve been thinking about how to better connect my blog with the conversations happening on social platforms. I wanted something that felt natural and didn&amp;rsquo;t require readers to signup to my own comments system to engage. That&amp;rsquo;s when I came across &lt;a href="https://ashley.dev/posts/bluesky-integration/"&gt;Ashley Willis&amp;rsquo;s approach&lt;/a&gt; on her Astro-powered site.&lt;/p&gt;&#10;&lt;p&gt;This approach uses the &lt;a href="https://atproto.com/"&gt;AT Protocol&amp;rsquo;s&lt;/a&gt; public API. I thought - &amp;ldquo;this could also work with Hugo&amp;rdquo; (which is what I use for my blog), and set about adapting the approach. In this post, I&amp;rsquo;ll walk through what I&amp;rsquo;ve built and how it works.&lt;/p&gt;</description></item><item><title>Building smarter interactions with MCP elicitation: From clunky tool calls to seamless user experiences</title><link/><pubDate>Thu, 04 Sep 2025 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Explore how MCP elicitation transforms AI tool interactions by gathering missing information upfront.&lt;/p&gt;</description></item><item><title>Building your first MCP server: How to extend AI tools with custom capabilities</title><link/><pubDate>Fri, 22 Aug 2025 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Learn Model Context Protocol by building a turn-based game server that shows how to extend GitHub Copilot with custom tools, resources, and prompts.&lt;/p&gt;</description></item><item><title>Debugging UI with AI: GitHub Copilot agent mode meets MCP servers</title><link/><pubDate>Tue, 22 Jul 2025 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Explore how I use agentic tools like GitHub Copilot agent mode and the Playwright MCP server to accelerate troubleshooting and debugging of UI issues, while revisiting the importance of clear requirements.&lt;/p&gt;</description></item><item><title>From chaos to clarity: Using GitHub Copilot agents to improve developer workflows</title><link/><pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Explore how you can set Copilot coding agent up for success with custom instruction and Copilot setup steps.&lt;/p&gt;</description></item><item><title>From idea to PR: A guide to GitHub Copilot’s agentic workflows</title><link/><pubDate>Tue, 01 Jul 2025 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;A practical guide to GitHub Copilot’s agentic coding agent, chat modes, and remote MCP server so you turn issues into tested PRs with clear steps (and no hype).&lt;/p&gt;</description></item><item><title>How we built the GitHub Skyline CLI extension using GitHub</title><link/><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;GitHub uses GitHub to build GitHub, and our CLI extensions are no exception. Read on to find out how we built the GitHub Skyline CLI extension using GitHub!&lt;/p&gt;</description></item><item><title>How AI can unleash the creativity of developers with the right attitude to productivity</title><link/><pubDate>Tue, 03 Dec 2024 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;AI tools are transforming software development by freeing developers from repetitive tasks, fostering creativity, and enabling meaningful contributions across organisations. Chris Reddington from GitHub explains how&amp;hellip;&lt;/p&gt;</description></item><item><title>5 tips and tricks when using GitHub Copilot Workspace</title><link/><pubDate>Wed, 09 Oct 2024 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;GitHub Next launched the technical preview for GitHub Copilot Workspace in April 2024. Since then, we’ve been listening to the community, learning, and have some tips to share on how to get the most out of it!&lt;/p&gt;</description></item><item><title>AI-Powered Software Development Will Enhance Developers’ Skills</title><link/><pubDate>Mon, 08 Jul 2024 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;AI coding tools are not just for the production of code, they accelerate existing processes, help developers learn and drive innovation&lt;/p&gt;</description></item><item><title>AI-powered software development hinges on effective change management</title><link/><pubDate>Thu, 30 May 2024 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;AI-powered software is not just about integrating new tools&lt;/p&gt;</description></item><item><title>Why AI will push enterprises to eliminate the silos that slow innovation</title><link/><pubDate>Mon, 12 Feb 2024 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Generative AI offers a way to transform developer productivity, by expediting a cultural shift in the way enterprises organise themselves&lt;/p&gt;</description></item><item><title>Moving from a product to a service mindset</title><link/><pubDate>Thu, 13 Jul 2023 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Thanks to DevOps, cloud computing and other industry trends, many organizations are shifting from a product mindset to a service mindset. Here’s how you can implement a service-led strategy.&lt;/p&gt;</description></item><item><title>Applying GitOps principles to your operations</title><link/><pubDate>Fri, 02 Jun 2023 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Could we use our Git repository as the source of truth for operational tasks, and somehow reconcile changes with our real-world view?&lt;/p&gt;</description></item><item><title>How companies are boosting productivity with generative AI</title><link/><pubDate>Tue, 09 May 2023 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Explore how generative AI coding tools are changing the way developers and companies build software.&lt;/p&gt;</description></item><item><title>Building a culture of innovation in your business with GitHub</title><link/><pubDate>Fri, 05 May 2023 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Consider the typical software development practices in an organization. Projects are commonly closed, and causes friction across engineering teams. But open source communities work asynchronously, openly, remotely and at global-scale. What if our internal teams could reuse those same practices?&lt;/p&gt;</description></item><item><title>Building organization-wide governance and re-use for CI/CD and automation with GitHub Actions</title><link/><pubDate>Wed, 05 Apr 2023 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Many of us are aware of the benefits that a strong focus on automation can bring, particularly in our development workflow and DevOps lifecycle. But silos across businesses can lead to duplication of effort, and potential to lose out on best practices. In this post, we’ll explore how CI/CD can be shared across your entire organization alongside policies, for a well-governed experience with GitHub Actions.&lt;/p&gt;</description></item><item><title>How GitHub accelerates development for embedded systems</title><link/><pubDate>Thu, 09 Mar 2023 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;In a world where software and hardware is ubiquitous, GitHub can help enable secure development for mission-critical embedded systems.&lt;/p&gt;</description></item><item><title>How to build a consistent workflow for development and operations teams</title><link/><pubDate>Tue, 28 Feb 2023 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Explore how using GitHub and HashiCorp together enables enterprises to develop and ship to their customers faster and more secure with consistent workflows and actions.&lt;/p&gt;</description></item><item><title>3 ways to meet compliance needs without slowing down agility</title><link/><pubDate>Fri, 24 Feb 2023 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Learn how to enable developer productivity and collaboration while staying secure and compliant. Stay compliant without slowing down your business. From security to CI/CD, automate every step of your software workflow—so your developers can stay focused on what matters most: building.&lt;/p&gt;</description></item><item><title>Passwordless deployments to the cloud</title><link/><pubDate>Fri, 13 Jan 2023 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Discovering passwords in our codebase is probably one of our worst fears. But what if you didn’t need passwords at all, and could deploy to your cloud provider another way? In this post, we explore how you can use OpenID Connect to trust your cloud provider, enabling you to deploy easily, securely and safely, while minimizing the operational overhead associated with secrets (for example, key rotations).&lt;/p&gt;</description></item><item><title>3 strategies for consolidating your toolkit and boosting productivity</title><link/><pubDate>Wed, 26 Oct 2022 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Explore how GitHub Enterprise can help you transform your software engineering organization and practices.&lt;/p&gt;</description></item><item><title>Transform your software engineering practices with GitHub Enterprise</title><link/><pubDate>Tue, 04 Oct 2022 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;Go beyond knowing GitHub as the home of open source and explore how GitHub Enterprise can help you transform your software engineering organization and practices.&lt;/p&gt;</description></item><item><title>GitHub for All - Overview</title><link>https://chrisreddington.com/blog/github-for-all-overview/</link><pubDate>Sun, 31 Jul 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/github-for-all-overview/</guid><description>&lt;p&gt;GitHub is one of my passion areas. You may have realised that already, with the amount of content that I&amp;rsquo;ve written about it. That&amp;rsquo;s only going to continue, because I&amp;rsquo;ve recently been hired there as an Enterprise Advocate.&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;ve been supporting customers in their DevOps journey for the past 9 years or so. Interestingly, there are some reoccurring themes that I&amp;rsquo;ve found that are common. One of those themes is that DevOps is an App Development concept. In fact, it&amp;rsquo;s something that can be applied across domains (e.g. Infrastructure, Data, etc.)&lt;/p&gt;</description></item><item><title>GitHub Projects is now GA! Automation Updates</title><link>https://chrisreddington.com/blog/github-projects-ga-automation-updates/</link><pubDate>Sun, 31 Jul 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/github-projects-ga-automation-updates/</guid><description>&lt;p&gt;In a couple of previous blog posts, I provided a writeup on the GitHub Projects Beta. I wrote two posts on automation within GitHub Projects (&lt;a href="https://chrisreddington.com/blog/automate-adding-gh-issues-projects-beta-users"&gt;Adding Issues to GitHub Projects with GitHub Actions for a user profile&lt;/a&gt; and &lt;a href="https://chrisreddington.com/blog/automate-adding-gh-issues-projects-beta"&gt;Adding Issues to GitHub Projects with GitHub Actions for an Organization profile&lt;/a&gt;). I&amp;rsquo;m pleased to say that the capabilities went Generally Available last week! As a result of the GA announcement and resulting changes, I need to post updates to my older samples.&lt;/p&gt;</description></item><item><title>Interfaces in Go</title><link>https://chrisreddington.com/blog/go-interfaces/</link><pubDate>Mon, 16 May 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/go-interfaces/</guid><description>&lt;p&gt;In this post, I&amp;rsquo;ll be talking about how to use interfaces in Go. This is a continuation of my learning using the Go language. I&amp;rsquo;ll use interfaces to create an application that interacts with several types of bank accounts.&lt;/p&gt;&#10;&lt;h2 id="what-is-an-interface"&gt;What is an interface?&lt;/h2&gt;&#10;&lt;p&gt;Let&amp;rsquo;s start with defining the concept of an interface. An interface is a set of methods that a type must implement.&lt;/p&gt;&#10;&lt;p&gt;In essence, this is a contract that a concrete type must implement. This can be useful when you want to loosely couple your software, so that you&amp;rsquo;re not depending on a specific implementation (and can then future-proof yourself).&lt;/p&gt;</description></item><item><title>Using GitHub Actions to summarise your Go tests</title><link>https://chrisreddington.com/blog/githubactions-testsummary-go/</link><pubDate>Mon, 16 May 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/githubactions-testsummary-go/</guid><description>&lt;p&gt;GitHub recently posted about a new GitHub Action that can be used to summarise your test results. The action is called &lt;code&gt;test-summary/action&lt;/code&gt;, available at &lt;a href="https://github.com/test-summary/action"&gt;github.com/test-summary/action&lt;/a&gt;. There are several examples on how to use the action at &lt;a href="https://github.com/test-summary/examples"&gt;github.com/test-summary/examples&lt;/a&gt;. However, there were no examples on how to use this with Go. I &lt;a href="https://github.com/test-summary/examples/pull/1"&gt;contributed a pull request&lt;/a&gt; which showed how to achieve this. In this post, I will show how to use the action with Go.&lt;/p&gt;</description></item><item><title>Go Pointers - Using the &amp; and * operators</title><link>https://chrisreddington.com/blog/go-pointers/</link><pubDate>Sun, 01 May 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/go-pointers/</guid><description>&lt;p&gt;I&amp;rsquo;ll be transparent. The purpose of this post is to help with my own understanding of the Go &amp;amp; and * operators. It&amp;rsquo;s going to be a very short post, and I&amp;rsquo;m going to try to explain the concepts in a way that I can understand. I&amp;rsquo;ve used these operators in C previously, but whenever I&amp;rsquo;m using them - I always end up having to remember the syntax / which operator is which / what they do. For whatever reason, it doesn&amp;rsquo;t always come intuitively to me.&lt;/p&gt;</description></item><item><title>Enqueue and Dequeue messages locally with dapr, Azure Service Bus and Azure Storage Queues</title><link>https://chrisreddington.com/blog/dapr-local-example/</link><pubDate>Tue, 26 Apr 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/dapr-local-example/</guid><description>&lt;p&gt;In a &lt;a href="https://chrisreddington.com/blog/introduction-to-dapr/"&gt;previous blog post&lt;/a&gt;, I provided an overview of the Distributed Application Runtime (dapr) and explained how it is a useful framework when building microservices. In this blog post, I will show you how to use dapr to enqueue and dequeue messages locally with Azure Service Bus and Azure Storage Queues.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you haven&amp;rsquo;t read my &lt;a href="https://chrisreddington.com/blog/introduction-to-dapr/"&gt;previous blog post - Introduction to the Distributed Application Runtime (dapr)&lt;/a&gt;, please do so now as I will assume that you have initialised dapr and have a working local environment.&lt;/p&gt;</description></item><item><title>Set up your Go development environment with Visual Studio Code and Windows Subsystem for Linux (WSL)</title><link>https://chrisreddington.com/blog/go-dev-environment-vscode-wsl/</link><pubDate>Tue, 26 Apr 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/go-dev-environment-vscode-wsl/</guid><description>&lt;p&gt;Over the past few weeks, I have been working on a new set of pet projects. I&amp;rsquo;ve wanted to learn Go for a while, so I thought this could be a great opportunity to get hands on and try it out. It&amp;rsquo;s fair to say that my development environment was &amp;lsquo;functional&amp;rsquo;, but I wanted to revisit it to make sure that I could get the best out of it. In this blog post, I&amp;rsquo;m going to walkthrough the process of setting up Go on my machine, and then the experience of using Visual Studio Code and Windows Subsystem for Linux (WSL) with Ubuntu.&lt;/p&gt;</description></item><item><title>Using GitHub Actions, Azure Functions, Azure API Management and Google Analytics to display top posts on a Hugo Static Site</title><link>https://chrisreddington.com/blog/top-posts-google-analytics-hugo-azure-functions-apim/</link><pubDate>Sun, 13 Mar 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/top-posts-google-analytics-hugo-azure-functions-apim/</guid><description>&lt;p&gt;In this post, I show how I use GitHub Actions to call an Azure Function (through Azure API Management) which interacts with Google Analytics as part of the process to build my Hugo Static Site. The end result is that top posts are pulled into the Static Site Generation build process, rather than calling the Google Analytics API through JavaScript at runtime.&lt;/p&gt;&#10;&lt;p&gt;&lt;img&#10; src="https://chrisreddington.com/blog/top-posts-google-analytics-hugo-azure-functions-apim/images/example-website-ui_hu_8e04b7d4e151c8cd.webp" srcset="https://chrisreddington.com/blog/top-posts-google-analytics-hugo-azure-functions-apim/images/example-website-ui_hu_385c915cf4361856.webp 480w, https://chrisreddington.com/blog/top-posts-google-analytics-hugo-azure-functions-apim/images/example-website-ui_hu_27e8b80fdaf7063e.webp 768w, https://chrisreddington.com/blog/top-posts-google-analytics-hugo-azure-functions-apim/images/example-website-ui_hu_a1540b0b00546094.webp 1024w, https://chrisreddington.com/blog/top-posts-google-analytics-hugo-azure-functions-apim/images/example-website-ui_hu_8e04b7d4e151c8cd.webp 1440w, https://chrisreddington.com/blog/top-posts-google-analytics-hugo-azure-functions-apim/images/example-website-ui_hu_d3f6ac9b6b03c92d.webp 1920w"sizes="(min-width: 1280px) 60rem, calc(100vw - 2rem)"&#10; width="1440"&#10; height="810"&#10; loading="lazy"&#10; decoding="async"&#10; alt="Example of the Cloud With Chris Landing page showing the top posts populated through the Google Analytics API" title="Example of the Cloud With Chris Landing page showing the top posts populated through the Google Analytics API"/&gt;&lt;/p&gt;</description></item><item><title>Using GitHub Actions and OpenID Connect to deploy Static Web Apps to Azure</title><link>https://chrisreddington.com/blog/using-oidc-github-actions-azure-swa/</link><pubDate>Tue, 22 Feb 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/using-oidc-github-actions-azure-swa/</guid><description>&lt;p&gt;Back in November, &lt;a href="https://github.blog/changelog/2021-11-23-secure-cloud-deployments-with-oidc-is-now-ga/"&gt;GitHub announced its OpenID Connect capability for cloud deployments was generally available&lt;/a&gt;. This has been on my list to try out, and I finally managed to get around to it! With scenarios like this, I prefer to do something real and hands-on, rather than mocked, or a proof of concept. I decided to refactor my GitHub Action workflows for &lt;a href="https://www.cloudwithchris.com"&gt;cloudwithchris.com&lt;/a&gt;, removing the need for secrets stored in GitHub. In this post, I outline my journey through this.&lt;/p&gt;</description></item><item><title>Automate adding GitHub Issues to GitHub Projects (Beta) in a repository owned by a user</title><link>https://chrisreddington.com/blog/automate-adding-gh-issues-projects-beta-users/</link><pubDate>Thu, 10 Feb 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/automate-adding-gh-issues-projects-beta-users/</guid><description>&lt;p&gt;&lt;strong&gt;Update: This information is now outdated. Please see my post since &lt;a href="https://chrisreddington.com/blog/github-projects-ga-automation-updates"&gt;GitHub Projects Went Generally Available&lt;/a&gt;, as there are some APIs used in this example which &lt;a href="https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/#%F0%9F%A4%96-graphql-api-improvements"&gt;will be deprecated in October 2022&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;I recently &lt;a href="https://chrisreddington.com/blog/automate-adding-gh-issues-projects-beta"&gt;wrote a blog post&lt;/a&gt; on using GitHub Actions to automatically add a GitHub Issue to a &lt;a href="https://github.com/features/issues"&gt;GitHub Projects (beta)&lt;/a&gt; when an issue is opened. I received a question from my colleague and maintainer of the &lt;a href="https://promitor.io/"&gt;promitor&lt;/a&gt; and &lt;a href="https://keda.sh/"&gt;KEDA&lt;/a&gt; Open Source (OSS) Projects, &lt;a href="https://twitter.com/TomKerkhove"&gt;Tom Kerkhove&lt;/a&gt; on using the sample with a user-owned GitHub repository, rather than an organisation-owned one.&lt;/p&gt;</description></item><item><title>Automate adding GitHub Issues to GitHub Projects (Beta) in a GitHub organisation</title><link>https://chrisreddington.com/blog/automate-adding-gh-issues-projects-beta/</link><pubDate>Sat, 05 Feb 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/automate-adding-gh-issues-projects-beta/</guid><description>&lt;p&gt;&lt;strong&gt;Update: This information is now outdated. Please see my post since &lt;a href="https://chrisreddington.com/blog/github-projects-ga-automation-updates"&gt;GitHub Projects Went Generally Available&lt;/a&gt;, as there are some APIs used in this example which &lt;a href="https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/#%F0%9F%A4%96-graphql-api-improvements"&gt;will be deprecated in October 2022&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;ve been following the &lt;a href="https://github.com/features/issues"&gt;GitHub Projects beta&lt;/a&gt; for a while now, and have been fortunate to be accepted as an early adopter. I&amp;rsquo;m a big fan of the direction, and the flexibility that it provides. One of the limitations I&amp;rsquo;ve noticed is that there&amp;rsquo;s currently no built-in way to automatically add an issue to a project board (and &lt;a href="https://github.com/github/feedback/discussions/5378"&gt;I&amp;rsquo;m not the only one!&lt;/a&gt;). It&amp;rsquo;s &lt;a href="https://github.com/github/roadmap/issues/286"&gt;on the backlog&lt;/a&gt; but not yet available. Fortunately, GitHub Actions has us sorted. I&amp;rsquo;ll walk you through a sample that I put together to do exactly that.&lt;/p&gt;</description></item><item><title>Using RegEx and VSCode's Find/Replace capability to add captions to markdown images</title><link>https://chrisreddington.com/blog/using-regex-markdown-caption-images/</link><pubDate>Sat, 05 Feb 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/using-regex-markdown-caption-images/</guid><description>&lt;p&gt;If there&amp;rsquo;s an easy way to achieve something, then I&amp;rsquo;m all for it! You may have noticed that I&amp;rsquo;ve been putting a lot of effort into refactoring my site and open sourcing the original Cloud With Chris theme. I&amp;rsquo;ve now released that as the &lt;a href="https://github.com/cloudwithchris/hugo-creator"&gt;Hugo Creator theme&lt;/a&gt; for &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt;. As part of the refactoring process into a reusable theme, I had to make several breaking changes. This meant that I&amp;rsquo;d need to update the contents of my site. I want to share a quick tip that I discovered to add captions to my images in Markdown.&lt;/p&gt;</description></item><item><title>Introduction to The Distributed Application Runtime (Dapr)</title><link>https://chrisreddington.com/blog/introduction-to-dapr/</link><pubDate>Thu, 13 Jan 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/introduction-to-dapr/</guid><description>&lt;p&gt;In this post, we&amp;rsquo;re going to explore the Open Source project known as Dapr (The Distributed Application Runtime). This post is primarily aimed at those who already have an understanding of Containers, Kubernetes and Microservices. However, if you&amp;rsquo;re not familiar with these topics - I&amp;rsquo;ll do my best to set the right context and background without making the blog too lengthy!&lt;/p&gt;&#10;&lt;p&gt;Are you building a Microservice based system? Are you looking help to solve frequent challenges that come with this architecture? Challenges such as encryption, message broker integration, observability, service discovery and secret management are frequent in this archetype. This is exactly where Dapr shines, and may be of value. If this sounds like you, then carry on reading to find out more!&lt;/p&gt;</description></item><item><title>Gaining insight into user behaviour with Microsoft Clarity</title><link>https://chrisreddington.com/blog/insights-with-microsoft-clarity/</link><pubDate>Sun, 09 Jan 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/insights-with-microsoft-clarity/</guid><description>&lt;p&gt;I love learning. Especially when it&amp;rsquo;s about brand new things that I wasn&amp;rsquo;t aware of! For this post, I need to give a big shout out to my friend and colleague &lt;a href="https://twitter.com/Sam_Rowe"&gt;Sam Rowe&lt;/a&gt; for the tip. It wasn&amp;rsquo;t a product/service that I was aware of, but felt like something that could be useful for me on Cloud With Chris. In this post, I&amp;rsquo;ll dig into what it is and how it may be able to help you.&lt;/p&gt;</description></item><item><title>Cloud With Chris 2021 Recap</title><link>https://chrisreddington.com/blog/2021-recap/</link><pubDate>Sat, 01 Jan 2022 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/2021-recap/</guid><description>&lt;p&gt;It&amp;rsquo;s hard to believe that 2021 is done, and we&amp;rsquo;re now in 2022. In one sense, it feels like a &amp;ldquo;blink and you miss it&amp;rdquo; year. In another way, it feels as though it&amp;rsquo;s been one of the longest years to have passed us by.&lt;/p&gt;&#10;&lt;p&gt;It&amp;rsquo;s fair to say that 2021 has had its challenges, not least in the backdrop of the ongoing COVID-19 pandemic. You may have caught &lt;a href="https://chrisreddington.com/blog/im-back-lets-talk"&gt;my recent blog post on my mental health challenges&lt;/a&gt;. Practicing mindfulness and gratitude are excellent approaches for me to keep my overall mental health in balance. So, this post is just as much for me as anyone else. I want to highlight the achievements from the last year or so. I won&amp;rsquo;t be setting any resolutions for 2021, but want to build upon what I&amp;rsquo;ve learned in 2021.&lt;/p&gt;</description></item><item><title>I'm back. Let's talk.</title><link>https://chrisreddington.com/blog/im-back-lets-talk/</link><pubDate>Sun, 19 Dec 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/im-back-lets-talk/</guid><description>&lt;p&gt;You will have noticed that there haven&amp;rsquo;t been any updates on Cloud With Chris for some time. I&amp;rsquo;ve also been quiet on social media. For any of my colleagues, you may have seen by my out of office messages that I&amp;rsquo;ve had time away from work. In this blog post, I want to open up about my recent challenges and have an honest discussion. Whether you&amp;rsquo;ve experienced mental health challenges before, are currently going through tough times, or haven&amp;rsquo;t experienced it and don&amp;rsquo;t quite understand (which is completely ok!) - I hope that me sharing this helps. We&amp;rsquo;re going to be talking about mental health.&lt;/p&gt;</description></item><item><title>Using Azure DevOps and Azure Virtual Machine Scale Set Agents to deploy your private workloads</title><link>https://chrisreddington.com/blog/azuredevops-selfhosted-agents-on-azure/</link><pubDate>Fri, 08 Oct 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azuredevops-selfhosted-agents-on-azure/</guid><description>&lt;p&gt;A little while ago, I wrote a blog post on &lt;a href="https://chrisreddington.com/blog/github-selfhosted-runner-on-azure"&gt;Using the GitHub self-hosted runner and Azure Virtual Machines to login with a System Assigned Managed Identity&lt;/a&gt;, which seems to get a good amount of views week on week. Reflecting on some questions that have popped up this week (and regularly received over my time in the DevOps space), I thought that it makes sense to write a post on how to use Azure DevOps self-hosted agents to deploy to private resources. So, that&amp;rsquo;s what we&amp;rsquo;ll be covering in this post!&lt;/p&gt;</description></item><item><title>What is the Azure Cloud Adoption Framework?</title><link>https://chrisreddington.com/blog/what-is-azure-caf/</link><pubDate>Mon, 20 Sep 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/what-is-azure-caf/</guid><description>&lt;p&gt;Migrating to the Cloud is more than just deciding which technology you want to adopt, or building out the appropriate architectures for your implementation. There is a significant amount of planning needed before you take your initial steps. For example, the initial migration process, establishing a foundation for your ongoing governance, and the wider management of expectations from your business, as well as establishing team structure and responsibilities. This is where the Azure Cloud Adoption Framework comes in.&lt;/p&gt;</description></item><item><title>Shift Left and Increase your Code Quality with Azure DevOps Branch Policies</title><link>https://chrisreddington.com/blog/use-branch-policies-azure-devops/</link><pubDate>Thu, 09 Sep 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/use-branch-policies-azure-devops/</guid><description>&lt;h2 id="what-are-branch-policies"&gt;What are Branch Policies?&lt;/h2&gt;&#10;&lt;p&gt;This post is similar to another I recently wrote on &lt;a href="https://chrisreddington.com/blog/use-github-branch-protection-rules"&gt;using Branch Protection Rules in GitHub&lt;/a&gt;. Instead of focusing on GitHub, we&amp;rsquo;ll be looking at how you can use Branch Policies in Azure DevOps (specifically, Azure Repos). If you&amp;rsquo;re using Azure Repos, but not using Branch Policies - I&amp;rsquo;d encourage you to start using them! I hope this post helps you learn how!&lt;/p&gt;&#10;&lt;p&gt;In the world of DevOps, there is a term known as Shift Left. This term effectively means &amp;lsquo;find and prevent issues early&amp;rsquo;. There are several studies that have shown that the most effective way to prevent issues is to find them early in the software delivery lifecycle. This is because the more issues you find early, the more likely it is that they will be identifiable, and therefore fixed.&lt;/p&gt;</description></item><item><title>Fix for .bashrc not executing on startup in Ubuntu on Windows Subsystem for Linux</title><link>https://chrisreddington.com/blog/fix-bashrc-not-executing-wsl/</link><pubDate>Mon, 06 Sep 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/fix-bashrc-not-executing-wsl/</guid><description>&lt;p&gt;In case you haven&amp;rsquo;t heard, I&amp;rsquo;m planning to do some livestreams in the near future which are focused on live development / building in the cloud. I&amp;rsquo;m working on a few ideas, but if you have any suggestions - please throw them my way! To prepare for this, I&amp;rsquo;ve recently spent some time making sure my local development environment is in order. Windows Terminal and Windows Subsystem for Linux (WSL) are a couple of the key tools in my local development environment. Windows Subsystem for Linux is the focus for this post.&lt;/p&gt;</description></item><item><title>Shift Left and Increase your Code Quality with GitHub Branch Protection Rules</title><link>https://chrisreddington.com/blog/use-github-branch-protection-rules/</link><pubDate>Mon, 30 Aug 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/use-github-branch-protection-rules/</guid><description>&lt;h2 id="what-are-branch-protection-rules"&gt;What are Branch Protection Rules?&lt;/h2&gt;&#10;&lt;p&gt;If you&amp;rsquo;re using GitHub as your source control provider, then I&amp;rsquo;d encourage you to using Branch Protection Rules if you&amp;rsquo;re not already doing so! In this blog post, we&amp;rsquo;ll cover what Branch Protection Rules are and how they can increase your code quality.&lt;/p&gt;&#10;&lt;p&gt;In the world of DevOps, there is a term known as Shift Left. This term effectively means &amp;lsquo;find and prevent issues early&amp;rsquo;. There are several studies that have shown that the most effective way to prevent issues is to find them early in the software delivery lifecycle. This is because the more issues you find early, the more likely it is that they will be identifiable, and therefore fixed.&lt;/p&gt;</description></item><item><title>Why you should care about Azure Front Door Standard and Premium</title><link>https://chrisreddington.com/blog/azure-front-door-standard-premium/</link><pubDate>Thu, 26 Aug 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-front-door-standard-premium/</guid><description>&lt;p&gt;Azure Front Door - It&amp;rsquo;s an Azure Service that has been generally available for quite some time. It went &lt;a href="https://azure.microsoft.com/en-us/updates/azure-front-door-service-is-now-available/"&gt;Generally Available (GA) in April of 2019&lt;/a&gt; after being in &lt;a href="https://azure.microsoft.com/en-us/updates/azure-front-door-service-in-public-preview/"&gt;Public Preview since September 2018&lt;/a&gt;. It&amp;rsquo;s had several updates since, including a slew of Web Application Firewall enhancements, Rules Engine support and much more. But did you know Microsoft released the Azure Front Door Standard and Premium SKUs in preview in Feburary of 2021? So, what are they? How do they compare to the aforementioned Azure Front Door offering? And when would you want to think about using Azure Front Door compared with Azure CDN? We&amp;rsquo;ll be covering all of those points in this post.&lt;/p&gt;</description></item><item><title>How to use the Azure Well-Architected Framework in your projects</title><link>https://chrisreddington.com/blog/azure-well-architected-framework/</link><pubDate>Wed, 18 Aug 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-well-architected-framework/</guid><description>&lt;p&gt;You&amp;rsquo;ll have probably spotted by now that cloud architecture is a passion area of mine, and a regular topic that features on Cloud With Chris. We&amp;rsquo;ve talked a lot about Cloud Design Patterns and requirements-driven engineering in the past, as well as the various pillars of software quality. But one area that hasn&amp;rsquo;t been explored too much is the Azure Well-Architected Framework. So in this blog post, we&amp;rsquo;ll explore that, and identify how it can be used in your own projects.&lt;/p&gt;</description></item><item><title>How to use Managed Identity and APIM to call Azure Services from an APIM policy directly</title><link>https://chrisreddington.com/blog/api-management-and-additional-policies/</link><pubDate>Tue, 17 Aug 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/api-management-and-additional-policies/</guid><description>&lt;p&gt;Back in June, I wrote a blog post on &lt;a href="https://chrisreddington.com/blog/api-management-and-policies/"&gt;API Management and how you can use API Management policies to enforce access restriction policies&lt;/a&gt;. I was going to write a follow up post on how to use API Management policies in further scenarios, though it&amp;rsquo;s one of those scenarios where great minds think alike!&lt;/p&gt;&#10;&lt;p&gt;My friend and colleague Matthew Fortunka recently authored a blog post on the same topic. Matt&amp;rsquo;s post is &lt;a href="https://blog.memoryleek.co.uk/apim/azure/identity/2021/08/13/using-managed-identity-to-connect-to-azure-services-from-api-management.html"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Why you should be using Azure Security Center</title><link>https://chrisreddington.com/blog/azure-security-center-overview/</link><pubDate>Mon, 16 Aug 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-security-center-overview/</guid><description>&lt;p&gt;Whether you&amp;rsquo;re brand new to Azure or have been using it for some time, you have likely either heard of - or come across - Azure Security Center. It&amp;rsquo;s a service which can prove extremely valuable in baselining, measuring and improving your security posture. But, did you know there is additional functionality beyond the free tier? You may have previously known this as the standard tier, or now know this as Azure Defender, where you can opt in for those Azure Services that you particularly want to protect.&lt;/p&gt;</description></item><item><title>Why you should get involved in the Tech Community</title><link>https://chrisreddington.com/blog/get-involved-tech-community/</link><pubDate>Wed, 11 Aug 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/get-involved-tech-community/</guid><description>&lt;p&gt;I recently gave a talk on my journey into the Azure Technical Community. While my day job is working for Microsoft, I get a lot of energy through blogging, podcasting and vlogging - ultimately, helping others grow, inspiring and encouraging them along their own technical journey. In this blog, I write about why I got involved with the technical community, some of my reflections on the journey and what I continue to look forward to.&lt;/p&gt;</description></item><item><title>How I use Azure Integration Services on Cloud With Chris</title><link>https://chrisreddington.com/blog/how-i-use-azure-integration-services/</link><pubDate>Mon, 02 Aug 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/how-i-use-azure-integration-services/</guid><description>&lt;h2 id="why-was-a-revamp-needed-of-the-cloud-with-chris-integration-platform"&gt;Why was a revamp needed of the Cloud With Chris integration platform?&lt;/h2&gt;&#10;&lt;p&gt;I&amp;rsquo;ve written blog posts previously around &lt;a href="https://chrisreddington.com/blog/storage-queues-vs-service-bus/"&gt;Azure Service Bus vs Azure Storage Queues&lt;/a&gt;, as well as &lt;a href="https://chrisreddington.com/blog/introduction-to-logic-apps/"&gt;an introduction to Azure Logic Apps&lt;/a&gt; and how I used it at the time. Back then, my use-case was fairly rudimentary and focused on a specific scenario. In this blog post, I explain the changes that I have made and how I&amp;rsquo;ve used common cloud design / integration patterns to implement a more robust solution.&lt;/p&gt;</description></item><item><title>Choosing between Azure Static Web Apps and Static sites on Azure Storage</title><link>https://chrisreddington.com/blog/static-web-apps-vs-storage-account-static-sites/</link><pubDate>Wed, 28 Jul 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/static-web-apps-vs-storage-account-static-sites/</guid><description>&lt;p&gt;If you&amp;rsquo;ve seen any of my &lt;a href="https://chrisreddington.com/talk"&gt;community talks&lt;/a&gt;, then you&amp;rsquo;ll be aware that Static sites and the Static Content Hosting Pattern is a passion area of mine. In Azure, there are a couple of great services that stand out when building towards this approach. These are Azure Static Web Apps and the Static sites functionality in Azure Blob Storage. But, which one is right for your scenario? Read on to find out more.&lt;/p&gt;</description></item><item><title>Making cloudwithchris.com more accessible</title><link>https://chrisreddington.com/blog/making-cloud-with-chris-more-accessible/</link><pubDate>Fri, 16 Jul 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/making-cloud-with-chris-more-accessible/</guid><description>&lt;p&gt;I&amp;rsquo;ve recently been on a journey. I&amp;rsquo;ve recently come across a number of accessibility issues on &lt;a href="https://cloudwithchris.com"&gt;cloudwithchris.com&lt;/a&gt;. I&amp;rsquo;ve been working on making the site more accessible, and I&amp;rsquo;ve also been working on making it more inclusive. In this blog post, I&amp;rsquo;m going to outline some of my findings, the tools that I used to identify those, and how I&amp;rsquo;ve worked to fix them. This is an ongoing project, so I&amp;rsquo;ll provide further posts as it makes sense.&lt;/p&gt;</description></item><item><title>Azure Storage Queues vs Azure Service Bus Queues - Which should I use when?</title><link>https://chrisreddington.com/blog/storage-queues-vs-service-bus/</link><pubDate>Tue, 13 Jul 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/storage-queues-vs-service-bus/</guid><description>&lt;p&gt;I&amp;rsquo;ve recently been involved in a few integration focused discussions, where there is a requirement to bring together multiple separate systems. If you&amp;rsquo;ve been following the Architecting for the Cloud, one pattern at a time series, then you&amp;rsquo;ll have heard Peter Piper repeat a common phrase - &amp;ldquo;High Cohesion, Low Coupling&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;High cohesion and low coupling effectively means that these separate systems should relate to each other (i.e. work well with each other), without tying any dependencies to each other (so they can exist well independently of each other). This is where introducing technologies such as API Management (to act as a Facade), or technologies such as Azure Service Bus and Azure Storage Queues (to act as a queue or buffer between the producer and consumer) comes into play.&lt;/p&gt;</description></item><item><title>Introducing the Cloud Native Compute Foundation (CNCF)</title><link>https://chrisreddington.com/blog/intro-to-cncf/</link><pubDate>Mon, 05 Jul 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/intro-to-cncf/</guid><description>&lt;p&gt;Inspired by the &lt;a href="https://chrisreddington.com/episode/top-new-cncf-projects"&gt;recent episode with Annie Talvasto&lt;/a&gt;, I wanted to put together a blog post that will introduce an ongoing series on Cloud With Chris. Before we introduce that series though, it&amp;rsquo;s important that we first introduce the Cloud Native Compute Foundation (more commonly known as CNCF).&lt;/p&gt;&#10;&lt;p&gt;The CNCF is a Linux Foundation project that provides a set of tools and services for running cloud native applications. The project was started in 2016 by a group of companies including Red Hat, Google, IBM, and others. The project is led by a team of core committers and several external companies. The project is open source and is available on GitHub. (Fun fact: That line was added by GitHub Co-Pilot! If you&amp;rsquo;re reading this and recognising this line, let me know).&lt;/p&gt;</description></item><item><title>Using API Management Policies to enforce access restriction policies</title><link>https://chrisreddington.com/blog/api-management-and-policies/</link><pubDate>Mon, 28 Jun 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/api-management-and-policies/</guid><description>&lt;p&gt;We &lt;a href="https://chrisreddington.com/blog/introduction-to-api-management"&gt;recently introduced you to API Management, how it maps to architectural principals and why you may consider using it as a producer or consumer of APIs&lt;/a&gt;. In this post, we&amp;rsquo;ll be continuing on the story - focusing mostly on the API Management policies functionality.&lt;/p&gt;&#10;&lt;h2 id="an-introduction-to-api-management-policies"&gt;An introduction to API Management Policies&lt;/h2&gt;&#10;&lt;p&gt;Azure API Management Policies are a way to implement configuration which changes the behaviour of an API Operation or set of APIs. These policies are executed sequentially in either the request to or response from an API. Consider the API Management as a broker between the client and the API, acting a little like a gatekeeper. This means that policies have the potential to be used in a variety of scenarios, e.g. rate limiting, conversion from XML to JSON or validate a JSON Web Token (JWT), which is a common activity for Authentication/Authorization in modern web applications. In this blog post, I&amp;rsquo;m going to assume that you have a working understanding of these concepts (otherwise the blog post would become too large!)&lt;/p&gt;</description></item><item><title>Introduction to Azure API Management</title><link>https://chrisreddington.com/blog/introduction-to-api-management/</link><pubDate>Tue, 22 Jun 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/introduction-to-api-management/</guid><description>&lt;p&gt;We now live in a world where multiple systems connect or integrate with each other. This is not new, and has been a technology trend for some time. But - in a world of distributed compute (on the increase, thanks to cloud), and the rise of microservices, we find that we have more and more services that we need to integrate with each other. Integration is typically handled through a couple of routes, including Enterprise Messaging (such as message brokers - which we won&amp;rsquo;t cover in this blog post), as well as APIs (Application Programming Interface). There are many areas that we should consider when building our APIs, and that&amp;rsquo;s what we&amp;rsquo;ll give some thought to in this post.&lt;/p&gt;</description></item><item><title>Introduction to Project Bicep - The evolution of ARM Templates</title><link>https://chrisreddington.com/blog/introduction-to-bicep/</link><pubDate>Fri, 18 Jun 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/introduction-to-bicep/</guid><description>&lt;p&gt;You may have heard about ARM Templates. You may have heard about Project Bicep. What are they, how do they differ? Why would I use one over the other? That&amp;rsquo;s exactly what we&amp;rsquo;ll be exploring throughout this blog post!&lt;/p&gt;&#10;&lt;h2 id="introducing-azure-resource-manager-arm-and-arm-templates"&gt;Introducing Azure Resource Manager (ARM) and ARM templates&lt;/h2&gt;&#10;&lt;p&gt;Whether you&amp;rsquo;ve been working with Azure for some time, or only recently started - You will have likely heard of Azure Resource Manager (ARM) Templates.&lt;/p&gt;</description></item><item><title>Using the GitHub self-hosted runner and Azure Virtual Machines to login with a System Assigned Managed Identity</title><link>https://chrisreddington.com/blog/github-selfhosted-runner-on-azure/</link><pubDate>Mon, 14 Jun 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/github-selfhosted-runner-on-azure/</guid><description>&lt;p&gt;I recently started thinking about the typical setup process for a GitHub Action Workflow which will requires access to Azure. Typically, the process is to use the &lt;code&gt;Azure/login&lt;/code&gt; GitHub Action, and then use the &lt;code&gt;azure/cli&lt;/code&gt; or another Azure GitHub Action to deploy into GitHub. This is a nice approach. However, from my initial research - I wasn&amp;rsquo;t able to see a way use the &lt;code&gt;Azure/login&lt;/code&gt; GitHub Action to deploy into Azure using a System Assigned Managed Identity. This got me wondering&amp;hellip; Is this possible?&lt;/p&gt;</description></item><item><title>Using Azure Arc for Apps - Part 6 - Setting up Event Grid on Kubernetes with Azure Arc</title><link>https://chrisreddington.com/blog/azure-arc-for-apps-part-6/</link><pubDate>Thu, 10 Jun 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-arc-for-apps-part-6/</guid><description>&lt;h2 id="setting-up-event-grid-on-kubernetes-with-azure-arc"&gt;Setting up Event Grid on Kubernetes with Azure Arc&lt;/h2&gt;&#10;&lt;p&gt;In &lt;a href="https://chrisreddington.com/blog/azure-arc-for-apps-part-1"&gt;part 1&lt;/a&gt; of this &lt;em&gt;Using Azure Arc for Apps&lt;/em&gt; series, we explored Azure Arc and Azure Arc enabled Kubernetes clusters. In this post, we&amp;rsquo;ll be exploring Event Grid for Kubernetes. At time of writing, this approach is in public preview, so we may see certain limitations / features that are not yet available.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; &lt;a href="https://chrisreddington.com/blog/azure-arc-for-apps-part-1"&gt;Part 1&lt;/a&gt; is a pre-requisite to working through this blog post, if you plan to get hands on. As noted above, an Azure Arc enabled Kubernetes cluster is a pre-requisite in the scenario we&amp;rsquo;re walking through.&lt;/p&gt;</description></item><item><title>Using Azure Arc for Apps - Part 4 - Deploying Logic Apps into your App Services Kubernetes Environment</title><link>https://chrisreddington.com/blog/azure-arc-for-apps-part-4/</link><pubDate>Fri, 04 Jun 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-arc-for-apps-part-4/</guid><description>&lt;h2 id="app-service-kubernetes-environment"&gt;App Service Kubernetes Environment&lt;/h2&gt;&#10;&lt;p&gt;In &lt;a href="https://chrisreddington.com/blog/azure-arc-for-apps-part-1"&gt;part 1&lt;/a&gt; of this &lt;em&gt;Using Azure Arc for Apps&lt;/em&gt; series, we explored Azure Arc and Azure Arc enabled Kubernetes clusters. In &lt;a href="https://chrisreddington.com/blog/azure-arc-for-apps-part-2"&gt;part 2&lt;/a&gt;, we deployed an App Service Kubernetes Environment into our Azure Arc enabled Kubernetes cluster. In &lt;a href="https://chrisreddington.com/blog/azure-arc-for-apps-part-3"&gt;part 3&lt;/a&gt;, we deployed a Function App into our Azure Arc enabled Kubernetes cluster. Azure Logic Apps will be the focus of this blog post. Just like App Services and Function Apps, Logic Apps can run in an App Service Environment, which means they can also run in an App Service Kubernetes Environment.&lt;/p&gt;</description></item><item><title>Using Azure Arc for Apps - Part 5 - Deploying an Azure API Management gateway to an Azure Arc enabled Kubernetes Cluster</title><link>https://chrisreddington.com/blog/azure-arc-for-apps-part-5/</link><pubDate>Fri, 04 Jun 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-arc-for-apps-part-5/</guid><description>&lt;h2 id="setting-up-an-azure-api-management-gateway-on-azure-arc"&gt;Setting up an Azure API Management Gateway on Azure Arc&lt;/h2&gt;&#10;&lt;p&gt;In &lt;a href="https://chrisreddington.com/blog/azure-arc-for-apps-part-1"&gt;part 1&lt;/a&gt; of this &lt;em&gt;Using Azure Arc for Apps&lt;/em&gt; series, we explored Azure Arc and Azure Arc enabled Kubernetes clusters. In this post, we&amp;rsquo;ll be exploring API Management on Azure Arc. At time of writing, this approach is in public preview, so we may see certain limitations / features that are not yet available.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; &lt;a href="https://chrisreddington.com/blog/azure-arc-for-apps-part-1"&gt;Part 1&lt;/a&gt; is a pre-requisite to working through this blog post, if you plan to get hands on. As noted above, an Azure Arc enabled Kubernetes cluster is a pre-requisite in the scenario we&amp;rsquo;re walking through. It is possible to deploy an API Management Gateway &lt;a href="https://docs.microsoft.com/en-us/azure/api-management/how-to-deploy-self-hosted-gateway-kubernetes"&gt;directly to Kubernetes&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/en-us/azure/api-management/how-to-deploy-self-hosted-gateway-azure-kubernetes-service"&gt;directly to Azure Kubernetes Service&lt;/a&gt; or &lt;a href="https://docs.microsoft.com/en-us/azure/api-management/how-to-deploy-self-hosted-gateway-docker"&gt;directly to docker&lt;/a&gt; as an alternative approach. We will be focusing on deploying the Azure API Management Gateway to an Azure Arc enabled Kubernetes cluster.&lt;/p&gt;</description></item><item><title>Using Azure Arc for Apps - Part 3 - Deploying Azure Functions into an App Service Kubernetes Environment</title><link>https://chrisreddington.com/blog/azure-arc-for-apps-part-3/</link><pubDate>Wed, 02 Jun 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-arc-for-apps-part-3/</guid><description>&lt;h2 id="app-service-kubernetes-environment"&gt;App Service Kubernetes Environment&lt;/h2&gt;&#10;&lt;p&gt;In &lt;a href="https://chrisreddington.com/blog/azure-arc-for-apps-part-1"&gt;part 1&lt;/a&gt; of this &lt;em&gt;Using Azure Arc for Apps&lt;/em&gt; series, we explored Azure Arc and Azure Arc enabled Kubernetes clusters. In &lt;a href="https://chrisreddington.com/blog/azure-arc-for-apps-part-2"&gt;part 2&lt;/a&gt;, we deployed an App Service Kubernetes Environment into our Azure Arc enabled Kubernetes cluster. As you&amp;rsquo;ll likely be aware, both Azure Functions (this blog post) and Azure Logic Apps (the next blog post) can run on Azure App Service. The same is true for an App Service Kubernetes Environment, we can run App Services, Logic Apps and Azure Functions.&lt;/p&gt;</description></item><item><title>Using Azure Arc for Apps - Part 1 - Setting up an Azure Arc enabled Kubernetes Cluster</title><link>https://chrisreddington.com/blog/azure-arc-for-apps-part-1/</link><pubDate>Tue, 01 Jun 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-arc-for-apps-part-1/</guid><description>&lt;h2 id="cloud-native-applications-that-run-anywhere"&gt;Cloud Native Applications that run anywhere&lt;/h2&gt;&#10;&lt;p&gt;At Microsoft //Build 2021, Microsoft announced a series of updates relating to Cloud Native Applications anywhere. In summary, those updates refer to running Azure Services (such as App Services, Logic Apps, Azure Functions, Event Grid and API Management) in any Kubernetes cluster which is managed by Azure Arc. That means you could have Azure App Services running in Amazon Web Services (AWS), Google Cloud Platform (GCP), or in your on-premises Kubernetes deployment. This is a significant update, so I&amp;rsquo;ve decided that I&amp;rsquo;ll be writing a series of blog posts on the topic - as one post would not do the topic justice!&lt;/p&gt;</description></item><item><title>Using Azure Arc for Apps - Part 2 - Deploying App Services to Kubernetes</title><link>https://chrisreddington.com/blog/azure-arc-for-apps-part-2/</link><pubDate>Tue, 01 Jun 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-arc-for-apps-part-2/</guid><description>&lt;h2 id="app-service-kubernetes-environment"&gt;App Service Kubernetes Environment&lt;/h2&gt;&#10;&lt;p&gt;In &lt;a href="https://chrisreddington.com/blog/azure-arc-for-apps-part-1"&gt;part 1&lt;/a&gt; of this &lt;em&gt;Using Azure Arc for Apps&lt;/em&gt; series, we explored Azure Arc and Azure Arc enabled Kubernetes clusters. In this post, we&amp;rsquo;ll be exploring App Services on Azure Arc. More specifically, these application services run on an Azure Arc enabled Kubernetes cluster, which is a pre-requisite for us to progress. At time of writing, this approach is in public preview, so we may see &lt;a href="https://docs.microsoft.com/en-gb/azure/app-service/overview-arc-integration#public-preview-limitations"&gt;certain limitations / features that are not yet available&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Securing App Service with Easy Auth behind a Public Application Gateway</title><link>https://chrisreddington.com/blog/secure-app-service-with-easy-auth-and-app-gateway-public/</link><pubDate>Mon, 31 May 2021 09:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/secure-app-service-with-easy-auth-and-app-gateway-public/</guid><description>&lt;h2 id="setting-some-context"&gt;Setting some context&lt;/h2&gt;&#10;&lt;p&gt;I recently encountered a scenario that I wanted to spend some time writing up. Imagine that you have a requirement to deploy a new web application to Microsoft Azure. However, there are some additional requirements -&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The application must require Azure Active Directory Authentication.&lt;/li&gt;&#10;&lt;li&gt;The web application must not be accessible &lt;strong&gt;directly&lt;/strong&gt; across the public internet.&lt;/li&gt;&#10;&lt;li&gt;An end user should be able to connect to the web app using a Public DNS record, so that they feel that it is an authentic experience.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="considerations"&gt;Considerations&lt;/h2&gt;&#10;&lt;p&gt;There are several ways that this could be achieved, but may bring in some complexity. Some of these include -&lt;/p&gt;</description></item><item><title>My Microsoft //Build 2021 Highlights</title><link>https://chrisreddington.com/blog/build-2021-summary/</link><pubDate>Fri, 28 May 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/build-2021-summary/</guid><description>&lt;p&gt;If you follow the news around Microsoft, you&amp;rsquo;ve probably found it very hard to miss the fact that the Microsoft //Build conference happened this week. Microsoft //Build is their annual developer-focused conference, where they typically announce new features, updates and share their strategy as they evolve technologies.&lt;/p&gt;&#10;&lt;p&gt;In this update, I&amp;rsquo;ll provide a summary of the announcements that particularly stood out to me and give you some context around why. Whether that&amp;rsquo;s announcements that excite me, features that I think are crucial to be adopted, etc. It&amp;rsquo;s worth noting that I&amp;rsquo;ll be focusing primarily on the Microsoft Azure Updates here, as that&amp;rsquo;s my typical area of expertise!&lt;/p&gt;</description></item><item><title>Making a GitHub Action with Docker and .NET Core</title><link>https://chrisreddington.com/blog/github-action-docker-dotnet-core/</link><pubDate>Mon, 24 May 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/github-action-docker-dotnet-core/</guid><description>&lt;p&gt;As you may have read previously, my site &lt;a href="http://cloudchris.ws/2x"&gt;cloudwithchris.com&lt;/a&gt; is hosted using Azure Storage Static sites. A common pattern when building static sites is to version control the assets and use Continuous Integration and Continuous Delivery to deliver the rendered compiled site to Azure. I&amp;rsquo;ve recently started creating an open source .NET Core command-line application which can take Hugo YAML files an input, convert the file contents to the appropriate Markdown for supported third-party services (currently &lt;a href="http://cloudchris.ws/2y"&gt;dev.to&lt;/a&gt; and &lt;a href="http://cloudchris.ws/2z"&gt;medium.com&lt;/a&gt;) by replacing local URLs, adding appropriate YouTube/Tweet rendering shortcodes and then posting directly to the API.&lt;/p&gt;</description></item><item><title>Azure Static Web Apps are Generally Available</title><link>https://chrisreddington.com/blog/static-webapps-general-availability/</link><pubDate>Wed, 19 May 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/static-webapps-general-availability/</guid><description>&lt;p&gt;Great news! &lt;a href="https://azure.microsoft.com/en-gb/blog/develop-production-scale-modern-web-apps-quickly-with-azure-static-web-apps/"&gt;Azure Static Web Apps are now Generally Available&lt;/a&gt;! Just to provide some reassurance, Static Web Apps are a concept that I&amp;rsquo;m fairly passionate about. You may have seen &lt;a href="https://chrisreddington.com/blog/jamstack-cloud-winning-combination/"&gt;this blog post&lt;/a&gt; on why I think JAMStack and the cloud are a great combination. You may have seen &lt;a href="https://chrisreddington.com/talk"&gt;one of my many talks&lt;/a&gt; on how I use &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt;, Azure Storage, Azure CDN and GitHub to easily deploy a very cheap and scalable site into Azure.&lt;/p&gt;</description></item><item><title>Thank you! Cloud with Chris has reached 500 YouTube Subscribers</title><link>https://chrisreddington.com/blog/thank-you-500-youtube-subscribers/</link><pubDate>Mon, 17 May 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/thank-you-500-youtube-subscribers/</guid><description>&lt;p&gt;I&amp;rsquo;m sat writing this blog post about 4 months after writing my &lt;a href="https://chrisreddington.com/blog/cloud-with-chris-moving-forwards/"&gt;2021 kick off blog post&lt;/a&gt;. My aim for 2021 was to focus on one goal - contributing back into the technical community.&lt;/p&gt;&#10;&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;Upping my content creation game for 2021. Here&amp;#39;s a refreshed look at what&amp;#39;s to come on Cloud With Chris/YouTube Channel trailer. Gonna be busy!&lt;a href="https://t.co/POE0N82gFw"&gt;https://t.co/POE0N82gFw&lt;/a&gt;&lt;a href="https://x.com/hashtag/Cloud?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#Cloud&lt;/a&gt; &lt;a href="https://x.com/hashtag/CloudArchitecture?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#CloudArchitecture&lt;/a&gt; &lt;a href="https://x.com/hashtag/DevOps?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#DevOps&lt;/a&gt; &lt;a href="https://x.com/hashtag/AzureDevOps?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#AzureDevOps&lt;/a&gt; &lt;a href="https://x.com/hashtag/GitHub?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#GitHub&lt;/a&gt; &lt;a href="https://x.com/hashtag/Guests?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#Guests&lt;/a&gt; &lt;a href="https://x.com/hashtag/Gaming?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#Gaming&lt;/a&gt; &lt;a href="https://x.com/hashtag/contentcreator?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#contentcreator&lt;/a&gt; &lt;a href="https://x.com/hashtag/Azure?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#Azure&lt;/a&gt; &lt;a href="https://x.com/hashtag/AzureFamily?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#AzureFamily&lt;/a&gt;&lt;/p&gt;&amp;mdash; ☁️ Chris Reddington (@reddobowen) &lt;a href="https://x.com/reddobowen/status/1345748585443454978?ref_src=twsrc%5Etfw"&gt;January 3, 2021&lt;/a&gt;&lt;/blockquote&gt;&#10;&lt;script async src="https://platform.x.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;&#10;&#10;&#10;&lt;p&gt;I set out 2021 to achieve 500 subscribers by the end of the year, and had ideas of creating brand new types of content. When I created Cloud with Chris back in March 2020, I started it off as a podcast. Later in 2020, I decided to add the video content to the mix. Then, as we entered 2021, I brought my old blog posts from my personal site onto Cloud with Chris, and started off a weekly blog.&lt;/p&gt;</description></item><item><title>Building an Event-Driven workflow with Event Grid</title><link>https://chrisreddington.com/blog/event-driven-workflow-with-event-grid/</link><pubDate>Wed, 12 May 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/event-driven-workflow-with-event-grid/</guid><description>&lt;p&gt;You may have heard of Event-Driven Architectures before, but haven&amp;rsquo;t had the chance to get hands-on and build one as yet. That&amp;rsquo;s exactly what we&amp;rsquo;ll be working through in this blog post! Before we dive into any practical detail though, let&amp;rsquo;s go ahead and recap some of the benefits of this architectural approach. The &lt;a href="https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/event-driven"&gt;Azure Architecture Center&lt;/a&gt; covers these very well. But as a brief recap -&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Event-Driven Architectures are great for scenarios where you have a distributed architecture (multiple microservices/subsystems) that process the same set of events&lt;/li&gt;&#10;&lt;li&gt;They can enable high volume real-time processing with minimum time lag. Typically they&amp;rsquo;ll be leveraging messaging platforms (such as Service Bus Topics/Queues, Storage Queues and Event Grid), and you&amp;rsquo;ll see patterns like Publish/Subscriber, Queue-based load levelling and Competing Consumers.&lt;/li&gt;&#10;&lt;li&gt;As a result, the producers and consumers of these events (or messages, as they transition and evolve through the system) are decoupled. This means that this type of architecture can be easily expanded, adding new consumers to listen to specific message types.&lt;/li&gt;&#10;&lt;li&gt;These systems can be highly scalable, but also cost-effective. Typically when you hear event-driven, you also hear serverless. This isn&amp;rsquo;t &lt;strong&gt;always&lt;/strong&gt; the case, but you can deploy event-driven workflows on a per-invocation/per-execution basis. This means you need to thoroughly understand your workload, and which would the most cost-efficient (i.e. paying for the underlying infrastructure which performs the processing, or paying on a per-event basis).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;With that context out of the way, let&amp;rsquo;s start building out our scenario! We&amp;rsquo;re going to go ahead and build an event-driven workflow that ensures there is a &amp;lsquo;guaranteed processing&amp;rsquo; on files that are uploaded to a storage account. This could be resizing of an image, analysis of an image (e.g. image recognition), text analytics of a file, or many other scenarios. We won&amp;rsquo;t be focusing on the later processing aspect (as that would be domain specific, and you can implement as needed), but will be focusing on the &amp;lsquo;plumbing&amp;rsquo; between those various Azure Services.&lt;/p&gt;</description></item><item><title>Azure Pipelines Tips</title><link>https://chrisreddington.com/blog/pipelines-as-code/</link><pubDate>Mon, 10 May 2021 08:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/pipelines-as-code/</guid><description>&lt;p&gt;Recently &lt;a href="https://twitter.com/thegraycat/status/1388873685587668992"&gt;on Twitter&lt;/a&gt;, I was asked by @thegraycat on whether I knew of any resources to manage pipelines in version control. I sent across several top of mind thoughts over Twitter, but it got me thinking that there may be others with the same question and it could make a good blog post. So here we are, as I talk through some of my considerations for pipelines as code.&lt;/p&gt;&#10;&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;Hey, Chris. You might be able to point me in the right direction - are there any good resources on how manage your &lt;a href="https://x.com/hashtag/azuredevops?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#azuredevops&lt;/a&gt; pipelines in git for versioning etc? Cheers.&lt;/p&gt;</description></item><item><title>Crossposting Content: A New Project</title><link>https://chrisreddington.com/blog/crossposting-content/</link><pubDate>Wed, 05 May 2021 08:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/crossposting-content/</guid><description>&lt;p&gt;Following on from my &lt;a href="https://chrisreddington.com/blog/using-schema-org-for-seo"&gt;recent post&lt;/a&gt; where I discussed using schema.org for Search Engine Optimisation (SEO), I wanted to stick with a similar theme, but a slightly different angle or topic. This time, we&amp;rsquo;ll be covering the topic of crossposting content.&lt;/p&gt;&#10;&lt;p&gt;What is Crossposting? It&amp;rsquo;s the idea that you&amp;rsquo;ll post your content in multiple locations (e.g. &lt;a href="https://cloudwithchris.medium.com/"&gt;medium.com&lt;/a&gt; or &lt;a href="https://dev.to/cloudwithchris"&gt;dev.to&lt;/a&gt;) to broaden your reach. One of the main benefits is that these sites are a platform for many bloggers. So if you use the appropriate tags and titles, you may be able to draw in additional members to your audience. It&amp;rsquo;s not quite as easy as that though. If you post your content without appropriately linking back to your original content, you could be damaging yourself from an SEO perspective (e.g. is someone copying/plagiarizing content? What is the original source?). So let&amp;rsquo;s cover this in al little more detail.&lt;/p&gt;</description></item><item><title>Using schema.org for SEO optimisation</title><link>https://chrisreddington.com/blog/using-schema-org-for-seo/</link><pubDate>Mon, 03 May 2021 08:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/using-schema-org-for-seo/</guid><description>&lt;p&gt;One of my recent tasks for Cloud with Chris was to investigate some additional areas for SEO improvements. If you&amp;rsquo;re unaware, SEO stands for Search Engine Optimization; a set of practices to improve your ranking in search engines such as Google, Bing and others when they crawl and index your site. I was already in a good position, but there were some things that were frustrating me, we&amp;rsquo;ll explore those in this blog post.&lt;/p&gt;</description></item><item><title>Introducing Logic Apps Preview</title><link>https://chrisreddington.com/blog/introducing-logic-apps-preview/</link><pubDate>Wed, 28 Apr 2021 08:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/introducing-logic-apps-preview/</guid><description>&lt;p&gt;Following hot off the heels of my recent blog post &lt;a href="https://chrisreddington.com/blog/introduction-to-logic-apps"&gt;introducing Logic Apps and how I use the technology on cloudwithchris.com&lt;/a&gt;, I thought it made sense for the second post to continue the Logic Apps theme. This time, we&amp;rsquo;ll be focusing on Logic Apps preview (sometimes referred to as Logic Apps v2) - the evolution of Logic Apps. Typically when you deploy Logic Apps, you deploy it as a multi-tenanted service. There are some benefits to that, including the serverless capability, so being able to pay per execution rather than an overall infrastructure cost. But what if cost is less of a requirement for you? What if you care more about portability, greater performance, and ultimately control over your environment?&lt;/p&gt;</description></item><item><title>Introduction to Logic Apps</title><link>https://chrisreddington.com/blog/introduction-to-logic-apps/</link><pubDate>Mon, 26 Apr 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/introduction-to-logic-apps/</guid><description>&lt;p&gt;Many years ago, I &lt;a href="https://chrisreddington.com/blog/integration-platform-as-a-service-logic-apps"&gt;wrote a blog post&lt;/a&gt; which introduced Logic Apps at a very high level when they were initially released. Ahead of a blog post that I want to write on Logic Apps v2, I thought that it may be worth writing a more thorough recap of Logic Apps as a platform.&lt;/p&gt;&#10;&lt;p&gt;Logic Apps is a Platform as a Service (PaaS) offering, which allows you to easily build visual workflow integrations. Whether that&amp;rsquo;s plumbing several microservices together, entirely different solutions within an enterprise, or some of the repetitive backend administrative tasks for a podcast or blog site, Logic Apps may be worth exploring.&lt;/p&gt;</description></item><item><title>Azure role-based access control (RBAC) at the data plane level</title><link>https://chrisreddington.com/blog/azure-rbac-data-plane/</link><pubDate>Wed, 21 Apr 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-rbac-data-plane/</guid><description>&lt;p&gt;Principal of least privilege is a commonly used phrase within the Technology Industry. The idea is that we&amp;rsquo;ll assign permissions of what the user needs to get the job done, rather than anything broader or more privileged. This helps reduce the blast radius in the event of a compromised account. This stretches to Azure resources at the management plane, but in some cases can also stretch to the data plane of those resources. We&amp;rsquo;ll be exploring these further in this blog post.&lt;/p&gt;</description></item><item><title>Getting started with Azure using Microsoft Learn</title><link>https://chrisreddington.com/blog/get-started-azure-microsoft-learn/</link><pubDate>Mon, 19 Apr 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/get-started-azure-microsoft-learn/</guid><description>&lt;p&gt;Often, I&amp;rsquo;m asked the question how do I get started with Azure? Are there any resources, tutorials, guides that you can recommend? I know about topic X, but how do I learn more? I&amp;rsquo;ve been working with (and continuously learning) Azure over the past 7 years or so. When I started, the main resources were Microsoft Docs and community sites. Both great resources, but there was a gap for a truly educational resource, rather than technical reference material. Enter &lt;a href="https://docs.microsoft.com/en-us/learn/"&gt;Microsoft Learn&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Optimise your site - Addressing recommendations from securityheaders.com</title><link>https://chrisreddington.com/blog/optimise-site-security-headers-com/</link><pubDate>Wed, 14 Apr 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/optimise-site-security-headers-com/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;In my blog post earlier this week, I mentioned that I recently spoke at the Northern Azure User Group. The other speaker for the evening was Scott Hanselman, who talked about his journey moving a 17 year old .NET App into Azure. This was his blog. Along the way, he called out some of the tools that he used along the way. One was a tool called &lt;a href="https://securityheaders.com/"&gt;securityheaders.com&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;As any engaged listener does, I took note of the tools that he used, and added them to my cloudwithchris.com backlog during the talk. When I later investigated the initial rating of the site, I received a score of an F - which appears to be the lowest possible score that you can receive! Given that I only allow HTTPS traffic to my site, I was surprised by this - so I begun looking into the recommendations further.&lt;/p&gt;</description></item><item><title>Tips on getting started with blogging and content creation</title><link>https://chrisreddington.com/blog/get-started-blogging/</link><pubDate>Mon, 12 Apr 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/get-started-blogging/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;In case you missed it, &lt;a href="https://www.shankuehn.io/"&gt;Shannon Kuehn&lt;/a&gt;, &lt;a href="https://jamiemaguire.net/"&gt;Jamie Maguire&lt;/a&gt;, &lt;a href="https://jonnychipz.com/"&gt;John Lunn&lt;/a&gt; and I joined &lt;a href="https://www.techielass.com"&gt;Sarah Lean&lt;/a&gt; for a &lt;a href="https://www.youtube.com/watch?v=J5q_DZJRpYM"&gt;panel livestream on her channel&lt;/a&gt; talking about our experiences getting started with blogging, and our experiences with blogging platforms. In this post, I want to focus on the first aspect - how you can get started with blogging, and some of the common themes / recommendations I&amp;rsquo;ve heard, not just from this session, but from other active community contributors.&lt;/p&gt;</description></item><item><title>Windows Terminal - What is it, and how can it make you productive with Azure?</title><link>https://chrisreddington.com/blog/windows-terminal-productive-azure/</link><pubDate>Thu, 08 Apr 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/windows-terminal-productive-azure/</guid><description>&lt;p&gt;For some time now, I&amp;rsquo;ve been using Windows Terminal as my local terminal for interacting with my command-line tools for quite some time now. Whenever I&amp;rsquo;m demonstrating Kubernetes concepts or working with the Azure CLI, I&amp;rsquo;ll likely have had the Windows Terminal open at some point. I always get questioned about which terminal that is, and how people can get access to it. I recently put together a &lt;a href="https://chrisreddington.com/episode/cloud-drops-windows-terminal-productive-azure"&gt;Cloud Drop on How Windows Terminal can make YOU productive with Azure&lt;/a&gt;, so I figured it&amp;rsquo;s time to also write up a blog post on the same! Whether you&amp;rsquo;re a Developer, DevOps Engineer, Infrastructure Operations or Data Scientist, you&amp;rsquo;ve probably had to interact with a command-line terminal / shell at some point, so I hope this will be useful for you!&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;&#10;&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>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>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;&#10;&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="https://chrisreddington.com/blog/gpg-git-part-2/"&gt;part 2&lt;/a&gt;.&lt;/strong&gt;&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>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="https://chrisreddington.com/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>The Past Four Years</title><link>https://chrisreddington.com/blog/the-past-four-years/</link><pubDate>Fri, 19 Feb 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/the-past-four-years/</guid><description>&lt;p&gt;For the past four years, I&amp;rsquo;ve been part of a team at Microsoft called &lt;a href="https://azure.microsoft.com/en-gb/programs/azure-fasttrack/"&gt;FastTrack for Azure (FTA)&lt;/a&gt;. FastTrack for Azure is part of Azure Engineering&amp;rsquo;s Customer Experience Team, focused on successfully on boarding customers on a project-by-project basis as they bring production workloads online.&lt;/p&gt;&#10;&lt;p&gt;There is never a perfect time to say goodbye, but for me - now is the time. From Monday, I&amp;rsquo;ll be taking on a new role within Microsoft as a Senior Cloud Solution Architect within Microsoft UK&amp;rsquo;s Customer Success Unit, focusing on the Manufacturing &amp;amp; Resources Industries. Career changes can be big moments of change, and a good opportunity to reflect.&lt;/p&gt;</description></item><item><title>Contributing towards Azure GitHub Actions</title><link>https://chrisreddington.com/blog/azure-github-actions-workflow-samples/</link><pubDate>Wed, 10 Feb 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-github-actions-workflow-samples/</guid><description>&lt;p&gt;I&amp;rsquo;ve talked in the past about my Open Source journey, and some of the contributions that I have made in the community. In my current role, I&amp;rsquo;ve been leading on the global strategy for my team&amp;rsquo;s DevOps practice, defining the areas of focus and initiatives that may be beneficial for the team. In this post, I&amp;rsquo;m going to talk through one of these initiatives, and how you can contribute towards the Azure GitHub Actions experience!&lt;/p&gt;</description></item><item><title>Cloud with Chris Setup - Part 2 - Lights, Camera, Action!</title><link>https://chrisreddington.com/blog/my-setup-part-2/</link><pubDate>Wed, 03 Feb 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/my-setup-part-2/</guid><description>&lt;p&gt;A few people have recently been asking about my setup, so I figured it may be a good time to start writing about it! This is the second part of the series, where I&amp;rsquo;ll focus on the Lights, Recording Equipment and my overall setup. If you&amp;rsquo;re interested in the PC setup, then take a look at my &lt;a href="https://chrisreddington.com/blog/my-setup-part-1-pc/"&gt;previous blog post&lt;/a&gt;!&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;ll walkthrough this blog post in a rough order of when I acquired the various technology pieces, so that you can get an idea into my thinking of my journey. First up, my Microphone. You may be aware that Cloud With Chris started purely as a podcast around a year ago or so. I record these using a Blue Yeti USB Microphone. Overall, I&amp;rsquo;m very happy with the quality and sound from this Microphone (and my colleagues tease / make me aware of that whenever I&amp;rsquo;m on a call with them)! I&amp;rsquo;ve had several colleagues ask me about the Microphone, as they&amp;rsquo;d like to buy the same (because of how they perceive the quality)! I have considered moving towards an XLR based microphone, and this is still on my radar. If you have any recommendations in this space, please get in touch and let me know! I also purchased a &lt;a href="https://smile.amazon.co.uk/gp/product/B07P2G19DW/"&gt;Pop Filter Foam/windshield&lt;/a&gt; for the Microphone, as well as the &lt;a href="https://smile.amazon.co.uk/gp/product/B073VJKD9Q/"&gt;Mic Suspension boom arm stand&lt;/a&gt;. There are several options out there (and some pretty expensive ones!), though I kept it simple/cheap and have had no issues. I used to use a &lt;a href="https://smile.amazon.co.uk/gp/product/B06XPGKSHL/"&gt;Sound Shield Guard Windscreen&lt;/a&gt;, but removed that later on when starting videos, due to it obstructing the framing of the picture.&lt;/p&gt;</description></item><item><title>Cloud with Chris Setup - Part 1 - My PC</title><link>https://chrisreddington.com/blog/my-setup-part-1-pc/</link><pubDate>Wed, 27 Jan 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/my-setup-part-1-pc/</guid><description>&lt;p&gt;A few people have recently been asking about my setup, so I figured it may be a good time to start writing about it! I&amp;rsquo;ll break this into a few posts to keep it digestible. The first part will be focused on the main powerhouse behind it all - My PC!&lt;/p&gt;&#10;&lt;p&gt;For quite a while I&amp;rsquo;ve wanted to build my own PC. I knew how pricey it could get, so wanted to make sure I could have the time to focus on it. I&amp;rsquo;ve always focused more on the software side than the hardware side, so it was a little bit of a challenge for myself, as well as an opportunity to learn! For anyone reading who has been considering making their own PC and hasn&amp;rsquo;t done it before, it&amp;rsquo;s not as scary as you may think!&lt;/p&gt;</description></item><item><title>JAMStack and the Cloud - A winning combination</title><link>https://chrisreddington.com/blog/jamstack-cloud-winning-combination/</link><pubDate>Wed, 20 Jan 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/jamstack-cloud-winning-combination/</guid><description>&lt;p&gt;When I mention the term JAMStack, I&amp;rsquo;m not pretending that I&amp;rsquo;m Paddington bear with a stack of Jam sandwiches! If you hadn&amp;rsquo;t heard, JAMStack is a term that describes applications based on JavaScript, APIs and Markup. That means, we&amp;rsquo;re referring to files that are content in nature. Think about files like HTML, CSS, Images, etc.&lt;/p&gt;&#10;&lt;p&gt;Ok, now with that context - why has it risen in popularity? Surely this is something that could have been done for many years, so why now? My hypothesis&amp;hellip; Cloud. When you think about Cloud Workloads, typically the more costly aspects of the solution will be the underlying compute hosting the application, or the compute/services which are hosting the data layer.&lt;/p&gt;</description></item><item><title>Contributing to Open Source</title><link>https://chrisreddington.com/blog/contributing-to-open-source/</link><pubDate>Tue, 12 Jan 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/contributing-to-open-source/</guid><description>&lt;p&gt;Contributing to Open Source Software. It sounds so formal, doesn&amp;rsquo;t it? I thought that for quite a long time, and it put a bit of a mental barrier in place for me to begin my journey. I am a classic over thinker, but that&amp;rsquo;s perhaps another blog in its own right!&lt;/p&gt;&#10;&lt;p&gt;Contributing to Open Source isn&amp;rsquo;t as scary as it may first initially seem. Let&amp;rsquo;s start with a few thoughts.&lt;/p&gt;</description></item><item><title>Contributing to a Hugo Theme - The Castanet and Hugo Community Themes</title><link>https://chrisreddington.com/blog/contributing-to-a-hugo-theme/</link><pubDate>Wed, 06 Jan 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/contributing-to-a-hugo-theme/</guid><description>&lt;p&gt;During the 2020 Festive Break, I had a lot of time on my hands. I took 4 weeks of my Annual Leave, which meant I had the majority of December to personal time&lt;/p&gt;&#10;&lt;p&gt;Personal time / time off is great, but I also wanted to push myself and catch up on some pieces that were on my personal learning or achievement list for some time. I started refreshing my knowledge around Rails (having developed in it some years ago, it&amp;rsquo;s progressed quite a bit!), NodeJS, GoLang and Rust. All interesting to learn, and I&amp;rsquo;m sure I&amp;rsquo;ll be continuing on my journey with these throughout 2021.&lt;/p&gt;</description></item><item><title>Cloud With Chris - Moving Forwards</title><link>https://chrisreddington.com/blog/cloud-with-chris-moving-forwards/</link><pubDate>Sat, 02 Jan 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/cloud-with-chris-moving-forwards/</guid><description>&lt;p&gt;You may have noticed there are some posts preceding this one. I&amp;rsquo;ve had a few attempts at putting my own personal blog together, but over time, my posts dwindle&amp;hellip; Well, given the recent success with my Cloud with Chris podcast, I&amp;rsquo;m beginning to consolidate&amp;hellip; Starting with my blog! Here&amp;rsquo;s an update on what you have to look forward to!&lt;/p&gt;&#10;&lt;p&gt;As we enter 2021, like most, I&amp;rsquo;ve been reflecting on what my goals are / what I want to achieve. Rather than setting many goals, I&amp;rsquo;ve decided to stay focused on one goal. My contributions into the technical community. So it was only natural that I start thinking about the various channels that I have, and how I can consolidate/focus, as well as decide upon what type of content I&amp;rsquo;ll be focusing on.&lt;/p&gt;</description></item><item><title>Azure Mythbusters: I can choose any Azure Compute Service to solve any problem!</title><link/><pubDate>Tue, 04 Feb 2020 09:00:00 +0000</pubDate><guid/><description>&lt;p&gt;A lot of people will take a round peg and try and push it into a square hole – or in this case, take their code and try and cram it into whatever service they happen to like at the time. There are specialised services on Azure, as well as some generic ones, but we’re going to talk about some of the more specialised compute services and what things you need to consider when using them.&lt;/p&gt;</description></item><item><title>Azure Mythbusters: Cloud is new, so there are no clear architecture patterns!</title><link/><pubDate>Tue, 28 Jan 2020 09:00:00 +0000</pubDate><guid/><description>&lt;p&gt;There are a lot of established cloud design patterns. These don’t all apply specifically to Azure, either – some of them apply intrinsically to cloud services, and some to general services and architectures. If you’ve been to the Azure Architecture Center before, and you’ve seen what used to be the patterns and practices guidance, I’d advise you to take another look. We’re adding new ones all the time as we see them, all of which are common patterns that Azure customers are using to isolate and work around things they see in applications to make them work better.&lt;/p&gt;</description></item><item><title>Deploying a multi-region Serverless API Layer (Part 1)</title><link>https://chrisreddington.com/blog/deploying-multi-region-serverless-api-part1/</link><pubDate>Sat, 13 Jul 2019 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/deploying-multi-region-serverless-api-part1/</guid><description>&lt;p&gt;In my spare time, I work on a pet project called &lt;a href="https://www.github.com/theatreers"&gt;Theatreers&lt;/a&gt;. The aim of this is a microservice based platform focused on Theatre / Musical Theatre (bringing a few of my passion areas together).&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;ve recently re-architected the project to align to a serverless technology stack. This includes:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A set of &lt;strong&gt;core global services&lt;/strong&gt;, such as -&#10;&lt;ul&gt;&#10;&lt;li&gt;A Single Page App hosted on Azure Blob Storage&lt;/li&gt;&#10;&lt;li&gt;Azure Front Door that sits in front of the blob storage, as well as the backend API services&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;A number of &lt;strong&gt;core regional resources&lt;/strong&gt; that exist in each region and are used across the suite of microservices -&#10;&lt;ul&gt;&#10;&lt;li&gt;An API Management instance deployed in the Consumption Tier&lt;/li&gt;&#10;&lt;li&gt;An App Insights resource used as a sink for all telemetry within a regional deployment&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;A set of resources that are deployed as part of a &lt;strong&gt;regional microservice stamp&lt;/strong&gt;. This includes -&#10;&lt;ul&gt;&#10;&lt;li&gt;An Azure Key Vault&lt;/li&gt;&#10;&lt;li&gt;The resources required to deploy an Azure Function (App Service Plan, Storage Account and Azure Function App) in consumption mode.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This first blog post will focus on the ARM Template design for the &lt;strong&gt;core regional resources&lt;/strong&gt;, particularly, the API Management tier.&lt;/p&gt;</description></item><item><title>Using Azure DevOps REST APIs to automatically create Team Iterations</title><link>https://chrisreddington.com/blog/azure-devops-team-iterations-script/</link><pubDate>Sun, 16 Jun 2019 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-devops-team-iterations-script/</guid><description>&lt;p&gt;Consider this scenario. You are managing a software project using Azure DevOps, and you have multiple teams working towards a common cadence. Perhaps that cadence is managed by a central team. To gain the most value from your sprint planning, you would need to associate the iterations from the project level with each individual team.&lt;/p&gt;&#10;&lt;p&gt;This is a scenario that I have for my fictitious Theatreers project, but also a scenario I encountered recently with a colleague. I have been helping them setup an Azure DevOps project to track the development of IP and collateral, so that they can more accurately forecast what they expect to land and show the value being delivered by the team.&lt;/p&gt;</description></item><item><title>Azure Scaffold - Governance Recommendations</title><link>https://chrisreddington.com/blog/azure-scaffold-governance-recommendations/</link><pubDate>Sat, 25 Feb 2017 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/azure-scaffold-governance-recommendations/</guid><description>&lt;p&gt;The topic seems to have come up a few times over the past few weeks, so I wanted to post a short, sharp blog about it!&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;How should I structure my Azure Subscription Hierarchy?&lt;/em&gt;&lt;br&gt;&#10;There is no &amp;ldquo;one right way&amp;rdquo; to answer this question. Your best bet is to first familiarise yourself with the &lt;a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-subscription-governance"&gt;Azure enterprise scaffold - prescriptive subscription governance&lt;/a&gt; documentation.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;How do you currently approach this in your team/organisation?&lt;/li&gt;&#10;&lt;li&gt;Using the Azure enterprise scaffold documentation, what approach would fit best with your team/group?&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The Azure Scaffold documentation provides guidance around Subscription Hierarchy, Role Based Access Control, Azure Policies, Resource Tags / Locks and more.&lt;/p&gt;</description></item><item><title>Are you thinking of scalability in your cloud application?</title><link>https://chrisreddington.com/blog/are-you-thinking-of-scalability-in-your-cloud-application/</link><pubDate>Thu, 29 Sep 2016 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/are-you-thinking-of-scalability-in-your-cloud-application/</guid><description>&lt;p&gt;Scalability is one of the common areas where I have seen common misconceptions, when customers begin building on the platform.&lt;/p&gt;&#10;&lt;p&gt;But before we jump into that topic, let&amp;rsquo;s first revisit the three main cloud operating models or paradigms:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Infrastructure as a Service (IaaS) - Think of this as &amp;ldquo;Hosting&amp;rdquo; your application. The clue is in the term &amp;ldquo;Infrastructure&amp;rdquo;, you are very much getting a Virtual Machine - So are responsible for the Operating System, Network Connectivity, etc.&lt;/p&gt;</description></item><item><title>An Introduction to Azure Functions</title><link>https://chrisreddington.com/blog/introduction-to-azure-functions/</link><pubDate>Mon, 12 Sep 2016 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/introduction-to-azure-functions/</guid><description>&lt;p&gt;If you have been keeping up to date with the latest and greatest in Azure Services (yes, I know there are quite a few!), you may have heard of a new service called Azure Functions.&lt;/p&gt;&#10;&lt;p&gt;Azure Functions is an event-driven Platform as a Service capability, helping you to execute code upon the occurrence of a particular event. It is currently in preview, though already has a lot of potential.&lt;/p&gt;&#10;&lt;p&gt;If you read my recent blog on Logic Apps, you may be thinking that this sounds somewhat familiar to Logic Apps. I agree, though there is a subtle difference. Quoting a &lt;a href="https://blogs.msdn.microsoft.com/azuredev/2016/04/07/azure-content-spotlight-azure-functions/"&gt;blog post from chilberto&lt;/a&gt;, Azure Functions is &lt;em&gt;code&lt;/em&gt; being triggered by an event, whereas LogicApps is a &lt;em&gt;workflow&lt;/em&gt; being triggered by an event.&lt;/p&gt;</description></item><item><title>DigiCert Certificate Management through Azure Key Vault</title><link>https://chrisreddington.com/blog/digicert-certificate-management-through-azure-keyvault/</link><pubDate>Mon, 12 Sep 2016 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/digicert-certificate-management-through-azure-keyvault/</guid><description>&lt;p&gt;Azure Key Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. It streamlines the key management process, enabling you to maintain control of keys that access and encrypt your data. Developers can create keys for development and testing in minutes, and then seamlessly migrate them to production keys. Security administrators can grant (and revoke) permission to keys, as needed.&lt;/p&gt;&#10;&lt;p&gt;When designing a solution, you want to be sure that your communications are secure and that your users can trust your application. Typically, SSL certificates can be useful for this purpose.&lt;/p&gt;</description></item><item><title>Integration Platform as a Service: Logic Apps</title><link>https://chrisreddington.com/blog/integration-platform-as-a-service-logic-apps/</link><pubDate>Mon, 12 Sep 2016 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/integration-platform-as-a-service-logic-apps/</guid><description>&lt;p&gt;In case you had not already heard, &lt;a href="https://azure.microsoft.com/en-us/blog/announcing-azure-logic-apps-general-availability/"&gt;Logic Apps have now reached general availability on Azure&lt;/a&gt; (or read &lt;a href="https://blogs.msdn.microsoft.com/logicapps/2016/07/27/azure-logic-apps-reaches-general-availability"&gt;an MSDN article by Jeff Hollan&lt;/a&gt; on the topic).&lt;/p&gt;&#10;&lt;h2 id="what-are-logic-apps"&gt;What are Logic Apps?&lt;/h2&gt;&#10;&lt;p&gt;Logic Apps enable integration points primarily between Software as a Service (SaaS) offerings, and can be easily configured through a User Interface, available on the Azure Portal. This integration is facilitated by using &lt;a href="https://azure.microsoft.com/en-gb/documentation/articles/apis-list/"&gt;a series of connectors&lt;/a&gt;, which are focused around &lt;a href="https://blogs.msdn.microsoft.com/logicapps/2016/06/30/public-preview-of-logic-apps-enteprise-integration-pack/"&gt;enterprise integration&lt;/a&gt; (in Public Preview at time of writing) and SaaS applications such as SalesForce, Twilio, Office 365, Twitter and more (though it&amp;rsquo;s worth noting that some of these are in beta!)&lt;/p&gt;</description></item><item><title>A few useful Azure Resources</title><link>https://chrisreddington.com/blog/a-few-useful-azure-resources/</link><pubDate>Sat, 03 Sep 2016 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/a-few-useful-azure-resources/</guid><description>&lt;p&gt;Over the past few weeks, I have been working on a number of projects relating to Azure.&lt;/p&gt;&#10;&lt;p&gt;The usual theme has crept up, around recommended practices, and where to go for documentation. There are a couple of great resources to be aware of:&lt;/p&gt;&#10;&lt;p&gt;Azure Best Practice Checklists and Guidance&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;There are a number of best practice checklists available on the Azure.com site. Navigate to the Documentation Tab, and find the Best Practice subsection. You can find a number of different checklists, to use against your own solution!&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Azure Cloud Design Practices Infographic&lt;/p&gt;</description></item><item><title>Approaching Resilience in Azure Solutions</title><link>https://chrisreddington.com/blog/approaching-resilience-in-azure-solutions/</link><pubDate>Fri, 26 Aug 2016 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/approaching-resilience-in-azure-solutions/</guid><description>&lt;p&gt;I mentioned in &lt;a href="https://www.christianreddington.co.uk/building-solutions-in-the-cloud/"&gt;Building Solutions in the Cloud&lt;/a&gt; that I would be writing a series of blog posts on the areas of risk that I have seen since I have been providing guidance around Azure. In this post, I will provide some thoughts on how you can consider resilience within the context of your own solution or application.&lt;/p&gt;&#10;&lt;p&gt;In my previous blog post, I kept banging on about the word &amp;ldquo;Context&amp;rdquo;. Guess what, I&amp;rsquo;m going to bring it up again! It is very important when designing a cloud service.&lt;/p&gt;</description></item><item><title>Building Solutions in the Cloud</title><link>https://chrisreddington.com/blog/building-solutions-in-the-cloud/</link><pubDate>Thu, 04 Aug 2016 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/building-solutions-in-the-cloud/</guid><description>&lt;p&gt;By now, we should be aware of the benefits that the cloud can bring to any individual or organisation. There are plenty of case studies, talking about the scalable, flexible and economic benefits (See &lt;a href="https://azure.microsoft.com/en-gb/case-studies/"&gt;Azure&lt;/a&gt;, &lt;a href="https://aws.amazon.com/solutions/case-studies/"&gt;AWS&lt;/a&gt; or &lt;a href="https://cloud.google.com/customers/"&gt;Google&lt;/a&gt; for more information).&lt;/p&gt;&#10;&lt;p&gt;Companies see the cloud as a differentiator, and utilise it to disrupt and innovate in their respective markets. &lt;a href="http://www.gartner.com/newsroom/id/3188817"&gt;Gartner predicts&lt;/a&gt; that in 2016 the total public cloud market is due to increase by 16%.&lt;/p&gt;</description></item><item><title>System.out.println('Hello World');</title><link>https://chrisreddington.com/blog/hello-world/</link><pubDate>Mon, 04 Jul 2016 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/blog/hello-world/</guid><description>&lt;p&gt;Surely, a &amp;ldquo;Hello World&amp;rdquo; post is a right of passage for technical bloggers?&lt;/p&gt;&#10;&lt;p&gt;Welcome to my blog, and of course - My first blog post! But first, who am I? I&amp;rsquo;m Christian Reddington (in case you couldn&amp;rsquo;t tell by the domain name, or site title!) - and I&amp;rsquo;m a technology enthusiast (Read: Geek/Nerd, delete as appropriate). I have a development background and have most recently been involved within Microsoft Azure projects lately.&lt;/p&gt;</description></item></channel></rss>