<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Code it Yourself</title><link>https://carlos.mendible.com/</link><description>Recent content on Code it Yourself</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Carlos Mendible</copyright><lastBuildDate>Tue, 18 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://carlos.mendible.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Azure Quick Review (azqr) v4.0.0: What You Need to Know</title><link>https://carlos.mendible.com/2026/08/18/azure-quick-review-azqr-v4.0.0-what-you-need-to-know/</link><pubDate>Tue, 18 Aug 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/08/18/azure-quick-review-azqr-v4.0.0-what-you-need-to-know/</guid><description>&lt;p>&lt;a href="https://github.com/Azure/azqr" target="_blank" rel="noreferrer">Azure Quick Review (azqr)&lt;/a> v4.0.0 is now available. This release expands azqr beyond best-practice assessments with new tools for VM sizing, Service Health analysis, SQL Server lifecycle management, and region selection.&lt;/p>
&lt;p>It also includes breaking changes, so if you are upgrading from v3.x, review your scripts and automation before replacing the binary.&lt;/p></description></item><item><title>Find Alternative Azure VM SKUs with azqr</title><link>https://carlos.mendible.com/2026/07/29/find-alternative-azure-vm-skus-with-azqr/</link><pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/07/29/find-alternative-azure-vm-skus-with-azqr/</guid><description>&lt;p>Running an Azure VM on an older SKU generation, hitting quota limits, or simply looking for an alternative size? The new &lt;code>alternative-vm-sku&lt;/code> command in &lt;a href="https://github.com/azure/azqr" target="_blank" rel="noreferrer">Azure Quick Review (azqr)&lt;/a> makes it trivial to discover compatible alternatives for any Azure VM SKU ranked by a multi-factor compatibility score.&lt;/p>
&lt;blockquote>&lt;p>Whether you&amp;rsquo;re modernizing workloads, responding to quota constraints, or optimizing costs, having a ranked list of compatible SKU alternatives removes the guesswork from VM size selection.&lt;/p></description></item><item><title>Identify SQL Server EOL &amp; ESU Costs with azqr</title><link>https://carlos.mendible.com/2026/07/23/identify-sql-server-eol-esu-costs-with-azqr/</link><pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/07/23/identify-sql-server-eol-esu-costs-with-azqr/</guid><description>&lt;p>Running SQL Server past its end-of-life date exposes your organization to &lt;strong>unpatched security vulnerabilities and growing Extended Security Update (ESU) costs&lt;/strong>. Understanding exactly which instances are affected — and what it could cost you — is the first step toward a sound modernization strategy.&lt;/p>
&lt;p>This post introduces the &lt;a href="https://github.com/azure/azqr" target="_blank" rel="noreferrer">Azure Quick Review&lt;/a> &lt;code>sql-eol&lt;/code> plugin (formerly &lt;code>sql-esu&lt;/code>), which scans both Arc-enabled SQL Servers and Azure SQL VMs, estimates your possible ESU spend, and recommends migration paths to Azure SQL Managed Instance (SQL MI).&lt;/p></description></item><item><title>AKS: Mount Versioned Content as OCI Image Volumes</title><link>https://carlos.mendible.com/2026/06/04/aks-mount-versioned-content-as-oci-image-volumes/</link><pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/06/04/aks-mount-versioned-content-as-oci-image-volumes/</guid><description>&lt;p>Kubernetes 1.36 graduated &lt;strong>image volumes&lt;/strong> to stable. This feature lets the kubelet pull any OCI artifact from a registry and mount its filesystem directly into pods as a &lt;strong>read-only volume&lt;/strong> — no init containers, no &lt;code>emptyDir&lt;/code> copies, no custom CSI drivers. In this post I&amp;rsquo;ll walk through a complete example: packaging versioned project content as a scratch-based OCI image and serving it from a Go HTTP API running on AKS.&lt;/p></description></item><item><title>AKS NAP: ZRS Disk PV Zone Fix with a Mutating Admission Webhook</title><link>https://carlos.mendible.com/2026/05/11/aks-nap-zrs-disk-pv-zone-fix-with-a-mutating-admission-webhook/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/05/11/aks-nap-zrs-disk-pv-zone-fix-with-a-mutating-admission-webhook/</guid><description>&lt;p>If you are running AKS with Node Auto Provisioning (NAP/Karpenter) and using Azure Disk ZRS (Zone-Redundant Storage) Persistent Volumes with &lt;code>volumeBindingMode: Immediate&lt;/code>, you may have noticed that pods get stuck in &lt;code>Pending&lt;/code> state. In this post, I&amp;rsquo;ll show you a &lt;strong>temporary workaround&lt;/strong> using a Kubernetes mutating admission webhook that fixes this scheduling issue.&lt;/p></description></item><item><title>GHQR: GitHub Quick Review</title><link>https://carlos.mendible.com/2026/04/28/ghqr-github-quick-review/</link><pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/04/28/ghqr-github-quick-review/</guid><description>&lt;p>If you are looking for a way to quickly assess the configuration of your GitHub organizations and repositories, you might want to try &lt;a href="https://github.com/microsoft/ghqr" target="_blank" rel="noreferrer">GitHub Quick Review (ghqr)&lt;/a>: a CLI tool that scans your GitHub enterprises, organizations, and repositories and generates a detailed report with findings and recommendations based on the &lt;a href="https://wellarchitected.github.com" target="_blank" rel="noreferrer">GitHub Well-Architected Framework&lt;/a>.&lt;/p></description></item><item><title>Azure Batch with AlmaLinux and Docker</title><link>https://carlos.mendible.com/2026/02/17/azure-batch-with-almalinux-and-docker/</link><pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/02/17/azure-batch-with-almalinux-and-docker/</guid><description>&lt;p>In this post, I&amp;rsquo;ll show you how to deploy an Azure Batch pool running AlmaLinux 9 with Docker CE using Terraform. This is particularly useful when you need to run containerized workloads on Azure Batch but want to use that specific Linux distribution.&lt;/p>
&lt;blockquote>&lt;p>Azure Batch pool allocation with AlmaLinux requires a workaround since native container tasks are not supported with this image.&lt;/p></description></item><item><title>AKS: Azure Container Storage with local NVMe using Terraform</title><link>https://carlos.mendible.com/2026/02/16/aks-azure-container-storage-with-local-nvme-using-terraform/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/02/16/aks-azure-container-storage-with-local-nvme-using-terraform/</guid><description>&lt;p>Let&amp;rsquo;s learn how to deploy an Azure Kubernetes Service (AKS) cluster with Azure Container Storage enabled using Terraform, leveraging local NVMe disks for high-performance storage.&lt;/p>
&lt;blockquote>&lt;p>Azure Container Storage is a cloud-based volume management, deployment, and orchestration service built natively for containers. It integrates with Kubernetes so you can dynamically provision persistent volumes for stateful applications.&lt;/p></description></item><item><title>Azure Quick Review (azqr) 3.0: Breaking Changes and Migration Guide</title><link>https://carlos.mendible.com/2026/02/16/azure-quick-review-azqr-3.0-breaking-changes-and-migration-guide/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/02/16/azure-quick-review-azqr-3.0-breaking-changes-and-migration-guide/</guid><description>&lt;p>&lt;a href="https://github.com/azure/azqr" target="_blank" rel="noreferrer">Azure Quick Review (azqr)&lt;/a> version 3.0.0 is here with a major architectural refactoring. While the core functionality remains the same, the CLI has been redesigned to provide better flexibility and control over scan stages.&lt;/p>
&lt;blockquote>&lt;p>If you have scripts or automation using azqr, this post will help you migrate to the new version.&lt;/p></description></item><item><title>Refactoring Azure Quick Review with GitHub Copilot</title><link>https://carlos.mendible.com/2026/02/07/refactoring-azure-quick-review-with-github-copilot/</link><pubDate>Sat, 07 Feb 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/02/07/refactoring-azure-quick-review-with-github-copilot/</guid><description>&lt;p>In this post, I&amp;rsquo;ll walk you through the major refactoring of &lt;a href="https://github.com/azure/azqr" target="_blank" rel="noreferrer">Azure Quick Review (azqr)&lt;/a>, where I used &lt;strong>GitHub Copilot&amp;rsquo;s plan mode and agent mode&lt;/strong> while supervising every change. My role was purely architectural: I defined what needed to change, reviewed every proposal, and guided the AI through the process.&lt;/p>

&lt;h2 class="relative group">TL;DR
 &lt;div id="tldr" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tldr" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>I refactored &lt;a href="https://github.com/azure/azqr" target="_blank" rel="noreferrer">Azure Quick Review (azqr)&lt;/a> without writing a single line of code by using GitHub Copilot’s plan mode (to design the architecture) and agent mode (to implement it). The refactor eliminated massive technical debt, 72 scanner packages, 72 command files, hundreds of ARM calls and replaced them with a centralized scanner registry, batched Azure Resource Graph queries, a modular pipeline, dynamic command generation, and unified throttling policy.&lt;/p></description></item><item><title>Diagnose Azure OpenAI Throttling with azqr</title><link>https://carlos.mendible.com/2026/02/03/diagnose-azure-openai-throttling-with-azqr/</link><pubDate>Tue, 03 Feb 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/02/03/diagnose-azure-openai-throttling-with-azqr/</guid><description>&lt;p>As organizations scale their Azure OpenAI workloads, &lt;strong>throttling (HTTP 429 errors) becomes a critical operational concern&lt;/strong>. These errors indicate that your requests exceed the provisioned capacity, leading to degraded user experience, failed completions, and potential revenue loss.&lt;/p>
&lt;p>This post introduces the &lt;a href="https://github.com/azure/azqr" target="_blank" rel="noreferrer">Azure Quick Review&lt;/a> &lt;code>openai-throttling&lt;/code> plugin, which helps you identify throttling patterns, analyze affected deployments, and make data-driven decisions for capacity planning.&lt;/p></description></item><item><title>Understanding Azure Zone Mappings with azqr</title><link>https://carlos.mendible.com/2026/02/01/understanding-azure-zone-mappings-with-azqr/</link><pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2026/02/01/understanding-azure-zone-mappings-with-azqr/</guid><description>&lt;p>Azure availability zones are critical for high availability and disaster recovery. However, &lt;strong>zone numbers (1, 2, 3) are logical abstractions—their physical datacenter mappings vary across every subscription&lt;/strong>. Your zone-redundant deployment might actually share infrastructure with your DR environment because different subscriptions map zones differently.&lt;/p>
&lt;p>This post explores the &lt;a href="https://github.com/azure/azqr" target="_blank" rel="noreferrer">Azure Quick Review&lt;/a> &lt;code>zone-mapping&lt;/code> plugin and why zone mappings matter for high availability, disaster recovery, and cross-subscription architectures.&lt;/p></description></item><item><title>Microservicios con IA: el poder de los agentes Dapr</title><link>https://carlos.mendible.com/events/2025/06/19/microservicios-ia-agentes-dapr/</link><pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2025/06/19/microservicios-ia-agentes-dapr/</guid><description>&lt;p>Talk on how to leverage Dapr agents to build AI-powered microservices. Presented at dotNET 2025 with Manuel Sánchez.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/SoSUOFGMVSo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Deploy Azure Foundry and Bing grounding with Terraform</title><link>https://carlos.mendible.com/2025/05/20/deploy-azure-foundry-and-bing-grounding-with-terraform/</link><pubDate>Tue, 20 May 2025 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2025/05/20/deploy-azure-foundry-and-bing-grounding-with-terraform/</guid><description>&lt;p>In this post, I&amp;rsquo;ll show you how to deploy Azure AI Foundry connected to Bing Grounding using Terraform. This setup enables you to leverage Azure&amp;rsquo;s powerful AI capabilities and enrich them with Bing&amp;rsquo;s search data, all managed as code for repeatability and automation.&lt;/p>

&lt;h2 class="relative group">Prerequisites
 &lt;div id="prerequisites" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#prerequisites" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Before you begin, make sure you have:&lt;/p></description></item><item><title>AKS BYO VNET: Enabling NAP with Terraform</title><link>https://carlos.mendible.com/2025/03/01/aks-byo-vnet-enabling-nap-with-terraform/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2025/03/01/aks-byo-vnet-enabling-nap-with-terraform/</guid><description>&lt;p>Last year I wrote a post about &lt;a href="https://carlos.mendible.com/2024/12/09/aks-enabling-nap-with-terraform/" target="_blank" rel="noreferrer">Enabling NAP with Terraform&lt;/a>. While the post is still valid, I wanted to write about an scenario that many of you might be facing: Enabling NAP when bringing your own VNET.&lt;/p>
&lt;p>So let&amp;rsquo;s learn how to create an AKS cluster and enable Node Autoprovisioning (NAP) with Terraform when bringing your own VNET.&lt;/p></description></item><item><title>Custom Evaluators with AI Foundry</title><link>https://carlos.mendible.com/2025/02/27/custom-evaluators-with-ai-foundry/</link><pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2025/02/27/custom-evaluators-with-ai-foundry/</guid><description>&lt;p>In this post, we will explore how to create custom evaluators to evaluate your Generative AI application locally with the Azure AI Evaluation SDK.&lt;/p>
&lt;blockquote>&lt;p>The results of the evaluation can be uploaded to your Azure AI Foundry project where you can visualize and track the results.&lt;/p>&lt;/blockquote>
&lt;h2 class="relative group">Prerequisites
 &lt;div id="prerequisites" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#prerequisites" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Before you begin, ensure you have the following:&lt;/p></description></item><item><title>Installing Chaos Mesh on AKS with Terraform</title><link>https://carlos.mendible.com/2025/02/16/installing-chaos-mesh-on-aks-with-terraform/</link><pubDate>Sun, 16 Feb 2025 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2025/02/16/installing-chaos-mesh-on-aks-with-terraform/</guid><description>&lt;p>In this post, we will go through the steps required to install &lt;a href="https://chaos-mesh.org/" target="_blank" rel="noreferrer">Chaos Mesh&lt;/a> on an Azure Kubernetes Service (AKS) cluster using Terraform.&lt;/p>
&lt;p>&lt;a href="https://chaos-mesh.org/" target="_blank" rel="noreferrer">Chaos Mesh&lt;/a> is a cloud-native Chaos Engineering platform that orchestrates chaos on Kubernetes environments. It is designed to be a scalable and extensible platform for chaos engineering.&lt;/p>
&lt;blockquote>&lt;p>&lt;a href="https://chaos-mesh.org/" target="_blank" rel="noreferrer">Chaos Mesh&lt;/a> is required if you want to use &lt;a href="https://learn.microsoft.com/en-us/azure/chaos-studio/chaos-studio-overview" target="_blank" rel="noreferrer">Azure Chaos Studio&lt;/a> to run chaos experiments on your AKS clusters.&lt;/p></description></item><item><title>Installing kro on AKS with Terraform</title><link>https://carlos.mendible.com/2025/02/09/installing-kro-on-aks-with-terraform/</link><pubDate>Sun, 09 Feb 2025 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2025/02/09/installing-kro-on-aks-with-terraform/</guid><description>&lt;p>In this post, we will go through the steps required to install Kube Resource Orchestrator (&lt;code>kro&lt;/code>) on an Azure Kubernetes Service (AKS) cluster using Terraform. &lt;code>kro&lt;/code> is an open-source project that enables you to define custom Kubernetes APIs using simple and straightforward configuration.&lt;/p>
&lt;blockquote>&lt;p>Defining custom Kubernetes APIs is becoming essential to simplify the developer experience and increase productivity.&lt;/p></description></item><item><title>Installing Azure Service Operator on AKS with Terraform</title><link>https://carlos.mendible.com/2025/02/02/installing-azure-service-operator-on-aks-with-terraform/</link><pubDate>Sun, 02 Feb 2025 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2025/02/02/installing-azure-service-operator-on-aks-with-terraform/</guid><description>&lt;p>In this post, we will go through the steps required to install the Azure Service Operator (ASO) on an Azure Kubernetes Service (AKS) cluster using Terraform. The Azure Service Operator is an open-source project that enables you to provision and manage Azure resources using Kubernetes custom resources.&lt;/p>
&lt;p>To install the Azure Service Operator on an AKS cluster, follow these steps:&lt;/p></description></item><item><title>Automate Azure Quick Review with GitHub Actions</title><link>https://carlos.mendible.com/2025/01/19/automate-azure-quick-review-with-github-actions/</link><pubDate>Sun, 19 Jan 2025 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2025/01/19/automate-azure-quick-review-with-github-actions/</guid><description>&lt;p>Today we will walk through a GitHub Actions workflow that automates the Azure Quick Review (azqr) scan process. This workflow is designed to run on a schedule, on push events to the main branch, and on pull requests to the main branch.&lt;/p>

&lt;h2 class="relative group">Prerequisites
 &lt;div id="prerequisites" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#prerequisites" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Before you start, make sure you have the following prerequisites in place:&lt;/p></description></item><item><title>tinyproxy: a lightweight HTTP/HTTPS proxy server</title><link>https://carlos.mendible.com/2025/01/18/tinyproxy-a-lightweight-http/https-proxy-server/</link><pubDate>Sat, 18 Jan 2025 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2025/01/18/tinyproxy-a-lightweight-http/https-proxy-server/</guid><description>&lt;p>Tinyproxy is a lightweight HTTP/HTTPS proxy server designed to be fast and small. It is useful for scenarios where you need to set up a proxy server quickly and easily.&lt;/p>
&lt;p>Recently I used it to check what happens when a set of Azure domains are blocked (i.e. management.azure.com) and it worked like a charm.&lt;/p></description></item><item><title>kubeadm: change the control plane IP</title><link>https://carlos.mendible.com/2025/01/12/kubeadm-change-the-control-plane-ip/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2025/01/12/kubeadm-change-the-control-plane-ip/</guid><description>&lt;p>In this post, we will go through the steps required to change the control plane IP of a Kubernetes cluster managed by kubeadm. This can be useful in scenarios where the IP address of the control plane node needs to be updated due to network changes or other reasons.&lt;/p>
&lt;p>To change the control plane IP of your Kubernetes cluster, follow these steps:&lt;/p></description></item><item><title>AKS: Static Egress Gateway with Terraform</title><link>https://carlos.mendible.com/2024/12/25/aks-static-egress-gateway-with-terraform/</link><pubDate>Wed, 25 Dec 2024 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2024/12/25/aks-static-egress-gateway-with-terraform/</guid><description>&lt;p>Let&amp;rsquo;s learn how to create an AKS cluster and enable Static Egress Gateway with Terraform.&lt;/p>
&lt;p>Static Egress Gateway in AKS provides a solution for configuring fixed source IP addresses for outbound traffic from your AKS workloads. This means you can use a specific range for egress traffic from specific workloads, whcih can be useful for scenarios like whitelisting IP addresses in a firewall.&lt;/p></description></item><item><title>Deploy Flex Consumption Azure Function with VNet Integration using Terraform</title><link>https://carlos.mendible.com/2024/12/12/deploy-flex-consumption-azure-function-with-vnet-integration-using-terraform/</link><pubDate>Thu, 12 Dec 2024 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2024/12/12/deploy-flex-consumption-azure-function-with-vnet-integration-using-terraform/</guid><description>&lt;p>The Flex Consumption plan for Azure Functions is a new hosting option that provides more flexibility and cost efficiency for running serverless applications. Unlike the traditional Consumption plan, which charges based on the number of executions and execution time, the Flex Consumption plan allows you to specify the maximum number of instances and memory allocation for your function app. This plan is ideal for scenarios where you need predictable performance and cost, as it enables you to control the scaling behavior of your functions more precisely.&lt;/p></description></item><item><title>AKS: Enabling NAP with Terraform</title><link>https://carlos.mendible.com/2024/12/09/aks-enabling-nap-with-terraform/</link><pubDate>Mon, 09 Dec 2024 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2024/12/09/aks-enabling-nap-with-terraform/</guid><description>&lt;p>Let&amp;rsquo;s learn how to create an AKS cluster and enable Node Autoprovisioning (NAP) with Terraform.&lt;/p>
&lt;blockquote>&lt;p>Note: Since at the time of writing NAP is a preview feature, we will use the &lt;a href="https://registry.terraform.io/providers/azure/azapi/latest/docs" target="_blank" rel="noreferrer">azapi&lt;/a> provider to enable it.&lt;/p>&lt;/blockquote>
&lt;h2 class="relative group">Creating an AKS cluster and enable Node Autoprovisioning (NAP)
 &lt;div id="creating-an-aks-cluster-and-enable-node-autoprovisioning-nap" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#creating-an-aks-cluster-and-enable-node-autoprovisioning-nap" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Create a file called &lt;code>main.tf&lt;/code> with the following contents:&lt;/p></description></item><item><title>AI Tour: LLMOps con enfoque en el código del prototipo a la producción</title><link>https://carlos.mendible.com/events/2024/10/22/aitour-llmops/</link><pubDate>Tue, 22 Oct 2024 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2024/10/22/aitour-llmops/</guid><description>&lt;p>A talk on LLMOps and how to use Prompty to experiment, build and test a prototype and then deploy it to production.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/KNuNzvx9qr0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Exploring AKS Automatic</title><link>https://carlos.mendible.com/2024/07/15/exploring-aks-automatic/</link><pubDate>Mon, 15 Jul 2024 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2024/07/15/exploring-aks-automatic/</guid><description>&lt;p>Azure Kubernetes Service (AKS) Automatic is a new SKU that simplifies the management of your AKS clusters. With this SKU, Azure ensures that your cluster is production ready with built-in best practice and a great code to kubernetes experience.&lt;/p>

&lt;h2 class="relative group">Creating an AKS Automatic cluster
 &lt;div id="creating-an-aks-automatic-cluster" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#creating-an-aks-automatic-cluster" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Creating an AKS cluster with the Automatic SKU is as simple as running the following Azure CLI command:&lt;/p></description></item><item><title>Interactuando con la IA en el mundo real</title><link>https://carlos.mendible.com/events/2024/06/02/interactuando-ia-mundo-real/</link><pubDate>Tue, 25 Jun 2024 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2024/06/02/interactuando-ia-mundo-real/</guid><description>&lt;p>Talk on how to use .NET, Azure Container Apps and Dapr to build modern and intellignet applications.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Kh97kGAQwRA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>AKS: Login with Azure CLI and Workload Identity</title><link>https://carlos.mendible.com/2023/09/04/aks-login-with-azure-cli-and-workload-identity/</link><pubDate>Mon, 04 Sep 2023 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2023/09/04/aks-login-with-azure-cli-and-workload-identity/</guid><description>&lt;p>In this post I&amp;rsquo;ll show you how to setup Workload Identity in an AKS cluster using terraform and then deploy a pod with Azure CLI that you will use to login to Azure.&lt;/p>
&lt;p>&lt;strong>Long story short&lt;/strong>: once workload identity is configured and enabled, kubernetes will inject 3 environment variables needed to login with Azure CLI:&lt;/p></description></item><item><title>AZQR: Azure Quick Review</title><link>https://carlos.mendible.com/2023/08/27/azqr-azure-quick-review/</link><pubDate>Sun, 27 Aug 2023 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2023/08/27/azqr-azure-quick-review/</guid><description>&lt;h2 class="relative group">What is &lt;a href="https://github.com/azure/azqr" target="_blank" rel="noreferrer">Azure Quick Review&lt;/a>?
 &lt;div id="what-is-azure-quick-review" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-is-azure-quick-review" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>If you are looking for a way to quickly assess the status and configuration of your Azure resources, you might want to try &lt;a href="https://github.com/azure/azqr" target="_blank" rel="noreferrer">Azure Quick Review (azqr)&lt;/a>: a command-line interface (CLI) tool that scans your Azure resources and generates an Excel report with detailed information and recommendations based on Azure&amp;rsquo;s best practices.&lt;/p></description></item><item><title>Modernizing your applications .NET with containers and serverless</title><link>https://carlos.mendible.com/events/2023/07/07/modernizing-applications-dotnet-containers-serverless/</link><pubDate>Fri, 07 Jul 2023 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2023/07/07/modernizing-applications-dotnet-containers-serverless/</guid><description>&lt;p>Use .NET, Azure Container Apps and Dapr to build modern and intellignet applications.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Useiwy-LpWQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Azure Function HTTP Trigger with Golang</title><link>https://carlos.mendible.com/2023/03/26/azure-function-http-trigger-with-golang/</link><pubDate>Sun, 26 Mar 2023 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2023/03/26/azure-function-http-trigger-with-golang/</guid><description>&lt;p>Back in 2017 I wrote a post about how to &lt;a href="https://carlos.mendible.com/2017/12/28/run-a-precompiled-.net-core-azure-function-in-a-container/" >run a precompiled .NET Core Azure Function in a container&lt;/a>. Fast forward to 2023 and, as some of you know, I&amp;rsquo;ve been playing with &lt;a href="https://golang.org/" target="_blank" rel="noreferrer">Golang&lt;/a> for a while now so I thought it was about time to translate the .NET code and make it work with Golang.&lt;/p></description></item><item><title>Create, Build, and Run .NET 7 WASM apps</title><link>https://carlos.mendible.com/events/2022/09/17/create-build-run-dotnet7-wasm-apps/</link><pubDate>Sat, 17 Sep 2022 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2022/09/17/create-build-run-dotnet7-wasm-apps/</guid><description>&lt;p>In this talk, we’ll look at how to create, build and run a server-side WebAssembly app in C#.&lt;/p>
&lt;p>Then we&amp;rsquo;ll push the resulting WASM binary to Azure Container Registry and run the app in Kubernetes!&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/GMBV5lkdf-M?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Meet Azure Container Apps</title><link>https://carlos.mendible.com/events/2022/05/07/meet-azure-container-apps/</link><pubDate>Sat, 07 May 2022 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2022/05/07/meet-azure-container-apps/</guid><description>&lt;p>After years talking about Kubernetes, Dapr and KEDA, it&amp;rsquo;s time to run our microservices and containerized applications on a true serverless platform: Azure Containers Apps.&lt;/p>
&lt;p>In this session you&amp;rsquo;ll learn:&lt;/p>
&lt;ul>
&lt;li>Basic concepts: environments, containers and revisions.&lt;/li>
&lt;li>The benefits of built-in support for Dapr &amp;amp; KEDA&lt;/li>
&lt;li>How to use managed identities.&lt;/li>
&lt;li>How to secure and monitor your platform&lt;/li>
&lt;/ul>
&lt;blockquote>&lt;p>Fast Forward the video to: 4:24:00&lt;/p></description></item><item><title>AKS: Simulate Spot Node Eviction</title><link>https://carlos.mendible.com/2022/03/20/aks-simulate-spot-node-eviction/</link><pubDate>Sun, 20 Mar 2022 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2022/03/20/aks-simulate-spot-node-eviction/</guid><description>&lt;p>When you deploy an Azure Kubernetes Service with a node pool composed by spot virtual machines, you are running a cluster with the risk of losing nodes based on the configuration you set.&lt;/p>
&lt;blockquote>&lt;p>Eviction may occur based on capacity or max price.&lt;/p>&lt;/blockquote>&lt;p>In this post I&amp;rsquo;ll show you how to deploy an AKS cluster with such configuration and simulate a node eviction. The exercise will help you understand the resiliency of your solution and how to query related events with log analytics.&lt;/p></description></item><item><title>AKS: Disable local accounts with Terraform</title><link>https://carlos.mendible.com/2022/01/25/aks-disable-local-accounts-with-terraform/</link><pubDate>Tue, 25 Jan 2022 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2022/01/25/aks-disable-local-accounts-with-terraform/</guid><description>&lt;p>When deploying an AKS cluster, even if you configure RBAC or AAD integration, local accounts will be enabled by default. This means that, given the right set of permitions, a user will be able to run the &lt;code>az get-credentials&lt;/code> command with the &lt;code>--admin&lt;/code> flag which will give you a non-audtibale access to the cluster.&lt;/p></description></item><item><title>Protect your Node.js or .NET API with Azure Active Directory</title><link>https://carlos.mendible.com/2022/01/18/protect-your-node.js-or-.net-api-with-azure-active-directory/</link><pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2022/01/18/protect-your-node.js-or-.net-api-with-azure-active-directory/</guid><description>&lt;p>One question I often get from by my customers is how to use Azure Active Directroy to protect their Node.js or .NET APIs.&lt;/p>
&lt;p>Every single time I answer by redirecting them to this amazing post (&lt;a href="https://www.returngis.net/2021/04/proteger-una-api-en-node-js-con-azure-active-directory/" target="_blank" rel="noreferrer">Proteger una API en Node.js con Azure Active Directory&lt;/a>), written in spanish, by my friend and peer Gisela Torres (&lt;a href="https://twitter.com/0gis0" target="_blank" rel="noreferrer">0gis0&lt;/a>).&lt;/p></description></item><item><title>Azure Database for MySQL Flexible Server: Failover Test</title><link>https://carlos.mendible.com/2021/11/28/azure-database-for-mysql-flexible-server-failover-test/</link><pubDate>Sun, 28 Nov 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/11/28/azure-database-for-mysql-flexible-server-failover-test/</guid><description>&lt;p>Azure Database for MySQL Flexible Server allows configuring high availability with automatic failover. With Zone-redundant HA your service has redundancy of infrastructure across multiple availability zones.&lt;/p>
&lt;p>Zone-redundant HA is preferred when you want to achieve the highest level of availability against any infrastructure failure in the availability zone and when latency across the availability zone is acceptable.&lt;/p></description></item><item><title>Azure Cache for Redis: Failover Test</title><link>https://carlos.mendible.com/2021/11/21/azure-cache-for-redis-failover-test/</link><pubDate>Sun, 21 Nov 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/11/21/azure-cache-for-redis-failover-test/</guid><description>&lt;p>Azure Cache for Redis supports zone redundancy in its Premium and Enterprise tiers. A zone-redundant cache runs on VMs spread across multiple Availability Zones. It provides higher resilience and availability.&lt;/p>
&lt;p>Today I&amp;rsquo;ll show hot to test the failover of a zone-redundant cache.&lt;/p>

&lt;h2 class="relative group">Deploy Azure Cache for Redis with availability zones
 &lt;div id="deploy-azure-cache-for-redis-with-availability-zones" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#deploy-azure-cache-for-redis-with-availability-zones" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">Create a main.tf file with the following content:
 &lt;div id="create-a-maintf-file-with-the-following-content" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-maintf-file-with-the-following-content" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-terraform" data-lang="terraform">&lt;span class="line">&lt;span class="cl">&lt;span class="nx">terraform&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">required_version&lt;/span> = &lt;span class="s2">&amp;#34;&amp;gt; 0.14&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">required_providers&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">azurerm&lt;/span> = &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">version&lt;/span> = &lt;span class="s2">&amp;#34;= 2.57.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">random&lt;/span> = &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">version&lt;/span> = &lt;span class="s2">&amp;#34;= 3.1.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">provider&lt;/span> &lt;span class="s2">&amp;#34;azurerm&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">features&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;span class="c1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Location of the services
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kr">variable&lt;/span> &lt;span class="s2">&amp;#34;location&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">default&lt;/span> = &lt;span class="s2">&amp;#34;west europe&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;span class="c1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Resource Group Name
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kr">variable&lt;/span> &lt;span class="s2">&amp;#34;resource_group&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">default&lt;/span> = &lt;span class="s2">&amp;#34;redis-failover&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;span class="c1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Name of the Redis cluster
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kr">variable&lt;/span> &lt;span class="s2">&amp;#34;redis_name&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">default&lt;/span> = &lt;span class="s2">&amp;#34;redis-failover&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">resource&lt;/span> &lt;span class="s2">&amp;#34;random_id&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;random&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">byte_length&lt;/span> = &lt;span class="m">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">resource&lt;/span> &lt;span class="s2">&amp;#34;azurerm_resource_group&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;rg&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">name&lt;/span> = &lt;span class="nb">var&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">resource_group&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">location&lt;/span> = &lt;span class="nb">var&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">location&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">resource&lt;/span> &lt;span class="s2">&amp;#34;azurerm_redis_cache&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;redis&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">name&lt;/span> = &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nb">var&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">redis_name&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">-&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nb">lower&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">random_id&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">random&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">hex&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">location&lt;/span> = &lt;span class="nx">azurerm_resource_group&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">rg&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">location&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">resource_group_name&lt;/span> = &lt;span class="nx">azurerm_resource_group&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">rg&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">name&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">capacity&lt;/span> = &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">family&lt;/span> = &lt;span class="s2">&amp;#34;P&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">sku_name&lt;/span> = &lt;span class="s2">&amp;#34;Premium&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">enable_non_ssl_port&lt;/span> = &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">minimum_tls_version&lt;/span> = &lt;span class="s2">&amp;#34;1.2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">redis_configuration&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">zones&lt;/span> = &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;2&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">resource&lt;/span> &lt;span class="s2">&amp;#34;azurerm_log_analytics_workspace&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;logs&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">name&lt;/span> = &lt;span class="s2">&amp;#34;redis-logs&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">location&lt;/span> = &lt;span class="nx">azurerm_resource_group&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">rg&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">location&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">resource_group_name&lt;/span> = &lt;span class="nx">azurerm_resource_group&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">rg&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">name&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">sku&lt;/span> = &lt;span class="s2">&amp;#34;PerGB2018&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">retention_in_days&lt;/span> = &lt;span class="m">30&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">resource&lt;/span> &lt;span class="s2">&amp;#34;azurerm_monitor_diagnostic_setting&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;monitor&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">name&lt;/span> = &lt;span class="nb">lower&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;extaudit-&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nb">var&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">redis_name&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">-diag&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">target_resource_id&lt;/span> = &lt;span class="nx">azurerm_redis_cache&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">redis&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">id&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">log_analytics_workspace_id&lt;/span> = &lt;span class="nx">azurerm_log_analytics_workspace&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">logs&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">id&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">metric&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">category&lt;/span> = &lt;span class="s2">&amp;#34;AllMetrics&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">retention_policy&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">enabled&lt;/span> = &lt;span class="kc">false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">log&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">category&lt;/span> = &lt;span class="s2">&amp;#34;ConnectedClientList&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">enabled&lt;/span> = &lt;span class="kc">false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">retention_policy&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">days&lt;/span> = &lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">enabled&lt;/span> = &lt;span class="kc">false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">lifecycle&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">ignore_changes&lt;/span> = &lt;span class="p">[&lt;/span>&lt;span class="nx">metric&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">output&lt;/span> &lt;span class="s2">&amp;#34;redis_name&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">value&lt;/span> = &lt;span class="nx">azurerm_redis_cache&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">redis&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">name&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">output&lt;/span> &lt;span class="s2">&amp;#34;redis_host_name&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">value&lt;/span> = &lt;span class="nx">azurerm_redis_cache&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">redis&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">hostname&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">output&lt;/span> &lt;span class="s2">&amp;#34;redis_primary_access_key&amp;#34;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">value&lt;/span> = &lt;span class="nx">azurerm_redis_cache&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">redis&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">primary_access_key&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">sensitive&lt;/span> = &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>&lt;strong>Note:&lt;/strong> the zones are specified: &lt;code>zones = [&amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;]&lt;/code>, making the cache zone-redundant.&lt;/p></description></item><item><title>Overcoming Event-driven Microservices challenges with Dapr</title><link>https://carlos.mendible.com/events/2021/11/18/big-things-conference/</link><pubDate>Thu, 18 Nov 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2021/11/18/big-things-conference/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/XiNX7Z4yGoE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>AKS: Resize Private Volume Claim to expand a Managed Premium Disk</title><link>https://carlos.mendible.com/2021/11/15/aks-resize-private-volume-claim-to-expand-a-managed-premium-disk/</link><pubDate>Mon, 15 Nov 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/11/15/aks-resize-private-volume-claim-to-expand-a-managed-premium-disk/</guid><description>&lt;p>If you deployed a private volume claim using the &lt;code>managed-premium&lt;/code> storage class, then ran out of space and now you are searching how to expand the disk to a larger disk, this is how you can do it from scratch:&lt;/p>
&lt;blockquote>&lt;p>&lt;code>manage-premium&lt;/code> storage class is a premium storage class that allows volume expansion: &lt;code>allowVolumeExpansion: true&lt;/code>.&lt;/p></description></item><item><title>AKS: Open Service Mesh Traffic Access Control</title><link>https://carlos.mendible.com/2021/11/09/aks-open-service-mesh-traffic-access-control/</link><pubDate>Tue, 09 Nov 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/11/09/aks-open-service-mesh-traffic-access-control/</guid><description>&lt;p>In my previous post &lt;a href="https://carlos.mendible.com/2021/11/08/aks-open-service-mesh-mtls/" >AKS: Open Service Mesh &amp;amp; mTLS&lt;/a>, I described how to deploy an AKS cluster with Open Service Mesh enabled, and how:&lt;/p>
&lt;ul>
&lt;li>Easy is to onboard applications onto the mesh by enabling automatic sidecar injection of Envoy proxy.&lt;/li>
&lt;li>OSM enables secure service to service communication.&lt;/li>
&lt;/ul>
&lt;p>This time I&amp;rsquo;ll show you that &lt;a href="https://openservicemesh.io/" target="_blank" rel="noreferrer">Open Service Mesh (OSM)&lt;/a> also provides a nice feature for controlling traffic between microservices: &lt;a href="https://github.com/servicemeshinterface/smi-spec/blob/main/apis/traffic-access/v1alpha3/traffic-access.md" target="_blank" rel="noreferrer">Traffic Access Control&lt;/a> based on the &lt;a href="https://github.com/servicemeshinterface/smi-spec" target="_blank" rel="noreferrer">SMI specifications&lt;/a>.&lt;/p></description></item><item><title>AKS: Open Service Mesh &amp; mTLS</title><link>https://carlos.mendible.com/2021/11/08/aks-open-service-mesh-mtls/</link><pubDate>Mon, 08 Nov 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/11/08/aks-open-service-mesh-mtls/</guid><description>&lt;p>&lt;a href="https://openservicemesh.io/" target="_blank" rel="noreferrer">Open Service Mesh (OSM)&lt;/a> is a lightweight and extensible cloud native service mesh, easy to install and configure and with features as mTLS to secure your microservice environments.&lt;/p>
&lt;p>Now that &lt;a href="https://openservicemesh.io/" target="_blank" rel="noreferrer">Open Service Mesh (OSM)&lt;/a> integration with Azure Kubernetes Service (AKS) is GA (Check the &lt;a href="https://techcommunity.microsoft.com/t5/apps-on-azure/open-service-mesh-osm-integration-with-azure-kubernetes-service/ba-p/2902151" target="_blank" rel="noreferrer">announcement&lt;/a>) I&amp;rsquo;ll show you not only to deploy it but also how to add your microservices to the mesh so communication between them is encrypted.&lt;/p></description></item><item><title>AKS: High Available Storage with Rook and Ceph</title><link>https://carlos.mendible.com/2021/10/23/aks-high-available-storage-with-rook-and-ceph/</link><pubDate>Sat, 23 Oct 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/10/23/aks-high-available-storage-with-rook-and-ceph/</guid><description>&lt;blockquote>&lt;p>Disclaimer: this is just a Proof of Concept.&lt;/p>&lt;/blockquote>&lt;p>If you deploy Azure Kubernetes Service clusters with availability zones, you&amp;rsquo;ll probaly need a high available storage solution.&lt;/p>
&lt;p>In such situation you may use Azure Files as an external storage solution. But what if you need something that performs better? Or something running inside your cluster?&lt;/p></description></item><item><title>AKS: Container Insights Pod Requests and Limits</title><link>https://carlos.mendible.com/2021/10/15/aks-container-insights-pod-requests-and-limits/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/10/15/aks-container-insights-pod-requests-and-limits/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to use &lt;a href="https://docs.microsoft.com/en-us/azure/azure-monitor/containers/container-insights-overview" target="_blank" rel="noreferrer">Container Insights&lt;/a> and Azure Monitor to check your AKS cluster for pods without requests and limits.&lt;/p>
&lt;p>You&amp;rsquo;ll need to use the following tables and fields:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>KubePodInventory&lt;/strong>: Table that stores kubernetes cluster&amp;rsquo;s Pod &amp;amp; container information
&lt;ul>
&lt;li>&lt;strong>ClusterName&lt;/strong>: ID of the kubernetes cluster from which the event was sourced&lt;/li>
&lt;li>&lt;strong>Computer&lt;/strong>: Computer/node name in the cluster that has this pod/container.&lt;/li>
&lt;li>&lt;strong>Namespace&lt;/strong>: Kubernetes Namespace for the pod/container&lt;/li>
&lt;li>&lt;strong>ContainerName&lt;/strong>:This is in poduid/containername format.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Perf&lt;/strong>: Performance counters from Windows and Linux agents that provide insight into the performance of hardware components operating systems and applications.
&lt;ul>
&lt;li>&lt;strong>ObjectName&lt;/strong>: Name of the performance object.&lt;/li>
&lt;li>&lt;strong>CounterName&lt;/strong>: Name of the performance counter.&lt;/li>
&lt;li>&lt;strong>CounterValue&lt;/strong>: The value of the counter&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>And take a close look at the following Objects and Counters:&lt;/p></description></item><item><title>Cloning your world with Azure &amp; Minecraft</title><link>https://carlos.mendible.com/events/2021/10/10/virtual_net_core_conf/</link><pubDate>Sun, 10 Oct 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2021/10/10/virtual_net_core_conf/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/rB0WeE0OiYM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Static website hosting in an Azure Storage Account protected with Private Endpoint</title><link>https://carlos.mendible.com/2021/09/17/static-website-hosting-in-an-azure-storage-account-protected-with-private-endpoint/</link><pubDate>Fri, 17 Sep 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/09/17/static-website-hosting-in-an-azure-storage-account-protected-with-private-endpoint/</guid><description>&lt;p>This post will show you how to deploy a Static Website on a Storage Account protected with Private Endpoint using Terraform:&lt;/p>

&lt;h2 class="relative group">Define the terraform providers to use
 &lt;div id="define-the-terraform-providers-to-use" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#define-the-terraform-providers-to-use" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Create a &lt;em>providers.tf&lt;/em> file with the following contents:&lt;/p>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="l">terraform {&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="l">required_version = &amp;#34;&amp;gt; 0.12&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="l">required_providers {&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="l">azurerm = {&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="l">source = &amp;#34;azurerm&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="l">version = &amp;#34;~&amp;gt; 2.26&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="l">provider &amp;#34;azurerm&amp;#34; {&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="l">features {}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="l">skip_provider_registration = true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>}&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Define the variables
 &lt;div id="define-the-variables" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#define-the-variables" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Create a &lt;em>variables.tf&lt;/em> file with the following contents:&lt;/p></description></item><item><title>AKS: Windows node pool with spot virtual machines and ephemeral disks</title><link>https://carlos.mendible.com/2021/09/13/aks-windows-node-pool-with-spot-virtual-machines-and-ephemeral-disks/</link><pubDate>Mon, 13 Sep 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/09/13/aks-windows-node-pool-with-spot-virtual-machines-and-ephemeral-disks/</guid><description>&lt;p>Some months ago a customer asked me if there was a way to deploy a Windows node pool with spot virtual machines and ephemeral disks in Azure Kubernetes Service (AKS).&lt;/p>
&lt;p>The idea was to create a cluster that could be used to run Windows batch workloads and minimize costs by deploying the following:&lt;/p></description></item><item><title>AKS: Persistent Volume Claim with an Azure File Storage protected with a Private Endpoint</title><link>https://carlos.mendible.com/2021/08/02/aks-persistent-volume-claim-with-an-azure-file-storage-protected-with-a-private-endpoint/</link><pubDate>Mon, 02 Aug 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/08/02/aks-persistent-volume-claim-with-an-azure-file-storage-protected-with-a-private-endpoint/</guid><description>&lt;p>This post will show you the steps you&amp;rsquo;ll have to take to deploy an Azure Files Storage with a Private Endpoint and use it to create volumes for an Azure Kubernetes Service cluster:&lt;/p>

&lt;h2 class="relative group">Create a &lt;strong>bicep&lt;/strong> file to declare the Azure resources
 &lt;div id="create-a-bicep-file-to-declare-the-azure-resources" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-bicep-file-to-declare-the-azure-resources" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>You&amp;rsquo;ll have to declare the following resources:&lt;/p></description></item><item><title>Plan IP addressing for AKS configured with Azure CNI Networking</title><link>https://carlos.mendible.com/2021/07/09/plan-ip-addressing-for-aks-configured-with-azure-cni-networking/</link><pubDate>Fri, 09 Jul 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/07/09/plan-ip-addressing-for-aks-configured-with-azure-cni-networking/</guid><description>&lt;p>When configuring Azure Kubernetes Service with Azure Container Network Interface (CNI), every pod gets an IP address of the subnet you&amp;rsquo;ve configured.&lt;/p>
&lt;p>So how do you plan you address space? What factors should you consider?&lt;/p>
&lt;ol>
&lt;li>Each node consumes one IP.&lt;/li>
&lt;li>Each pod consumes one IP.&lt;/li>
&lt;li>Each internal LoadBalancer Service you anticipate consumes one IP.&lt;/li>
&lt;li>Azure reserves 5 IP addresses within each subnet.&lt;/li>
&lt;li>The Max pods per node is 250.&lt;/li>
&lt;li>The Max pods per nodes lower limit is 10.&lt;/li>
&lt;li>30 pods is the minimum per cluster.&lt;/li>
&lt;li>Max nodes per cluster is 1000.&lt;/li>
&lt;li>When a cluster is upgraded a new node is added as part of the process which requires a minimum of one additional block of IP addresses to be available. Your node count is then n + 1.&lt;/li>
&lt;li>When you scale a cluster an additional node is added. Your node count is then n + number-of-additional-scaled-nodes-you-anticipate + 1.&lt;/li>
&lt;/ol>
&lt;p>With all that in mind the formula to calculate the number of IPs required for your cluster should look like this:&lt;/p></description></item><item><title>dotNET 2021: Event driven Microservices with Dapr and .NET</title><link>https://carlos.mendible.com/events/2021/06/22/dotnet2021/</link><pubDate>Tue, 22 Jun 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2021/06/22/dotnet2021/</guid><description>&lt;p>Microservices architectures are inherently distributed and building such solutions always bring interesting challenges to the table: resilient service invocation, distributed transactions, on-demand scaling, idempotent message processing and more.&lt;/p>
&lt;p>Deploying Microservices on Kubernetes doesn’t solve these problems and Developers need to learn and use SDK&amp;rsquo;s on top of frameworks such as .NET, while building distributed Microservices architectures.&lt;/p></description></item><item><title>KCD 2021: Event driven Microservices with Dapr and .NET</title><link>https://carlos.mendible.com/events/2021/05/18/kcd-spain-dapr/</link><pubDate>Tue, 18 May 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2021/05/18/kcd-spain-dapr/</guid><description>&lt;p>Microservices architectures are inherently distributed and building such solutions always bring interesting challenges to the table: resilient service invocation, distributed transactions, on-demand scaling, idempotent message processing and more.&lt;/p>
&lt;p>Deploying Microservices on Kubernetes doesn’t solve these problems and Developers need to learn and use SDK&amp;rsquo;s on top of frameworks such as .NET, while building distributed Microservices architectures.&lt;/p></description></item><item><title>Running k3s inside WSL2 on a Surface Pro X</title><link>https://carlos.mendible.com/2021/05/09/running-k3s-inside-wsl2-on-a-surface-pro-x/</link><pubDate>Sun, 09 May 2021 17:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/05/09/running-k3s-inside-wsl2-on-a-surface-pro-x/</guid><description>&lt;p>I&amp;rsquo;m a proud owner of a Surafe Pro X SQ2 which is an ARM64 device. If you&amp;rsquo;ve been reading me, you know I like to tinker with kubernetes and therefore I needed a solution for this device.&lt;/p>
&lt;p>I remembered reading about &lt;a href="https://k3s.io/" target="_blank" rel="noreferrer">k3s&lt;/a> a lightweight kubernetes distro built for IoT &amp;amp; Edge computing, and decided to give it a try.&lt;/p></description></item><item><title>Deploy AKS + Kubecost with Terraform</title><link>https://carlos.mendible.com/2021/04/30/deploy-aks--kubecost-with-terraform/</link><pubDate>Fri, 30 Apr 2021 19:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/04/30/deploy-aks--kubecost-with-terraform/</guid><description>&lt;p>This morning I saw this tweet from Mr Brendan Burns:&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">AKS Cost Monitoring and Governance With Kubecost &lt;a href="https://t.co/OStwIBsuPp">https://t.co/OStwIBsuPp&lt;/a>&lt;/p>&amp;mdash; brendandburns (@brendandburns) &lt;a href="https://x.com/brendandburns/status/1387933511433154564?ref_src=twsrc%5Etfw">April 30, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.x.com/widgets.js" charset="utf-8">&lt;/script>


&lt;p>And I&amp;rsquo;m sure that once you also read through it, you&amp;rsquo;ll learn that you have to take several steps in order to achieve &lt;a href="http://blog.kubecost.com/blog/aks-cost/" target="_blank" rel="noreferrer">AKS Cost Monitoring and Governance With Kubecost&lt;/a>.&lt;/p></description></item><item><title>Use Azure Landing Zones to rule them all</title><link>https://carlos.mendible.com/events/2021/04/16/azure-landing-zone/</link><pubDate>Fri, 16 Apr 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2021/04/16/azure-landing-zone/</guid><description>&lt;p>A talk (Spanish) on Azure Landing Zones and Enterprise-scale Architecture&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/F9PS99Sn6WY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Deploy a Private Azure Cloud Shell with Terraform</title><link>https://carlos.mendible.com/2021/04/12/deploy-a-private-azure-cloud-shell-with-terraform/</link><pubDate>Mon, 12 Apr 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/04/12/deploy-a-private-azure-cloud-shell-with-terraform/</guid><description>&lt;p>By default Cloud Shell sessions run inside a container inside a Microsoft network separate from any resources you may have deployed in Azure. So what happens when you want to access services you have deployed inside a Virtual Network such as a private AKS cluster, a Virtual Machine or Private Endpoint enabled services?&lt;/p></description></item><item><title>Extending Azure Functions with Dapr</title><link>https://carlos.mendible.com/events/2021/02/27/virtual_net_core_conf/</link><pubDate>Sat, 27 Feb 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2021/02/27/virtual_net_core_conf/</guid><description>&lt;p>Azure Functions provides you with an event-driven programming model and Dapr a set of essential cloud-native building blocks that you can use together to create great solutions.&lt;/p>
&lt;p>Joins Carlos and create a solution that reads tweets, stores them in a database, access secrets, uses pub/sub between functions and much more!&lt;/p></description></item><item><title>Dapr y Azure Functions</title><link>https://carlos.mendible.com/events/2021/02/17/dapr-y-azure-functions/</link><pubDate>Wed, 17 Feb 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2021/02/17/dapr-y-azure-functions/</guid><description>&lt;p>A talk (Spanish) on Dapr and Azure Functions&lt;/p>
&lt;script src="https://player.twitch.tv/js/embed/v1.js">&lt;/script>
&lt;div id="twitch-embed" class="shortcode shortcode--twitch shortcode--video" style="width: 100%; height: 100%;">&lt;/div>

&lt;script type="text/javascript">
	var options = {
		width: "100%",
		height: "100%",
	};

	var time = '';
	if (time.length > 0) {
		options.time = time;
	};

	new Twitch.Player("twitch-embed", {
		video: '917814938',
		options: options
	});
&lt;/script></description></item><item><title>ASP.NET Core OpenTelemetry Logging</title><link>https://carlos.mendible.com/2021/01/08/asp.net-core-opentelemetry-logging/</link><pubDate>Fri, 08 Jan 2021 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2021/01/08/asp.net-core-opentelemetry-logging/</guid><description>&lt;p>As you may know I&amp;rsquo;ve been collaborating with &lt;a href="https://dapr.io/" target="_blank" rel="noreferrer">Dapr&lt;/a> and I&amp;rsquo;ve learned that one of the things it enables you to do is to collect traces with the use of the &lt;a href="https://github.com/open-telemetry/opentelemetry-collector" target="_blank" rel="noreferrer">OpenTelemetry Collector&lt;/a> and push the events to &lt;a href="https://docs.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview?WT.mc_id=AZ-MVP-5002618" target="_blank" rel="noreferrer">Azure Application Insights&lt;/a>.&lt;/p>
&lt;p>After some reading I went and check if I could also write my ASP.NET Core applications to log using the OpenTelemetry Log and Event record definition:&lt;/p></description></item><item><title>Dapr: Reading local secrets with .NET 5</title><link>https://carlos.mendible.com/2020/11/18/dapr-reading-local-secrets-with-.net-5/</link><pubDate>Wed, 18 Nov 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2020/11/18/dapr-reading-local-secrets-with-.net-5/</guid><description>&lt;p>Now that &lt;a href="https://dapr.io/" target="_blank" rel="noreferrer">Dapr&lt;/a> is about to hit version 1.0.0 let me show you how easy is to read secrets with a &lt;a href="https://dotnet.microsoft.com/?WT.mc_id=AZ-MVP-5002618" target="_blank" rel="noreferrer">.NET 5&lt;/a> console application.&lt;/p>

&lt;h2 class="relative group">Create a console application
 &lt;div id="create-a-console-application" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-console-application" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">dotnet new console -n DaprSecretSample
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> DaprSecretSample&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Add a reference to the Dapr.Client library
 &lt;div id="add-a-reference-to-the-daprclient-library" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#add-a-reference-to-the-daprclient-library" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">dotnet add package Dapr.Client --prerelease &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Create a Secret Store component
 &lt;div id="create-a-secret-store-component" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-secret-store-component" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Create a &lt;code>components&lt;/code> folder and inside place a file named &lt;code>secretstore.yaml&lt;/code> with the following contents:&lt;/p></description></item><item><title>What I Learned From Hacktoberfest 2020</title><link>https://carlos.mendible.com/2020/10/18/what-i-learned-from-hacktoberfest-2020/</link><pubDate>Sun, 18 Oct 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2020/10/18/what-i-learned-from-hacktoberfest-2020/</guid><description>&lt;p>&lt;a href="https://hacktoberfest.digitalocean.com/" target="_blank" rel="noreferrer">Hacktoberfest®&lt;/a> is an open global event where people all around de globe contribute to open source projects.&lt;/p>
&lt;p>The idea behind &lt;a href="https://hacktoberfest.digitalocean.com/" target="_blank" rel="noreferrer">Hacktoberfest®&lt;/a> is great, in my opinion it encourages and motivates contributions specially from those who don&amp;rsquo;t know where to start with OSS, but saddly what we saw this year was many people, let&amp;rsquo;s call them trolls, spamming repos with useless pull requests in order to claim the nice tee. The &lt;a href="https://hacktoberfest.digitalocean.com/" target="_blank" rel="noreferrer">Hacktoberfest®&lt;/a> organization reacted quickly to fix the situation and the rules of the game have been changed: &lt;a href="https://hacktoberfest.digitalocean.com/hacktoberfest-update" target="_blank" rel="noreferrer">the event is now offically opt-in only for projects and mantainers&lt;/a>.&lt;/p></description></item><item><title>Infrastructure as Code War</title><link>https://carlos.mendible.com/events/2020/10/03/infrastructure-as-code-war/</link><pubDate>Sat, 03 Oct 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/10/03/infrastructure-as-code-war/</guid><description>&lt;p>Let&amp;rsquo;s see how Azure ARM, Terraform, Azure Service Operator for Kubernetes and other solutions compare to each other so you can choose the right weapon to win the Infrastructure as Code War!&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/vF6nlrILXZ8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>The k8s Workshop</title><link>https://carlos.mendible.com/events/2020/10/02/the-k8s-workshop/</link><pubDate>Fri, 02 Oct 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/10/02/the-k8s-workshop/</guid><description>&lt;p>In this workshop you&amp;rsquo;ll learn how to deploy, monitor, scale, secure and debug workloads in AKS:&lt;/p>
&lt;ul>
&lt;li>Deploy an aplication.&lt;/li>
&lt;li>Configure monitoring and health checks for your application.&lt;/li>
&lt;li>Scale your application to meet demand.&lt;/li>
&lt;li>Enable SSL/TLS with an ingress controller.&lt;/li>
&lt;li>Secret Management with AKS &amp;amp; Keyvault.&lt;/li>
&lt;li>Debugging your Kubernetes application.&lt;/li>
&lt;/ul>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/uylfbdZX2XQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Microsoft Ignite 2020. ¿Qué hay de nuevo?</title><link>https://carlos.mendible.com/events/2020/09/29/microsoft-ignite-2020-que-hay-de-nuevo/</link><pubDate>Tue, 29 Sep 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/09/29/microsoft-ignite-2020-que-hay-de-nuevo/</guid><description>&lt;p>¿habéis visto todas las novedades del Ignite? Bueno, si no es así, estamos de enhorabuena porque nos hemos liado a la manta para contaros las novedades con el siguiente equipo:&lt;/p>
&lt;ul>
&lt;li>Carlos Mendible&lt;/li>
&lt;li>Josue Yeray Julián&lt;/li>
&lt;li>Santiago Porras&lt;/li>
&lt;li>David Vidal&lt;/li>
&lt;li>Sergio Parra&lt;/li>
&lt;li>Sergio Hernández&lt;/li>
&lt;li>Alberto Diaz&lt;/li>
&lt;li>Victor Estival&lt;/li>
&lt;/ul>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/PjMlTNrl84c?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Managing Terraform Cloud with .NET Core</title><link>https://carlos.mendible.com/2020/09/09/managing-terraform-cloud-with-.net-core/</link><pubDate>Wed, 09 Sep 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2020/09/09/managing-terraform-cloud-with-.net-core/</guid><description>&lt;p>Today I&amp;rsquo;m going to show you how to manage &lt;a href="https://app.terraform.io/" target="_blank" rel="noreferrer">Terraform Cloud&lt;/a> with .NET Core using the &lt;a href="https://github.com/everis-technology/Tfe.NetClient" target="_blank" rel="noreferrer">Tfe.NetClient&lt;/a> library.&lt;/p>
&lt;p>The idea is to create a simple console application that will:&lt;/p>
&lt;ul>
&lt;li>Add GitHub as a &lt;a href="https://www.terraform.io/docs/cloud/vcs/index.html" target="_blank" rel="noreferrer">VCS Provider&lt;/a>.&lt;/li>
&lt;li>Create a &lt;a href="https://www.terraform.io/docs/cloud/workspaces/index.html" target="_blank" rel="noreferrer">Workspace&lt;/a> conected to a GitHub repo where your Terraform files live.&lt;/li>
&lt;li>Create a &lt;a href="https://www.terraform.io/docs/cloud/workspaces/variables.html" target="_blank" rel="noreferrer">variable&lt;/a> in the workspace.&lt;/li>
&lt;li>Create a Run (Plan) based on the Terraform files&lt;/li>
&lt;li>Apply the Run.&lt;/li>
&lt;/ul>
&lt;blockquote>&lt;p>&lt;a href="https://github.com/everis-technology/Tfe.NetClient" target="_blank" rel="noreferrer">Tfe.NetClient&lt;/a> is still in alpha and not every Terraform Cloud API or feature is present. Please feel free to submit any issues, bugs or pull requests.&lt;/p></description></item><item><title>Azure Summer Talks Community</title><link>https://carlos.mendible.com/events/2020/07/30/azure-summer-talks-community/</link><pubDate>Thu, 30 Jul 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/07/30/azure-summer-talks-community/</guid><description>&lt;p>Como cada año &lt;a href="https://www.meetup.com/es-ES/CATzure" target="_blank" rel="noreferrer">CATzure&lt;/a> organiza una mesa redonda con los mejores expertos de Azure de España para conversar sobre el cloud, desarrollo y todo aquello que os aptezca.&lt;/p>
&lt;p>Esta mesa redonda estuvo compuesta por:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://twitter.com/Carlos_Lande" target="_blank" rel="noreferrer">Carlos Lande&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/cmendibl3" target="_blank" rel="noreferrer">Carlos Mendible&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/ESalcedoo" target="_blank" rel="noreferrer">Elena Salcedo&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/JavierPallo" target="_blank" rel="noreferrer">Pallo&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/ambynet" target="_blank" rel="noreferrer">Ana Maria Bisbe&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/nfanjul" target="_blank" rel="noreferrer">Nacho Fanjul&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/fernandoescolar" target="_blank" rel="noreferrer">Fernando Escolar&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/AlonsoCarles" target="_blank" rel="noreferrer">Carles Alonso&lt;/a>&lt;/li>
&lt;/ul>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/tzBLmOYt8Is?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Virtual Azure Community Day: Introducción a Dapr</title><link>https://carlos.mendible.com/events/2020/07/27/virtual-azure-community-day-introducci%C3%B3n-dapr/</link><pubDate>Mon, 27 Jul 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/07/27/virtual-azure-community-day-introducci%C3%B3n-dapr/</guid><description>&lt;p>Aprende junto a Carlos que es Dapr, y como utilizar este nuevo runtime para desarrollar soluciones basadas en microservicios, entendiendo como resuleve los retos que implican las nuevas arquitecturas, tanto en cloud como en edge: resiliencia, gestión de estado, secretos, eventos, service discovery, etc&amp;hellip;&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/VO34g8tdY6E?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Programming for Kids with Microsoft MakeCode and Circuit Playground Express</title><link>https://carlos.mendible.com/events/2020/07/01/talks4Kids-makecode-circuit-playground-express/</link><pubDate>Wed, 01 Jul 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/07/01/talks4Kids-makecode-circuit-playground-express/</guid><description>&lt;p>Want to teach programming to your kids? Come and learn with Carlos Mendible and his daughter as they shows you Microsoft MakeCode to bring computer science to children using fun tutorials and Adafruit&amp;rsquo;s Circuit Playground Express.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/W-3xkCkr3Xs?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>The GitHub Actions Team</title><link>https://carlos.mendible.com/events/2020/05/20/the-github-actions-team/</link><pubDate>Wed, 20 May 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/05/20/the-github-actions-team/</guid><description>&lt;p>En noviembre de 2019, algunos de los mejores desarrolladores de GitHub lanzaron la beta de GitHub Actions,
la solución para CI/CD de GitHub. No tardo en popularizarse entre los mejores desarrolladores de cualquier entorno&amp;hellip;&lt;/p>
&lt;p>Si te apetece usarlo y puedes permitírtelo, mirate este video donde acompaño a Sergion Navarro Pino:&lt;/p></description></item><item><title>Azure Functions: use Blob Trigger with Private Endpoint</title><link>https://carlos.mendible.com/2020/05/18/azure-functions-use-blob-trigger-with-private-endpoint/</link><pubDate>Mon, 18 May 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2020/05/18/azure-functions-use-blob-trigger-with-private-endpoint/</guid><description>&lt;p>The intent of this post is to help you understand how to connect an Azure Function to a Storage Account privately so all traffic flows through a VNet therefore enhancing the security of your solutions and blobs.&lt;/p>

&lt;h2 class="relative group">The Case:
 &lt;div id="the-case" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-case" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Supose you have the following Azure Function written in C# which only copies a blob from one conatiner to another:&lt;/p></description></item><item><title>Code Academy - Entrevista a Carlos Mendible</title><link>https://carlos.mendible.com/events/2020/05/06/code-academy-interview/</link><pubDate>Wed, 06 May 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/05/06/code-academy-interview/</guid><description>&lt;p>¿Quieres conocer a un MVP desde dentro? El programa Microsoft Most Valuable Professional es un premio otorgado por Microsoft a los líderes más valiosos en las comunidades destacados como reconocimiento a su labor voluntaria en compartir sus conocimientos en la comunidad.&lt;/p>
&lt;p>En este webinar con formato entrevista, Carlos Mendible, Microsoft MVP Azure &amp;amp; Developer Technologies, nos cuenta su trayectoria profesional, nos da sus consejos y sus puntos de vista de la situación del mercado actual.&lt;/p></description></item><item><title>Global Azure Live 2020 - Azure Containers</title><link>https://carlos.mendible.com/events/2020/04/25/globalazure-virtual-azure-containers/</link><pubDate>Sat, 25 Apr 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/04/25/globalazure-virtual-azure-containers/</guid><description>&lt;p>Durante esta sesión veremos cuál es el estado del arte en el mundo de los Containers y Azure, hablaremos de buenas prácticas, recomendaciones y retos a la hora de trabajar con containers, así como de qué puntos clave hay que tener en cuenta. Nuestros expertos cuentan con una amplia experiencia en el tema, y abordan también situaciones como containers vs serverless, DevOps y containers o qué hacer y qué no hacer si estás empezando.&lt;/p></description></item><item><title>Global Azure Virtual - Dapr</title><link>https://carlos.mendible.com/events/2020/04/25/globalazure-virtual-dapr/</link><pubDate>Sat, 25 Apr 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/04/25/globalazure-virtual-dapr/</guid><description>&lt;p>Let&amp;rsquo;s learn how to use Dapr to build resilient, stateless and stateful microservices solutions that run on the cloud and edge solving the challenges you´ll face if you try to remove your applications SDK dependencies, port your applications (without code modifications) between clouds and implement event-driven architectures.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/k6PVR9wgGx4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Global Azure Virtual - Shhhhh: Secrets Should Stay Secret</title><link>https://carlos.mendible.com/events/2020/04/23/globalazure-virtaul-secrets-should-stay-secret/</link><pubDate>Thu, 23 Apr 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/04/23/globalazure-virtaul-secrets-should-stay-secret/</guid><description>&lt;p>A common challenge when building cloud applications is how to manage the credentials in your code for authenticating to cloud services. In this session we&amp;rsquo;ll explore how to keep your credentials safe and how you can work without saving those credentials in the developers machines and therefore avoid an accidental upload to source control.&lt;/p></description></item><item><title>Interfaz Podcast Episodio 139 – Conociendo Dapr con Carlos Mendible</title><link>https://carlos.mendible.com/events/2020/04/08/interfaz-podcast-episodio-139-conociendo-dapr-con-carlos-mendible/</link><pubDate>Wed, 08 Apr 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/04/08/interfaz-podcast-episodio-139-conociendo-dapr-con-carlos-mendible/</guid><description>&lt;p>Check the podcast &lt;a href="https://rdiazconcha.com/2020/04/08/interfaz-podcast-episodio-139-conociendo-dapr-con-carlos-mendible/" target="_blank" rel="noreferrer">here&lt;/a>&lt;/p></description></item><item><title>Kubernetes NGINX ingress controller with Dapr</title><link>https://carlos.mendible.com/2020/04/05/kubernetes-nginx-ingress-controller-with-dapr/</link><pubDate>Sun, 05 Apr 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2020/04/05/kubernetes-nginx-ingress-controller-with-dapr/</guid><description>&lt;p>In this post I&amp;rsquo;ll show you how to expose your &amp;ldquo;Daprized&amp;rdquo; applications using and NGINX ingress controller.&lt;/p>

&lt;h2 class="relative group">Prerequistes
 &lt;div id="prerequistes" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#prerequistes" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;ul>
&lt;li>A working &lt;a href="https://kubernetes.io/" target="_blank" rel="noreferrer">kubernetes&lt;/a> cluster with Dapr installed. If you need instructions please find them &lt;a href="https://github.com/dapr/docs/blob/master/getting-started/environment-setup.md#installing-dapr-on-a-kubernetes-cluster" target="_blank" rel="noreferrer">here&lt;/a>&lt;/li>
&lt;/ul>

&lt;h2 class="relative group">Deploy an application to your Kubernetes cluster
 &lt;div id="deploy-an-application-to-your-kubernetes-cluster" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#deploy-an-application-to-your-kubernetes-cluster" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>I&amp;rsquo;ll be using a simple Azure Function I created back in 2017 in the following post: &lt;strong>&lt;a href="https://carlos.mendible.com/2017/12/28/run-a-precomplied-net-core-azure-function-in-a-container/" target="_blank" rel="noreferrer">Run a Precompiled .NET Core Azure Function in a Container&lt;/a>&lt;/strong> which exposes a simple validation function.&lt;/p></description></item><item><title>Dapr: Run Microservices in Azure without SDKs or vendor lock-in</title><link>https://carlos.mendible.com/events/2020/04/04/netcoreconf-dapr/</link><pubDate>Sat, 04 Apr 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/04/04/netcoreconf-dapr/</guid><description>&lt;p>Let&amp;rsquo;s learn how to use Dapr to build resilient, stateless and stateful microservices solutions that run on the cloud and edge solving the challenges you´ll face if you try to remove your applications SDK dependencies, port your applications (without code modifications) between clouds and implement event-driven architectures.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Pd24pPP44Ns?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>La resistencia tecnológica - Episodio 3, Docker, Kubernetes y Azure</title><link>https://carlos.mendible.com/events/2020/04/03/crossdvlup-kubernetes/</link><pubDate>Fri, 03 Apr 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/04/03/crossdvlup-kubernetes/</guid><description>&lt;p>En el tercer episodio de la saga: &amp;ldquo;La resistencia tecnológica&amp;rdquo; me pusieron a prueba con preguntas sobre el mundo de contenedores y kubernetes&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/uEyJnwVuDx0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Reading Kubernetes Secrets with Dapr and .NET Core</title><link>https://carlos.mendible.com/2020/03/22/reading-kubernetes-secrets-with-dapr-and-.net-core/</link><pubDate>Sun, 22 Mar 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2020/03/22/reading-kubernetes-secrets-with-dapr-and-.net-core/</guid><description>&lt;p>&lt;a href="https://dapr.io" target="_blank" rel="noreferrer">Dapr&lt;/a> is an event-driven, portable runtime for building microservices on cloud and edge.&lt;/p>
&lt;p>&lt;a href="https://dapr.io" target="_blank" rel="noreferrer">Dapr&lt;/a> supports the fundamental features you&amp;rsquo;ll need such as: service invocation, state management, publish/subscribe messaging and since version &lt;a href="https://github.com/dapr/dapr/releases/tag/v0.5.0" target="_blank" rel="noreferrer">0.5.0&lt;/a> the ability to read from secret stores!&lt;/p>
&lt;p>This post will show you to read kubernetes secrets using &lt;a href="https://dapr.io" target="_blank" rel="noreferrer">Dapr&lt;/a> and .NET Core:&lt;/p></description></item><item><title>Qué hacer y qué no hacer cuando trabajas desde casa</title><link>https://carlos.mendible.com/events/2020/03/20/work-from-home/</link><pubDate>Fri, 20 Mar 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/03/20/work-from-home/</guid><description>&lt;p>Webcast donde discutimos como organizarte para trabajar desde casa, y otros temas relevantes como la gestión y motivación de equipos en remoto, las herramientas que utilizamos y una serie de consejos sobre lo que debes y no debes hacer en estos dias cuarentena global.&lt;/p>
&lt;p>Invitados: Anna Almuni, Alberto Diaz, Josué Yeray, Adrián Diaz, Robert Bermejo, Manuel Sánchez y Carlos Mendible&lt;/p></description></item><item><title>Azure Kubernetes Service: Lessons Learned</title><link>https://carlos.mendible.com/events/2020/02/29/aks-lessons-learned/</link><pubDate>Sat, 29 Feb 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/02/29/aks-lessons-learned/</guid><description>&lt;p>This is the perfect session if you want to understand the tools, features and best practices we&amp;rsquo;ve learned from customer engagements, that will allow your enterprise to deploy, use and operate Azure Kubernetes Service (AKS) with confidence.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/fTay9HEJTdA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;p>And here a picture taken during the session:&lt;/p></description></item><item><title>Introduction to Dapr: a runtime for building microservices</title><link>https://carlos.mendible.com/events/2020/02/28/indrouction-to-dapr/</link><pubDate>Fri, 28 Feb 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/02/28/indrouction-to-dapr/</guid><description>&lt;p>An introduction to Dapr.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/tOEVHpp1JtQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;p>And we took a picture of the group:&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://carlos.mendible.com/assets/img/events/2020_02_Dapr.jpg"
 >&lt;/figure>
&lt;/p></description></item><item><title>.NET Core and Azure without credentials? Impossible is nothing!</title><link>https://carlos.mendible.com/events/2020/02/01/crossdvlup-dotnetcore-and-azure-without-credentials/</link><pubDate>Tue, 11 Feb 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/02/01/crossdvlup-dotnetcore-and-azure-without-credentials/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://carlos.mendible.com/assets/img/events/2020-02-crossdvlup-secrets.jfif"
 >&lt;/figure>
&lt;/p></description></item><item><title>Dapr: Debugging .NET Core with Visual Studio Code</title><link>https://carlos.mendible.com/2020/02/09/dapr-debugging-dotnetcore-with-visual-studio-code/</link><pubDate>Sun, 09 Feb 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2020/02/09/dapr-debugging-dotnetcore-with-visual-studio-code/</guid><description>&lt;p>So you are new to &lt;a href="https://dapr.io" target="_blank" rel="noreferrer">Dapr&lt;/a> and you are trying to understand how it works with you .NET Core application. You already tried launching your app with the Dapr CLI and then you find yourself wondering on how to debug the mix with Visual Studio Code.&lt;/p>
&lt;p>Well, follow this simple steps and you&amp;rsquo;ll be ready:&lt;/p></description></item><item><title>MongoDB Enterprise Operator: Deploying MongoDB in AKS</title><link>https://carlos.mendible.com/2020/02/09/mongodb-enterprise-operator-deploying-mongodb-in-aks/</link><pubDate>Sun, 09 Feb 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2020/02/09/mongodb-enterprise-operator-deploying-mongodb-in-aks/</guid><description>&lt;p>a couple of weeks ago I was trying to deploy MongoDB in AKS using the &lt;a href="https://docs.mongodb.com/kubernetes-operator/master/tutorial/install-k8s-operator/" target="_blank" rel="noreferrer">MongoDB Enterprise Operator&lt;/a> and had trouble finding a simple tutorial to make the thing work. This post intends to fill that gap with a straight to the point approach.&lt;/p>

&lt;h2 class="relative group">Prerequisites
 &lt;div id="prerequisites" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#prerequisites" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Be sure to deploy AKS with a set of nodes with at least 8GB of RAM. I used &lt;strong>Standard_D3_v2&lt;/strong>&lt;/p></description></item><item><title>DOSConf - Azure Kuberentes Service: Lessons Learned</title><link>https://carlos.mendible.com/events/2020/02/01/dosconf-azure-kubernetes-service-lessons-learned/</link><pubDate>Sat, 01 Feb 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/02/01/dosconf-azure-kubernetes-service-lessons-learned/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://carlos.mendible.com/assets/img/events/2020-02-dosconf-secrets.jfif"
 >&lt;/figure>
&lt;/p></description></item><item><title>DOSConf - Shhhhh: Secrets Should Stay Secret</title><link>https://carlos.mendible.com/events/2020/02/01/dosconf-secrets-should-stay-secret/</link><pubDate>Sat, 01 Feb 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/02/01/dosconf-secrets-should-stay-secret/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://carlos.mendible.com/assets/img/events/2020-02-dosconf-secrets.jfif"
 >&lt;/figure>
&lt;/p></description></item><item><title>Netcoreconf Barcelona - Shhhhh: Secrets Should Stay Secret</title><link>https://carlos.mendible.com/events/2020/01/18/netcoreconf-barcelona-secrets-should-stay-secret/</link><pubDate>Sat, 18 Jan 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2020/01/18/netcoreconf-barcelona-secrets-should-stay-secret/</guid><description>&lt;p>A common challenge when building cloud applications is how to manage the credentials in your code for authenticating to cloud services. In this session we&amp;rsquo;ll explore how to keep your credentials safe and how you can work without saving those credentials in the developers machines and therefore avoid an accidental upload to source control.&lt;/p></description></item><item><title>Visual Studio Code Remote Containers: Jekyll</title><link>https://carlos.mendible.com/2020/01/10/vs-code-remote-containers-jekyll/</link><pubDate>Fri, 10 Jan 2020 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2020/01/10/vs-code-remote-containers-jekyll/</guid><description>&lt;p>For the last 3 years this blog was written using &lt;a href="https://jekyllrb.com/docs/installation/" target="_blank" rel="noreferrer">Jekyll&lt;/a> which has a series of requirements such as Ruby that I don&amp;rsquo;t want to keep installing or maintaining on my PC. So I created this Developer Container for those who want to use Jekyll from an isolated container.&lt;/p>
&lt;p>Let&amp;rsquo;s check the container definition:&lt;/p></description></item><item><title>TenerifeDev Christmas TechParty - Asistentes Virtuales</title><link>https://carlos.mendible.com/events/2019/12/26/tenerifedev-christmas-party-asistentes-virtuales/</link><pubDate>Thu, 26 Dec 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2019/12/26/tenerifedev-christmas-party-asistentes-virtuales/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://carlos.mendible.com/assets/img/events/2019-12-tenerife-dev.jfif"
 >&lt;/figure>
&lt;/p></description></item><item><title>Interfaz Podcast Episodio 129 – En vivo desde Microsoft Ignite 2019 – Novedades en AKS y Contenedores con Carlos Mendible</title><link>https://carlos.mendible.com/events/2019/12/04/interfaz-podcast-episodio-129-en-vivo-desde-microsoft-ignite-2019-novedades-en-aks-y-contenedores-con-carlos-mendible/</link><pubDate>Wed, 04 Dec 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2019/12/04/interfaz-podcast-episodio-129-en-vivo-desde-microsoft-ignite-2019-novedades-en-aks-y-contenedores-con-carlos-mendible/</guid><description>&lt;p>Check the podcast &lt;a href="https://rdiazconcha.com/2019/12/04/interfaz-podcast-episodio-129-en-vivo-desde-microsoft-ignite-2019-novedades-en-aks-y-contenedores-con-carlos-mendible/" target="_blank" rel="noreferrer">here&lt;/a>&lt;/p></description></item><item><title>AKS: Read Azure Key Vault secrets using AAD Pod Identity</title><link>https://carlos.mendible.com/2019/11/30/aks_read_azure_key_vault_secrets_using_aad_pod_identity/</link><pubDate>Sat, 30 Nov 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/11/30/aks_read_azure_key_vault_secrets_using_aad_pod_identity/</guid><description>&lt;p>What if I tell you that it&amp;rsquo;s possible to connect you AKS pods to an &lt;strong>Azure Key Vault&lt;/strong> using identities but without having to use credentials in an explicit way?&lt;/p>
&lt;p>Well with &lt;strong>AAD Pod Identities&lt;/strong> you can enable your Kubernetes applications to access Azure cloud resources securely using &lt;strong>Azure Active Directory&lt;/strong> (AAD) including &lt;strong>Azure Key Vault&lt;/strong>.&lt;/p></description></item><item><title>Kubernetes: Despliegue en Azure</title><link>https://carlos.mendible.com/2019/11/24/kubernetes_despliegue_en_azure/</link><pubDate>Sun, 24 Nov 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/11/24/kubernetes_despliegue_en_azure/</guid><description>&lt;p>Durante el mes de Octubre tuve la suerte de grabar en LinkedIn Learning mi primer curso online sobre Kubernetes.&lt;/p>
&lt;p>Aun me queda mucho por aprender y mejorar en este formato, ya que mientras grabas los cursos no recibes feedback inmediato como sí ocurre cuando das una charla o haces una presentación.&lt;/p></description></item><item><title>Netcoreconf Galicia - Decoupling your Application with .NET Core, Azure and Events</title><link>https://carlos.mendible.com/events/2019/09/28/netcoreconf-galicia-decoupling-your-application-with-dotnetcore-azure-events/</link><pubDate>Sat, 28 Sep 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2019/09/28/netcoreconf-galicia-decoupling-your-application-with-dotnetcore-azure-events/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://carlos.mendible.com/assets/img/events/2020-09-netcoreconf-galicia.jfif"
 >&lt;/figure>
&lt;/p></description></item><item><title>Interfaz Podcast Episodio 117 – Kubernetes, contenedores y microservicios con Carlos Mendible</title><link>https://carlos.mendible.com/events/2019/08/12/interfaz-podcast-episodio-117-kubernetes-contenedores-y-microservicios-con-carlos-mendible/</link><pubDate>Mon, 12 Aug 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2019/08/12/interfaz-podcast-episodio-117-kubernetes-contenedores-y-microservicios-con-carlos-mendible/</guid><description>&lt;p>Check the podcast &lt;a href="https://rdiazconcha.com/2019/08/12/interfaz-podcast-episodio-117-kubernetes-contenedores-y-microservicios-con-carlos-mendible/" target="_blank" rel="noreferrer">here&lt;/a>&lt;/p></description></item><item><title>GitOps: Deploying apps in Azure Kubernetes Service (AKS) with Flux</title><link>https://carlos.mendible.com/2019/08/04/gitops-deploying-apps-in-azure-kubernetes-service-with-flux/</link><pubDate>Sun, 04 Aug 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/08/04/gitops-deploying-apps-in-azure-kubernetes-service-with-flux/</guid><description>&lt;p>Recently I learned about GitOps which is a way to manage your Kubernetes clusters and the applications you run on top using Git. The idea is that you can declaratively describe the desired state of your systems in Git and roll out changes as soon as merges occur.&lt;/p>
&lt;p>You can immediately see the main benefits of such an approach: Your Git repositories become the single source of truth for both your infrastructure and application code, allowing the teams to increase productivity and stability (you get the Git log to audit changes).&lt;/p></description></item><item><title>Kured: Restart your Azure Kubernetes Service Nodes</title><link>https://carlos.mendible.com/2019/07/28/kured-restart-your-azure-kubernetes-service-nodes/</link><pubDate>Sun, 28 Jul 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/07/28/kured-restart-your-azure-kubernetes-service-nodes/</guid><description>&lt;p>Two weeks ago I got an email message from Microsoft Azure explaining that Azure Kubernetes Services had been patched but that I had to restart my nodes (reboot the clusters) to complete the operation.&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="The Microsoft Azure email explaining that I had to reboot my clusters"
 src="https://carlos.mendible.com/assets/img/posts/aks_update_kured.png"
 >&lt;/figure>
&lt;/p>
&lt;p>The first thing you need to know is that, when things like this happens, the Azure platform creates a file called &lt;code>/var/run/reboot-required&lt;/code> in each of the nodes of your cluster.&lt;/p></description></item><item><title>Webcast - Azure Summer Ask the Experts</title><link>https://carlos.mendible.com/events/2019-07-17-azure-summer-ask-the-experts/</link><pubDate>Wed, 17 Jul 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2019-07-17-azure-summer-ask-the-experts/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Om7FQLBrv-Y?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Visual Studio Code Remote Containers: Azure Blockchain</title><link>https://carlos.mendible.com/2019/07/06/vs-code-remote-containers-azure-blockchain/</link><pubDate>Sat, 06 Jul 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/07/06/vs-code-remote-containers-azure-blockchain/</guid><description>&lt;p>After collaborating with the &lt;a href="https://github.com/microsoft/vscode-dev-containers/tree/master/containers/azure-ansible" target="_blank" rel="noreferrer">Azure Ansible&lt;/a> container I decided to also develop a Developer Container for those who want or need to use the &lt;a href="https://marketplace.visualstudio.com/items?itemName=AzBlockchain.azure-blockchain" target="_blank" rel="noreferrer">Azure Blockchain Development Kit for Ethereum&lt;/a> to create smart contracts, taking away the burden of installing Python, Truffle, Ganache and NodeJS on your machine.&lt;/p>
&lt;p>Once again I collaborated with &lt;a href="http://chuxel.github.io/" target="_blank" rel="noreferrer">Chuck Lantz&lt;/a> and the container definition resulted in the following two files:&lt;/p></description></item><item><title>Visual Studio Code Remote Containers: Azure Ansible</title><link>https://carlos.mendible.com/2019/07/05/vs-code-remote-containers-azure-ansible/</link><pubDate>Fri, 05 Jul 2019 23:30:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/07/05/vs-code-remote-containers-azure-ansible/</guid><description>&lt;p>Last year I was working on a project for deploying Azure services using Ansible, and let me tell you something: Back then a feature like &lt;a href="https://github.com/microsoft/vscode-dev-containers" target="_blank" rel="noreferrer">Visual Studio Remote Containers&lt;/a> would have helped us so much!&lt;/p>
&lt;p>Why? Because just installing &lt;a href="https://code.visualstudio.com/" target="_blank" rel="noreferrer">Visual Studio Code&lt;/a>, the &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack" target="_blank" rel="noreferrer">Remote Development Extension Pack&lt;/a>, and &lt;a href="https://www.docker.com/products/docker-desktop" target="_blank" rel="noreferrer">Docker&lt;/a> you have a killer combo that makes it possible to create a Development environment in a snap and share it with your source code.&lt;/p></description></item><item><title>Scale a Kubernetes Deployment with .NET Core</title><link>https://carlos.mendible.com/2019/05/31/scale-a-kubernetes-deployment-with-dotnet-core/</link><pubDate>Fri, 31 May 2019 09:12:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/05/31/scale-a-kubernetes-deployment-with-dotnet-core/</guid><description>&lt;p>Let&amp;rsquo;s start:&lt;/p>

&lt;h2 class="relative group">Create a folder for your new project
 &lt;div id="create-a-folder-for-your-new-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-folder-for-your-new-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command prompt an run:&lt;/p>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">mkdir kuberenetes.scale&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Create the project
 &lt;div id="create-the-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-the-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> kuberenetes.scale
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">dotnet new api&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Add the references to KubernetesClient
 &lt;div id="add-the-references-to-kubernetesclient" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#add-the-references-to-kubernetesclient" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">dotnet add package KubernetesClient -v 1.5.18
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">dotnet restore&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Create a PodsController.cs with the following code
 &lt;div id="create-a-podscontrollercs-with-the-following-code" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-podscontrollercs-with-the-following-code" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System.Collections.Generic&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System.Linq&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System.Threading.Tasks&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">k8s&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">k8s.Models&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Microsoft.AspNetCore.JsonPatch&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Microsoft.AspNetCore.Mvc&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Microsoft.Extensions.Configuration&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">namespace&lt;/span> &lt;span class="nn">kubernetes.scale&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na"> [Route(&amp;#34;api/[controller]&lt;/span>&lt;span class="s">&amp;#34;)]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">&lt;/span>&lt;span class="na"> [ApiController]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">PodsController&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">ControllerBase&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">private&lt;/span> &lt;span class="n">KubernetesClientConfiguration&lt;/span> &lt;span class="n">k8sConfig&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="n">PodsController&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">IConfiguration&lt;/span> &lt;span class="n">config&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Reading configuration to know if running inside a cluster or in local mode.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">useKubeConfig&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kt">bool&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Parse&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">config&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s">&amp;#34;UseKubeConfig&amp;#34;&lt;/span>&lt;span class="p">]);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(!&lt;/span>&lt;span class="n">useKubeConfig&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Running inside a k8s cluser&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">k8sConfig&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">KubernetesClientConfiguration&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">InClusterConfig&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Running on dev machine&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">k8sConfig&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">KubernetesClientConfiguration&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">BuildConfigFromConfigFile&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na"> [HttpPatch(&amp;#34;scale&amp;#34;)]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="n">IActionResult&lt;/span> &lt;span class="n">Scale&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="n">FromBody&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ReplicaRequest&lt;/span> &lt;span class="n">request&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Use the config object to create a client.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">using&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">var&lt;/span> &lt;span class="n">client&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">Kubernetes&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">k8sConfig&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Create a json patch for the replicas&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">jsonPatch&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">JsonPatchDocument&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">V1Scale&lt;/span>&lt;span class="p">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Set the new number of repplcias&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">jsonPatch&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Replace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">e&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Spec&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Replicas&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">request&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Replicas&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Creat the patch&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">patch&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">V1Patch&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">jsonPatch&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Patch the &amp;#34;minions&amp;#34; Deployment in the &amp;#34;default&amp;#34; namespace&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">client&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">PatchNamespacedDeploymentScale&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">patch&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">request&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Deployment&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">request&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Namespace&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">NoContent&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">ReplicaRequest&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kt">string&lt;/span> &lt;span class="n">Deployment&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="k">get&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">set&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kt">string&lt;/span> &lt;span class="n">Namespace&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="k">get&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">set&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="n">Replicas&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="k">get&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">set&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Replace the contents of the appsettings.Development.json file
 &lt;div id="replace-the-contents-of-the-appsettingsdevelopmentjson-file" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#replace-the-contents-of-the-appsettingsdevelopmentjson-file" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Note the &lt;strong>UseKubeConfig&lt;/strong> property is set to &lt;strong>true&lt;/strong>.&lt;/p></description></item><item><title>ARM: Enable Container Monitoring Solution on an existing Log Analytics Workspace</title><link>https://carlos.mendible.com/2019/05/16/arm-enable-container-solution-on-an-existing-loganalytics-workspace/</link><pubDate>Thu, 16 May 2019 15:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/05/16/arm-enable-container-solution-on-an-existing-loganalytics-workspace/</guid><description>&lt;p>Recently I had to update a bunch of &lt;a href="https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=2ahUKEwiFrof58qDiAhXqyIUKHWPuBaIQFjAAegQIARAB&amp;amp;url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fazure-monitor%2Flearn%2Fquick-create-workspace&amp;amp;usg=AOvVaw3DvKwidPs8__aX0fQ0vjQf" target="_blank" rel="noreferrer">Log Analytics Workspaces&lt;/a> resources to enable the &lt;a href="https://docs.microsoft.com/en-us/azure/azure-monitor/insights/containers" target="_blank" rel="noreferrer">Container Monitoring Solution&lt;/a>. So I came up with this ARM Template that I want to share with you:&lt;/p>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;$schema&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;contentVersion&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;1.0.0.0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;parameters&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;LogAnalyticsWorkspaceName&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;string&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;metadata&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Log Analytics Workspace name&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;variables&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;workspaceResourceId&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;[resourceId(&amp;#39;Microsoft.OperationalInsights/workspaces/&amp;#39;, parameters(&amp;#39;LogAnalyticsWorkspaceName&amp;#39;))]&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;containerSolutionName&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;[concat(parameters(&amp;#39;LogAnalyticsWorkspaceName&amp;#39;), &amp;#39;-containers&amp;#39;)]&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;resources&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Microsoft.OperationsManagement/solutions&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;apiVersion&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;2015-11-01-preview&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;[variables(&amp;#39;containerSolutionName&amp;#39;)]&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;location&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;[resourceGroup().location]&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;plan&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;[variables(&amp;#39;containerSolutionName&amp;#39;)]&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;product&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;[concat(&amp;#39;OMSGallery/&amp;#39;, &amp;#39;ContainerInsights&amp;#39;)]&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;promotionCode&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;publisher&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Microsoft&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;properties&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;workspaceResourceId&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;[variables(&amp;#39;workspaceResourceId&amp;#39;)]&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;outputs&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;a href="https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fcmendible%2Farmtemplates%2Fmaster%2Fcontainers%2Fenable-container-solution-existing-loganalytics-workspace%2Fazuredeploy.json" rel="nofollow">
 &lt;img src="http://azuredeploy.net/deploybutton.png"/>
&lt;/a>
&lt;p>Hope it helps!&lt;/p></description></item><item><title>Global Azure Bootcamp Madrid - Mission: Azure Kuberentes Service</title><link>https://carlos.mendible.com/events/2019/04/27/mission-azure-kubernetes-service/</link><pubDate>Sat, 27 Apr 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2019/04/27/mission-azure-kubernetes-service/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/z6Dv_kvHMm4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Global Online Azure Bootcamp - Mission: Azure Kuberentes Service</title><link>https://carlos.mendible.com/events/2019/04/27/global-online-azure-bootcamp-mission-azure-kubernetes-service/</link><pubDate>Sat, 27 Apr 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2019/04/27/global-online-azure-bootcamp-mission-azure-kubernetes-service/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/xT9U9c3uyDw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Running the Global Azure Bootcamp Science Lab in Kubernetes</title><link>https://carlos.mendible.com/2019/04/22/running-the-global-azure-bootcamp-science-lab-in-kubernetes/</link><pubDate>Mon, 22 Apr 2019 05:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/04/22/running-the-global-azure-bootcamp-science-lab-in-kubernetes/</guid><description>&lt;p>Next Saturday the &lt;a href="https://global.azurebootcamp.net" target="_blank" rel="noreferrer">Global Azure Bootcamp&lt;/a> will be celebrated all over the world and as in previous years their will be a &lt;a href="https://global.azurebootcamp.net/global-azure-science-lab-2019/" target="_blank" rel="noreferrer">Science Lab&lt;/a> where we&amp;rsquo;ll try to discover a planet!!!. Isn&amp;rsquo;t that cool?&lt;/p>
&lt;p>Well to make this fast you can run the Science Lab using Azure Container Instances following the instructions found &lt;a href="https://github.com/intelequia/GAB2019ScienceLab" target="_blank" rel="noreferrer">here&lt;/a> or you can use the following &lt;a href="https://gist.github.com/cmendible/8ce226b5996c92a020fe1761ff7325aa" target="_blank" rel="noreferrer">gist&lt;/a> to run the workload in an existing kubernetes cluster:&lt;/p></description></item><item><title>AKS &amp; Application Gateway: Expose more than one service in an ingress resource</title><link>https://carlos.mendible.com/2019/04/16/aks-application-gateway-expose-more-than-one-service-in-a-ingress-resource/</link><pubDate>Tue, 16 Apr 2019 06:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/04/16/aks-application-gateway-expose-more-than-one-service-in-a-ingress-resource/</guid><description>&lt;p>If you install the Azure Application Gateway Ingress Controller for your AKS clusters you may want to expose more than one service through the same Public IP just changing the url path. In order to make this work you must use the &lt;a href="https://github.com/Azure/application-gateway-kubernetes-ingress/blob/master/docs/annotations.md#backend-path-prefix" target="_blank" rel="noreferrer">backend-path-prefix&lt;/a> annotation.&lt;/p>
&lt;p>In the following sample I create an ingress with the following behavior:&lt;/p></description></item><item><title>AKS: Persistent Volume with existing Storage Account</title><link>https://carlos.mendible.com/2019/04/16/aks-persistent-volume-with-existing-storage-account/</link><pubDate>Tue, 16 Apr 2019 05:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/04/16/aks-persistent-volume-with-existing-storage-account/</guid><description>&lt;p>In order to deploy a Persistent Volume in your AKS cluster using an existing Storage Account you should take the following steps:&lt;/p>
&lt;ol>
&lt;li>Create a &lt;strong>Storage Class&lt;/strong> with a reference to the Storage Account.&lt;/li>
&lt;li>Create a &lt;strong>Secret&lt;/strong> with the credentials used to access the Storage Account.&lt;/li>
&lt;li>Create a &lt;strong>Persistent Volume&lt;/strong> with a reference to the Storage Class, the secret and the File Share.&lt;/li>
&lt;li>Create a &lt;strong>Persistent Volume Claim&lt;/strong> with a reference to the volume by name.&lt;/li>
&lt;/ol>
&lt;p>Use the following &lt;strong>yaml&lt;/strong> as a template for the resources described above. Save the contents as &lt;strong>aks-existing-storage-account-pv.yaml&lt;/strong>:&lt;/p></description></item><item><title>Meetup MadridDotNet - El estado del ecosistema del desarrollador por @cmendibl3</title><link>https://carlos.mendible.com/events/2019/02/13/developer-ecosystem/</link><pubDate>Wed, 13 Feb 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2019/02/13/developer-ecosystem/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/VV8sjBQcPGU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Kubernetes: Mount a file in your Pod using a ConfigMap</title><link>https://carlos.mendible.com/2019/02/10/kubernetes-mount-file-pod-with-configmap/</link><pubDate>Sun, 10 Feb 2019 15:12:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/02/10/kubernetes-mount-file-pod-with-configmap/</guid><description>&lt;p>Lately I&amp;rsquo;ve been learning Go and this week I started a side project named &lt;a href="https://github.com/cmendible/kube-sherlock" target="_blank" rel="noreferrer">kube-sherlock&lt;/a>. The purpose of this small program is to list any pod that does not have the &lt;strong>labels&lt;/strong> that your organization requires.&lt;/p>
&lt;p>For &lt;a href="https://github.com/cmendible/kube-sherlock" target="_blank" rel="noreferrer">kube-sherlock&lt;/a> I created a &lt;a href="https://github.com/cmendible/kube-sherlock/blob/master/dockerfile" target="_blank" rel="noreferrer">dockerfile&lt;/a> were both the program (kube-sherlock) and the default configuration (config.yaml) are placed in the &lt;strong>app&lt;/strong> folder:&lt;/p></description></item><item><title>NetConf Barcelona - Decoupling your Application with .NET Core, Azure and Events</title><link>https://carlos.mendible.com/events/2019/01/26/netconf-barcelona-decoupling-your-application-with-dotnetcore-azure-events/</link><pubDate>Sat, 26 Jan 2019 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/events/2019/01/26/netconf-barcelona-decoupling-your-application-with-dotnetcore-azure-events/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://carlos.mendible.com/assets/img/events/2020-01-netconf.jfif"
 >&lt;/figure>
&lt;/p></description></item><item><title>Updated Step by step: Serilog with ASP.NET Core</title><link>https://carlos.mendible.com/2019/01/14/updated-step-step-serilog-asp-net-core/</link><pubDate>Mon, 14 Jan 2019 18:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/01/14/updated-step-step-serilog-asp-net-core/</guid><description>&lt;p>Many of you come to my site to read the post &lt;a href="https://carlos.mendible.com/2016/09/19/step-step-serilog-asp-net-core/" target="_blank" rel="noreferrer">Step by step: Serilog with ASP.NET Core&lt;/a> which I wrote in 2016 and is completely out of date, so with this post I will show you how to setup &lt;a href="https://serilog.net/" target="_blank" rel="noreferrer">Serilog&lt;/a> to work with your ASP.NET Core 2.2 applications.&lt;/p>

&lt;h2 class="relative group">Create an ASP.NET Core project
 &lt;div id="create-an-aspnet-core-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-an-aspnet-core-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl"> md aspnet.serilog.sample
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">cd&lt;/span> aspnet.serilog.sample
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> dotnet new mvc&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Add the following dependencies to your project
 &lt;div id="add-the-following-dependencies-to-your-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#add-the-following-dependencies-to-your-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl"> dotnet add package Serilog.AspNetCore
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> dotnet add package Serilog.Extensions.Logging
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> dotnet add package Serilog.Sinks.ColoredConsole&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Change your Program.cs file to look like the following
 &lt;div id="change-your-programcs-file-to-look-like-the-following" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#change-your-programcs-file-to-look-like-the-following" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System.Collections.Generic&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System.IO&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System.Linq&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System.Threading.Tasks&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Microsoft.AspNetCore&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Microsoft.AspNetCore.Hosting&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Microsoft.Extensions.Configuration&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Microsoft.Extensions.Logging&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Serilog&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Serilog.Core&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Serilog.Events&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">namespace&lt;/span> &lt;span class="nn">aspnet.serilog.sample&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">Program&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kd">static&lt;/span> &lt;span class="k">void&lt;/span> &lt;span class="n">Main&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">string&lt;/span>&lt;span class="p">[]&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Log&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Logger&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">LoggerConfiguration&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">Enrich&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">FromLogContext&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">MinimumLevel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Debug&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">WriteTo&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ColoredConsole&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LogEventLevel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Verbose&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;{NewLine}{Timestamp:HH:mm:ss} [{Level}] ({CorrelationToken}) {Message}{NewLine}{Exception}&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">CreateLogger&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">CreateWebHostBuilder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">Build&lt;/span>&lt;span class="p">().&lt;/span>&lt;span class="n">Run&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">finally&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Log&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CloseAndFlush&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kd">static&lt;/span> &lt;span class="n">IWebHostBuilder&lt;/span> &lt;span class="n">CreateWebHostBuilder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">string&lt;/span>&lt;span class="p">[]&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WebHost&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CreateDefaultBuilder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">UseSerilog&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">UseStartup&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">Startup&lt;/span>&lt;span class="p">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Inject the logger to your services or controllers
 &lt;div id="inject-the-logger-to-your-services-or-controllers" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#inject-the-logger-to-your-services-or-controllers" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Change the home controller and log some actions:&lt;/p></description></item><item><title>AKS: Configure TLS termination with the http application routing addon</title><link>https://carlos.mendible.com/2019/01/10/aks-configure-tls-termination-with-the-http-application-routing-addon/</link><pubDate>Thu, 10 Jan 2019 15:20:00 +0000</pubDate><guid>https://carlos.mendible.com/2019/01/10/aks-configure-tls-termination-with-the-http-application-routing-addon/</guid><description>&lt;p>When you install a AKS cluster you can configure it to deploy the &lt;a href="https://docs.microsoft.com/en-us/azure/aks/http-application-routing" target="_blank" rel="noreferrer">http application routing addon&lt;/a> or you you can update an existing cluster to deploy it.&lt;/p>
&lt;p>Either way you end up with an &lt;a href="https://github.com/kubernetes/ingress-nginx" target="_blank" rel="noreferrer">NGINX Ingress Controller&lt;/a> running, in the &lt;strong>kube-system&lt;/strong> namespace of your cluster, with the following properties:&lt;/p>
&lt;ul>
&lt;li>&lt;em>ingress-class: addon-http-application-routing&lt;/em>&lt;/li>
&lt;li>&lt;em>annotations-prefix: nginx.ingress.kubernetes.io&lt;/em>&lt;/li>
&lt;/ul>
&lt;p>Does this means that you can use this controller for TLS termination? The answer is yes! And you can also use rate limits, and whitelisting as described in my post &lt;a href="https://carlos.mendible.com/2018/03/20/secure-your-kubernetes-services-with-nginx-ingress-controller-tls-and-more/" target="_blank" rel="noreferrer">Secure your Kubernetes services with NGINX ingress controller, tls and more.&lt;/a>&lt;/p></description></item><item><title>Prepare yourself to work in Cloud</title><link>https://carlos.mendible.com/2018/12/19/prepare-yourself-to-work-in-cloud/</link><pubDate>Wed, 19 Dec 2018 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/12/19/prepare-yourself-to-work-in-cloud/</guid><description>&lt;p>Nowadays it&amp;rsquo;s clear that IT trends such as serverless computing, containerization, cloud native apps, DevOps artificial intelligence, machine learning and both hybrid and multi-cloud solutions are becoming main stream or the &amp;ldquo;new normal&amp;rdquo;. All businesses, big or small, are looking for cloud experts with key skills in many of these hot trends.
With serverless architectures, applications are separated into various individual functions which are triggered by different types of events. This changes the way we normally think about applications and also the way we must approach operations in terms of monitoring performance, tracing, scaling and high availability. Good knowledge of &lt;a href="https://aws.amazon.com/es/lambda" target="_blank" rel="noreferrer">AWS Lambda&lt;/a>, &lt;a href="https://azure.microsoft.com/es-es/services/functions/" target="_blank" rel="noreferrer">Azure Functions&lt;/a>, &lt;a href="https://cloud.google.com/functions/" target="_blank" rel="noreferrer">Google Cloud Functions&lt;/a>, and event-driven architectures are skills employers will be looking for.&lt;/p></description></item><item><title>Develop and build ASP.NET Core applications to run on Kubernetes with Draft</title><link>https://carlos.mendible.com/2018/11/18/develop-and-build-aspnetcore-applications-to-run-on-kubernetes-with-draft/</link><pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/11/18/develop-and-build-aspnetcore-applications-to-run-on-kubernetes-with-draft/</guid><description>&lt;p>You start developing an ASP.NET Core application to run it in Kubernetes and suddenly you find yourself creating a docker file, building an image, pushing the image to a registry, creating both a deployment and a service definition for Kubernetes and you wonder if there is a tool out there to help you streamline the whole process.&lt;/p></description></item><item><title>Deploying Elastic Search, Fluentd, Kibana on AKS with Helm</title><link>https://carlos.mendible.com/2018/10/14/deploying-elastic-search-fluentd-kibana-on-aks-with-helm/</link><pubDate>Sun, 14 Oct 2018 14:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/10/14/deploying-elastic-search-fluentd-kibana-on-aks-with-helm/</guid><description>&lt;p>For my recent talk at &lt;a href="http://netconfmad2018.azurewebsites.net/" target="_blank" rel="noreferrer">.NET Conf Madrid&lt;/a> I managed to install Elastic Search, Fluentd and Kibana (EFK) as a logging solution for the AKS cluster I used in my demos.&lt;/p>
&lt;p>The fact is that such deployment was possible thanks to Tim Park and his post &lt;a href="https://medium.com/@timfpark/efk-logging-on-kubernetes-on-azure-4c54402459c4" target="_blank" rel="noreferrer">Logging with Fluentd, ElasticSearch, and Kibana (EFK) on Kubernetes on Azure&lt;/a> where I learned that to effectively deploy EFK on AKS I would have to tweak the resource definitions found in the &lt;a href="https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch" target="_blank" rel="noreferrer">Kubernetes&lt;/a> project.&lt;/p></description></item><item><title>Revisiting Docker Multi Stage Builds to build an ASP.NET Core Echo Server</title><link>https://carlos.mendible.com/2018/09/25/revisiting-docker-multi-stage-builds-to-build-an-asp-net-core-echo-server/</link><pubDate>Tue, 25 Sep 2018 20:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/09/25/revisiting-docker-multi-stage-builds-to-build-an-asp-net-core-echo-server/</guid><description>&lt;p>On April I wrote a post about &lt;a href="https://carlos.mendible.com/2018/04/04/using-docker-multi-stage-builds-to-build-an-asp-net-core-echo-server" target="_blank" rel="noreferrer">Using Docker Multi Stage Builds to build an ASP.NET Core Echo Server&lt;/a> and these days while preparing a talk, on CI/CD and kubernetes, I started to play with the &lt;a href="https://github.com/cmendible/dotnetcore.samples/tree/main/echoserver" target="_blank" rel="noreferrer">simple sample&lt;/a> I wrote back then.&lt;/p>
&lt;p>Soon enough I noticed that with each &lt;code>docker build&lt;/code> command I issued the dependencies for the echoserver were always restored, even if no changes were made to the project file (csproj).&lt;/p></description></item><item><title>Adding SourceLink to your .NET Core Library</title><link>https://carlos.mendible.com/2018/08/25/adding-sourcelink-to-your-net-core-library/</link><pubDate>Sat, 25 Aug 2018 11:27:39 +0000</pubDate><guid>https://carlos.mendible.com/2018/08/25/adding-sourcelink-to-your-net-core-library/</guid><description>&lt;p>Last week I read this tweets from Maxime Rouiller (&lt;a href="https://twitter.com/MaximRouiller" target="_blank" rel="noreferrer">@MaximRouiller&lt;/a>):&lt;/p>
&lt;blockquote class="twitter-tweet" data-lang="en">&lt;p lang="en" dir="ltr">Are you an MVP with a &lt;a href="https://twitter.com/hashtag/dotnetcore?src=hash&amp;amp;ref_src=twsrc%5Etfw">#dotnetcore&lt;/a> &lt;a href="https://twitter.com/hashtag/nuget?src=hash&amp;amp;ref_src=twsrc%5Etfw">#nuget&lt;/a> package? Are you looking for an easy blog post? I have something for you.&lt;/p>&amp;mdash; Maxime Rouiller (@MaximRouiller) &lt;a href="https://twitter.com/MaximRouiller/status/1032370596082900992?ref_src=twsrc%5Etfw">August 22, 2018&lt;/a>&lt;/blockquote>
&lt;blockquote class="twitter-tweet" data-lang="en">&lt;p lang="en" dir="ltr">Actually, you&amp;#39;re already using it. &lt;a href="https://t.co/N5IaY6TGqQ">https://t.co/N5IaY6TGqQ&lt;/a>&lt;br>&lt;br>That project is freaking cool. We need more package author to use it.&lt;/p></description></item><item><title>.NET Core, BenchmarkDotNet: for vs foreach performance</title><link>https://carlos.mendible.com/2018/08/22/net-core-benchmarkdotnet-for-vs-foreach-performance/</link><pubDate>Wed, 22 Aug 2018 16:12:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/08/22/net-core-benchmarkdotnet-for-vs-foreach-performance/</guid><description>&lt;p>So what is faster: looping through a &lt;strong>List&amp;lt;&amp;gt;&lt;/strong> with &lt;strong>for&lt;/strong> or with &lt;strong>foreach&lt;/strong>?&lt;/p>
&lt;p>Today I&amp;rsquo;ll show you how to use &lt;a href="https://benchmarkdotnet.org" target="_blank" rel="noreferrer">BenchmarkDotNet&lt;/a> with .Net Core to answer that question.&lt;/p>
&lt;p>Let&amp;rsquo;s start:&lt;/p>

&lt;h2 class="relative group">Create a folder for your new project
 &lt;div id="create-a-folder-for-your-new-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-folder-for-your-new-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command prompt an run:&lt;/p></description></item><item><title>.NET Core, BenchmarkDotNet and string compare performance</title><link>https://carlos.mendible.com/2018/08/16/dotnet-core-benchmarkdotnet-and-string-compare-performance/</link><pubDate>Thu, 16 Aug 2018 11:27:39 +0000</pubDate><guid>https://carlos.mendible.com/2018/08/16/dotnet-core-benchmarkdotnet-and-string-compare-performance/</guid><description>&lt;p>You have to choose between using &lt;strong>string.compare&lt;/strong> or &lt;strong>==&lt;/strong> to compare strings. How would you know which method performs faster?&lt;/p>
&lt;p>Today I&amp;rsquo;ll show you how to use &lt;a href="https://benchmarkdotnet.org" target="_blank" rel="noreferrer">BenchmarkDotNet&lt;/a> with .Net Core to answer that question.&lt;/p>
&lt;p>Let&amp;rsquo;s start:&lt;/p>

&lt;h2 class="relative group">Create a folder for your new project
 &lt;div id="create-a-folder-for-your-new-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-folder-for-your-new-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command prompt an run:&lt;/p></description></item><item><title>Accepting Azure Marketplace Terms with Ansible</title><link>https://carlos.mendible.com/2018/08/14/accepting-azure-marketplace-terms-with-ansible/</link><pubDate>Tue, 14 Aug 2018 11:27:39 +0000</pubDate><guid>https://carlos.mendible.com/2018/08/14/accepting-azure-marketplace-terms-with-ansible/</guid><description>&lt;p>Last May I wrote: &lt;a href="https://carlos.mendible.com/2018/05/21/accepting-azure-marketplace-terms-with-azure-cli" target="_blank" rel="noreferrer">Accepting Azure Marketplace Terms with Azure CLI&lt;/a> and this time we&amp;rsquo;ll accomplish the same task with Ansible.&lt;/p>
&lt;p>Turns out that Ansible 2.6 comes with a handy new module: &lt;a href="https://docs.ansible.com/ansible/latest/modules/azure_rm_resource_module.html?highlight=azure_rm_resource" target="_blank" rel="noreferrer">azure_rm_resource&lt;/a> which lets you create, update or delete any Azure resource using Azure REST API. So I decided to take it for a test drive with the &amp;ldquo;Accepting Terms&amp;rdquo; sample.&lt;/p></description></item><item><title>Installing Azure CLI and Ansible on Ubuntu</title><link>https://carlos.mendible.com/2018/08/10/installing-azure-cli-and-ansible-on-ubuntu/</link><pubDate>Fri, 10 Aug 2018 00:18:30 +0000</pubDate><guid>https://carlos.mendible.com/2018/08/10/installing-azure-cli-and-ansible-on-ubuntu/</guid><description>&lt;p>I&amp;rsquo;ve been using &lt;a href="https://www.ansible.com/" target="_blank" rel="noreferrer">Ansible&lt;/a> and the &lt;a href="https://docs.microsoft.com/en-us/cli/azure/?view=azure-cli-latest" target="_blank" rel="noreferrer">Azure CLI&lt;/a> every single day for the last 3 months. Non stop work editing playbooks and scripts with &lt;a href="https://code.visualstudio.com/" target="_blank" rel="noreferrer">Visual Studio Code&lt;/a> and running them on &lt;a href="https://docs.microsoft.com/en-us/windows/wsl/install-win10" target="_blank" rel="noreferrer">Ubuntu (WSL)&lt;/a> on my Windows 10 machine.&lt;/p>
&lt;p>Turns out that because &lt;a href="https://www.ansible.com/" target="_blank" rel="noreferrer">Ansible&lt;/a> uses python version &lt;strong>2.7.12&lt;/strong> and the &lt;a href="https://docs.microsoft.com/en-us/cli/azure/?view=azure-cli-latest" target="_blank" rel="noreferrer">Azure CLI&lt;/a> uses python &lt;strong>3.6.5&lt;/strong> you can make a mess if you get &amp;ldquo;creative&amp;rdquo; trying to install the tools instead of using the recommended commands:&lt;/p></description></item><item><title>At last: Network Policies in AKS with kube-router</title><link>https://carlos.mendible.com/2018/07/19/at-last-network-policies-in-aks-with-kube-router/</link><pubDate>Thu, 19 Jul 2018 00:21:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/07/19/at-last-network-policies-in-aks-with-kube-router/</guid><description>&lt;p>For ages I&amp;rsquo;ve been waiting for a way to enforce netwok policies on AKS, so last weekend while I was googling around, I found this hidden gem posted by &lt;a href="https://www.techdiction.com/bio/" target="_blank" rel="noreferrer">Marcus Robinson&lt;/a>: &lt;a href="https://www.techdiction.com/2018/06/02/enforcing-network-policies-using-kube-router-on-aks/" target="_blank" rel="noreferrer">Enforcing Network Policies using kube-router on AKS&lt;/a> and had to test the proposed solution.&lt;/p>
&lt;p>&lt;strong>Prerequisites&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://docs.microsoft.com/en-us/azure/aks/" target="_blank" rel="noreferrer">Azure Kubernetes Service (AKS)&lt;/a> deployed with &lt;a href="https://docs.microsoft.com/en-us/azure/aks/http-application-routing" target="_blank" rel="noreferrer">HTTP application routing&lt;/a> enabled.&lt;/li>
&lt;li>&lt;a href="https://kubernetes.io/docs/tasks/tools/install-kubectl/" target="_blank" rel="noreferrer">kubectl&lt;/a> installed&lt;/li>
&lt;/ul>

&lt;h2 class="relative group">Create a service exposed throuh your AKS DNS Zone
 &lt;div id="create-a-service-exposed-throuh-your-aks-dns-zone" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-service-exposed-throuh-your-aks-dns-zone" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Let&amp;rsquo;s start by deploying the following service to your Kubernetes cluster, by saving the following content to a file named &lt;strong>dni-function.yaml&lt;/strong> and replacing &lt;strong>[YOUR_DNS__ZONE_NAME]&lt;/strong> with the corresponding value of your service:&lt;/p></description></item><item><title>Simple Machine Learning with .NET Core Sample</title><link>https://carlos.mendible.com/2018/06/10/simple-machine-learning-with-dotnet-core-sample/</link><pubDate>Sun, 10 Jun 2018 20:39:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/06/10/simple-machine-learning-with-dotnet-core-sample/</guid><description>&lt;p>I think that more than a year and a half ago I read &lt;a href="https://www.manning.com/books/real-world-machine-learning" target="_blank" rel="noreferrer">&amp;ldquo;Real-World Machine Learning&amp;rdquo;&lt;/a> by Henrik Brink, Joseph
Richards, and Mark Fetherolf. A book that is easy to read and goes &amp;ldquo;to the point&amp;rdquo;!!! I&amp;rsquo;m sure you know what I mean.&lt;/p>
&lt;p>At the time the only thing that prevented me from really enjoying the book samples was that there was no easy way to &amp;ldquo;translate&amp;rdquo; them to .NET Core.&lt;/p></description></item><item><title>Accepting Azure Marketplace Terms with Azure CLI</title><link>https://carlos.mendible.com/2018/05/21/accepting-azure-marketplace-terms-with-azure-cli/</link><pubDate>Mon, 21 May 2018 19:21:39 +0000</pubDate><guid>https://carlos.mendible.com/2018/05/21/accepting-azure-marketplace-terms-with-azure-cli/</guid><description>&lt;p>When you try to deploy a VM from the Marketplace using an &lt;strong>ARM&lt;/strong> (json) template you&amp;rsquo;ll get an error like the one below in the case when you&amp;rsquo;ve not previously accepted the &lt;strong>Legal terms&lt;/strong> for the image:&lt;/p>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[{&lt;/span>&lt;span class="nt">&amp;#34;Legal terms have not been accepted for this item on this subscription. To accept terms using Powershell...&amp;#34;&lt;/span>&lt;span class="p">}]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>Accepting the &lt;strong>Legal terms&lt;/strong> is something you have to do once per subscription for each provider offer you want to use. So how can you accept the terms using the &lt;strong>Azure CLI (version 2.0.26 or higher)&lt;/strong>?&lt;/p></description></item><item><title>Running Ansible Azure playbook in Azure Cloud Shell</title><link>https://carlos.mendible.com/2018/05/05/running-ansible-azure-module-in-azure-cloud-shell/</link><pubDate>Sat, 05 May 2018 07:21:39 +0000</pubDate><guid>https://carlos.mendible.com/2018/05/05/running-ansible-azure-module-in-azure-cloud-shell/</guid><description>&lt;h2 class="relative group">&lt;strong>NOTE: The issue described in this post was fixed!!! (ansible 2.5.2 and Azure CLI 2.0.34)&lt;/strong>
 &lt;div id="note-the-issue-described-in-this-post-was-fixed-ansible-252-and-azure-cli-2034" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#note-the-issue-described-in-this-post-was-fixed-ansible-252-and-azure-cli-2034" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Last week I tried to run this simple Ansible playbook in Azure Cloud Shell:&lt;/p>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># resource_group.yml&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># Create test resource group in west europe&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Create a Resource Group&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">hosts&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">localhost&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">connection&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">local&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">gather_facts&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">no&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">tasks&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Create Resource Group&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">azure_rm_resourcegroup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">location&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">westeurope&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">test&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">state&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">present&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>The first attempt to run the playbook with:&lt;/p></description></item><item><title>Adding Code Analysis and StyleCop checks to .NET Core projects with dotnet-addcasa</title><link>https://carlos.mendible.com/2018/04/05/adding-code-analysis-and-stylecop-checks-to-net-core-projects-with-dotnet-addcasa/</link><pubDate>Thu, 05 Apr 2018 07:21:39 +0000</pubDate><guid>https://carlos.mendible.com/2018/04/05/adding-code-analysis-and-stylecop-checks-to-net-core-projects-with-dotnet-addcasa/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to use &lt;a href="https://github.com/cmendible/dotnet-addcasa" target="_blank" rel="noreferrer">dotnet-addcasa&lt;/a>: a .NET Core global tool to add CodeAnalysis and Stylecop checks to your projects.&lt;/p>
&lt;p>If you want to manually add those checks or understand the tool internals check my post: &lt;a href="https://carlos.mendible.com/2017/08/24/dotnet-core-code-analysis-and-stylecop/" target="_blank" rel="noreferrer">.NET Core, Code Analysis and StyleCop&lt;/a>&lt;/p>

&lt;h2 class="relative group">Prerequisites
 &lt;div id="prerequisites" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#prerequisites" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>You&amp;rsquo;ll need &lt;a href="https://www.microsoft.com/net/download/dotnet-core/sdk-2.1.300-preview1" target="_blank" rel="noreferrer">.NET Core SDK 2.1.300-preview1&lt;/a> installed.&lt;/p></description></item><item><title>Using Docker Multi Stage Builds to build an ASP.NET Core Echo Server</title><link>https://carlos.mendible.com/2018/04/04/using-docker-multi-stage-builds-to-build-an-asp-net-core-echo-server/</link><pubDate>Wed, 04 Apr 2018 15:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/04/04/using-docker-multi-stage-builds-to-build-an-asp-net-core-echo-server/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to create a simple Echo Server with ASP.NET Core and then a Docker Image using &lt;a href="https://docs.docker.com/develop/develop-images/multistage-build/" target="_blank" rel="noreferrer">multi-stage build&lt;/a>:&lt;/p>

&lt;h2 class="relative group">Create the Application
 &lt;div id="create-the-application" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-the-application" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a PowerShell promt and run:&lt;/p>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">mkdir&lt;/span> &lt;span class="n">echoserver&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd &lt;/span>&lt;span class="n">echoserver&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">new&lt;/span> &lt;span class="n">console&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">add&lt;/span> &lt;span class="n">package&lt;/span> &lt;span class="n">Microsoft&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">AspNetCore&lt;/span> &lt;span class="n">-v&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="mf">2&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Replace the contents of Program.cs
 &lt;div id="replace-the-contents-of-programcs" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#replace-the-contents-of-programcs" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Replace the contents of the &lt;strong>Program.cs&lt;/strong> file with the following code:&lt;/p></description></item><item><title>Secure your Kubernetes services with NGINX ingress controller, tls and more.</title><link>https://carlos.mendible.com/2018/03/20/secure-your-kubernetes-services-with-nginx-ingress-controller-tls-and-more/</link><pubDate>Tue, 20 Mar 2018 15:13:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/03/20/secure-your-kubernetes-services-with-nginx-ingress-controller-tls-and-more/</guid><description>&lt;p>&lt;strong>Disclaimer:&lt;/strong> samples provided in this post were tested both in &lt;a href="https://docs.microsoft.com/en-us/azure/aks/" target="_blank" rel="noreferrer">Azure Container Services (AKS)&lt;/a> and &lt;a href="https://blog.docker.com/2018/01/docker-windows-desktop-now-kubernetes/" target="_blank" rel="noreferrer">Kubernetes provided by Docker for Windows&lt;/a>.&lt;/p>
&lt;p>In previous posts I showed you how to &lt;a href="https://carlos.mendible.com//2017/12/28/run-a-precomplied-net-core-azure-function-in-a-container" target="_blank" rel="noreferrer">Run a Precompiled .NET Core Azure Function in a Container&lt;/a> and how to &lt;a href="https://carlos.mendible.com/2017/12/01/deploy-your-first-service-to-azure-container-services-aks" target="_blank" rel="noreferrer">Deploy your first Service to Azure Container Services (AKS)&lt;/a>.&lt;/p>
&lt;p>By now you should be able to run your own services in Kubernetes and starting to wonder about how can you give answers to questions such as:&lt;/p></description></item><item><title>My kubectl Cheat Sheet</title><link>https://carlos.mendible.com/2018/03/17/my-kubectl-cheat-sheet/</link><pubDate>Sat, 17 Mar 2018 17:23:14 +0000</pubDate><guid>https://carlos.mendible.com/2018/03/17/my-kubectl-cheat-sheet/</guid><description>&lt;p>This is a small &lt;strong>&lt;a href="https://kubernetes.io/docs/reference/kubectl/overview/" target="_blank" rel="noreferrer">kubectl&lt;/a> Cheat Sheet&lt;/strong> with the list of commands and settings I use, almost on a daily basis, when working with kubernetes.&lt;/p>

&lt;h2 class="relative group">Get version and cluster information
 &lt;div id="get-version-and-cluster-information" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#get-version-and-cluster-information" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">Get kubectl version
 &lt;div id="get-kubectl-version" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#get-kubectl-version" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl --version&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Get cluster information
 &lt;div id="get-cluster-information" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#get-cluster-information" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl cluster-info&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Check cluster nodes
 &lt;div id="check-cluster-nodes" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#check-cluster-nodes" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl get nodes&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Get running services
 &lt;div id="get-running-services" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#get-running-services" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl get services -w --all-namespaces&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Context
 &lt;div id="context" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#context" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">List all available contexts
 &lt;div id="list-all-available-contexts" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#list-all-available-contexts" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl config get-contexts&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Get current context
 &lt;div id="get-current-context" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#get-current-context" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl config current-context&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Change the context
 &lt;div id="change-the-context" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#change-the-context" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl config use-context &lt;span class="o">[&lt;/span>context name&lt;span class="o">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Deployment
 &lt;div id="deployment" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#deployment" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">Deploy
 &lt;div id="deploy" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#deploy" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl apply -f &lt;span class="o">[&lt;/span>yaml definition file&lt;span class="o">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Get deployment definition
 &lt;div id="get-deployment-definition" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#get-deployment-definition" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl get deployment &lt;span class="o">[&lt;/span>deployment name&lt;span class="o">]&lt;/span> -o yaml&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Update the image of a deployment
 &lt;div id="update-the-image-of-a-deployment" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#update-the-image-of-a-deployment" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl &lt;span class="nb">set&lt;/span> image deployment/&lt;span class="o">[&lt;/span>deployment name&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>container name&lt;span class="o">]=[&lt;/span>image tag&lt;span class="o">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Set autoscale for a deployment
 &lt;div id="set-autoscale-for-a-deployment" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#set-autoscale-for-a-deployment" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl autoscale deployment &lt;span class="o">[&lt;/span>deployment name&lt;span class="o">]&lt;/span> --min&lt;span class="o">=&lt;/span>&lt;span class="m">2&lt;/span> --max&lt;span class="o">=&lt;/span>&lt;span class="m">5&lt;/span> --cpu-percent&lt;span class="o">=&lt;/span>&lt;span class="m">80&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Delete a deployment
 &lt;div id="delete-a-deployment" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#delete-a-deployment" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl delete -f &lt;span class="o">[&lt;/span>yaml definition file&lt;span class="o">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Get secret definition
 &lt;div id="get-secret-definition" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#get-secret-definition" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl get secret &lt;span class="o">[&lt;/span>secret name&lt;span class="o">]&lt;/span> -o yaml&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Force delete a pod
 &lt;div id="force-delete-a-pod" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#force-delete-a-pod" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl delete pod &lt;span class="o">[&lt;/span>pod name&lt;span class="o">]&lt;/span> --grace-period&lt;span class="o">=&lt;/span>&lt;span class="m">0&lt;/span> --force&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Logs
 &lt;div id="logs" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#logs" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">Read a pod&amp;rsquo;s log
 &lt;div id="read-a-pods-log" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#read-a-pods-log" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl logs &lt;span class="o">[&lt;/span>pod name&lt;span class="o">]&lt;/span> -n &lt;span class="o">[&lt;/span>namespace name&lt;span class="o">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Misc
 &lt;div id="misc" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#misc" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">Install kubernetes dashboard
 &lt;div id="install-kubernetes-dashboard" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#install-kubernetes-dashboard" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>Hope it helps!&lt;/p></description></item><item><title>Microsoft MVP Global Summit 2018 Experience</title><link>https://carlos.mendible.com/2018/02/18/microsoft-mvp-global-summit-2018-experience/</link><pubDate>Tue, 13 Mar 2018 17:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/02/18/microsoft-mvp-global-summit-2018-experience/</guid><description>&lt;p>&lt;strong>Disclaimer&lt;/strong>: For those of you who are expecting to learn or read about new technical information and cool new product features or roadmaps I have bad news: almost everything that Microsoft shares with MVPs during the Summit is under an NDA (Non-Disclosure Agreement) which means that what I&amp;rsquo;ve learned in Redmond stays with me, inside my head.&lt;/p></description></item><item><title>Consuming Azure Event Hubs Events With Kafka Connect</title><link>https://carlos.mendible.com/2018/02/18/consuming-azure-event-hubs-events-with-kafka-connect/</link><pubDate>Sun, 18 Feb 2018 17:00:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/02/18/consuming-azure-event-hubs-events-with-kafka-connect/</guid><description>&lt;p>So last week I was in a rush to find a fast and easy way to consume events from Azure Event Hubs and send them to a Kafka topic.&lt;/p>
&lt;p>After googling a bit I found this project: &lt;a href="https://github.com/Azure/toketi-kafka-connect-iothub/releases" target="_blank" rel="noreferrer">Kafka Connect Azure IoT Hub&lt;/a>. Yes the name of the project can be misleading, but since IoT Hub is a service which relies on Event Hubs and also taking a close look to the code showed that it uses the Event Hubs client for java, I decided to give it a try.&lt;/p></description></item><item><title>Run a Durable Azure Function in a Container</title><link>https://carlos.mendible.com/2018/01/14/run-a-durable-azure-function-in-a-container/</link><pubDate>Sun, 14 Jan 2018 15:19:00 +0000</pubDate><guid>https://carlos.mendible.com/2018/01/14/run-a-durable-azure-function-in-a-container/</guid><description>&lt;p>Greetings readers! Hope you all a Happy New Year!&lt;/p>
&lt;p>Last post I was about &lt;a href="https://carlos.mendible.com/2017/12/28/run-a-precomplied-net-core-azure-function-in-a-container" target="_blank" rel="noreferrer">running a Precompiled .NET Core Azure Function in a Container&lt;/a>. This time let&amp;rsquo;s go one step further and &lt;strong>Run a Durable Azure Function in a Container&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Prerequisites&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.docker.com" target="_blank" rel="noreferrer">Docker&lt;/a> installed and basic knowledge.&lt;/li>
&lt;li>&lt;a href="https://www.microsoft.com/net/download/" target="_blank" rel="noreferrer">.NET Core&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.microsoft.com/en-us/azure/storage/common/storage-create-storage-account" target="_blank" rel="noreferrer">Azure Storage Account&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/durable-functions-overview" target="_blank" rel="noreferrer">Azure Durable Functions Knowledge&lt;/a>&lt;/li>
&lt;/ul>

&lt;h2 class="relative group">Create a .NET Core lib project
 &lt;div id="create-a-net-core-lib-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-net-core-lib-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Create a .NET Core lib project.&lt;/p></description></item><item><title>Run a Precompiled .NET Core Azure Function in a Container</title><link>https://carlos.mendible.com/2017/12/28/run-a-precompiled-.net-core-azure-function-in-a-container/</link><pubDate>Thu, 28 Dec 2017 15:13:00 +0000</pubDate><guid>https://carlos.mendible.com/2017/12/28/run-a-precompiled-.net-core-azure-function-in-a-container/</guid><description>&lt;p>So this morning I found my self browsing through the images Microsoft has published in the &lt;a href="https://hub.docker.com/u/microsoft/" target="_blank" rel="noreferrer">Docker Hub&lt;/a> and then I saw this one: &lt;a href="https://hub.docker.com/r/microsoft/azure-functions-runtime/" target="_blank" rel="noreferrer">microsoft/azure-functions-runtime&lt;/a> and decided to &lt;strong>Run a Precompiled .NET Core Azure Function in a Container&lt;/strong>.&lt;/p>
&lt;p>&lt;strong>Prerequisites&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.docker.com" target="_blank" rel="noreferrer">Docker&lt;/a> installed and basic knowledge.&lt;/li>
&lt;li>&lt;a href="https://www.microsoft.com/net/download/" target="_blank" rel="noreferrer">.NET Core&lt;/a>&lt;/li>
&lt;/ul>

&lt;h2 class="relative group">Create a .NET Core lib project
 &lt;div id="create-a-net-core-lib-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-net-core-lib-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Create a .NET Core lib project.&lt;/p></description></item><item><title>Deploy your first Service to Azure Container Services (AKS)</title><link>https://carlos.mendible.com/2017/12/01/deploy-your-first-service-to-azure-container-services-aks/</link><pubDate>Fri, 01 Dec 2017 15:13:00 +0000</pubDate><guid>https://carlos.mendible.com/2017/12/01/deploy-your-first-service-to-azure-container-services-aks/</guid><description>&lt;p>In this post I&amp;rsquo;ll show you how to &lt;strong>Deploy your first Service to &lt;a href="https://docs.microsoft.com/en-us/azure/aks/" target="_blank" rel="noreferrer">Azure Container Services (AKS)&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>&lt;strong>Prerequisites&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest" target="_blank" rel="noreferrer">Azure CLI&lt;/a> installed and basic knowledge experience.&lt;/li>
&lt;li>&lt;a href="https://www.docker.com" target="_blank" rel="noreferrer">Docker&lt;/a> installed and basic knowledge.&lt;/li>
&lt;li>&lt;a href="https://azure.microsoft.com/en-us/pricing/purchase-options/" target="_blank" rel="noreferrer">Azure Subscription&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/" target="_blank" rel="noreferrer">Kubernetes&lt;/a> experience.&lt;/li>
&lt;/ul>

&lt;h2 class="relative group">Create a resource group:
 &lt;div id="create-a-resource-group" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-resource-group" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Firt create a Resource Group. Be aware that at the time of writing AKS is not available in all Azure regions.&lt;/p></description></item><item><title>Use PowerShell to create a Microsoft Teams Channel</title><link>https://carlos.mendible.com/2017/11/14/use-powershell-to-create-a-microsoft-teams-channel/</link><pubDate>Tue, 14 Nov 2017 02:15:00 +0000</pubDate><guid>https://carlos.mendible.com/2017/11/14/use-powershell-to-create-a-microsoft-teams-channel/</guid><description>&lt;p>For those of you who have been trying to automate anything related to Microsoft Teams, let me tell you that there is a new PowerShell Module in town: &lt;a href="https://www.powershellgallery.com/packages/MicrosoftTeams/0.9.0" target="_blank" rel="noreferrer">Microsoft Teams 0.9.0&lt;/a> which you can install with the following command:&lt;/p>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">Install-Module&lt;/span> &lt;span class="n">MicrosoftTeams&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>Now to automate the channel creation In A Team you can simply:&lt;/p></description></item><item><title>Use PowerShell to enable Azure Storage Account Firewall Rules</title><link>https://carlos.mendible.com/2017/11/02/use-powershell-to-enable-azure-storage-account-firewall-rules/</link><pubDate>Thu, 02 Nov 2017 20:53:16 +0000</pubDate><guid>https://carlos.mendible.com/2017/11/02/use-powershell-to-enable-azure-storage-account-firewall-rules/</guid><description>&lt;p>In this post I&amp;rsquo;ll show you how to &lt;strong>Use PowerShell to enable Azure Storage Account Firewall Rules&lt;/strong>.&lt;/p>
&lt;p>Be sure to be have &lt;a href="https://www.powershellgallery.com/packages/AzureRM/4.4.1" target="_blank" rel="noreferrer">AzureRM PowerShell 4.4.1&lt;/a> module installed.&lt;/p>

&lt;h2 class="relative group">&lt;strong>Login to your Azure Account&lt;/strong>
 &lt;div id="login-to-your-azure-account" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#login-to-your-azure-account" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Launch Powershell and start by Login to your Azure Account.&lt;/p></description></item><item><title>Use PowerShell to Enable and Automate Azure Analysis Services Backup</title><link>https://carlos.mendible.com/2017/10/23/use-powershell-to-enable-and-automate-azure-analysis-services-backup/</link><pubDate>Mon, 23 Oct 2017 20:53:16 +0000</pubDate><guid>https://carlos.mendible.com/2017/10/23/use-powershell-to-enable-and-automate-azure-analysis-services-backup/</guid><description>&lt;p>In this post I&amp;rsquo;ll show you how to &lt;strong>Use PowerShell to Enable and Automate Azure Analysis Backup&lt;/strong>.&lt;/p>

&lt;h2 class="relative group">&lt;strong>Enable Azure Analysis Service Backup&lt;/strong>
 &lt;div id="enable-azure-analysis-service-backup" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#enable-azure-analysis-service-backup" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Enable-AzureRmAnalysisServicesBackup is a small powershell script that uses the the Set-AzureRmResource cmdlet to enable backup location to an Azure Analysis Service instance.&lt;/p></description></item><item><title>Prepare a .Net Core Console App for Docker</title><link>https://carlos.mendible.com/2017/10/15/prepare-a-net-core-console-app-for-docker/</link><pubDate>Sun, 15 Oct 2017 12:16:08 +0000</pubDate><guid>https://carlos.mendible.com/2017/10/15/prepare-a-net-core-console-app-for-docker/</guid><description>&lt;p>Last week I had the luck to attend the &lt;a href="https://www.microsoftevents.com/profile/form/index.cfm?PKformID=0x2564678abcd" rel="noopener" target="_blank">Microsoft Azure OpenHack in Amsterdam&lt;/a>. We spent two and a half days learning a lot about kubernetes, Azure Container Services, Azure Container Registry, Azure OMS and Minecraft!&lt;/p>
&lt;p>In one of the challenges we decided to implement a &lt;a href="https://docs.microsoft.com/en-us/azure/architecture/patterns/sidecar" rel="noopener" target="_blank">sidecar container&lt;/a> for logging purposes. So using .NET Core we created a console application with proper handling of the&amp;quot;Control+C&amp;quot; and&amp;quot;Control+Break&amp;quot; key shortcuts.&lt;/p></description></item><item><title>Use PowerShell to Enable Azure Analysis Services Firewall</title><link>https://carlos.mendible.com/2017/10/06/use-powershell-to-enable-azure-analysis-services-firewall/</link><pubDate>Fri, 06 Oct 2017 10:15:52 +0000</pubDate><guid>https://carlos.mendible.com/2017/10/06/use-powershell-to-enable-azure-analysis-services-firewall/</guid><description>&lt;p>Last week, firewall support was added to Azure Analysis Service (&lt;a href="https://azure.microsoft.com/en-us/blog/azure-analysis-services-adds-firewall-support/" rel="noopener" target="_blank">&lt;a href="https://azure.microsoft.com/en-us/blog/azure-analysis-services-adds-firewall-support/" target="_blank" rel="noreferrer">https://azure.microsoft.com/en-us/blog/azure-analysis-services-adds-firewall-support/&lt;/a>&lt;/a>). The thing is that, at the time of writing, there is no AzureRM cmdlet available to &lt;strong>Use PowerShell to Enable Azure Analysis Services Firewall&lt;/strong>&lt;/p>
&lt;p>So, with the help of &lt;strong>&lt;a href="https://resources.azure.com" target="_blank">Resource Explorer&lt;/a>&lt;/strong> I found which properties must be added to the service (resource) in order to enable the firewall:&lt;/p></description></item><item><title>.NET Core CLI and MSBUILD Cheat Sheet</title><link>https://carlos.mendible.com/2017/09/21/dotnet-core-cli-and-msbuild-cheat-sheet/</link><pubDate>Thu, 21 Sep 2017 17:23:14 +0000</pubDate><guid>https://carlos.mendible.com/2017/09/21/dotnet-core-cli-and-msbuild-cheat-sheet/</guid><description>&lt;p>This is a small &lt;strong>.NET Core CLI and MSBUILD Cheat Sheet&lt;/strong> with the list of commands and settings I use almost on daily basis when working with .NET Core, the command line and Visual Studio Code.&lt;/p>

&lt;h2 class="relative group">Checks
 &lt;div id="checks" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#checks" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">Check installed CLI version:
 &lt;div id="check-installed-cli-version" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#check-installed-cli-version" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-version&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Show available templates:
 &lt;div id="show-available-templates" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#show-available-templates" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">new&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Solutions
 &lt;div id="solutions" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#solutions" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">Create a solution with the name of current the folder:
 &lt;div id="create-a-solution-with-the-name-of-current-the-folder" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-solution-with-the-name-of-current-the-folder" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">new&lt;/span> &lt;span class="n">sln&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Create a solution with a specific name:
 &lt;div id="create-a-solution-with-a-specific-name" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-solution-with-a-specific-name" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">new&lt;/span> &lt;span class="n">sln&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-name&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="no">solution name&lt;/span>&lt;span class="p">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Add a project to a solution:
 &lt;div id="add-a-project-to-a-solution" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#add-a-project-to-a-solution" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">add&lt;/span> &lt;span class="n">sln&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="no">relative path to csproj file&lt;/span>&lt;span class="p">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Packages
 &lt;div id="packages" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#packages" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">Add package reference to the project in the current folder:
 &lt;div id="add-package-reference-to-the-project-in-the-current-folder" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#add-package-reference-to-the-project-in-the-current-folder" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">add&lt;/span> &lt;span class="n">package&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="no">package name&lt;/span>&lt;span class="p">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Remove a package reference from the project in the current folder:
 &lt;div id="remove-a-package-reference-from-the-project-in-the-current-folder" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#remove-a-package-reference-from-the-project-in-the-current-folder" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">remove&lt;/span> &lt;span class="n">package&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="no">package name&lt;/span>&lt;span class="p">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Add a specific package version reference to the project in the current folder:
 &lt;div id="add-a-specific-package-version-reference-to-the-project-in-the-current-folder" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#add-a-specific-package-version-reference-to-the-project-in-the-current-folder" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">add&lt;/span> &lt;span class="n">package&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="no">package name&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">-v&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="no">version&lt;/span>&lt;span class="p">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Restore packages:
 &lt;div id="restore-packages" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#restore-packages" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">restore&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Create a nuget package for the project in current folder:
 &lt;div id="create-a-nuget-package-for-the-project-in-current-folder" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-nuget-package-for-the-project-in-current-folder" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">pack&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Project Templates
 &lt;div id="project-templates" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#project-templates" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">Install a new project template:
 &lt;div id="install-a-new-project-template" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#install-a-new-project-template" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">new&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-install&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="no">dotnet template name&lt;/span>&lt;span class="p">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Remove a project template:
 &lt;div id="remove-a-project-template" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#remove-a-project-template" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">new&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-uninstall&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="no">dotnet template name&lt;/span>&lt;span class="p">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Run test defined in current folder project
 &lt;div id="run-test-defined-in-current-folder-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#run-test-defined-in-current-folder-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">test&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">Builds
 &lt;div id="builds" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#builds" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">Build current&amp;rsquo;s folder solution or project
 &lt;div id="build-currents-folder-solution-or-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#build-currents-folder-solution-or-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">build&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Build current&amp;rsquo;s folder solution or project with release configuration
 &lt;div id="build-currents-folder-solution-or-project-with-release-configuration" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#build-currents-folder-solution-or-project-with-release-configuration" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">build&lt;/span> &lt;span class="n">-c&lt;/span> &lt;span class="n">Release&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Publish artifacts for current&amp;rsquo;s folder solution or project.
 &lt;div id="publish-artifacts-for-currents-folder-solution-or-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#publish-artifacts-for-currents-folder-solution-or-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="n">publish&lt;/span> &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h2 class="relative group">MSBUILD
 &lt;div id="msbuild" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#msbuild" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>

&lt;h3 class="relative group">To add a reference to a local assembly without nuget package, edit your csproj and add a Reference as shown in the following sample:
 &lt;div id="to-add-a-reference-to-a-local-assembly-without-nuget-package-edit-your-csproj-and-add-a-reference-as-shown-in-the-following-sample" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#to-add-a-reference-to-a-local-assembly-without-nuget-package-edit-your-csproj-and-add-a-reference-as-shown-in-the-following-sample" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;code&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;ItemGroup&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Reference&lt;/span> &lt;span class="na">Include=&lt;/span>&lt;span class="s">&amp;#34;[Relative path to the Assembly dll file]&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/ItemGroup&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/code&amp;gt;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>

&lt;h3 class="relative group">Force a file to be copied to the output folder, edit your csproj and add a Content section as shown in the following sample:
 &lt;div id="force-a-file-to-be-copied-to-the-output-folder-edit-your-csproj-and-add-a-content-section-as-shown-in-the-following-sample" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#force-a-file-to-be-copied-to-the-output-folder-edit-your-csproj-and-add-a-content-section-as-shown-in-the-following-sample" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h3>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;code&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;ItemGroup&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Content&lt;/span> &lt;span class="na">Include=&lt;/span>&lt;span class="s">&amp;#34;[name of the file]&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;CopyToOutputDirectory&amp;gt;&lt;/span>PreserveNewest&lt;span class="nt">&amp;lt;/CopyToOutputDirectory&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/Content&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/ItemGroup&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/code&amp;gt;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>Hope it helps!&lt;/p></description></item><item><title>Toggle Raspberry Pi GPIO Pins with ASP.NET Core 2.0</title><link>https://carlos.mendible.com/2017/09/01/toggle-raspberry-pi-gpio-pins-with-asp-net-core-20/</link><pubDate>Fri, 01 Sep 2017 09:39:08 +0000</pubDate><guid>https://carlos.mendible.com/2017/09/01/toggle-raspberry-pi-gpio-pins-with-asp-net-core-20/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to &lt;strong>Toggle Raspberry Pi GPIO Pins with ASP.NET Core 2.0&lt;/strong>.&lt;/p>
&lt;p>First be aware of the following prerequisites:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://www.microsoft.com/net/download/core" target="_blank">.NET Core 2.0 SDK&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>A Raspberry Pi 3 Running Raspbian&lt;/strong>&lt;/li>
&lt;li>Install linux dependencies: sudo apt-get install curl libunwind8 gettext&lt;/li>
&lt;/ul>
&lt;p>Now let&amp;rsquo;s start:&lt;/p>

&lt;h2 class="relative group">Create a folder for your new project
 &lt;div id="create-a-folder-for-your-new-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-folder-for-your-new-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command prompt an run:&lt;/p></description></item><item><title>.NET Core, Code Analysis and StyleCop</title><link>https://carlos.mendible.com/2017/08/24/dotnet-core-code-analysis-and-stylecop/</link><pubDate>Thu, 24 Aug 2017 17:01:39 +0000</pubDate><guid>https://carlos.mendible.com/2017/08/24/dotnet-core-code-analysis-and-stylecop/</guid><description>&lt;p>So now that .NET Core and .NET Standard 2.0 have been released some of you may be migrating applications or even creating new ones with it. As you progress you are starting to worry about the quality of your code so what you want is to at least check your code against design and style guidelines don&amp;rsquo;t you?&lt;/p></description></item><item><title>Step by step: .Net Core and Azure Search</title><link>https://carlos.mendible.com/2017/08/09/step-by-step-net-core-and-azure-search/</link><pubDate>Wed, 09 Aug 2017 15:51:07 +0000</pubDate><guid>https://carlos.mendible.com/2017/08/09/step-by-step-net-core-and-azure-search/</guid><description>&lt;p>&lt;strong>Step by step: .Net Core and Azure Search&lt;/strong> is small introduction on how to connect to &lt;a href="https://azure.microsoft.com/en-us/services/search/" target="_blank">Azure Search&lt;/a>, create and delete indexes, models, add documents and perform basic queries.&lt;/p>
&lt;p>Let&amp;rsquo;s go for it:&lt;/p>

&lt;h2 class="relative group">Create an Azure Search service
 &lt;div id="create-an-azure-search-service" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-an-azure-search-service" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Create an &lt;a href="https://azure.microsoft.com/en-us/services/search/" target="_blank">Azure Search&lt;/a> service in your Azure subscription, and get the Azure Search name and primary Read-Write key.&lt;/p></description></item><item><title>Read Azure Service Health Activity Logs with .NET Core</title><link>https://carlos.mendible.com/2017/08/04/read-azure-service-health-activity-logs-with-net-core/</link><pubDate>Fri, 04 Aug 2017 08:50:13 +0000</pubDate><guid>https://carlos.mendible.com/2017/08/04/read-azure-service-health-activity-logs-with-net-core/</guid><description>&lt;p>This week there was a small outage within the Azure Data Lake Store service and as consequence I wondered how could I &lt;strong>Read Azure Service Health Activity Logs with .NET Core.&lt;/strong>&lt;/p>
&lt;p>Let&amp;rsquo;s go for it:&lt;/p>

&lt;h2 class="relative group">Create a folder for your new project
 &lt;div id="create-a-folder-for-your-new-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-folder-for-your-new-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command promt an run:&lt;/p></description></item><item><title>Create a Service Principal and write required parameters to a .azureauth file</title><link>https://carlos.mendible.com/2017/08/02/create-service-principal-write-required-parameters-to-azureauth-file/</link><pubDate>Wed, 02 Aug 2017 16:57:08 +0000</pubDate><guid>https://carlos.mendible.com/2017/08/02/create-service-principal-write-required-parameters-to-azureauth-file/</guid><description>&lt;p>This week I had to repeat the process of creating a Service Principal in order to use the &lt;strong>Microsoft.Azure.Management.Fluent&lt;/strong> lib with &lt;strong>.NET Core&lt;/strong> so I decided it was time to script the process. With the following script you can &lt;strong>Create a Service Principal and write required parameters to a .azureauth file&lt;/strong>.&lt;/p></description></item><item><title>Run ASP.NET Core on OpenShift</title><link>https://carlos.mendible.com/2017/07/26/run-asp.net-core-on-openshift/</link><pubDate>Wed, 26 Jul 2017 09:55:19 +0000</pubDate><guid>https://carlos.mendible.com/2017/07/26/run-asp.net-core-on-openshift/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to &lt;strong>Run ASP.NET Core on OpenShift&lt;/strong>.&lt;/p>
&lt;p>First be aware of the following prerequisites:&lt;/p>
&lt;ul>
&lt;li>You&amp;rsquo;ll need a working Docker installation. If you are using Windows 10 you can get Docker for Windows &lt;a href="https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows" target="_blank">here&lt;/a>.&lt;/li>
&lt;li>Be sure to &lt;strong>Disable TLS for 127.0.0.1:2375&lt;/strong> for your Docker installation&lt;/li>
&lt;li>Be sure to set &lt;strong>172.30.0.0/16 as an Insecure Registry&lt;/strong> in your Docker installation&lt;/li>
&lt;li>Be sure to set &lt;strong>172.30.1.1:5000 as a Registry Mirror&lt;/strong> in your Docker installation&lt;/li>
&lt;li>You&amp;rsquo;ll need download the &lt;a href="https://www.openshift.org/download.html" target="_blank">oc Client Tools&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Note&lt;/strong>: If you want to learn about OpenShift and what can you do with it, I recommend the free book: &lt;a href="https://www.openshift.com/promotions/for-developers.html" target="_blank">Openshift for Developers&lt;/a>.&lt;/p></description></item><item><title>dotnet new templates for AWS Lambda and Raspberry Pi</title><link>https://carlos.mendible.com/2017/07/18/dotnet-new-templates-for-aws-lambda-and-raspberry-pi/</link><pubDate>Tue, 18 Jul 2017 08:56:48 +0000</pubDate><guid>https://carlos.mendible.com/2017/07/18/dotnet-new-templates-for-aws-lambda-and-raspberry-pi/</guid><description>&lt;p>After reading the following articles:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://blogs.msdn.microsoft.com/dotnet/2017/04/02/how-to-create-your-own-templates-for-dotnet-new/" target="_blank">How to create your own templates for dotnet new&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://rehansaeed.com/custom-project-templates-using-dotnet-new/" target="_blank">Custom Project Templates Using dotnet new&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>and having a twitter conversation with &lt;a href="https://social.msdn.microsoft.com/profile/Sayed-Ibrahim-Hashimi" target="_blank">Sayed-Ibrahim-Hashimi&lt;/a> I decided it was a nice idea to create some templates based on the code of some of my posts.&lt;/p>
&lt;p>So here are the results:&lt;/p></description></item><item><title>HDInsight: Scale Horizontally</title><link>https://carlos.mendible.com/2017/07/13/hdinsight-scale-horizontally/</link><pubDate>Thu, 13 Jul 2017 11:07:13 +0000</pubDate><guid>https://carlos.mendible.com/2017/07/13/hdinsight-scale-horizontally/</guid><description>&lt;p>&lt;strong>HDInsight: Scale Horizontally&lt;/strong> with &lt;a href="https://gallery.technet.microsoft.com/Scale-your-HDInsight-f57bb4d8" target="_blank" rel="noreferrer">Scale-HDInsightClusterNodes.ps1&lt;/a> a PowerShell workflow that will help you automate the process of scaling your cluster.&lt;/p>
&lt;p>The script receives 4 parameters:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>ResourceGroupName&lt;/strong>: The name of the resource group where the cluster resides&lt;/li>
&lt;li>&lt;strong>ClusterName&lt;/strong>: The name of your HDInsight cluster&lt;/li>
&lt;li>&lt;strong>Nodes&lt;/strong>: The number of nodes you want for the cluster&lt;/li>
&lt;li>&lt;strong>ConnectionName&lt;/strong>: The name of your automation connection account&lt;/li>
&lt;/ul>
&lt;p>and requires the following PowerShell modules: &lt;strong>AzureRM.Profile&lt;/strong>, &lt;strong>AzureRM.HDInsight&lt;/strong>&lt;/p></description></item><item><title>Deploy your ASP.NET Core Web API to AWS Lambda</title><link>https://carlos.mendible.com/2017/07/04/deploy-your-asp-net-core-web-api-to-aws-lambda/</link><pubDate>Tue, 04 Jul 2017 12:59:05 +0000</pubDate><guid>https://carlos.mendible.com/2017/07/04/deploy-your-asp-net-core-web-api-to-aws-lambda/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to &lt;strong>Deploy your ASP.NET Core Web API to AWS Lambda&lt;/strong>.&lt;/p>
&lt;p>First be aware of the following prerequisites:&lt;/p>
&lt;ul>
&lt;li>You&amp;rsquo;ll need an AWS account: &lt;a href="https://aws.amazon.com/" target="_blank">&lt;a href="https://aws.amazon.com/" target="_blank" rel="noreferrer">https://aws.amazon.com/&lt;/a>&lt;/a>&lt;/li>
&lt;li>You&amp;rsquo;ll need AWS CLI installed: &lt;a href="http://docs.aws.amazon.com/cli/latest/userguide/installing.html" target="_blank">&lt;a href="http://docs.aws.amazon.com/cli/latest/userguide/installing.html" target="_blank" rel="noreferrer">http://docs.aws.amazon.com/cli/latest/userguide/installing.html&lt;/a>&lt;/a>&lt;/li>
&lt;li>You&amp;rsquo;ll need your AWS security credentials&lt;/li>
&lt;li>Some basic knowledge on &lt;a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html" target="_blank">AWS Stacks&lt;/a>, &lt;a href="https://aws.amazon.com/es/api-gateway/" target="_blank">API Gateway&lt;/a>, &lt;a href="https://aws.amazon.com/es/lambda/" target="_blank">Lambda&lt;/a> and &lt;a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html" target="_blank">Buckets&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Now let&amp;rsquo;s start:&lt;/p>

&lt;h2 class="relative group">Create a folder for your new project
 &lt;div id="create-a-folder-for-your-new-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-folder-for-your-new-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command promt an run&lt;/p></description></item><item><title>Step by step: .NET Core and Azure Cosmos DB</title><link>https://carlos.mendible.com/2017/06/25/step-by-step-net-core-and-azure-cosmos-db/</link><pubDate>Sun, 25 Jun 2017 18:52:22 +0000</pubDate><guid>https://carlos.mendible.com/2017/06/25/step-by-step-net-core-and-azure-cosmos-db/</guid><description>&lt;p>&lt;strong>Step by step: .NET Core and Azure Cosmos DB&lt;/strong> is a short post on how to connect to Cosmos DB, save a document and then query to find it.&lt;/p>
&lt;p>Let&amp;rsquo;s start:&lt;/p>

&lt;h2 class="relative group">Create a Cosmos DB account
 &lt;div id="create-a-cosmos-db-account" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-cosmos-db-account" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Create a Cosmos DB account in your Azure subscription. Once created get the URI and the primary Read-write key from the Keys section.&lt;/p></description></item><item><title>Use PowerShell to Enable Logging for Azure RM Web Apps</title><link>https://carlos.mendible.com/2017/06/17/use-powershell-to-enable-logging-for-azure-rm-web-apps/</link><pubDate>Sat, 17 Jun 2017 15:01:53 +0000</pubDate><guid>https://carlos.mendible.com/2017/06/17/use-powershell-to-enable-logging-for-azure-rm-web-apps/</guid><description>&lt;p>Recently I client ask me to enable application and http logging for more than 20 AzureRM Web Apps. Furthermore the client wanted the logs to be stored in a Storage Account.&lt;/p>
&lt;p>Issues started when I decided to &lt;strong>Use PowerShell to Enable Logging for Azure RM Web Apps&lt;/strong>, because there is no equivalent to the ASM &lt;strong>&lt;a href="https://docs.microsoft.com/en-us/powershell/module/azure/enable-azurewebsiteapplicationdiagnostic?view=azuresmps-4.0.0" target="_blank">Enable-AzureWebsiteApplicationDiagnostic&lt;/a>&lt;/strong> cmdlet for ARM resources.&lt;/p></description></item><item><title>Start with Elasticssearch, Kibana and ASP.NET Core</title><link>https://carlos.mendible.com/2017/05/30/start_with_elasticsearch_kibana_and_aspnet_core/</link><pubDate>Tue, 30 May 2017 11:58:00 +0000</pubDate><guid>https://carlos.mendible.com/2017/05/30/start_with_elasticsearch_kibana_and_aspnet_core/</guid><description>&lt;p>You want to &lt;strong>Start with &lt;a href="https://www.elastic.co/products/elasticsearch" target="_blank">Elasticssearch&lt;/a>, &lt;a href="https://www.elastic.co/products/kibana" target="_blank">Kibana&lt;/a> and ASP.NET Core&lt;/strong> and also want to do it fast? Let&amp;rsquo;s use Docker and find out how easy it can be:&lt;/p>

&lt;h2 class="relative group">Create a folder for your new project
 &lt;div id="create-a-folder-for-your-new-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-folder-for-your-new-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command prompt an run&lt;/p></description></item><item><title>Use Azure Media Services to Find Filler Words</title><link>https://carlos.mendible.com/2017/05/15/use-azure-media-services-to-find-filler-words/</link><pubDate>Mon, 15 May 2017 18:33:40 +0000</pubDate><guid>https://carlos.mendible.com/2017/05/15/use-azure-media-services-to-find-filler-words/</guid><description>&lt;p>On April 22 I had the great opportunity to give a talk on Azure Functions in the Global Azure Bootcamp hosted in Madrid. I had a great time, but weeks later when the video was published I realised that I was using a filler word way to much through my presentation.&lt;/p></description></item><item><title>Step by step: Kafka Pub/Sub with Docker and .Net Core</title><link>https://carlos.mendible.com/2017/05/08/step-by-step-kafka-pub-sub-with-docker-and-net-core/</link><pubDate>Mon, 08 May 2017 10:55:32 +0000</pubDate><guid>https://carlos.mendible.com/2017/05/08/step-by-step-kafka-pub-sub-with-docker-and-net-core/</guid><description>&lt;p>Last week I attended to a &lt;a href="https://kafka.apache.org/" target="_blank">Kafka&lt;/a> workshop and this is my attempt to show you a simple &lt;strong>Step by step: Kafka Pub/Sub with Docker and .Net Core&lt;/strong> tutorial.&lt;/p>
&lt;p>Let&amp;rsquo;s start:&lt;/p>

&lt;h2 class="relative group">Create a folder for your new project
 &lt;div id="create-a-folder-for-your-new-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-folder-for-your-new-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command prompt an run&lt;/p></description></item><item><title>Step by step: Couchbase Lite with .Net Core</title><link>https://carlos.mendible.com/2017/04/29/step-by-step-couchbase-lite-with-net-core/</link><pubDate>Sat, 29 Apr 2017 19:51:45 +0000</pubDate><guid>https://carlos.mendible.com/2017/04/29/step-by-step-couchbase-lite-with-net-core/</guid><description>&lt;p>Not long after writing &lt;strong>Step by step: Couchbase with .Net Core&lt;/strong> I discovered Couchbase Lite, which is still in development, but it looks like a great solution for embedded NoSQL scenarios.&lt;/p>
&lt;p>So let&amp;rsquo;s start with this simple: &lt;strong>Step by step: Couchbase Lite with .Net Core&lt;/strong> tutorial.&lt;/p>

&lt;h2 class="relative group">Create a folder for your new project
 &lt;div id="create-a-folder-for-your-new-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-folder-for-your-new-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command prompt an run&lt;/p></description></item><item><title>Step by step: Couchbase with .Net Core</title><link>https://carlos.mendible.com/2017/04/10/step-by-step-couchbase-with-net-core/</link><pubDate>Mon, 10 Apr 2017 17:11:15 +0000</pubDate><guid>https://carlos.mendible.com/2017/04/10/step-by-step-couchbase-with-net-core/</guid><description>&lt;p>This week I started to read an understand how &lt;strong>&lt;a href="http://www.couchbase.com" target="_blank" rel="noreferrer">Couchbase&lt;/a>&lt;/strong> works and that&amp;rsquo;s the reason I decided to write: &lt;strong>Step by step: Couchbase with .Net Core&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Tip:&lt;/strong> I&amp;rsquo;ll be using &lt;strong>Docker&lt;/strong> to install and run &lt;strong>&lt;a href="http://www.couchbase.com" target="_blank" rel="noreferrer">Couchbase&lt;/a>&lt;/strong>&lt;/p>
&lt;p>Now let&amp;rsquo;s start:&lt;/p>

&lt;h2 class="relative group">Create a folder for your new project
 &lt;div id="create-a-folder-for-your-new-project" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-folder-for-your-new-project" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command prompt an run&lt;/p></description></item><item><title>Raspberry Pi: Run ASP.NET Core on Startup</title><link>https://carlos.mendible.com/2017/03/26/raspberry-pi-run-aspnet-core-on-startup/</link><pubDate>Sun, 26 Mar 2017 12:37:16 +0000</pubDate><guid>https://carlos.mendible.com/2017/03/26/raspberry-pi-run-aspnet-core-on-startup/</guid><description>&lt;p>Last week I wrote: &lt;strong>&lt;a href="https://carlos.mendible.com/2017/03/21/step-by-step-running-aspnet-core-on-raspberry-pi/" target="_blank" rel="noreferrer">Step by step: Running ASP.NET Core on Raspberry Pi&lt;/a>&lt;/strong> and didn&amp;rsquo;t have the time to write about running the application on startup.&lt;/p>
&lt;p>After browsing for a while I found this great post: &lt;a href="https://microsoft.hackster.io/en-US/falafel-software/windows-iot-core-running-a-powershell-script-on-startup-0aa534" target="_blank" rel="noreferrer">Windows IoT Core: Running a PowerShell Script on Startup&lt;/a> which showed me the way!&lt;/p>
&lt;p>As a prerequisite read and run the sample provided here: &lt;strong>&lt;a href="https://carlos.mendible.com/2017/03/21/step-by-step-running-aspnet-core-on-raspberry-pi/" target="_blank" rel="noreferrer">Step by step: Running ASP.NET Core on Raspberry Pi&lt;/a>&lt;/strong>&lt;/p></description></item><item><title>Step by step: Running ASP.NET Core on Raspberry Pi</title><link>https://carlos.mendible.com/2017/03/21/step-by-step-running-aspnet-core-on-raspberry-pi/</link><pubDate>Tue, 21 Mar 2017 11:24:05 +0000</pubDate><guid>https://carlos.mendible.com/2017/03/21/step-by-step-running-aspnet-core-on-raspberry-pi/</guid><description>&lt;p>After reading &lt;a href="https://github.com/dotnet/core/blob/master/samples/RaspberryPiInstructions.md" target="_blank">.NET Core on Raspberry Pi&lt;/a> and successfully running a console application on &lt;strong>Windows 10 IoT Core&lt;/strong> on my &lt;strong>Raspberry Pi 3&lt;/strong> I decided to write: &lt;strong>Step by step: Running ASP.NET Core on Raspberry Pi&lt;/strong>.&lt;/p>
&lt;p>First be aware of the following prerequisites:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://developer.microsoft.com/en-us/windows/iot/GetStarted" target="_blank">Windows 10 IoT Core&lt;/a>&lt;/strong> I&amp;rsquo;m running Insider Preview v.10.0.15058.0&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://github.com/dotnet/cli/tree/master" target="_blank">.NET Core 2.0 SDK&lt;/a>&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Now let&amp;rsquo;s start:&lt;/p></description></item><item><title>Twilio with .NET Core</title><link>https://carlos.mendible.com/2017/03/02/twilio-with-net-core/</link><pubDate>Thu, 02 Mar 2017 07:59:30 +0000</pubDate><guid>https://carlos.mendible.com/2017/03/02/twilio-with-net-core/</guid><description>&lt;p>Last night after reading this tweet, I decided to try out &lt;strong>&lt;a href="https://www.twilio.com/" target="_blank">Twilio&lt;/a> with .NET Core&lt;/strong>&lt;/p>
&lt;blockquote class="twitter-tweet" data-width="550">
 &lt;p lang="en" dir="ltr">
 Your feedback led to the newly redesigned C# helper library. &lt;br />See what's new and take it for a spin here: &lt;a href="https://t.co/IuD4NZLBH9">https://t.co/IuD4NZLBH9&lt;/a> &lt;a href="https://t.co/SzLB7udU1h">pic.twitter.com/SzLB7udU1h&lt;/a>
 &lt;/p>
 &lt;p>
 &amp;mdash; twilio (@twilio) &lt;a href="https://twitter.com/twilio/status/836723837559537671">February 28, 2017&lt;/a>
 &lt;/p>
&lt;/blockquote>
&lt;p>Let&amp;rsquo;s create the sample console app:&lt;/p>

&lt;h2 class="relative group">Create the application
 &lt;div id="create-the-application" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-the-application" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command prompt and run&lt;/p></description></item><item><title>Create a class with .NET Core and Roslyn</title><link>https://carlos.mendible.com/2017/03/02/create-a-class-with-net-core-and-roslyn/</link><pubDate>Thu, 02 Mar 2017 07:28:14 +0000</pubDate><guid>https://carlos.mendible.com/2017/03/02/create-a-class-with-net-core-and-roslyn/</guid><description>&lt;p>After my post first post on: &lt;strong>&lt;a href="https://carlos.mendible.com/2017/01/29/net-core-roslyn-and-code-generation/" target="_blank">Code Generation&lt;/a>&lt;/strong> I decided to go a bit further, so today we&amp;rsquo;ll &lt;strong>Create a class with .NET Core and Roslyn&lt;/strong> and write the output to the console.&lt;/p>
&lt;p>Let&amp;rsquo;s see:&lt;/p>

&lt;h2 class="relative group">Create the application
 &lt;div id="create-the-application" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-the-application" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command prompt and run&lt;/p></description></item><item><title>Docker Machine with an existing Azure VNET</title><link>https://carlos.mendible.com/2017/02/26/docker-machine-with-an-existing-azure-vnet/</link><pubDate>Sun, 26 Feb 2017 19:39:11 +0000</pubDate><guid>https://carlos.mendible.com/2017/02/26/docker-machine-with-an-existing-azure-vnet/</guid><description>&lt;p>Last week I had to provision a Docker host and I tried out the &lt;strong>&lt;a href="https://docs.docker.com/machine/" target="_blank">docker-machine&lt;/a>&lt;/strong> command. The resulting host would have to use an existing Azure subnet from another resource group and I also needed to be able to reach the machine using it&amp;rsquo;s private IP.&lt;/p>
&lt;p>After reading the docs and playing for some minutes I came up with the correct command to use &lt;strong>Docker Machine with an existing Azure VNET&lt;/strong>:&lt;/p></description></item><item><title>.NET Core Health Endpoint Monitoring Middleware</title><link>https://carlos.mendible.com/2017/02/12/dotnet-core-health-endpoint-monitoring-middleware/</link><pubDate>Sun, 12 Feb 2017 14:06:42 +0000</pubDate><guid>https://carlos.mendible.com/2017/02/12/dotnet-core-health-endpoint-monitoring-middleware/</guid><description>&lt;p>Today I&amp;rsquo;ll show a simple example of how to create a &lt;strong>.Net Core Health Endpoint Monitoring &lt;a href="https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware" target="_blank">Middleware&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>If you need to know about the Health Endpoint Monitoring Pattern check: &lt;a href="https://msdn.microsoft.com/en-us/library/dn589789.aspx" target="_blank">&lt;a href="https://msdn.microsoft.com/en-us/library/dn589789.aspx" target="_blank" rel="noreferrer">https://msdn.microsoft.com/en-us/library/dn589789.aspx&lt;/a>&lt;/a>&lt;/p>

&lt;h2 class="relative group">Create the application
 &lt;div id="create-the-application" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-the-application" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Open a command prompt and run&lt;/p></description></item><item><title>Shadow IT a Digital Transformation Incubator</title><link>https://carlos.mendible.com/2017/01/31/shadow-it-a-digital-transformation-incubator/</link><pubDate>Tue, 31 Jan 2017 20:31:41 +0000</pubDate><guid>https://carlos.mendible.com/2017/01/31/shadow-it-a-digital-transformation-incubator/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="Bunch of screens with people shadows arround"
 src="https://carlos.mendible.com/assets/img/posts/shadows.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>Shadow IT, defined as the use of IT systems, solutions and services inside organizations without explicit organizational approval, has always been seen as a problem and a huge risk for the enterprise.
But what if I tell you that you should learn from Shadow IT and use it on your advantage instead of fighting it and suppressing it?&lt;/p></description></item><item><title>.NET Core, Roslyn and Code Generation</title><link>https://carlos.mendible.com/2017/01/29/net-core-roslyn-and-code-generation/</link><pubDate>Sun, 29 Jan 2017 20:31:41 +0000</pubDate><guid>https://carlos.mendible.com/2017/01/29/net-core-roslyn-and-code-generation/</guid><description>&lt;p>For ages I&amp;rsquo;ve been using T4 templates as main tool for code generation and scaffolding, but now that I&amp;rsquo;m an absolute fan of Visual Studio Code and .Net Core I need to explore other options such as Yeoman, Scripty and Roslyn. This post is just the result of my first and simplest experiment with &lt;strong>.Net Core, Roslyn and Code Generation&lt;/strong>.&lt;/p></description></item><item><title>.Net Core and NancyFX: can writing a WebApi get any simpler?</title><link>https://carlos.mendible.com/2017/01/16/net-core-and-nancyfx-can-writing-a-webapi-get-any-simpler/</link><pubDate>Mon, 16 Jan 2017 14:54:55 +0000</pubDate><guid>https://carlos.mendible.com/2017/01/16/net-core-and-nancyfx-can-writing-a-webapi-get-any-simpler/</guid><description>&lt;p>Last Thursday I attended a Meetup hosted by my friends of &lt;a href="https://twitter.com/mscodersmadrid" target="_blank">@MsCodersMadrid&lt;/a> in Madrid where, thanks to &lt;a href="https://twitter.com/snavarropino" target="_blank">@snavarropino&lt;/a>, I learned a bit about the &lt;strong>&lt;a href="http://nancyfx.org/" target="_blank">NancyFX&lt;/a>&lt;/strong> open source framework.&lt;/p>
&lt;p>I really couldn&amp;rsquo;t believe my eyes when I saw how simple it is to use &lt;strong>&lt;a href="http://nancyfx.org/" target="_blank">NancyFX&lt;/a>&lt;/strong> to write a Web API. Two of the things that got my attention were: the out of the box content negotiation and zero configuration dependency injection.&lt;/p></description></item><item><title>The Value of Online Influencer</title><link>https://carlos.mendible.com/2016/12/18/the-value-of-online-influencer/</link><pubDate>Sun, 18 Dec 2016 20:31:41 +0000</pubDate><guid>https://carlos.mendible.com/2016/12/18/the-value-of-online-influencer/</guid><description>&lt;p>I’ve been watching Black Mirror, a Netflix Original Series with a profound message which makes the spectator think and really reflect on how technology and social networks are transforming our lives through a series of non-related episodes.&lt;/p>
&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="Screenshot of my old twitter profile"
 src="https://carlos.mendible.com/assets/img/posts/onlineinfluence.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>In one of the episodes, people live in a world where the more social influence they have (i.e. number of Facebook likes, followers or likes in Twitter, etc.) the more they can achieve or buy.&lt;/p></description></item><item><title>Debug ASP.NET Core on Docker with Visual Studio Code</title><link>https://carlos.mendible.com/2016/12/11/debug-asp-net-core-on-docker-with-visual-studio-code/</link><pubDate>Sun, 11 Dec 2016 12:49:54 +0000</pubDate><guid>https://carlos.mendible.com/2016/12/11/debug-asp-net-core-on-docker-with-visual-studio-code/</guid><description>&lt;p>Last Thursday I started reading the Free eBook: &lt;a href="https://aka.ms/dockerlifecycleebook" target="_blank">&amp;ldquo;Containerized Docker Application Lifecycle with Microsoft Tools and Platform&amp;rdquo;&lt;/a> by Cesar de la Torre. The book is really easy to read and really gives the reader a glimpse on the way to approach the overall application lifecycle when using containers and Microsoft Technologies. One of the interesting things he mentions is the ability to debug your source code inside a container using Visual Studio or Visual Studio Code, so I decided to try it out and &lt;strong>Debug ASP.NET Core on Docker with Visual Studio Code&lt;/strong>&lt;/p></description></item><item><title>First steps with .NET Core Tools MSBuild "alpha"</title><link>https://carlos.mendible.com/2016/11/29/first-steps-net-core-tools-msbuild-alpha/</link><pubDate>Tue, 29 Nov 2016 12:49:28 +0000</pubDate><guid>https://carlos.mendible.com/2016/11/29/first-steps-net-core-tools-msbuild-alpha/</guid><description>&lt;p>On November 16th, Microsoft announced the &lt;a href="https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-net-core-tools-msbuild-alpha/?Wt.mc_id=DX_MVP8656" target="_blank">.NET Core Tools MSBuild&amp;quot;alpha&amp;quot;&lt;/a>. I&amp;rsquo;ve been developing .Net Core applications with Visual Studio Code for a while now, and I needed to try the new tooling.&lt;/p>
&lt;p>In this post I&amp;rsquo;ll show you which were my &lt;strong>First steps with .NET Core Tools MSBuild &amp;ldquo;alpha&amp;rdquo;&lt;/strong>&lt;/p>

&lt;h2 class="relative group">Installing .NET Core SDK 1.0 Preview 3 build 004056
 &lt;div id="installing-net-core-sdk-10-preview-3-build-004056" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#installing-net-core-sdk-10-preview-3-build-004056" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>The first step was to install the new tools from: &lt;a href="https://github.com/dotnet/core/blob/master/release-notes/preview3-download.md" target="_blank">.NET Core SDK 1.0 Preview 3 build 004056&lt;/a>&lt;br />&lt;/p></description></item><item><title>Step by step: Expose ASP.NET Core over HTTPS with Docker</title><link>https://carlos.mendible.com/2016/11/06/step-by-step-expose-asp-net-core-over-https-with-docker/</link><pubDate>Sun, 06 Nov 2016 08:00:49 +0000</pubDate><guid>https://carlos.mendible.com/2016/11/06/step-by-step-expose-asp-net-core-over-https-with-docker/</guid><description>&lt;p>This week I decided to modify the sample of my previous post: &lt;a href="https://carlos.mendible.com/2016/10/30/step-by-step-scale-asp-net-core-with-docker-swarm/" target="_blank">Step by step: Scale ASP.NET Core with Docker Swarm&lt;/a> so you can add TLS to your ASP.NET Core applications and Dockerize it.&lt;/p>
&lt;p>Let&amp;rsquo;s see how I changed the application in order to make it work:&lt;/p>

&lt;h2 class="relative group">Add HTTPS support for Kestrel
 &lt;div id="add-https-support-for-kestrel" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#add-https-support-for-kestrel" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>I added the following line to the dependencies in the &lt;em>project.json&lt;/em> file.&lt;/p></description></item><item><title>Step by step: Scale ASP.NET Core with Docker Swarm</title><link>https://carlos.mendible.com/2016/10/30/step-by-step-scale-asp-net-core-with-docker-swarm/</link><pubDate>Sun, 30 Oct 2016 15:16:29 +0000</pubDate><guid>https://carlos.mendible.com/2016/10/30/step-by-step-scale-asp-net-core-with-docker-swarm/</guid><description>&lt;p>A few weeks ago I posted &lt;a href="https://carlos.mendible.com/2016/09/26/step-by-step-asp-net-core-on-docker/" target="_blank">Step by step: ASP.NET Core on Docker&lt;/a> were I showed how to build and run a &lt;a href="https://www.docker.com/" target="_blank">Docker&lt;/a> image with an ASP.NET Core application.&lt;/p>
&lt;p>Today I bring you: &lt;strong>Step by step: Scale ASP.NET Core with Docker Swarm&lt;/strong> so you can scale out or in the same &lt;a href="https://github.com/cmendible/dotnetcore.samples/tree/main/docker.helloworld" target="_blank" rel="noreferrer">application&lt;/a>.&lt;/p>
&lt;p>Assuming you have &lt;a href="https://www.docker.com/" target="_blank">Docker 1.12 or later&lt;/a> installed and running, follow this steps:&lt;/p></description></item><item><title>Use .NET Core to Create Azure Blob Storage SAS Keys</title><link>https://carlos.mendible.com/2016/10/24/use-net-core-create-azure-blob-storage-sas-keys/</link><pubDate>Mon, 24 Oct 2016 10:11:58 +0000</pubDate><guid>https://carlos.mendible.com/2016/10/24/use-net-core-create-azure-blob-storage-sas-keys/</guid><description>&lt;p>If you intend to use the &lt;a href="https://www.nuget.org/packages/WindowsAzure.Storage/" target="_blank">WindowsAzure.Storage&lt;/a> library with .Net Core you&amp;rsquo;ll hit a&amp;quot;compatibility wall&amp;quot; trying to make it work.&lt;/p>
&lt;p>So how can we use .Net Core to Create Azure Blob Storage SAS Keys?&lt;/p>

&lt;h2 class="relative group">Add the System.Security.Cryptography.Algorithms dependency
 &lt;div id="add-the-systemsecuritycryptographyalgorithms-dependency" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#add-the-systemsecuritycryptographyalgorithms-dependency" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>Add the following dependency in your project.json file&lt;/p></description></item><item><title>Is Privacy Dead?</title><link>https://carlos.mendible.com/2016/10/17/is-privacy-dead/</link><pubDate>Mon, 17 Oct 2016 20:31:41 +0000</pubDate><guid>https://carlos.mendible.com/2016/10/17/is-privacy-dead/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="Screenshot of my surface with an open lock on top"
 src="https://carlos.mendible.com/assets/img/posts/privacydead.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>I started the day in a coffee shop. I got a nice spot with a window right next to me. As I take out my Surface Book and turn it on, in a matter of seconds my face is recognized so I don’t have to use the keyboard to login. A couple of minutes later Cortana reminds me that&lt;/p></description></item><item><title>Deal with time dependencies in Tests</title><link>https://carlos.mendible.com/2016/10/11/deal-with-time-dependencies-in-tests/</link><pubDate>Tue, 11 Oct 2016 07:37:35 +0000</pubDate><guid>https://carlos.mendible.com/2016/10/11/deal-with-time-dependencies-in-tests/</guid><description>&lt;p>Las week we discovered that some of our test would&amp;quot;randomly&amp;quot; fail depending of the time of the day. After investigating the issue we found that the culprit was that the service being tested was taking decisions based on the current system time (DateTime.Now) leading to different outcomes through the day. So how &lt;strong>do we deal with time dependencies in tests&lt;/strong>?&lt;/p></description></item><item><title>Get Ready: Exam 70-533 Implementing Microsoft Azure Infrastructure Solutions</title><link>https://carlos.mendible.com/2016/10/02/get-ready-exam-70-533-implementing-microsoft-azure-infrastructure-solutions/</link><pubDate>Sun, 02 Oct 2016 09:54:40 +0000</pubDate><guid>https://carlos.mendible.com/2016/10/02/get-ready-exam-70-533-implementing-microsoft-azure-infrastructure-solutions/</guid><description>&lt;p>This week I cleared the &lt;strong>&lt;a href="https://www.microsoft.com/learning/en-us/exam-70-533.aspx" target="_blank">70-533 Implementing Microsoft Azure Infrastructure Solutions&lt;/a>&lt;/strong> exam, and I want to share with you tips about the exam and the resources I used to study:&lt;/p>
&lt;p>&lt;strong>Should you take the exam?&lt;/strong>&lt;/p>
&lt;p>If you are an &lt;strong>Infrastructure Geek&lt;/strong>, &lt;strong>Developer&lt;/strong> or &lt;strong>Software Architect&lt;/strong> looking to validate your &lt;a href="https://azure.microsoft.com/" target="_blank">Microsoft Azure &lt;/a>skills then this exam is for you. Also note that Microsoft expects you to:&lt;/p></description></item><item><title>Step by step: ASP.NET Core on Docker</title><link>https://carlos.mendible.com/2016/09/26/step-by-step-asp-net-core-on-docker/</link><pubDate>Mon, 26 Sep 2016 06:59:08 +0000</pubDate><guid>https://carlos.mendible.com/2016/09/26/step-by-step-asp-net-core-on-docker/</guid><description>&lt;p>This week I have to give an introductory talk on DevOps and &lt;a href="https://www.docker.com/" target="_blank">Docker&lt;/a> and therefore I decided to prepare a simple &lt;strong>Step by step: ASP.NET Core on &lt;a href="https://www.docker.com/" target="_blank">Docker&lt;/a>&lt;/strong> sample.&lt;/p>
&lt;p>Assuming you have &lt;a href="https://www.docker.com/" target="_blank">Docker&lt;/a> installed and running, follow these 4 simple steps:&lt;/p>

&lt;h2 class="relative group">Create a dockerfile
 &lt;div id="create-a-dockerfile" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#create-a-dockerfile" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>On your Docker box create a dockerfile with the following contents&lt;/p></description></item><item><title>Step by step: Serilog with ASP.NET Core</title><link>https://carlos.mendible.com/2016/09/19/step-step-serilog-asp-net-core/</link><pubDate>Mon, 19 Sep 2016 09:32:57 +0000</pubDate><guid>https://carlos.mendible.com/2016/09/19/step-step-serilog-asp-net-core/</guid><description>&lt;h2 class="relative group">&lt;strong>NOTE&lt;/strong>: This post is out of date. Please read: &lt;a href="https://carlos.mendible.com/2019/01/14/updated-step-step-serilog-asp-net-core/" target="_blank" rel="noreferrer">Updated Step by step: Serilog with ASP.NET Core&lt;/a> for an update.
 &lt;div id="note-this-post-is-out-of-date-please-read-updated-step-by-step-serilog-with-aspnet-core-for-an-update" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#note-this-post-is-out-of-date-please-read-updated-step-by-step-serilog-with-aspnet-core-for-an-update" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Last week I wrote about &lt;a href="https://carlos.mendible.com/2016/09/11/netcore-and-microsoft-bot-framework/" target="_blank">.NET Core and Microsoft Bot Framework&lt;/a> and I&amp;rsquo;m still learning and playing with it. The thing is that once I implemented more features and deployed the bot to Azure it didn&amp;rsquo;t work. So I had to find a way to log and trace what was happening in order to diagnose and fix the problem.&lt;/p></description></item><item><title>.NET Core and Microsoft Bot Framework</title><link>https://carlos.mendible.com/2016/09/11/dotnetcore-and-microsoft-bot-framework/</link><pubDate>Sun, 11 Sep 2016 09:15:32 +0000</pubDate><guid>https://carlos.mendible.com/2016/09/11/dotnetcore-and-microsoft-bot-framework/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to create a simple Skype bot that will reply with the same text message you send to it.&lt;/p>
&lt;p>You&amp;rsquo;ll be using &lt;strong>.Net Core and &lt;a href="https://dev.botframework.com/" target="_blank">Microsoft Bot Framework&lt;/a>&lt;/strong>. As you already know not every library has been ported to .Net Core so you&amp;rsquo;ll have to use the &lt;strong>&lt;a href="https://docs.botframework.com/en-us/restapi/connector/#navtitle" target="_blank">Microsoft Bot Connector API – v3.0&lt;/a>&lt;/strong> to bring the bot to life.&lt;/p></description></item><item><title>Create vCard QR Codes using Azure Functions</title><link>https://carlos.mendible.com/2016/08/28/create-vcard-qr-codes-using-azure-functions/</link><pubDate>Sun, 28 Aug 2016 18:45:28 +0000</pubDate><guid>https://carlos.mendible.com/2016/08/28/create-vcard-qr-codes-using-azure-functions/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to develop a Web API to &lt;strong>Create vCard QR Codes using &lt;a href="https://azure.microsoft.com/en-us/services/functions/" target="_blank">Azure Functions&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>But wait what are &lt;a href="https://azure.microsoft.com/en-us/services/functions/" target="_blank">Azure Functions&lt;/a>?&lt;/p>
&lt;p>As defined by Microsoft:&lt;/p>
&lt;blockquote>&lt;p>&lt;a href="https://azure.microsoft.com/en-us/services/functions/" target="_blank">Azure Functions&lt;/a> is a serverless event driven experience that extends the existing Azure App Service platform. These nano-services can scale based on demand and you pay only for the resources you consume.&lt;/p></description></item><item><title>Benefits and Risks You Need to Know about Cloud Computing</title><link>https://carlos.mendible.com/2016/08/26/benefits-and-risks-you-need-to-know-about-cloud-computing/</link><pubDate>Fri, 26 Aug 2016 20:31:41 +0000</pubDate><guid>https://carlos.mendible.com/2016/08/26/benefits-and-risks-you-need-to-know-about-cloud-computing/</guid><description>&lt;p>We know that cloud computing is “the new normal” just like virtualization was in the past. And we also know that the adoption of cloud computing by your organization can come with a series of benefits including:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Reduced IT costs:&lt;/strong> You can reduce both CAPEX and OPEX when moving to the cloud.
Scalability: In this fast changing world it is important to be able to scale up or down your solutions depending on the situation and your needs without having to purchase or install hardware or upgrades all by yourself.&lt;/li>
&lt;li>&lt;strong>Business continuity:&lt;/strong> when you store data in the cloud, you ensure it is backed-up and protected which in turn helps with your continuity plan cause in the event of a crisis you’ll be able to minimize any downtime and loss of productivity.&lt;/li>
&lt;li>&lt;strong>Collaboration:&lt;/strong> Cloud services allow you share files and communicate with employees and third-parties in this highly globalized world and in a timely manner.&lt;/li>
&lt;li>&lt;strong>Flexibility:&lt;/strong> Cloud computing allows employees to be more flexible in their work practices cause it’s simpler to access data from home or virtually any place with an internet connection.&lt;/li>
&lt;li>&lt;strong>Automatic updates:&lt;/strong> When consuming SaaS you’ll be using the latest version of the product avoiding the pain and expensive costs associated with software or hardware upgrades.&lt;/li>
&lt;/ul>
&lt;p>But once you ask yourself: what can possibly go wrong? You open your eyes to a “cloudy weather” where you must plan, identify, analyze, manage and control the risks associated with moving your data and operations to the cloud.
To help you with the identification process, here is a list of risks that your organization can face once you start or continue the transition to the cloud:&lt;/p></description></item><item><title>Detect and Blur Faces with .NET Core and Face API</title><link>https://carlos.mendible.com/2016/07/30/detect-and-blur-faces-with-dotnetcore-and-face-api/</link><pubDate>Sat, 30 Jul 2016 16:07:18 +0000</pubDate><guid>https://carlos.mendible.com/2016/07/30/detect-and-blur-faces-with-dotnetcore-and-face-api/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to create a small console application that will &lt;strong>Detect and Blur Faces with .NET Core and Face API&lt;/strong>.&lt;/p>
&lt;p>First be aware of the following prerequisites:&lt;/p>
&lt;table>
 &lt;tr>
 &lt;td>
 **OS**
 &lt;/td>
 &lt;td>
 **Prerequisites**
 &lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>
 Windows
 &lt;/td>
 &lt;td>
 Windows: You must have &lt;a href="https://go.microsoft.com/fwlink/?LinkID=809122" target="_blank">.NET Core SDK for Windows&lt;/a> or both &lt;a href="https://www.visualstudio.com/news/releasenotes/vs2015-update3-vs" target="_blank">Visual Studio 2015 Update 3*&lt;/a> and &lt;a href="https://go.microsoft.com/fwlink/?LinkId=817245" target="_blank">.NET Core 1.0 for Visual Studio&lt;/a> installed.
 &lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>
 linux, mac or docker
 &lt;/td>
 &lt;td>
 checkout &lt;a href="https://www.microsoft.com/net/" target="_blank">.NET Core&lt;/a>
 &lt;/td>
 &lt;/tr>
&lt;/table>
&lt;p>You will also need an Azure Cognitive Services Face API account and the correct set of access keys. (Start here: &lt;a href="https://www.microsoft.com/cognitive-services/en-us/sign-up" target="_blank">Subscribe in seconds&lt;/a> if you need a Cognitive Service Account and here for the &lt;a href="https://www.microsoft.com/cognitive-services/en-us/documentation" target="_blank">Documentation&lt;/a>)&lt;/p></description></item><item><title>Step by step: Entity Framework Core and Shadow Properties</title><link>https://carlos.mendible.com/2016/07/25/step-by-step-entity-framework-core-and-shadow-properties/</link><pubDate>Mon, 25 Jul 2016 16:07:49 +0000</pubDate><guid>https://carlos.mendible.com/2016/07/25/step-by-step-entity-framework-core-and-shadow-properties/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to create a small console application with a &lt;strong>Step by step: Entity Framework Core and Shadow Properties&lt;/strong> example.&lt;/p>
&lt;p>We&amp;rsquo;ll be modifying the code from my previous post: Step by step: &lt;a href="https://carlos.mendible.com/2016/07/11/step-by-step-dotnet-core-and-entity-framework-core/" target="_blank">.NET Core and Entity Framework Core&lt;/a> to make the Student entity auditable without creating public/protected properties or private fields to hold the typical audit info (CreatedBy, CreatedAt, UpdatedBy and UpdatedAt) database fields.&lt;/p></description></item><item><title>Step by step: .NET Core, Azure Service Bus and AMQP</title><link>https://carlos.mendible.com/2016/07/17/step-by-step-net-core-azure-service-bus-and-amqp/</link><pubDate>Sun, 17 Jul 2016 15:21:03 +0000</pubDate><guid>https://carlos.mendible.com/2016/07/17/step-by-step-net-core-azure-service-bus-and-amqp/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to create a small console application with a &lt;strong>Step by step: .NET Core, Azure Service Bus and AMQP&lt;/strong> example.&lt;/p>
&lt;p>First be aware of the following prerequisites:&lt;/p>
&lt;table>
 &lt;tr>
 &lt;td>
 **OS**
 &lt;/td>
 &lt;td>
 **Prerequisites**
 &lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>
 Windows
 &lt;/td>
 &lt;td>
 Windows: You must have &lt;a href="https://go.microsoft.com/fwlink/?LinkID=809122" target="_blank">.NET Core SDK for Windows&lt;/a> or both &lt;a href="https://www.visualstudio.com/news/releasenotes/vs2015-update3-vs" target="_blank">Visual Studio 2015 Update 3*&lt;/a> and &lt;a href="https://go.microsoft.com/fwlink/?LinkId=817245" target="_blank">.NET Core 1.0 for Visual Studio&lt;/a> installed.
 &lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>
 linux, mac or docker
 &lt;/td>
 &lt;td>
 checkout &lt;a href="https://www.microsoft.com/net/" target="_blank">.NET Core&lt;/a>
 &lt;/td>
 &lt;/tr>
&lt;/table>
&lt;p>You will also need an Azure Service Bus namespace, topic and subscription with the correct set of credentials. (Start here: &lt;a href="https://azure.microsoft.com/en-us/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/" target="_blank">How to use Service Bus topics and subscriptions&lt;/a> if you don&amp;rsquo;t know how to configure the Service Bus)&lt;/p></description></item><item><title>Step by step: .NET Core and Entity Framework Core</title><link>https://carlos.mendible.com/2016/07/11/step-by-step-dotnet-core-and-entity-framework-core/</link><pubDate>Mon, 11 Jul 2016 15:14:26 +0000</pubDate><guid>https://carlos.mendible.com/2016/07/11/step-by-step-dotnet-core-and-entity-framework-core/</guid><description>&lt;p>Today I&amp;rsquo;ll show you how to create a small console application with a &lt;strong>Step by step: .NET Core and Entity Framework Core&lt;/strong> example.&lt;/p>
&lt;p>First be aware of the following prerequisites:&lt;/p>
&lt;table>
 &lt;tr>
 &lt;td>
 **OS**
 &lt;/td>
 &lt;td>
 **Prerequisites**
 &lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>
 Windows
 &lt;/td>
 &lt;td>
 Windows: You must have &lt;a href="https://go.microsoft.com/fwlink/?LinkID=809122" target="_blank">.NET Core SDK for Windows&lt;/a> or both &lt;a href="https://www.visualstudio.com/news/releasenotes/vs2015-update3-vs" target="_blank">Visual Studio 2015 Update 3*&lt;/a> and &lt;a href="https://go.microsoft.com/fwlink/?LinkId=817245" target="_blank">.NET Core 1.0 for Visual Studio&lt;/a> installed.
 &lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>
 linux, mac or docker
 &lt;/td>
 &lt;td>
 checkout &lt;a href="https://www.microsoft.com/net/" target="_blank">.NET Core&lt;/a>
 &lt;/td>
 &lt;/tr>
&lt;/table>
&lt;p>Now let&amp;rsquo;s start:&lt;/p></description></item><item><title>Add Swagger to your .NET Core Web API</title><link>https://carlos.mendible.com/2016/07/04/add-swagger-to-your-.net-core-web-api/</link><pubDate>Mon, 04 Jul 2016 08:20:15 +0000</pubDate><guid>https://carlos.mendible.com/2016/07/04/add-swagger-to-your-.net-core-web-api/</guid><description>&lt;p>Last week &lt;a href="https://www.microsoft.com/net/core" target="_blank">.NET Core&lt;/a> was released, and the first thing I tried to solve was how to &lt;strong>Add Swagger to your .NET Core Web API&lt;/strong>:&lt;/p>

&lt;h2 class="relative group">Dependencies
 &lt;div id="dependencies" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#dependencies" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;hr>
&lt;p>At the time of writing you should add the following dependency to your &lt;strong>project.json&lt;/strong> file&lt;/p></description></item><item><title>Remove RavenDb's API from Swagger</title><link>https://carlos.mendible.com/2016/06/12/remove-ravendbs-api-from-swagger/</link><pubDate>Sun, 12 Jun 2016 20:24:54 +0000</pubDate><guid>https://carlos.mendible.com/2016/06/12/remove-ravendbs-api-from-swagger/</guid><description>&lt;p>I&amp;rsquo;ve been working on a small IoT project where we expose a simple REST API and use &lt;a href="https://ravendb.net/" target="_blank">RavenDB &lt;/a>Embedded as the database. Once we enabled &lt;a href="http://swagger.io/" target="_blank">Swagger&lt;/a> on our project we noticed that the generated documentation was not only showing our API but those exposed by RavenDB too. So the question came up: how can we &lt;strong>Remove RavenDb&amp;rsquo;s API from &lt;a href="http://swagger.io/" target="_blank">Swagger&lt;/a>&lt;/strong> Documentation?&lt;/p></description></item><item><title>Stop or Start all WebApps in your Azure subscription</title><link>https://carlos.mendible.com/2016/06/05/stop-start-webapps-azure-subscription/</link><pubDate>Sun, 05 Jun 2016 19:08:30 +0000</pubDate><guid>https://carlos.mendible.com/2016/06/05/stop-start-webapps-azure-subscription/</guid><description>&lt;p>&lt;strong>Stop or Start all WebApps in your Azure subscription&lt;/strong> with &lt;a href="https://gallery.technet.microsoft.com/scriptcenter/Stop-or-Start-all-WebApps-9533dda6/file/153545/1/Stop-Start-All-WebApps.ps1" target="_blank" rel="noreferrer">Stop-Start-All-WebApps.ps1&lt;/a> a simple PowerShell workflow runbook that will help you automate the process of stopping or starting every single WebApp (Website) you&amp;rsquo;ve deployed.&lt;/p>
&lt;p>The script receives two required parameters:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Stop&lt;/strong>: If set to true stop the WebApps (Websites) otherwise start the WebApps (Websites)&lt;/li>
&lt;li>&lt;strong>CredentialAssetName&lt;/strong>: The name of a valid Credential Asset (AutomationPSCredential) you must have previously configured.&lt;/li>
&lt;/ul>
&lt;p>As you can see below, the script is quite simple and uses the following PowerShell Activities and Cmdlets:&lt;/p></description></item><item><title>Backup your Team Services Git Repositories with VSTS Vault</title><link>https://carlos.mendible.com/2016/06/01/backup-team-services-git-repositories-vsts-vault/</link><pubDate>Wed, 01 Jun 2016 13:17:22 +0000</pubDate><guid>https://carlos.mendible.com/2016/06/01/backup-team-services-git-repositories-vsts-vault/</guid><description>&lt;p>&lt;strong>Backup your Team Services Git Repositories with VSTS Vault&lt;/strong>: A simple windows service or console application designed to keep a local copy of all your code.&lt;/p>
&lt;p>Since January 2016 we&amp;rsquo;ve moved the source code of more than 30 projects to Git repositories hosted by &lt;a href="https://www.visualstudio.com/en-us/products/visual-studio-team-services-vs.aspx" target="_blank">Visual Studio Team Services&lt;/a>.&lt;/p>
&lt;p>Moving to the cloud has some downsides and one thing that kept us thinking was the need to be sure that in the event of an internet connection failure or a Team Services outage we would be able to access our code and deploy hot fixes for our applications as part of our data protection plan.&lt;/p></description></item><item><title>NHInsights an OracleManagedDataClientDriver for NHibernate and Application Insights</title><link>https://carlos.mendible.com/2016/05/06/nhinsights-an-oraclemanageddataclientdriver-for-nhibernate-and-application-insights/</link><pubDate>Fri, 06 May 2016 07:18:05 +0000</pubDate><guid>https://carlos.mendible.com/2016/05/06/nhinsights-an-oraclemanageddataclientdriver-for-nhibernate-and-application-insights/</guid><description>&lt;p>Let&amp;rsquo;s talk about &lt;strong>&lt;a href="https://github.com/cmendible/NHInsights" target="_blank">NHInsights&lt;/a> an OracleManagedDataClientDriver for NHibernate and Application Insights&lt;/strong>&lt;/p>
&lt;p>If you use Oracle and NHibernate and you are trying to use Application Insights to diagnose issues with your database calls you will notice that for ASP.NET applications &lt;a href="https://azure.microsoft.com/en-us/documentation/articles/app-insights-dependencies/" target="_blank">the out-of-the-box dependency monitor currently reports calls to these types of dependencies&lt;/a>:&lt;/p></description></item><item><title>Create an Azure Site to Site VPN</title><link>https://carlos.mendible.com/2016/05/02/create-an-azure-site-to-site-vpn/</link><pubDate>Mon, 02 May 2016 18:30:24 +0000</pubDate><guid>https://carlos.mendible.com/2016/05/02/create-an-azure-site-to-site-vpn/</guid><description>&lt;p>In this post I&amp;rsquo;ll just show the list of PowerShell commands needed to &lt;strong>Create an Azure Site to Site VPN&lt;/strong> and give you some tips when using a &lt;a href="http://www.checkpoint.com/" target="_blank">Check Point Security Gateway&lt;/a>.&lt;/p>
&lt;p>First things first! so if you have not installed and configured Azure PowerShell go for it: &lt;a href="https://azure.microsoft.com/en-us/documentation/articles/powershell-install-configure/" target="_blank">How to install and configure Azure PowerShell&lt;/a>&lt;/p></description></item><item><title>Cloud Design Patterns: Prepara tu aplicación para Azure</title><link>https://carlos.mendible.com/2016/04/13/cloud-design-patterns-prepara-tu-aplicacion-para-azure/</link><pubDate>Wed, 13 Apr 2016 15:34:11 +0000</pubDate><guid>https://carlos.mendible.com/2016/04/13/cloud-design-patterns-prepara-tu-aplicacion-para-azure/</guid><description>&lt;p>En esta sesión: &lt;a href="https://channel9.msdn.com/Events/Microsoft-Spain-Events/Global-Azure-BootCamp-2016/Patrones-de-Diseo-Cloud-Prepara-tu-aplicacin-para-Azure" target="_blank">Cloud Design Patterns: Prepara tu aplicación para Azure&lt;/a> discutiremos los beneficios de aplicar patrones en el desarrollo de aplicaciones para la nube y los problemas que estos intentan resolver: disponibilidad, escalabilidad, resiliencia, seguridad, etc..&lt;/p>
&lt;p>Esta es la agenda:&lt;/p>
&lt;ul>
&lt;li>Design for the Cloud&lt;/li>
&lt;li>Problem Areas in the Cloud
&lt;ul>
&lt;li>
&lt;p>Availability&lt;/p></description></item><item><title>Export Azure Resource Groups Templates</title><link>https://carlos.mendible.com/2016/04/06/export-azure-resource-groups-templates/</link><pubDate>Wed, 06 Apr 2016 10:30:28 +0000</pubDate><guid>https://carlos.mendible.com/2016/04/06/export-azure-resource-groups-templates/</guid><description>&lt;p>One of the great things about &lt;a href="https://azure.microsoft.com/" target="_blank">Azure&lt;/a> is the possibility to &lt;strong>&lt;a href="https://azure.microsoft.com/en-us/documentation/articles/resource-group-authoring-templates/" target="_blank">Export Azure Resource Groups Templates&lt;/a>&lt;/strong>. Each template is a json file containing the exact configuration of the services you&amp;rsquo;ve provisioned in a &lt;a href="https://azure.microsoft.com/en-us/documentation/articles/resource-group-overview/" target="_blank">Resource Group&lt;/a>.&lt;/p>
&lt;p>Using this templates you can treat your &lt;a href="https://en.wikipedia.org/wiki/Infrastructure_as_Code" target="_blank">Infrastructure as code&lt;/a> and repeatedly deploy your application during every stage of the application lifecycle in the same way, each and every time.&lt;/p></description></item><item><title>Get Ready: Exam 70-532 Developing Microsoft Azure Solutions</title><link>https://carlos.mendible.com/2016/04/01/get-ready-exam-70-532-developing-microsoft-azure-solutions/</link><pubDate>Fri, 01 Apr 2016 09:39:59 +0000</pubDate><guid>https://carlos.mendible.com/2016/04/01/get-ready-exam-70-532-developing-microsoft-azure-solutions/</guid><description>&lt;p>Yesterday I cleared the **&lt;a href="https://www.microsoft.com/learning/en-us/exam-70-532.aspx" target="_blank">70-532 Develping Microsoft Azure Solutions &lt;/a>**exam, and I want to share with you tips about the exam and the resources I used to study:&lt;/p>
&lt;p>&lt;strong>Should you take the exam?&lt;/strong>&lt;/p>
&lt;p>If you are a &lt;strong>Developer&lt;/strong> &lt;strong>or Software Architect&lt;/strong> looking to validate your &lt;a href="https://azure.microsoft.com/" target="_blank">Microsoft Azure &lt;/a>skills then this exam is for you. Also note that Microsoft expects you to:&lt;/p></description></item><item><title>Application Insights Analytics</title><link>https://carlos.mendible.com/2016/03/28/application-insights-analytics/</link><pubDate>Mon, 28 Mar 2016 12:01:42 +0000</pubDate><guid>https://carlos.mendible.com/2016/03/28/application-insights-analytics/</guid><description>&lt;p>For the last couple of months I&amp;rsquo;ve been using &lt;strong>&lt;a href="https://azure.microsoft.com/en-us/documentation/articles/app-insights-overview/" target="_blank">Application Insights&lt;/a>&lt;/strong> to monitor, detect and diagnose performance issues in our applications. Last week I noticed that the &lt;em>Analytics&lt;/em> button on the &lt;a href="https://azure.microsoft.com/en-us/documentation/articles/app-insights-overview/" target="_blank">Application Insights&lt;/a> blade was working:&lt;/p>
&lt;p>&lt;a href="https://carlos.mendible.com/wp-content/uploads/2016/03/Analytics.png" rel="attachment wp-att-2421">&lt;img class="size-medium wp-image-2421 aligncenter" src="wp-content/uploads/2016/03/Analytics-300x67.png" alt="Analytics" width="300" height="67" srcset="https://carlos.mendible.com/wp-content/uploads/2016/03/Analytics-300x67.png 300w, https://carlos.mendible.com/wp-content/uploads/2016/03/Analytics-250x56.png 250w, https://carlos.mendible.com/wp-content/uploads/2016/03/Analytics.png 586w" sizes="(max-width: 300px) 100vw, 300px" />&lt;/a>&lt;/p>
&lt;p>Once you click it, your browser will open the &lt;strong>Application Insights Analytics&lt;/strong> page with the following taxonomy:&lt;/p></description></item><item><title>Hiring a DevOps?</title><link>https://carlos.mendible.com/2016/03/15/hiring-a-devops/</link><pubDate>Tue, 15 Mar 2016 20:31:41 +0000</pubDate><guid>https://carlos.mendible.com/2016/03/15/hiring-a-devops/</guid><description>&lt;p>Over the last couple of months, I’ve noticed that a lot of companies are trying to hire DevOps Engineers or DevOps Experts and I have to ask what are these companies looking for?&lt;/p>
&lt;p>Reading some of the job descriptions I found out that some are looking for experts on the tooling associated with infrastructure automation such as Chef or Puppet while others search for Developers with infrastructure knowledge.&lt;/p></description></item><item><title>EasyAzureServiceBus: easy Service Bus 1.1 for Windows Server</title><link>https://carlos.mendible.com/2016/03/13/easyazureservicebus-easy-service-bus-1-1-windows-server/</link><pubDate>Sun, 13 Mar 2016 14:39:25 +0000</pubDate><guid>https://carlos.mendible.com/2016/03/13/easyazureservicebus-easy-service-bus-1-1-windows-server/</guid><description>&lt;p>A couple of years ago I started to work with one of my clients to implement an on-premises &lt;a href="https://en.wikipedia.org/wiki/Enterprise_service_bus" target="_blank">Service Bus&lt;/a> solution.&lt;/p>
&lt;p>While investigating the options I discovered a nice library, &lt;a href="http://easynetq.com" target="_blank">EasyNetQ&lt;/a>: an easy .NET API for RabbitMQ, which inspired me to create a very similar project to simplify the use of &lt;a href="https://en.wikipedia.org/wiki/Publishâ€“subscribe_pattern" target="_blank">pub/sub&lt;/a> messaging with &lt;a href="https://msdn.microsoft.com/en-us/library/dn282144.aspx" target="_blank">Service Bus 1.1 for Windows Server&lt;/a>.&lt;/p></description></item><item><title>About Me</title><link>https://carlos.mendible.com/about/</link><pubDate>Wed, 09 Mar 2016 15:12:34 +0000</pubDate><guid>https://carlos.mendible.com/about/</guid><description>&lt;p>&lt;a href="https://user-badge.committers.top/spain/cmendible" target="_blank" rel="noreferrer">&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="committers.top badge"
 src="https://user-badge.committers.top/spain/cmendible.svg"
 >&lt;/figure>
&lt;/a>&lt;/p>
&lt;p>My name is &lt;strong>Carlos Mendible&lt;/strong>. I was born in Caracas, Venezuela. I&amp;rsquo;m Europe South Migrate &amp;amp; Modernize CSA Lead @Microsoft.&lt;/p>
&lt;p>I am married to Karina and we have one daughter, Victoria. We live in Madrid, Spain.&lt;/p>
&lt;p>Fishing is my hobby.&lt;/p>
&lt;p>Now Let&amp;rsquo;s talk about &lt;strong>Microsoft Azure&lt;/strong>&lt;/p></description></item><item><title>Get Ready: Exam 70-534 Architecting Microsoft Azure Solutions</title><link>https://carlos.mendible.com/2016/03/06/get-ready-exam-70-534-architecting-microsoft-azure-solutions/</link><pubDate>Sun, 06 Mar 2016 12:07:02 +0000</pubDate><guid>https://carlos.mendible.com/2016/03/06/get-ready-exam-70-534-architecting-microsoft-azure-solutions/</guid><description>&lt;p>I recently passed the &lt;a href="https://www.microsoft.com/en-us/learning/exam-70-534.aspx" target="_blank">70-534 Architecting Microsoft Azure Solutions&lt;/a> exam, and I want to share with you tips about the exam and the resources I used to study:&lt;/p>
&lt;p>&lt;strong>Should you take the exam?&lt;/strong>&lt;/p>
&lt;p>If you are a &lt;strong>Solutions or Software Architect&lt;/strong> looking to validate your &lt;a href="https://azure.microsoft.com/" target="_blank">Microsoft Azure &lt;/a>skills then this exam is for you. Also note that Microsoft expects you to:&lt;/p></description></item><item><title>Book: PMP Rapid Review by Sean Whitaker</title><link>https://carlos.mendible.com/2016/02/29/book-pmp-rapid-review-sean-whitaker/</link><pubDate>Mon, 29 Feb 2016 23:55:57 +0000</pubDate><guid>https://carlos.mendible.com/2016/02/29/book-pmp-rapid-review-sean-whitaker/</guid><description>&lt;p>&lt;figure>&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="PMP RAPID REVIEW"
 src="https://carlos.mendible.com/wp-content/uploads/2016/02/PMP_Rapid_Review.jpg"
 >&lt;/figure>
&lt;/p>
&lt;p>Four months ago I cleared the &lt;strong>PMP&lt;/strong> exam as part of a program launched by &lt;a href="https://twitter.com/sogetispain" target="_blank">@SogetiSpain&lt;/a> and I want to share with you that the book: &lt;strong>&lt;a href="http://www.amazon.com/PMP-Rapid-Review-Sean-Whitaker/dp/0735664404" target="_blank">“PMP Rapid Review&amp;quot; by Sean Whitaker&lt;/a>&lt;/strong> was key to success.&lt;/p>
&lt;blockquote class="twitter-tweet" data-width="550">
 &lt;p lang="en" dir="ltr">
 "&lt;a href="https://twitter.com/hashtag/PMP?src=hash">#PMP&lt;/a> Rapid Review" by &lt;a href="https://twitter.com/SeanWhitakerPM">@SeanWhitakerPM&lt;/a> was like an ETL placed between the &lt;a href="https://twitter.com/hashtag/PMBOK?src=hash">#PMBOK&lt;/a> &amp; my brain. Guess what? I cleared the exam! cc &lt;a href="https://twitter.com/MSLearning">@MSLearning&lt;/a>
 &lt;/p></description></item><item><title>VSTS Git Credential Manager</title><link>https://carlos.mendible.com/2016/02/28/vsts-git-credential-manager/</link><pubDate>Sun, 28 Feb 2016 22:12:41 +0000</pubDate><guid>https://carlos.mendible.com/2016/02/28/vsts-git-credential-manager/</guid><description>&lt;p>Since the year started I&amp;rsquo;ve been working hard with &lt;strong>Visual Studio Team Services (VSTS)&lt;/strong> with &lt;strong>Git&lt;/strong> as source control. I was getting tired of entering my git credentials on each clone, pull or push, on Windows or Mac OS X, so this weekend I decided to surf the web and look for a multi-platform solution.&lt;/p></description></item><item><title>Help! I just Inherited Code</title><link>https://carlos.mendible.com/2015/09/15/help-i-just-inherited-code/</link><pubDate>Tue, 15 Sep 2015 18:03:32 +0000</pubDate><guid>https://carlos.mendible.com/2015/09/15/help-i-just-inherited-code/</guid><description>&lt;p>You just inherited someone else’s code and you feel like the task is going to be impossible. You are overwhelmed by the lack of documentation, you also find out that there are no tests in place and you wonder how on earth you will make the requested changes without breaking things. Yes you are scared!&lt;/p></description></item><item><title>When will Singularity happen?</title><link>https://carlos.mendible.com/2015/06/03/when-will-singularity-happen/</link><pubDate>Wed, 03 Jun 2015 18:03:32 +0000</pubDate><guid>https://carlos.mendible.com/2015/06/03/when-will-singularity-happen/</guid><description>&lt;p>Maybe I was 12 when I listened to ‘Mr Roboto’ by Styx for the last time. The song was recorded for the album ‘Kilroy Was Here’ in 1982. That was 11 years before the first release of the Mosaic web browser, 17 before the term ‘Internet of Things’ was coined and approximately 30 years before the rise of IoT.&lt;/p></description></item><item><title>Live Long and Prosper: Apply Four Simple Programming Principles</title><link>https://carlos.mendible.com/2015/03/17/live-long-and-prosper-apply-four-simple-programming-principles/</link><pubDate>Tue, 17 Mar 2015 18:03:32 +0000</pubDate><guid>https://carlos.mendible.com/2015/03/17/live-long-and-prosper-apply-four-simple-programming-principles/</guid><description>&lt;p>Any application that is critical to running the mainstream operation of a business can be considered a mission critical application. These applications should be sustainable, maintainable, flexible and adaptable to keep up with the pace of today’s evolving nature of business.&lt;/p>
&lt;blockquote>&lt;p>“Change is the essential process of all existence.” — As aptly stated by Mr. Spock in Star Trek: The Original Series.&lt;/p></description></item><item><title>DevOps, People and Emotions</title><link>https://carlos.mendible.com/2015/01/13/devops-people-and-emotions/</link><pubDate>Tue, 13 Jan 2015 18:03:32 +0000</pubDate><guid>https://carlos.mendible.com/2015/01/13/devops-people-and-emotions/</guid><description>&lt;p>I had the luck to end last year as speaker on an expert panel in IASA Spain’s latest session about ALM trends and challenges, where we spent the morning talking about, amazing ALM tools, DevOps, People and Emotions.&lt;/p>
&lt;p>We all know about organizations where designers, developers, testers, operations, security and support work in isolation with minimal or no collaboration at all, having each team in its own functional silo, allowing people to ignore the consequences of their actions.&lt;/p></description></item><item><title>Continuum and The Surveillance State</title><link>https://carlos.mendible.com/2014/11/17/continuum-and-the-surveillance-state/</link><pubDate>Mon, 17 Nov 2014 18:03:32 +0000</pubDate><guid>https://carlos.mendible.com/2014/11/17/continuum-and-the-surveillance-state/</guid><description>&lt;p>Continuum is a Canadian science fiction series in which the world, by year 2077, is run by huge hi-tech corporations and is heavily surveilled with few freedoms. The only dissenters are a terrorist organization called Liber-8. When Keira Cameron, a cyber-enhanced cop, attends the execution of a captured group of Liber-8 she’s thrown back in time along with them, to year 2012. Through the 3 seasons you learn that everything the world goes through is consequence of the invention of a wearable bracelet called Halo. A wearable device which measures vital statistics, amount of sleep, food intake, exercise, etc., and also sends signals to the brain to correct any problem it may detect… By year 2077 Halo is used to control the world population.&lt;/p></description></item><item><title>Do IT Certifications help?</title><link>https://carlos.mendible.com/2013/08/27/do-it-certifications-help/</link><pubDate>Tue, 27 Aug 2013 18:03:32 +0000</pubDate><guid>https://carlos.mendible.com/2013/08/27/do-it-certifications-help/</guid><description>&lt;p>Recently I&amp;rsquo;ve been discussing with my friends and coworkers the importance of IT Certifications, which lead us to ask if in today&amp;rsquo;s highly competitive world, certifications really help Software Developers improve skills or even find their dream job or the rewards they desire.&lt;/p>
&lt;p>My answer: of course!&lt;/p>
&lt;p>I studied Chemical Engineering at Universidad Simon Bolivar, Caracas, Venezuela. Throughout my carreer I worked at the university as a programmer. In 1999 I graduated and started to work for a small IT consultant firm and shortly after the first year we had finished the software I was hired to write and it was time to go out to the world install it, give support and the best service we could.&lt;/p></description></item><item><title>Private Nuget Server responds with (405) Method Not Allowed while pushing or deleting a package</title><link>https://carlos.mendible.com/2013/05/09/private-nuget-server-responds-with-405-method-not-allowed-while-pushing-or-deleting-a-package/</link><pubDate>Thu, 09 May 2013 10:31:14 +0000</pubDate><guid>https://carlos.mendible.com/2013/05/09/private-nuget-server-responds-with-405-method-not-allowed-while-pushing-or-deleting-a-package/</guid><description>&lt;p>So you&amp;rsquo;ve deployed your own private &lt;strong>NuGet&lt;/strong> server to &lt;strong>IIS&lt;/strong> but you get this annoying exception trying to push packages:&lt;/p>
&lt;p>&lt;strong>(405) Method Not Allowed&lt;/strong>&lt;/p>
&lt;p>Well as stated in many web pages removing &lt;strong>WebDAVModule&lt;/strong> does fix the issue, but &lt;strong>be sure you add the configuration in the right section!&lt;/strong> (not in the &lt;strong>elmah&lt;/strong> section) or the fix wont work!&lt;/p></description></item><item><title>In-Person or online Networking?</title><link>https://carlos.mendible.com/2011/06/24/in-person-or-online-networking/</link><pubDate>Fri, 24 Jun 2011 15:49:19 +0000</pubDate><guid>https://carlos.mendible.com/2011/06/24/in-person-or-online-networking/</guid><description>&lt;p>Recently I&amp;rsquo;ve been puzzled by the following question: what is the best way to approach networking and to connect with people and companies that will help you survive in this competitive world?&lt;/p>
&lt;p>I&amp;rsquo;ve connected with a lot of professionals through social networks (for instance &lt;a href="https://twitter.com/#!/cfmendible" target="_blank" rel="noreferrer">twitter&lt;/a> and &lt;a href="http://es.linkedin.com/in/carlosmendible" target="_blank" rel="noreferrer">linkedin&lt;/a>), I also collaborate in open source projects in sites such as &lt;a href="http://www.codeplex.com/site/users/view/cmendible" target="_blank" rel="noreferrer">codeplex&lt;/a> and &lt;a href="https://github.com/cmendible" target="_blank" rel="noreferrer">github&lt;/a>. The tools provided by those networks allow me connect with people as near as home or as far as another continent, keeping track of any interaction, learning and sharing knowledge.&lt;/p></description></item><item><title>Prepare your App for Windows Azure! Create a custom Configuration Manager!</title><link>https://carlos.mendible.com/2010/10/18/prepare-your-app-for-windows-azure-create-a-custom-configuration-manager/</link><pubDate>Mon, 18 Oct 2010 10:21:03 +0000</pubDate><guid>https://carlos.mendible.com/2010/10/18/prepare-your-app-for-windows-azure-create-a-custom-configuration-manager/</guid><description>&lt;p>When you deploy an application to Windowes Azure, your application configuration cannot be changed cause it becomes part of the distributed package.&lt;/p>
&lt;p>So what can you do if you want to set some dynamic settings (i.e Connection String settings)?&lt;/p>
&lt;p>First of all you must use the &lt;strong>ServiceDefinition.csdef&lt;/strong> file and add the dynamic settings there.&lt;/p></description></item><item><title>SQL Azure Requires Clustered Indexes in all tables</title><link>https://carlos.mendible.com/2010/10/01/sql-azure-requires-clustered-indexes-in-all-tables/</link><pubDate>Fri, 01 Oct 2010 11:05:49 +0000</pubDate><guid>https://carlos.mendible.com/2010/10/01/sql-azure-requires-clustered-indexes-in-all-tables/</guid><description>&lt;p>Recently we performed some test against SQL Azure. We found that our system was throwing an exception cause SQL Azure requires a clustered index in each table (&lt;a href="http://blogs.msdn.com/b/sqlazure/archive/2010/05/12/10011257.aspx" target="_blank" rel="noreferrer">Wanna know why?&lt;/a>).&lt;/p>
&lt;p>So how can you find out what tables are causing the issue? The answer is simple, run the following query and you&amp;rsquo;ll have the list of tables to fix:&lt;/p></description></item><item><title>netDumbster another .Net Fake SMTP server based on Dumbster</title><link>https://carlos.mendible.com/2010/05/06/netdumbster-another-net-fake-smtp-server-based-on-dumbster/</link><pubDate>Thu, 06 May 2010 16:02:00 +0000</pubDate><guid>https://carlos.mendible.com/2010/05/06/netdumbster-another-net-fake-smtp-server-based-on-dumbster/</guid><description>&lt;p>Today I&amp;rsquo;ve released &lt;strong>netDumbster&lt;/strong> (&lt;a href="http://netdumbster.codeplex.com/" target="_blank" rel="noreferrer">http://netdumbster.codeplex.com/&lt;/a>)&lt;/p>
&lt;p>&lt;strong>netDumbster&lt;/strong> is a .Net Fake SMTP Server clone of the popular &lt;strong>Dumbster&lt;/strong> (&lt;a href="http://quintanasoft.com/dumbster/" target="_blank" rel="noreferrer">http://quintanasoft.com/dumbster/&lt;/a>)&lt;/p>
&lt;p>&lt;strong>netDumbster&lt;/strong> is based on the API of &lt;strong>nDumbster&lt;/strong> (&lt;a href="http://ndumbster.sourceforge.net/default.html" target="_blank" rel="noreferrer">http://ndumbster.sourceforge.net/default.html&lt;/a>) and the nice C# Email Server (CSES) writen by Eric Daugherty.&lt;/p>
&lt;p>Hope it helps!!!&lt;/p>
&lt;p>&lt;strong>Update:&lt;/strong> &lt;strong>netDumbster&lt;/strong> source code was moved to a GitHub repo: &lt;a href="https://github.com/cmendible/netDumbster" target="_blank" rel="noreferrer">https://github.com/cmendible/netDumbster&lt;/a>&lt;/p></description></item><item><title>NHibernate.Linq Issue when a query is executed having the same alias but with different associations paths</title><link>https://carlos.mendible.com/2010/05/06/nhibernate-linq-issue-when-a-query-is-executed-having-the-same-alias-but-with-different-associations-paths/</link><pubDate>Thu, 06 May 2010 14:08:00 +0000</pubDate><guid>https://carlos.mendible.com/2010/05/06/nhibernate-linq-issue-when-a-query-is-executed-having-the-same-alias-but-with-different-associations-paths/</guid><description>&lt;p>When running a query like the following:&lt;/p>
&lt;div class="highlight-wrapper">&lt;pre tabindex="0">&lt;code class="language-chsharp" data-lang="chsharp">var query = nhib-Arms.Where(a =&amp;gt; a.LeftHand.Thumb.Length == 1 || a.RightHand.Thumb.Length == 1);&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Thumb alias was always taken as part of the a.LeftHand association path, therefore leading to wrong results.&lt;/p>
&lt;p>I&amp;rsquo;ve worked on patch and test to fix this issue, so Thumb alias is once part of the a.LeftHand association path and once as part of the a.RightHand association path.&lt;/p></description></item><item><title>Running Apache behind an IIS server. .Net Solution</title><link>https://carlos.mendible.com/2010/02/23/running-apache-behind-an-iis-server-net-solution/</link><pubDate>Tue, 23 Feb 2010 15:17:00 +0000</pubDate><guid>https://carlos.mendible.com/2010/02/23/running-apache-behind-an-iis-server-net-solution/</guid><description>&lt;p>Yesterday I had the challenge to redirect – rewrite an url from my public IIS7 server to an internal Apache server. For instance a request to &lt;strong>&lt;a href="http://www.mysite.com/app" target="_blank" rel="noreferrer">http://www.mysite.com/app&lt;/a>&lt;/strong> handled by IIS should be redirected (using a reverse proxy) to ; &lt;strong>http://127.0.0.1:8080/app&lt;/strong> where the internal Apache is listening.&lt;/p>
&lt;p>Trying to configure it with the new &lt;a href="http://www.iis.net/expand/ApplicationRequestRouting" target="_blank" rel="noreferrer">Application Request Routing (ARR)&lt;/a> module from Microsoft was a disappointing task. Once installed, my server stopped serving pages, and I could not find a way to make it work.&lt;/p></description></item><item><title>Rhino Mocks Method &amp;#8216;YYY' requires a return value or an exception to throw.</title><link>https://carlos.mendible.com/2009/12/10/rhino-mocks-method-yyy-requires-a-return-value-or-an-exception-to-throw/</link><pubDate>Thu, 10 Dec 2009 12:15:00 +0000</pubDate><guid>https://carlos.mendible.com/2009/12/10/rhino-mocks-method-yyy-requires-a-return-value-or-an-exception-to-throw/</guid><description>&lt;p>Yesterday I found myself stucked with a strange exception while programming a unit test using Rhino Mocks.&lt;/p>
&lt;p>Supose you have an interface like the following one.&lt;/p>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="k">interface&lt;/span> &lt;span class="nc">ITest&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">object&lt;/span> &lt;span class="n">Freak&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>You can try a mock like the following:&lt;/p>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">test&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">MockRepository&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GenerateMock&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">test&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Expect&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">t&lt;/span> &lt;span class="p">=&amp;amp;&lt;/span>&lt;span class="n">gt&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">t&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Freak&lt;/span>&lt;span class="p">()).&lt;/span>&lt;span class="n">IgnoreArguments&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">WhenCalled&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span> &lt;span class="p">=&amp;amp;&lt;/span>&lt;span class="n">gt&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ReturnValue&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">&amp;#34;THIS IS A RETURN VALUE&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">Repeat&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Any&lt;/span>&lt;span class="p">();&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>Calling &lt;strong>test.Freak();&lt;/strong> will result in a return value of &lt;strong>“THIS IS A RETURN VALUE&amp;quot;&lt;/strong>&lt;/p></description></item><item><title>Officially now I'm part of xVal.WebForms developers team.</title><link>https://carlos.mendible.com/2009/11/19/officially-now-im-part-of-xval-webforms-developers-team/</link><pubDate>Thu, 19 Nov 2009 14:44:00 +0000</pubDate><guid>https://carlos.mendible.com/2009/11/19/officially-now-im-part-of-xval-webforms-developers-team/</guid><description>&lt;p>I&amp;rsquo;ve been working on xVal.WebForms for the last month, as a consecuence it&amp;rsquo;s Project Coordinator John Rummel has decided to add me as an official developer.&lt;/p>
&lt;p>So now I&amp;rsquo;m on board. Thanks John.&lt;/p>
&lt;p>&lt;a href="http://xvalwebforms.codeplex.com/team/view" target="_blank" rel="noreferrer">xVal.WebForms Team.&lt;/a>&lt;/p></description></item><item><title>xVal.WebForms, Validation Groups and CausesValidation Part II</title><link>https://carlos.mendible.com/2009/10/28/xval-webforms-validation-groups-and-causesvalidation-part-ii/</link><pubDate>Wed, 28 Oct 2009 15:22:00 +0000</pubDate><guid>https://carlos.mendible.com/2009/10/28/xval-webforms-validation-groups-and-causesvalidation-part-ii/</guid><description>&lt;p>A friend came with two issues concerning my recent post about xVal.webForms ValidationGroups and CausesValidation support.&lt;/p>
&lt;p>1.- Supress Validation was being rendered as many times as ModelValidators where in the page.&lt;/p>
&lt;p>2.- When more than one ModelValidator control was in place, xVal.AttachValidator script options could be incomplete, specifically the valgroups, cause the loop through page collections was done in the OnInit method of the controls before the page control tree was complete.&lt;/p></description></item><item><title>xVal.WebForms, Validation Groups and CausesValidation</title><link>https://carlos.mendible.com/2009/10/26/xval-webforms-validation-groups-and-causesvalidation/</link><pubDate>Mon, 26 Oct 2009 09:10:00 +0000</pubDate><guid>https://carlos.mendible.com/2009/10/26/xval-webforms-validation-groups-and-causesvalidation/</guid><description>&lt;p>In one of our recent projects we needed a behavior like the ASP.Net &lt;strong>ValidationGroups&lt;/strong> and also be able to relay on the &lt;strong>CausesValidation&lt;/strong> of all controls implementing &lt;strong>IButtonControl&lt;/strong> interface control.&lt;/p>
&lt;p>So the first issue I faced was that jquery-validate plugin version 1.5.1 (The one that xVal.WebForms uses) does not support grouping in an ASP.Net way. I found the solution to this first problem in this article: &lt;a href="http://plugins.jquery.com/node/7044" target="_blank" rel="noreferrer">http://plugins.jquery.com/node/7044&lt;/a>. I did some tests on &lt;strong>worldspawn&lt;/strong> work and did not find any problem with the implementation.&lt;/p></description></item><item><title>Using xVal, CSLA.NET and DataAnnotations.</title><link>https://carlos.mendible.com/2009/10/20/using-xval-csla-net-and-dataannotations/</link><pubDate>Tue, 20 Oct 2009 14:59:00 +0000</pubDate><guid>https://carlos.mendible.com/2009/10/20/using-xval-csla-net-and-dataannotations/</guid><description>&lt;p>I&amp;rsquo;ve been working for years with CSLA to create business layer objects. Recently I started using XVal 1.0 and XVal.WebForms 0.1 for client side validation.&lt;/p>
&lt;p>I started enforcing our rules as DataAnnotations and also in CSLA AddBusinessRules() method. So if a property of type string was required I used a StringLength DataAnnotation and also a CSLA.Validation.CommonRules.StringMaxLength rule in our business object.&lt;/p></description></item><item><title>Upgrade xVal.WebForms 0.1 to use xVal.1.0 (Validation Summary Support)</title><link>https://carlos.mendible.com/2009/10/19/upgrade-xval.webforms-0.1-to-use-xval.1.0-validation-summary-support/</link><pubDate>Mon, 19 Oct 2009 15:18:00 +0000</pubDate><guid>https://carlos.mendible.com/2009/10/19/upgrade-xval.webforms-0.1-to-use-xval.1.0-validation-summary-support/</guid><description>&lt;p>Recently I found out about &lt;a href="http://xvalwebforms.codeplex.com/" target="_blank" rel="noreferrer">xVal.WebForms&lt;/a> project at &lt;a href="http://codeplex.com" target="_blank" rel="noreferrer">CodePlex.com&lt;/a>. Its a good implementation of XVal for ASP.Net WebForms made by John Rummell.&lt;/p>
&lt;p>I missed Validation Summary support so I upgraded John&amp;rsquo;s code so it could work with XVal 1.0.&lt;/p>
&lt;p>I submitted two patches modifying ModelValidator.cs and xVal.jquery.validate.js.&lt;/p>
&lt;p>These changes are now part of the Trunk repository as you can see here:&lt;/p></description></item><item><title>Issue in non Generic Execute Method in DbLinq.Data.Linq.Implementation.QueryProvider</title><link>https://carlos.mendible.com/2009/10/19/issue-in-non-generic-execute-method-in-dblinq-data-linq-implementation-queryprovider/</link><pubDate>Mon, 19 Oct 2009 15:07:00 +0000</pubDate><guid>https://carlos.mendible.com/2009/10/19/issue-in-non-generic-execute-method-in-dblinq-data-linq-implementation-queryprovider/</guid><description>&lt;p>We&amp;rsquo;ve been working with DbLinq for a while now, at &lt;a href="http://hexasystems.com" target="_blank" rel="noreferrer">HexaSystems&lt;/a> and recently using it together with Dynamic Linq and SQLite I programed a call to the Count method of a Queryable object as follows:&lt;/p>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="kd">static&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="n">Count&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">this&lt;/span> &lt;span class="n">IQueryable&lt;/span> &lt;span class="n">source&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">source&lt;/span> &lt;span class="p">==&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">throw&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">ArgumentNullException&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">source&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Provider&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Execute&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Expression&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Call&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">typeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Queryable&lt;/span>&lt;span class="p">),&lt;/span> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;Count&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">new&lt;/span> &lt;span class="n">Type&lt;/span>&lt;span class="p">[]&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">source&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ElementType&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">source&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Expression&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>I noticed that when doing so against a DbLInq Table object the following method is called:&lt;/p></description></item></channel></rss>