<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0">
  <channel>
    <title>Pradeep Loganathan&#39;s Blog</title>
    <link>https://pradeepl.com/</link>
    <description>My technical notes and thoughts on software engineering, programming, and life.</description>
    <language>en-us</language>
    <lastBuildDate>Wed, 25 Feb 2026 02:24:21 UTC</lastBuildDate>
    <generator>Hugo -- gohugo.io</generator>
    
    <item>
      <title>Understanding the Model Context Protocol (MCP) for AI Integration</title>
      <link>https://pradeepl.com/blog/model-context-protocol/introduction-to-model-context-protocol/</link>
      <description>LLMs are powerful—but without access to live tools, data, and systems, they&amp;rsquo;re limited. Discover how MCP bridges that gap and why it&amp;rsquo;s becoming the standard for AI integration.</description>
      <pubDate>Tue, 29 Apr 2025 13:10:07 +1000</pubDate>
      <guid>https://pradeepl.com/blog/model-context-protocol/introduction-to-model-context-protocol/</guid>
    </item>
    
    <item>
      <title>MCP - Protocol Mechanics and Architecture</title>
      <link>https://pradeepl.com/blog/model-context-protocol/mcp-protocol-mechanics-and-architecture/</link>
      <description>Part 2 of our MCP series explores the technical foundations: JSON-RPC communication, supported transports (STDIO, HTTP/SSE, WebSockets), capability discovery (tools, resources, prompts), invocation methods, and security principles.</description>
      <pubDate>Thu, 01 May 2025 19:03:33 +1000</pubDate>
      <guid>https://pradeepl.com/blog/model-context-protocol/mcp-protocol-mechanics-and-architecture/</guid>
    </item>
    
    <item>
      <title>Building a simple MCP Server</title>
      <link>https://pradeepl.com/blog/model-context-protocol/build-a-mcp-server-dotnet/</link>
      <description>This guide covers building an MCP server in C# (.NET) with NuGet package management, running it in VS Code, and integrating with GitHub Copilot for AI-assisted development.</description>
      <pubDate>Fri, 09 May 2025 14:29:22 +1000</pubDate>
      <guid>https://pradeepl.com/blog/model-context-protocol/build-a-mcp-server-dotnet/</guid>
    </item>
    
    <item>
      <title>Building an MCP Server with Akka (Part 4)</title>
      <link>https://pradeepl.com/blog/model-context-protocol/build-a-mcp-server/</link>
      <description>This guide demonstrates building an MCP server using Akka Java SDK with annotation-based tool definitions, service discovery, and integration with both external MCP clients and Akka agents.</description>
      <pubDate>Mon, 27 Oct 2025 14:29:22 +1000</pubDate>
      <guid>https://pradeepl.com/blog/model-context-protocol/build-a-mcp-server/</guid>
    </item>
    
    <item>
      <title>Setting up an Akka Cluster on AWS EKS</title>
      <link>https://pradeepl.com/blog/akka/setup-an-akka-cluster/</link>
      <description>A complete step-by-step guide to provisioning an Amazon EKS cluster, ECR repository, RDS PostgreSQL database, and deploying Akka SDK agentic AI workloads with observability, autoscaling, and security best practices.</description>
      <pubDate>Wed, 11 Feb 2026 14:54:34 +1000</pubDate>
      <guid>https://pradeepl.com/blog/akka/setup-an-akka-cluster/</guid>
    </item>
    
    <item>
      <title>The Akka Actor Model: A Foundation for Concurrent AI Agents</title>
      <link>https://pradeepl.com/blog/agentic-ai/akka-actor-model-agentic-ai/</link>
      <description>Use Akka’s actor model to run thousands of concurrent, stateful AI agents with isolation, supervision, and backpressure—plus a minimal Java example.</description>
      <pubDate>Tue, 16 Sep 2025 16:31:35 +1000</pubDate>
      <guid>https://pradeepl.com/blog/agentic-ai/akka-actor-model-agentic-ai/</guid>
    </item>
    
    <item>
      <title>Agentic AI: From Copilots to Agents</title>
      <link>https://pradeepl.com/blog/agentic-ai/agentic-ai-from-copilots-to-agents/</link>
      <description>A comprehensive guide to Agentic AI, exploring how autonomous AI systems are evolving beyond traditional generative AI to become proactive, goal-driven agents capable of complex problem-solving.</description>
      <pubDate>Sun, 14 Sep 2025 11:21:00 +1000</pubDate>
      <guid>https://pradeepl.com/blog/agentic-ai/agentic-ai-from-copilots-to-agents/</guid>
    </item>
    
    <item>
      <title>Introduction to Webhooks</title>
      <link>https://pradeepl.com/blog/api/introduction-to-webhooks/</link>
      <description>Learn about webhooks, their benefits, challenges, and how they are revolutionizing real-time communication in modern software development.</description>
      <pubDate>Wed, 15 Jan 2025 11:07:18 +1000</pubDate>
      <guid>https://pradeepl.com/blog/api/introduction-to-webhooks/</guid>
    </item>
    
    <item>
      <title>Unmasking the Invisible Adversary:The Evolving Art and Science of Threat Modeling</title>
      <link>https://pradeepl.com/blog/threat-modeling-2024/</link>
      <description>As applications and infrastructures become more complex and distributed, threat modeling has transformed into a continuous, integral part of modern DevSecOps. This post revisits threat modeling fundamentals and introduces the latest standards, methodologies, and technologies shaping this critical discipline today.</description>
      <pubDate>Fri, 13 Dec 2024 11:31:49 +1000</pubDate>
      <guid>https://pradeepl.com/blog/threat-modeling-2024/</guid>
    </item>
    
    <item>
      <title>Flipping the Script: Elevating Security to the Core of Application Design</title>
      <link>https://pradeepl.com/blog/security-first-software-design/</link>
      <description>This blog examines how prioritizing security from the outset transforms design and development practices, using real-world lessons like the Equifax breach.</description>
      <pubDate>Mon, 25 Nov 2024 16:36:41 +1000</pubDate>
      <guid>https://pradeepl.com/blog/security-first-software-design/</guid>
    </item>
    
    <item>
      <title>Securing the Software Supply Chain: A Developer&#39;s Guide</title>
      <link>https://pradeepl.com/blog/securing-the-supply-chain-for-developers/</link>
      <description>Learn how to secure the software supply chain by embracing best practices such as secure coding, CI/CD integration, SBOMs, and proactive monitoring.</description>
      <pubDate>Thu, 05 Sep 2024 07:05:37 +1000</pubDate>
      <guid>https://pradeepl.com/blog/securing-the-supply-chain-for-developers/</guid>
    </item>
    
    <item>
      <title>Migrating from SQL Server to PostgreSQL: A Comprehensive Guide</title>
      <link>https://pradeepl.com/blog/migrating-from-sql-server-to-postgresql/</link>
      <description>Master SQL Server to PostgreSQL migration with our comprehensive guide covering schema conversion, data migration methods, testing strategies, and optimization - achieve 40-50% cost savings.</description>
      <pubDate>Wed, 31 Jul 2024 10:26:07 +1000</pubDate>
      <guid>https://pradeepl.com/blog/migrating-from-sql-server-to-postgresql/</guid>
    </item>
    
    <item>
      <title>How to Generate SSL Wildcard Certificates with ACME Challenges, Let&#39;s Encrypt, and Certbot</title>
      <link>https://pradeepl.com/blog/generate-wildcard-ssl-certificate-using-letsencrypt-certbot/</link>
      <description>This blog post guides you through the process of generating SSL wildcard certificates using ACME challenges and Certbot, helping secure your domains with Let&amp;rsquo;s Encrypt.</description>
      <pubDate>Sun, 07 Jul 2024 15:47:06 +1000</pubDate>
      <guid>https://pradeepl.com/blog/generate-wildcard-ssl-certificate-using-letsencrypt-certbot/</guid>
    </item>
    
    <item>
      <title>Model Inference Explained: Turning AI Models into Real-World Solutions</title>
      <link>https://pradeepl.com/blog/ai-model-inference-explained/</link>
      <description>Explore the power of model inference, its importance in machine learning, and best practices for getting the most out of your models.</description>
      <pubDate>Thu, 04 Jul 2024 11:21:00 +1000</pubDate>
      <guid>https://pradeepl.com/blog/ai-model-inference-explained/</guid>
    </item>
    
    <item>
      <title>Unlocking the Power of Greenplum: The Ultimate Database for AI/ML Workloads</title>
      <link>https://pradeepl.com/blog/install-greenplum-windows-wsl/</link>
      <description>Learn how to set up Greenplum on Rocky Linux in WSL2 and explore its powerful features for AI/ML workloads.</description>
      <pubDate>Tue, 25 Jun 2024 17:56:48 +1000</pubDate>
      <guid>https://pradeepl.com/blog/install-greenplum-windows-wsl/</guid>
    </item>
    
    <item>
      <title>NVIDIA GPU Setup for TensorFlow on WSL2: Complete Guide (2025)</title>
      <link>https://pradeepl.com/blog/installing-nvidia-cuda-tensorflow-on-windows-wsl2/</link>
      <description>Step-by-step guide to configure NVIDIA GPU acceleration for TensorFlow on Windows WSL2. Covers CUDA 12.x installation, cuDNN setup, common errors, and verification - get 10-100x faster training.</description>
      <pubDate>Thu, 06 Jun 2024 09:35:25 +1000</pubDate>
      <guid>https://pradeepl.com/blog/installing-nvidia-cuda-tensorflow-on-windows-wsl2/</guid>
    </item>
    
    <item>
      <title>Using AI/ML to build a Fraud Detection Model</title>
      <link>https://pradeepl.com/blog/building-a-fraud-detection-model/</link>
      <description>Fraud detection involves finding patterns in data. In this blog post we will build an AI/ML model for fraud detection</description>
      <pubDate>Wed, 15 May 2024 11:39:06 +1000</pubDate>
      <guid>https://pradeepl.com/blog/building-a-fraud-detection-model/</guid>
    </item>
    
    <item>
      <title>Demystifying AI: A Gentle Introductory Guide for Tech Enthusiasts</title>
      <link>https://pradeepl.com/blog/introduction-to-artificial-intelligence/</link>
      <description>Learn the fundamentals of AI and data science in this non-technical guide. Discover subfields like machine learning and robotics, and explore how to use AI for problem-solving.</description>
      <pubDate>Mon, 22 Apr 2024 13:41:31 +0530</pubDate>
      <guid>https://pradeepl.com/blog/introduction-to-artificial-intelligence/</guid>
    </item>
    
    <item>
      <title>Zero Trust Architecture - An executive guide</title>
      <link>https://pradeepl.com/blog/zero-trust-architecture/</link>
      <description>ZTA operates on a fundamental principle - never trust, always verify. Lets understand what it is and how to implement it</description>
      <pubDate>Sat, 23 Mar 2024 13:15:39 +1000</pubDate>
      <guid>https://pradeepl.com/blog/zero-trust-architecture/</guid>
    </item>
    
    <item>
      <title>API architecture showdown - Rest vs graphQL vs gRPC</title>
      <link>https://pradeepl.com/blog/api/rest-vs-graphql-vs-grpc/</link>
      <description>Three technologies stand out as primary choices for developing API&amp;rsquo;s REST, GraphQL, and gRPC. Understanding what they bring to the table and making sure it aligns with your API design goals is key in developing successful API&amp;rsquo;s</description>
      <pubDate>Fri, 09 Feb 2024 09:30:04 +1000</pubDate>
      <guid>https://pradeepl.com/blog/api/rest-vs-graphql-vs-grpc/</guid>
    </item>
    
    <item>
      <title>gRPC and .NET: Crafting Cutting-Edge APIs</title>
      <link>https://pradeepl.com/blog/api/grpc/</link>
      <description>Dive into gRPC with this tutorial – understand Protocol Buffers, define services, and implement a gRPC server in .NET for fast, efficient communication.</description>
      <pubDate>Wed, 31 Jan 2024 09:39:01 +1000</pubDate>
      <guid>https://pradeepl.com/blog/api/grpc/</guid>
    </item>
    
    <item>
      <title>HATEOAS: Building Self-Documenting REST APIs That Scale (2025 Guide)</title>
      <link>https://pradeepl.com/blog/rest/hateoas/</link>
      <description>Master HATEOAS to build truly RESTful APIs that are self-documenting, evolvable, and loosely coupled. Includes practical examples with Spring Boot, common mistakes to avoid, and modern implementation patterns.</description>
      <pubDate>Tue, 30 Jan 2024 14:51:18 +1000</pubDate>
      <guid>https://pradeepl.com/blog/rest/hateoas/</guid>
    </item>
    
    <item>
      <title>Platform Revolution: How Platform Engineering is Reshaping Software Development</title>
      <link>https://pradeepl.com/blog/platform-engineering/</link>
      <description>Platform engineering is an emerging discipline that transcends traditional IT roles by bridging software development (Dev), operations (Ops), security (sec), and quality assurance (QA) into a coherent, streamlined workflow</description>
      <pubDate>Wed, 13 Dec 2023 12:42:17 +0530</pubDate>
      <guid>https://pradeepl.com/blog/platform-engineering/</guid>
    </item>
    
    <item>
      <title>Kpack - Streamlining Container Builds in Kubernetes</title>
      <link>https://pradeepl.com/blog/kpack/</link>
      <description>Source Code If you wish to follow along with the code used in this post, you can find it on GitHub here .
Kpack - Kubernetes native Buildpacks Kpack is a Kubernetes-native build service that utilizes Cloud Native Buildpacks to transform application source code into OCI compliant container images. Kpack extends Kubernetes by creating new custom resources that implement CNB concepts for image configuration, builders, buildpacks and others. These CRDs allow users to define and manage Kpack resources using the kubernetes native declarative api. It fits seamlessly into the Kubernetes ecosystem, making it easier to integrate with existing Kubernetes-based workflows and tools.
</description>
      <pubDate>Wed, 06 Dec 2023 10:17:38 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kpack/</guid>
    </item>
    
    <item>
      <title>Supply chain Levels for Software Artifacts - SLSA</title>
      <link>https://pradeepl.com/blog/slsa/</link>
      <description>SLSA (Supply chain Levels for Software Artifacts) is a security framework designed to ensure the integrity and security of the software supply chain. It is a set of guidelines and best practices that aim to prevent tampering, improve integrity, and secure packages and infrastructure in software development and deployment.</description>
      <pubDate>Mon, 13 Nov 2023 07:54:57 +1000</pubDate>
      <guid>https://pradeepl.com/blog/slsa/</guid>
    </item>
    
    <item>
      <title>Mastering Kubernetes Health Probes: Ensuring Robust and Reliable Services</title>
      <link>https://pradeepl.com/blog/kubernetes-health-checks/</link>
      <description>Introduction One of the key factors in Kubernetes&amp;rsquo; success is its ability to facilitate the development and deployment of resilient and highly available applications. This is achieved through a combination of features, including its containerization approach, flexible scaling mechanisms, and robust health check mechanisms.
As a container orchestration system it is essential for Kubernetes to keep track of the health of the various nodes, pods and containers in the cluster. Kubernetes uses health checks to monitor the health of applications, containers &amp;amp; pods running in a cluster. These health checks are a critical part of the platform and are used by the Kubernetes control plane to ensure that your applications are not just up and running, but also ready and capable of performing their intended functions effectively. Health checks allows kubernetes to take appropriate corrective action by replacing unhealthy components and route traffic to healthy ones. This functionality is critical and provides the high availability and resiliency features of kubernetes.
</description>
      <pubDate>Wed, 25 Oct 2023 14:33:30 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes-health-checks/</guid>
    </item>
    
    <item>
      <title>Kappa Architecture - A big data engineering approach</title>
      <link>https://pradeepl.com/blog/kappa-architecture/</link>
      <description>Kappa architecture is a data-processing architecture that is designed to process data in real time. It is a single-layer architecture that uses a streaming processing engine to process data as it is received. This architecture is simpler and more efficient than the Lambda architecture, and it can be implemented at a lower cost.</description>
      <pubDate>Wed, 10 May 2023 16:54:36 +0530</pubDate>
      <guid>https://pradeepl.com/blog/kappa-architecture/</guid>
    </item>
    
    <item>
      <title>Lambda Architecture - A data engineering approach for big data</title>
      <link>https://pradeepl.com/blog/lambda-architecture/</link>
      <description>Lambda architecture is a data processing architecture designed to handle large amounts of data by combining batch processing with real-time stream processing.Lambda architecture provides a way to handle both real-time and batch processing in a single architecture.</description>
      <pubDate>Sun, 07 May 2023 16:54:36 +0530</pubDate>
      <guid>https://pradeepl.com/blog/lambda-architecture/</guid>
    </item>
    
    <item>
      <title>Data Mesh Architecture</title>
      <link>https://pradeepl.com/blog/data-mesh-architecture/</link>
      <description>Data Mesh architecture is a modern approach to data engineering and data operations that aims to improve the scalability, agility, and innovation of data teams within organizations. It is based on the principles of domain-oriented ownership, product thinking, self-serve data infrastructure, platform thinking, data as a first-class citizen, democratized data access, and a culture of collaboration.</description>
      <pubDate>Thu, 20 Apr 2023 16:54:36 +0530</pubDate>
      <guid>https://pradeepl.com/blog/data-mesh-architecture/</guid>
    </item>
    
    <item>
      <title>Gitops with Argo CD</title>
      <link>https://pradeepl.com/blog/gitops-with-argocd/</link>
      <description>GitOps is a methodology for continuous deployment using a Git repository as the single source of truth. Argo CD is a declarative, continuous delivery GitOps operator for kubernetes. In this post we will deploy ArgoCD to a kind cluster and deploy an application, the GitOps way.</description>
      <pubDate>Mon, 22 Aug 2022 03:37:18 +1000</pubDate>
      <guid>https://pradeepl.com/blog/gitops-with-argocd/</guid>
    </item>
    
    <item>
      <title>Devops-Sydney Securing Your Supply Chain </title>
      <link>https://pradeepl.com/blog/devops-sydney-securing-your-supply-chain/</link>
      <description>I had the pleasure of presenting a talk at the Devops Sydney meetup group. The session was recorded and is here The slides used in the presentation are below </description>
      <pubDate>Thu, 18 Aug 2022 13:12:36 +1000</pubDate>
      <guid>https://pradeepl.com/blog/devops-sydney-securing-your-supply-chain/</guid>
    </item>
    
    <item>
      <title>12 Factor App: The Complete Guide to Building Cloud-Native Applications</title>
      <link>https://pradeepl.com/blog/12-factor-cloud-native-apps/</link>
      <description>Comprehensive guide to the 12 Factor App methodology: practical implementation examples with Docker/Kubernetes, common mistakes to avoid, and a complete checklist for building production-ready cloud-native applications.</description>
      <pubDate>Fri, 12 Aug 2022 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/12-factor-cloud-native-apps/</guid>
    </item>
    
    <item>
      <title>From Code to Cloud : The Rise of GitOps in Automated Deployments</title>
      <link>https://pradeepl.com/blog/gitops/</link>
      <description>GitOps is a methodology for continuous deployment using a Git repository as the single source of truth. The repository contains the YAML manifests or Helm charts for the Kubernetes resources to be created. The Git repo is used to store, track and version control changes to these YAML files.</description>
      <pubDate>Thu, 07 Jul 2022 14:06:19 +1000</pubDate>
      <guid>https://pradeepl.com/blog/gitops/</guid>
    </item>
    
    <item>
      <title>WebAssembly - From Browser to Cloud </title>
      <link>https://pradeepl.com/blog/webassembly-from-browser-to-cloud/</link>
      <description>WebAssembly(WASM) is a low-level assembly-like language that is designed for efficient execution and compact representation. WebAssembly systems interface(WASI) is a runtime specification and a standard for WebAssembly interaction with the operating system.</description>
      <pubDate>Mon, 04 Jul 2022 10:26:07 +1000</pubDate>
      <guid>https://pradeepl.com/blog/webassembly-from-browser-to-cloud/</guid>
    </item>
    
    <item>
      <title>Azure Event Grid - Create Custom Events</title>
      <link>https://pradeepl.com/blog/azure/azureeventgrid-createcustomevents/</link>
      <description>Azure Event Grid is an eventing back plane that enables event-driven and reactive programming. In this blog post series we will understand Azure Event Grid and look at developing an event driven application using Azure Event Grid as the backplane</description>
      <pubDate>Fri, 24 Jun 2022 12:25:09 +1000</pubDate>
      <guid>https://pradeepl.com/blog/azure/azureeventgrid-createcustomevents/</guid>
    </item>
    
    <item>
      <title>Azure Event Grid - Creating a Topic</title>
      <link>https://pradeepl.com/blog/azure/azureeventgrid-createtopic/</link>
      <description>Azure Event Grid is an eventing back plane that enables event-driven and reactive programming. In this blog post series we will understand Azure Event Grid and look at developing an event driven application using Azure Event Grid as the backplane</description>
      <pubDate>Thu, 23 Jun 2022 12:25:09 +1000</pubDate>
      <guid>https://pradeepl.com/blog/azure/azureeventgrid-createtopic/</guid>
    </item>
    
    <item>
      <title>Introduction to Azure Event Grid</title>
      <link>https://pradeepl.com/blog/azure/azureeventgrid-introduction/</link>
      <description>Azure Event Grid is an eventing back plane that enables event-driven and reactive programming. In this blog post series we will understand Azure Event Grid and look at developing an event driven application using Azure Event Grid as the backplane</description>
      <pubDate>Wed, 22 Jun 2022 12:25:09 +1000</pubDate>
      <guid>https://pradeepl.com/blog/azure/azureeventgrid-introduction/</guid>
    </item>
    
    <item>
      <title>Cloud Native Summit - Secure your supply chain </title>
      <link>https://pradeepl.com/blog/cloud-native-summit-wellington-secure-supply-chain/</link>
      <description>I had the pleasure of presenting a lightning talk at the Cloud Native summit at Wellington - New Zealand . The session was recorded and is here </description>
      <pubDate>Sat, 18 Jun 2022 13:12:36 +1000</pubDate>
      <guid>https://pradeepl.com/blog/cloud-native-summit-wellington-secure-supply-chain/</guid>
    </item>
    
    <item>
      <title>Knative - Fundamental concepts</title>
      <link>https://pradeepl.com/blog/kubernetes/knative-fundamental-concepts/</link>
      <description>Knative focuses on three key areas -  building an application, serving traffic to it, and enabling applications to easily consume and produce events. This post looks at the fundamental concepts of Knative such as Knative Serving, Knative Eventing and Knative build. It also looks at the details of service, configuration, Revision and routes which are part of Knative Serving. It looks at the details of Messaging, Channel, Subscription, sources and sinks which are part of Knative eventing.</description>
      <pubDate>Fri, 20 May 2022 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/knative-fundamental-concepts/</guid>
    </item>
    
    <item>
      <title>Internal developer portals with Backstage</title>
      <link>https://pradeepl.com/blog/internal-developer-portals-spotify-backstage/</link>
      <description>Backstage is an open source tool for building Internal developer portals. It improves the overall developer experience by delivering the core features of a developer portal, such as Software Catalogs, templates, and documentation.</description>
      <pubDate>Tue, 03 May 2022 14:06:19 +1000</pubDate>
      <guid>https://pradeepl.com/blog/internal-developer-portals-spotify-backstage/</guid>
    </item>
    
    <item>
      <title>Kubernetes Storage architecture</title>
      <link>https://pradeepl.com/blog/kubernetes/kubernetes-storage-architecture/</link>
      <description>Kubernetes Storage concepts Applications that run on Kubernetes can be stateless or stateful. Kubernetes abstracts away persistent storage from ephemeral pods and containers. Kubernetes provides the ability to dynamically create storage resources. The Kubernetes storage architecture is based on volumes as the primary abstraction. Volumes are created and managed by Kubernetes. It is bound to pods and containers. Volumes are attached to the nodes where the pods and containers are running. Volumes are mounted to the containers and are bound to persistent storage.
</description>
      <pubDate>Wed, 27 Apr 2022 09:18:48 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/kubernetes-storage-architecture/</guid>
    </item>
    
    <item>
      <title>Unpacking Cloud Native Buildpacks</title>
      <link>https://pradeepl.com/blog/kubernetes/cloudnativebuildpacks/</link>
      <description>Container images are a popular and standard format to package applications. Building secure, high performance container images can be challenging. Cloud native buildpacks provide solutions to create container images that are secure, high performance, and easy to deploy.</description>
      <pubDate>Thu, 10 Feb 2022 12:25:09 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/cloudnativebuildpacks/</guid>
    </item>
    
    <item>
      <title>Deploying Sql Server Always On Availability Group on Kubernetes</title>
      <link>https://pradeepl.com/blog/kubernetes/deploying-sql-server-on-kubernetes/</link>
      <description>In this post we will deploy MS Sql Server in a kubernetes cluster. We will then configure it as an always on availability group.We will also look at synchronization and failover.</description>
      <pubDate>Mon, 31 Jan 2022 11:00:08 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/deploying-sql-server-on-kubernetes/</guid>
    </item>
    
    <item>
      <title>Getting Started with Tekton - Fundamental Concepts</title>
      <link>https://pradeepl.com/blog/kubernetes/tekton-getting-started-fundamental-concepts/</link>
      <description>Tekton provides a cloud-native, standardized set of building blocks for CI/CD systems. It runs natively on Kubernetes and can target any platform, language, or cloud. It extends the Kubernetes API and provides custom resources to create CI/CD pipelines.</description>
      <pubDate>Tue, 25 Jan 2022 11:01:47 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/tekton-getting-started-fundamental-concepts/</guid>
    </item>
    
    <item>
      <title>Deploying a serverless knative application on kind</title>
      <link>https://pradeepl.com/blog/kubernetes/deploying-a-serverless-knative-application-on-kind/</link>
      <description>In this post we will walk through steps to create a Knative serving instance on a local Kind cluster. We will deploy kourier as the networking layer. We will then deploy an application on this cluster and see it scaling up and down</description>
      <pubDate>Fri, 21 Jan 2022 11:32:59 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/deploying-a-serverless-knative-application-on-kind/</guid>
    </item>
    
    <item>
      <title>Deploying OPA Gatekeeper and defining constraints</title>
      <link>https://pradeepl.com/blog/kubernetes/deploying-gatekeeper-and-defining-constraints/</link>
      <description>In this post we will deploy gatekeeper to a kubernetes cluster. We will then define constraints and ensure that gatekeeper enforces those constraints.</description>
      <pubDate>Fri, 07 Jan 2022 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/deploying-gatekeeper-and-defining-constraints/</guid>
    </item>
    
    <item>
      <title>OPA Gatekeeper - Transforming Kubernetes with Dynamic Policy Enforcement</title>
      <link>https://pradeepl.com/blog/kubernetes/opa-gatekeeper/</link>
      <description>OPA Gatekeeper is a Kubernetes-native policy controller that enables resource validation and audit functionality for a Kubernetes cluster.</description>
      <pubDate>Fri, 07 Jan 2022 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/opa-gatekeeper/</guid>
    </item>
    
    <item>
      <title>Introduction to Kubernetes Admission Controllers</title>
      <link>https://pradeepl.com/blog/kubernetes/introduction-to-kubernetes-admission-controllers/</link>
      <description>Admission controllers provide extension points that augment Kubernetes functionality. Admission controllers determine if the request is well-formed and approve or reject the API request.</description>
      <pubDate>Thu, 06 Jan 2022 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/introduction-to-kubernetes-admission-controllers/</guid>
    </item>
    
    <item>
      <title>Policy as Code: Revolutionizing IT Compliance and Governance.</title>
      <link>https://pradeepl.com/blog/policy-as-code/</link>
      <description>Policy as Code is the idea of writing code to manage and automate policies. Policy as Code arose as a natural progression from Infrastructure as Code.</description>
      <pubDate>Sun, 02 Jan 2022 20:34:02 +0530</pubDate>
      <guid>https://pradeepl.com/blog/policy-as-code/</guid>
    </item>
    
    <item>
      <title>Open Policy Agent (OPA) - Revolutionizing Policy as Code</title>
      <link>https://pradeepl.com/blog/kubernetes/open-policy-agent-opa/</link>
      <description>The Open Policy Agent (OPA) is a policy engine to author declarative policies as code and use those policies as a component of the decision-making process.</description>
      <pubDate>Thu, 16 Dec 2021 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/open-policy-agent-opa/</guid>
    </item>
    
    <item>
      <title>Using Cluster Api to Create Kubernetes Clusters on Azure</title>
      <link>https://pradeepl.com/blog/kubernetes/using-cluster-api-to-create-kubernetes-clusters-on-azure/</link>
      <description>In this post let’s look at using CAPI to deploy a Kubernetes cluster in Azure. The end goal is to create a Kubernetes cluster in Azure with three control plane nodes and three worker nodes.</description>
      <pubDate>Tue, 14 Dec 2021 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/using-cluster-api-to-create-kubernetes-clusters-on-azure/</guid>
    </item>
    
    <item>
      <title>Cluster API (CAPI) – A Practical Guide to Building Kubernetes Clusters</title>
      <link>https://pradeepl.com/blog/kubernetes/cluster-api-capi/</link>
      <description>Cluster API brings declarative, Kubernetes-style APIs to cluster creation, configuration, and management.</description>
      <pubDate>Wed, 08 Dec 2021 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/cluster-api-capi/</guid>
    </item>
    
    <item>
      <title>Building a secure and high-performance AKS Kubernetes cluster using Terraform</title>
      <link>https://pradeepl.com/blog/building-a-secure-and-high-performance-aks-kubernetes-cluster-using-terraform/</link>
      <description>I have been part of a couple of build outs where we built Kubernetes clusters to run our cloud workloads. These builds involved deploying AKS clusters using terraform and AzDO. Designing the AKS infrastructure is key to ensure that the cloud workloads running on them can be deployed, secured, and hosted effectively. In this post I am documenting the general steps involved in building out a Kubernetes infrastructure on Azure Kubernetes Service (AKS) using terraform and deploy workloads using Azure devops (AzDO) and Helm charts.
</description>
      <pubDate>Thu, 09 Sep 2021 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/building-a-secure-and-high-performance-aks-kubernetes-cluster-using-terraform/</guid>
    </item>
    
    <item>
      <title>Getting started with GraphQL</title>
      <link>https://pradeepl.com/blog/api/getting-started-with-graphql/</link>
      <description>GraphQL is a query language for APIs. It is a query language that provides for client-tailored queries. It is an API specification.</description>
      <pubDate>Wed, 28 Apr 2021 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/api/getting-started-with-graphql/</guid>
    </item>
    
    <item>
      <title>Dynamics 365 Finance and operations - Architecture</title>
      <link>https://pradeepl.com/blog/dynamics365/dynamics-365-finance-and-operations-architecture/</link>
      <description>Dynamics 365 for Finance and Operations is designed and architected for the cloud. It can be deployed as an on-premises system or on the cloud.</description>
      <pubDate>Fri, 26 Mar 2021 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/dynamics365/dynamics-365-finance-and-operations-architecture/</guid>
    </item>
    
    <item>
      <title>Off the blocks with the new Cosmos Db SDK - V4</title>
      <link>https://pradeepl.com/blog/off-the-blocks-with-the-new-cosmos-db-sdk-v4/</link>
      <description>Creating Cosmos Db Infrastructure The azure Cosmos DB team provides SQL API SDK&amp;rsquo;s for various languages. At the time of writing this post the NuGet package for .NET core is at version 4 preview 3. The GitHub repo for this NuGet package is here . To get started we can use the Cosmo Db emulator locally or create a Cosmos Account on Azure. We can log onto Azure portal to create a Cosmos Account or use Azure CLI. I am using the below Azure CLI command to create a Cosmos DB account. This command creates a Cosmos DB Account named eCommerceDb-AC in the eCommerce-RG resource group.
</description>
      <pubDate>Mon, 02 Nov 2020 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/off-the-blocks-with-the-new-cosmos-db-sdk-v4/</guid>
    </item>
    
    <item>
      <title>High performance Data modelling in Azure Cosmos Db</title>
      <link>https://pradeepl.com/blog/azure/high-performance-data-modelling-in-azure-cosmos-db/</link>
      <description>It is imperative to understand core concepts involved in modelling data in Cosmos Db to harness its power. It is an extremely powerful cloud native database.</description>
      <pubDate>Fri, 30 Oct 2020 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/azure/high-performance-data-modelling-in-azure-cosmos-db/</guid>
    </item>
    
    <item>
      <title>Getting started with Cosmos DB</title>
      <link>https://pradeepl.com/blog/azure/getting-started-with-cosmos-db/</link>
      <description>Cosmos DB is a cloud native database engine on Azure. It is a born-in the-cloud database with no legacy compatibility requirements. It can expose data using a variety of models and API&amp;rsquo;s.</description>
      <pubDate>Wed, 21 Oct 2020 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/azure/getting-started-with-cosmos-db/</guid>
    </item>
    
    <item>
      <title>Getting started with terraform on azure - Part 1</title>
      <link>https://pradeepl.com/blog/getting-started-with-terraform-on-azure-part-1/</link>
      <description>Sunshine coast .Net user group meeting. Topic - Getting started with terraform on Azure.</description>
      <pubDate>Sun, 11 Oct 2020 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/getting-started-with-terraform-on-azure-part-1/</guid>
    </item>
    
    <item>
      <title>Getting started with terraform on azure - Part 2</title>
      <link>https://pradeepl.com/blog/getting-started-with-terraform-on-azure-part-2/</link>
      <description>Sunshine coast .Net user group meeting. Topic - Getting started with terraform on Azure.</description>
      <pubDate>Sun, 11 Oct 2020 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/getting-started-with-terraform-on-azure-part-2/</guid>
    </item>
    
    <item>
      <title>Terraform - Getting Started</title>
      <link>https://pradeepl.com/blog/terraform-getting-started/</link>
      <description>Terraform is an open source tool created by HashiCorp to define infrastructure as cod using a simple, declarative language called HCL. Terraform is used to deploy and manage infrastructure across a variety of cloud providers &amp;amp; virtualization platforms. It can be used to deploy infrastructure to all major cloud providers such as Azure, AWS, Digital ocean, and virtualization platforms such as VMware, Open stack, and others.</description>
      <pubDate>Sun, 11 Oct 2020 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/terraform-getting-started/</guid>
    </item>
    
    <item>
      <title>Repository and Unit of work pattern in ASP.net core</title>
      <link>https://pradeepl.com/blog/repository-and-unit-of-work-pattern-asp-net-core/</link>
      <description>A Repository is used to manage aggregate persistence and retrieval. The repository mediates between the data-access layer and the domain.The unit of work pattern keeps track of all changes to aggregates. Once all updates of the aggregates in a scope are completed, the tracked changes are played onto the database in a transaction</description>
      <pubDate>Thu, 30 Jul 2020 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/repository-and-unit-of-work-pattern-asp-net-core/</guid>
    </item>
    
    <item>
      <title>Securing the  OAS/Swagger endpoint in dotnet</title>
      <link>https://pradeepl.com/blog/securing-openapi-endpoint-dotnet/</link>
      <description>OpenAPI 3.0 lets you describe how your APIs are protected using various security schemes and their security requirements.</description>
      <pubDate>Thu, 25 Jun 2020 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/securing-openapi-endpoint-dotnet/</guid>
    </item>
    
    <item>
      <title>Building a successful API - Understanding the Open API Specification (OAS)</title>
      <link>https://pradeepl.com/blog/openapi-specification-swagger/</link>
      <description>The Open API Specification is used to define the contract between the API consumers and the API providers. The specification is based on the JSON schema and is a standard format for describing the data exchanged between the API consumers and the API providers.</description>
      <pubDate>Sat, 20 Jun 2020 11:00:08 +1000</pubDate>
      <guid>https://pradeepl.com/blog/openapi-specification-swagger/</guid>
    </item>
    
    <item>
      <title>Creating a Windows VM using Terraform</title>
      <link>https://pradeepl.com/blog/creating-a-windows-vm-using-terraform/</link>
      <description>This post is a follow up on the Terraform 101 sessions for the Sunshine Coast dotnet user group. The slides and the code from the session are below.
Slides Terraform 101 from Pradeep Loganathan Creating a Windows Virtual Machine provider &amp;#34;azurerm&amp;#34; { version = &amp;#34;=2.8.0&amp;#34; features {} } #create the resource group resource &amp;#34;azurerm_resource_group&amp;#34; &amp;#34;rg&amp;#34; { name = &amp;#34;ateam-resource-group&amp;#34; location = &amp;#34;australiaeast&amp;#34; } #create the virtual network resource &amp;#34;azurerm_virtual_network&amp;#34; &amp;#34;vnet1&amp;#34; { resource_group_name = azurerm_resource_group.rg.name location = &amp;#34;australiaeast&amp;#34; name = &amp;#34;dev&amp;#34; address_space = [&amp;#34;10.0.0.0/16&amp;#34;] } #create a subnet within the virtual network resource &amp;#34;azurerm_subnet&amp;#34; &amp;#34;subnet1&amp;#34; { resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.vnet1.name name = &amp;#34;devsubnet&amp;#34; address_prefixes = [&amp;#34;10.0.0.0/24&amp;#34;] } ##create the network interface for the VM resource &amp;#34;azurerm_public_ip&amp;#34; &amp;#34;pub_ip&amp;#34; { name = &amp;#34;vmpubip&amp;#34; location = &amp;#34;australiaeast&amp;#34; resource_group_name = azurerm_resource_group.rg.name allocation_method = &amp;#34;Dynamic&amp;#34; } resource &amp;#34;azurerm_network_interface&amp;#34; &amp;#34;vmnic&amp;#34; { location = &amp;#34;australiaeast&amp;#34; resource_group_name = azurerm_resource_group.rg.name name = &amp;#34;vmnic1&amp;#34; ip_configuration { name = &amp;#34;vmnic1-ipconf&amp;#34; subnet_id = azurerm_subnet.subnet1.id private_ip_address_allocation = &amp;#34;Dynamic&amp;#34; public_ip_address_id = azurerm_public_ip.pub_ip.id } } ##end creating network interface for the VM ##create the actual VM resource &amp;#34;azurerm_windows_virtual_machine&amp;#34; &amp;#34;devvm&amp;#34; { name = &amp;#34;development-vm&amp;#34; location = &amp;#34;australiaeast&amp;#34; size = &amp;#34;Standard_A1_v2&amp;#34; admin_username = &amp;#34;pradeep&amp;#34; admin_password = &amp;#34;kq7UciQluJt%3dtj&amp;#34; resource_group_name = azurerm_resource_group.rg.name network_interface_ids = [azurerm_network_interface.vmnic.id] os_disk { caching = &amp;#34;ReadWrite&amp;#34; storage_account_type = &amp;#34;Standard_LRS&amp;#34; } source_image_reference { publisher = &amp;#34;MicrosoftWindowsServer&amp;#34; offer = &amp;#34;WindowsServer&amp;#34; sku = &amp;#34;2016-Datacenter&amp;#34; version = &amp;#34;latest&amp;#34; } } ##end creating VM The above code is not at all production ready and was used as part of a live coding exercise to use Terraform to create a Windows VM. The above code creates the VM password as plain text which is not ideal. The password can be generated and printed as an output if necessary.
</description>
      <pubDate>Mon, 18 May 2020 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/creating-a-windows-vm-using-terraform/</guid>
    </item>
    
    <item>
      <title>Https in ASP.Net Core</title>
      <link>https://pradeepl.com/blog/https-in-asp-net-core/</link>
      <description>In asp.net core https is enabled by default. The HttpsRedirection middleware class provides the necessary functionality to enforce redirection from http to https.</description>
      <pubDate>Sun, 02 Feb 2020 11:00:08 +1000</pubDate>
      <guid>https://pradeepl.com/blog/https-in-asp-net-core/</guid>
    </item>
    
    <item>
      <title>Dependency injection in .Net Core Console application</title>
      <link>https://pradeepl.com/blog/dotnet/dependency-injection-in-net-core-console-application/</link>
      <description>Dependency injection enables an application to use a key design principle called Loose coupling. Loose coupling enables us to write highly maintainable</description>
      <pubDate>Sat, 01 Feb 2020 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/dotnet/dependency-injection-in-net-core-console-application/</guid>
    </item>
    
    <item>
      <title>Git Branching strategies</title>
      <link>https://pradeepl.com/blog/git-branching-strategies/</link>
      <description>GIT branching strategies are conventions, or a set of rules, that describes when branches are created. Choosing the right branching strategy is key to empower development teams to collaborate effectively.</description>
      <pubDate>Tue, 28 Jan 2020 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/git-branching-strategies/</guid>
    </item>
    
    <item>
      <title>DynamoDb - RUNNING locally using docker</title>
      <link>https://pradeepl.com/blog/dynamodb-running-locally-using-docker/</link>
      <description>DynamoDb from AWS is a major player in the cloud NoSQL database market. It can scale globally and is blazing fast when used appropriately. There are a bunch of reasons to use Dynamodb locally, the primary ones being development cost and integration testing. DynamoDB does not have a desktop install, however thankfully, AWS has created a Docker image to enable running DynamoDb locally.
To run DynamoDb locally pull the docker image using the command
</description>
      <pubDate>Mon, 27 Jan 2020 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/dynamodb-running-locally-using-docker/</guid>
    </item>
    
    <item>
      <title>Configuration in a .Net Core Console application</title>
      <link>https://pradeepl.com/blog/dotnet/configuration-in-a-net-core-console-application/</link>
      <description>Adding configuration to a .Net core Console application to read configuration from a json file, or environmental variables or command line arguments.</description>
      <pubDate>Fri, 20 Dec 2019 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/dotnet/configuration-in-a-net-core-console-application/</guid>
    </item>
    
    <item>
      <title>What is HTTPS?</title>
      <link>https://pradeepl.com/blog/https/</link>
      <description>HTTPS is a network protocol used to serve up web pages. HTTPS, or HTTP Secure, was designed to secure communications between a client and the HTTP server. It is a protocol that uses a secure connection to transfer data over the internet.</description>
      <pubDate>Fri, 27 Sep 2019 11:00:08 +1000</pubDate>
      <guid>https://pradeepl.com/blog/https/</guid>
    </item>
    
    <item>
      <title>How do you increment a counter? -</title>
      <link>https://pradeepl.com/blog/crdt/</link>
      <description>Many moons ago I was working on an online eCommerce platform. The platform used to undergo massive traffic spikes periodically.
I was trying to implement a distributed counter. I was using a distributed counter because I wanted to be able to increment the counter on multiple servers.
CAP Theorem The CAP theorem was proposed by Eric Brewer.
CRDT CRDT stands for conflict-free replicated datatype. Conflict-free replicated datatype describe data-types that can be replicated across multiple computation units or nodes, they can be updated concurrently without any coordination, and then merged to get a consistent state. It doesn’t matter in which order you execute operations on the data type or if you repeat operations the result is eventually correct. Each node in a distributed system has its own replica of the CRDT. Each replica can resolve queries in isolation and can also process commands that immediately alter its state. CRDTs they can be concurrently updated across nodes and any conflicts can be resolved sensibly. CRDTs always have a merge function that can take many data entries living on different nodes and merge these automatically into one consistent view of the data, without any coordination between the nodes. CRDTs allow two conflicting updates to be merged. All replicas will converge to the same state when all updates have been delivered. The most important properties of the merge function are that it is symmetric and monotonic. The issue that CRDTs address is conflict resolution when different versions of the structure appear due to network partitions and their eventual repair. For a general data structure, if there are two conflicting versions, the solution is either to choose one (according to some general rules, like take the random one or the latest one, or application-specific logic) or to keep both versions and defer conflict resolution to the client code. CRDTs are conflict-free, that is, the structures are devised so that any conflict is resolved automatically in a way that doesn’t bring any data loss or corruption.
</description>
      <pubDate>Mon, 02 Sep 2019 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/crdt/</guid>
    </item>
    
    <item>
      <title>Chaos Engineering</title>
      <link>https://pradeepl.com/blog/chaos-engineering/</link>
      <description>Introduction &amp;ldquo;Chaos Engineering is the discipline of experimenting on a system in order to build confidence in the system’s capability to withstand turbulent conditions in production.&amp;rdquo;
Priciples of Chaos Engineering
Introduction In modern, rapidly evolving distributed systems, components fail all the time. These failures can be complex as they can cascade across systems. System weaknesses such as latency, race conditions, byzantine failures etc can be exacerbated in the face of large traffic volumes. Chaos engineering is key to discovering how these complex failures may affect the system and then validating over time that the weaknesses have been overcome.
</description>
      <pubDate>Tue, 13 Aug 2019 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/chaos-engineering/</guid>
    </item>
    
    <item>
      <title>Infrastructure as Code</title>
      <link>https://pradeepl.com/blog/infrastructure-as-code/</link>
      <description>Infrastructure as code (IaC) is the process of provisioning and managing your infrastructure resources through definition files or code.</description>
      <pubDate>Mon, 29 Jul 2019 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/infrastructure-as-code/</guid>
    </item>
    
    <item>
      <title>Service Mesh</title>
      <link>https://pradeepl.com/blog/servicemesh/</link>
      <description>Imagine a green, sustainable city, meticulously designed for environmental harmony and efficiency. The city has many distinct localities such as neighborhoods, districts, and even villages with their own identity and cultures. This city boasts an intricate public transport system, with buses, trams, and subways efficiently transporting citizens to their destinations from its various localities. Multiple such cities are connected together in a thriving, fast-paced ecosystem. The cities are also similarly connected in an efficient and sustainable design. Each locality in a city represents a microservice, and each city in this system, a domain operating within the larger ecosystem - the application. In an ideal world, this system not only ensures smooth transit but also maintains each city&amp;rsquo;s eco-friendly ethos; balancing efficiency with sustainability. But how does this ecosystem manage to keep its vast and varied transport network running so smoothly and eco-consciously, avoiding traffic jams, pollution, and inefficiencies?
</description>
      <pubDate>Wed, 24 Jul 2019 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/servicemesh/</guid>
    </item>
    
    <item>
      <title>Sidecar container pattern</title>
      <link>https://pradeepl.com/blog/patterns/sidecar-container-pattern/</link>
      <description>Sidecar pattern is a single-node pattern made up of two containers. It involves co-locating another container in a node/pod along with the main application container. The application container contains the core logic for the application. The role of the sidecar is to augment and improve the application container, often without the application container’s knowledge.
In its simplest form, a sidecar container can be used to add functionality to a container that might otherwise be difficult to add. In addition to being co-located on the same machine, the application container and sidecar container share several resources, including parts of the filesystem, hostname and network, and many other namespaces. The sidecar can be plugged and unplugged from the main application, since it is isolated and cannot impact the application in case it starts misbehaving.
</description>
      <pubDate>Wed, 24 Jul 2019 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/patterns/sidecar-container-pattern/</guid>
    </item>
    
    <item>
      <title>Transactional Outbox Pattern</title>
      <link>https://pradeepl.com/blog/transactional-outbox-pattern/</link>
      <description>Transactional Outbox is a pattern to reliably publish messages without the use of distributed transactions. It uses an Outbox and a message dispatcher  to reliably persist state and publish messages.</description>
      <pubDate>Tue, 16 Jul 2019 11:01:47 +1000</pubDate>
      <guid>https://pradeepl.com/blog/transactional-outbox-pattern/</guid>
    </item>
    
    <item>
      <title>Idempotent Consumer Pattern</title>
      <link>https://pradeepl.com/blog/patterns/idempotent-consumer-pattern/</link>
      <description>The Idempotent Consumer pattern provides the necessary safeguards to allows logic wrapped by it to be executed only once. It implements an unique identifier for each message and an idempotent repository.</description>
      <pubDate>Sat, 06 Jul 2019 11:01:47 +1000</pubDate>
      <guid>https://pradeepl.com/blog/patterns/idempotent-consumer-pattern/</guid>
    </item>
    
    <item>
      <title>Event Driven Architecture</title>
      <link>https://pradeepl.com/blog/architecture/event-driven-architecture/</link>
      <description>Event driven architecture (EDA) is an architectural paradigm where behavior is composed by reacting to events. In this paradigm events imply a significant change in state.</description>
      <pubDate>Mon, 01 Jul 2019 11:00:08 +1000</pubDate>
      <guid>https://pradeepl.com/blog/architecture/event-driven-architecture/</guid>
    </item>
    
    <item>
      <title>Container Orchestration</title>
      <link>https://pradeepl.com/blog/kubernetes/container-orchestration/</link>
      <description>A single container provides application isolation and mobility. However, a container by itself doesn’t improve the quality of your service—for example, in terms of load balancing or failover. This is where multi-container solutions come into play. However managing a handful of containers is completely different from managing production-scale containers, which may number from hundreds to thousands. To support container management, we need an easy way of deploying and handling these containers at scale. This is where container orchestration. comes into play.
</description>
      <pubDate>Wed, 23 Jan 2019 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/container-orchestration/</guid>
    </item>
    
    <item>
      <title>API Gateway - Should you build one?</title>
      <link>https://pradeepl.com/blog/api/api-gateway/</link>
      <description>An API Gateway provides a single and unified API entry point across one or more internal APIs. It mediates, routes, and invokes a respective endpoint after request verification, content filtering, authentication, and authorization.</description>
      <pubDate>Tue, 15 Jan 2019 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/api/api-gateway/</guid>
    </item>
    
    <item>
      <title>Kubernetes concepts - Controllers</title>
      <link>https://pradeepl.com/blog/kubernetes/kubernetes-controllers/</link>
      <description>Controllers create and manage pods. Controllers respond to pod state and health. Kubernetes lets you assert that resources such as pods are in a certain desired state, with specific versions. Controllers track those resources and attempt to run your software as described. There are a variety of controllers in Kubernetes, primarily ReplicaSets and Deployments.
ReplicaSet - A ReplicaSet is responsible for reconciling the desired state at all times. The ReplicaSet is used to define and manage a collection of identical pods that are running on different cluster nodes. A ReplicaSet defines the image are used by the containers in the pod and the number of instances of the pod that will run in the cluster. These properties and the many others are called the desired state. If some Pods in the ReplicaSet crash and terminate, the system will recreate Pods with the original configurations on healthy nodes automatically and keep a certain number of processes continuously running. For e.g if you specified three Pods in a ReplicaSet and one fails, Kubernetes will automatically schedule and run another Pod for you. If elementary conditions are met (for example, enough memory and CPU), Pods associated with a ReplicaSet are guaranteed to run. They provide fault-tolerance, high availability, and self-healing capabilities.
</description>
      <pubDate>Mon, 14 Jan 2019 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/kubernetes-controllers/</guid>
    </item>
    
    <item>
      <title>Kubernetes Concepts - Pods</title>
      <link>https://pradeepl.com/blog/kubernetes/kubernetes-concepts-pods/</link>
      <description>Pods are an important feature of Kubernetes. A Pod is the smallest unit of work that Kubernetes manages and is the fundamental unit that the rest of the system is built on. Each pod contains one or more containers. Instead of deploying containers individually, you always deploy and operate on a pod of containers. Pods are always scheduled together (always run on the same machine). A pod is as an atomic unit. Even if a pod does contain multiple containers, they are always run on a single worker node, it never spans multiple worker nodes. All the containers in a pod have the same IP address and port space. They communicate using localhost or standard inter-process communication. All containers in a pod have access to shared local storage on the node hosting the pod. This shared storage is mounted on each container. Pods provide a great solution for managing groups of closely related containers that depend on each other and need to co-operate on the same host to accomplish their purpose. Pods are considered as ephemeral, throwaway entities that can be discarded and replaced at will. Any pod storage is destroyed with its pod. Each pod gets a unique ID (UID), so you can still distinguish between them if necessary.
</description>
      <pubDate>Sun, 13 Jan 2019 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/kubernetes/kubernetes-concepts-pods/</guid>
    </item>
    
    <item>
      <title>Circuit Breaker Pattern</title>
      <link>https://pradeepl.com/blog/patterns/circuit-breaker-pattern/</link>
      <description>The Circuit Breaker pattern is a cornerstone of resilient systems, preventing a single component&amp;rsquo;s failure from causing a catastrophic system-wide outage. This deep dive explores its mechanics, the strategic benefits beyond simple failure handling, the nuances of configuration, and its crucial role in the modern microservices ecosystem.</description>
      <pubDate>Fri, 21 Sep 2018 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/patterns/circuit-breaker-pattern/</guid>
    </item>
    
    <item>
      <title>Reactive Manifesto</title>
      <link>https://pradeepl.com/blog/reactive-manifesto/</link>
      <description>The Reactive Manifesto describes how to design and architect Reactive systems according to your needs.Systems built as Reactive Systems are more Reliable, flexible, loosely coupled, scalable and resilient. This makes them easier to develop and amenable to change. Reactive systems are more tolerant of failure and when failure does occur, they meet it with elegance rather than disaster.</description>
      <pubDate>Sun, 09 Sep 2018 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/reactive-manifesto/</guid>
    </item>
    
    <item>
      <title>Simplest introduction to docker for .Net Core</title>
      <link>https://pradeepl.com/blog/simplest-docker-introduction-for-net-core/</link>
      <description>I have been working with multiple teams on containerizing their infrastructure using docker. A while back I needed to help a team understand Docker containers by getting them to dive in and get started rather than just talk and point to slide decks. We started by containerizing the simplest possible .net core console app.
The first app we built was a simple console app that used a timer and printed the date and time every 2 seconds. The code and the output for this program is below
</description>
      <pubDate>Sat, 25 Aug 2018 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/simplest-docker-introduction-for-net-core/</guid>
    </item>
    
    <item>
      <title>Retry Pattern</title>
      <link>https://pradeepl.com/blog/patterns/retry-pattern/</link>
      <description>The retry pattern is an extremely important pattern to make applications and services more resilient to transient failures. A transient failure is a common type of failure in a cloud-based distributed architecture. This is often due to the nature of the network itself (loss of connectivity, timeout on requests, and so on). Transient faults occur when services are hosted separately and communicate over the wire, most likely over a HTTP protocol. These faults are expected to be short-lived. Repeating such a request that has previously failed could succeed on a subsequent attempt.
</description>
      <pubDate>Fri, 10 Aug 2018 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/patterns/retry-pattern/</guid>
    </item>
    
    <item>
      <title>The Bulkhead Pattern: Isolating Failures in Distributed Systems</title>
      <link>https://pradeepl.com/blog/patterns/bulkhead-isolation/</link>
      <description>The Bulkhead pattern is a critical resilience strategy that prevents failures in one part of a system from cascading into a catastrophic, system-wide outage. By partitioning resources, it ensures that one misbehaving dependency cannot exhaust the resources needed to serve others, thereby protecting the overall health of your application.</description>
      <pubDate>Sun, 08 Jul 2018 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/patterns/bulkhead-isolation/</guid>
    </item>
    
    <item>
      <title>Representing DateTime formats in API specifications</title>
      <link>https://pradeepl.com/blog/dates-in-apis/</link>
      <description>Representing dates in an API is a common but often not well thought out functionality.We need to be very cognizant of representing dates, intervals, and periods in the API Payload. There are two generally accepted date formats for API&amp;rsquo;s.</description>
      <pubDate>Thu, 07 Jun 2018 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/dates-in-apis/</guid>
    </item>
    
    <item>
      <title>JWT - Angular Interceptor</title>
      <link>https://pradeepl.com/blog/jwt-angular-interceptor/</link>
      <description>JSON Web Token(JWT) is an industry standard for security tokens used to securely transmit information between client and server as JSON objects.It provides a solution to the problem of passing claims between parties. In this post we will create an Angular interceptor to introspect JWT tokens.</description>
      <pubDate>Sat, 19 May 2018 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/jwt-angular-interceptor/</guid>
    </item>
    
    <item>
      <title>Serialize exceptions as JSON using custom middleware in .Net Core</title>
      <link>https://pradeepl.com/blog/serialize-exceptions-as-json-using-custom-middleware-in-net-core/</link>
      <description>Creating API&amp;rsquo;s has a certain rigor to it right from the design phase which is different from a UI based Web application. One of the areas where this is very apparent is communicating exceptions to the client. In a web application exception are communicated to the client using the UI with the most common being a 404 page. This page has been elevated to an art form now. The image below is a 404 page on Pixar&amp;rsquo;s website.
</description>
      <pubDate>Thu, 10 May 2018 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/serialize-exceptions-as-json-using-custom-middleware-in-net-core/</guid>
    </item>
    
    <item>
      <title>OpenID Connect</title>
      <link>https://pradeepl.com/blog/openid-connect/</link>
      <description>OpenID Connect is a simple identity layer built on top of the OAuth 2.0 protocol. OpenID Connect is all about authentication while OAuth is an authorization protocol. In OAuth, authorization is delegated while in OpenID Connect, authentication is delegated. OpenID Connect allows clients to verify end users based on the authentication performed by an auth server. It is also used to obtain basic profile information about the end user in a standards-based, interoperable and REST-like manner. OpenID Connect provides a standard way to obtain user identity.A central part of the OpenID Connect specification is the ID Token. It provides an identity token with information about the user. It also defines an endpoint to get identity information for that user, such as their name or e-mail address. This endpoint is called the user info endpoint. The identity token is a simple JWT token signed by the OpenID provider(OP) through OAuth protocol to suit web, mobile, and browser-based applications.The Identity token is encoded into the base 64 URL-safe string that contains information such as subject (sub), issuing authority (iss), audience (aud), and more. It may also contain some extra information about the user or custom claims in a set of scopes. As OpenID Connect is built on top of the Oauth2 protocol, the flows are the same. It can be used with the authorization code grant and the implicit grant. It&amp;rsquo;s not possible with the client credentials grant, as the client credentials grant is for server-to-server communication.As part of the oAuth flow, Instead of only requesting an access token, we can request an additional ID token from the security token service (STS) that implements the OpenID Connect specification. The client receives an ID token, and usually, also an access token. The ID token is kept small with the minimal information in it. To get more information for the authenticated user, the client can then send a request to the user info endpoint with the access token. This user info endpoint will then return the claims about the new user.
</description>
      <pubDate>Thu, 03 May 2018 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/openid-connect/</guid>
    </item>
    
    <item>
      <title>JWT - Creating a token server</title>
      <link>https://pradeepl.com/blog/jwt-tokenserver/</link>
      <description>JSON Web Token(JWT) is an industry standard for security tokens used to securely transmit information between client and server as JSON objects.It provides a solution to the problem of passing claims between parties. In this post we will be implementing a JWT token server which will serve tokens to users with the appropriate credentials.</description>
      <pubDate>Sat, 21 Apr 2018 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/jwt-tokenserver/</guid>
    </item>
    
    <item>
      <title>What is a JSON Web Token (JWT)?</title>
      <link>https://pradeepl.com/blog/jwt/</link>
      <description>JSON Web Token(JWT) is an industry standard for security tokens used to securely transmit information between client and server as JSON objects.It provides a solution to the problem of passing claims between parties.</description>
      <pubDate>Sat, 21 Apr 2018 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/jwt/</guid>
    </item>
    
    <item>
      <title>HTTP2</title>
      <link>https://pradeepl.com/blog/http2/</link>
      <description>HTTP &amp;amp; HTTP/2 are both application level protocols that utilize a lower level protocol like TCP to talk on the Internet. The protocol of the Internet is TCP over IP over Ethernet.</description>
      <pubDate>Sun, 11 Mar 2018 11:00:08 +1000</pubDate>
      <guid>https://pradeepl.com/blog/http2/</guid>
    </item>
    
    <item>
      <title>Creating a service in Angular 5 with RxJS 5.5</title>
      <link>https://pradeepl.com/blog/creating-a-service-in-angular-5-with-rxjs-5-5/</link>
      <description>In the world of Microservices, the prevalence of REST API&amp;rsquo;s has made client-side developers depend on them for even the smallest of applications. If you want to develop a Weather app, you better know how to connect to one of the Weather API&amp;rsquo;s. If you want to develop a stock ticker you better know how to connect to a stock ticker API.
In the world of Angular 5 connecting to API&amp;rsquo;s requires developers to understand RxJs, Observables in particular. The new @common/http module provides all the functionality required to connect to an API. we can further make it reactive using observables and the corresponding operators from the Rxjs Libraries. A simple Angular service generally allows us to perform common HTTP actions ( Get, Post, Put, Delete ) and some uncommonly used actions such as Head and Patch. I generally follow the below pattern when I create an angular service.
</description>
      <pubDate>Fri, 16 Feb 2018 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/creating-a-service-in-angular-5-with-rxjs-5-5/</guid>
    </item>
    
    <item>
      <title>Defining and Managing environments in Angular</title>
      <link>https://pradeepl.com/blog/managing-environments-in-angular/</link>
      <description>One of the most common tasks in software development is to define specific environments and manage them to develop, test, promote and deploy code. This is essential to use different values for various resources such as API&amp;rsquo;s or databases in different environments. For e.g. you may use a low powered SQL Lite instance for local development but use a large instance in staging and production. Similarly, you may use a local instance of an API in development and a different instance in production. Generally, frameworks provide environment management patterns to enable switching resources based on the environment.
</description>
      <pubDate>Tue, 13 Feb 2018 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/managing-environments-in-angular/</guid>
    </item>
    
    <item>
      <title>Hiding js and js.map files in VS Code for your typescript projects</title>
      <link>https://pradeepl.com/blog/hiding-js-and-js-map-files-in-vs-code-for-your-typescript-projects/</link>
      <description>VS code is a nice IDE for typescript projects and is actually the fastest growing javascript and angular IDE. When working on typescript projects some of us do not like the explorer to be polluted with the transpiled js and the js.map files.
Luckily VScode allows us to hide the js files from the explorer using workspace settings. To do this open workspace settings from File &amp;ndash;&amp;gt; Preferences &amp;ndash;&amp;gt; Settings. Click on the drop down box to select Workspace Settings.
</description>
      <pubDate>Sat, 23 Dec 2017 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/hiding-js-and-js-map-files-in-vs-code-for-your-typescript-projects/</guid>
    </item>
    
    <item>
      <title>Non Static class with Static methods Vs Static class</title>
      <link>https://pradeepl.com/blog/non-static-class-with-static-methods-vs-static-class/</link>
      <description>During a design session a few folks in my team had questions on using a static class vs a class with static methods. We hit upon this when designing utility classes and extension methods.During the course of this discussion some of us were surprised about what I felt was basic knowledge and I was also caught out on a few which led me to documenting this down below.
Static Class Marking a class as static means that a compile time check will be conducted to ensure that all members of the class are static. Since the CLR does not have a notion of static, marking a class as static translates it to an abstract sealed class. ( conversly you cannot mark a static class as abstract) Static classes always inhert from Object and you cannot have it derive from another class. You cannot inherit from a static class. Static classes cannot implement an interface. You cannot obviously instantiate a static class. It cannot have constructors and the compiler also does not create a default parameterless constructor. Defining extensions in C# requires us to implement the static extension methods in a static class. There is a minor performance gain to using static methods as documented in this code analysis performance tip. The performance gain is due to the fact that instance methods always use the this instance pointer as the first parameter which is a small overhead. Instance methods also implement the callvirt instruction in IL which also leads to a very small overhead. Non Static Class A non-static class can have static members. ( both methods and fields ). You can create an instance of a Non static class with static methods. Factory pattern is an example of a Non Static class implementing a static method to control object instatiation. Microsoft docs has an article on this topic here .
</description>
      <pubDate>Wed, 25 Oct 2017 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/non-static-class-with-static-methods-vs-static-class/</guid>
    </item>
    
    <item>
      <title>Threat Modeling</title>
      <link>https://pradeepl.com/blog/threat-modeling/</link>
      <description>In a world increasingly reliant on digital infrastructure, security is no longer a static state but a continuous process. Reactive security is a gamble no organization can afford. Proactive defense is paramount, and threat modeling stands as a crucial first line of defense. Threat modeling provides a structured approach to proactively identify and mitigate security risks. It&amp;rsquo;s about stepping into the mindset of an attacker, systematically examining your systems—whether a complex application, a sprawling network, or a cloud deployment—to pinpoint potential weaknesses. Threat modeling uncovers potential vulnerabilities, maps likely attack paths, and empowers teams to fortify their defenses preemptively. This process involves visualizing attack vectors, assessing potential impact, and prioritizing mitigation efforts. More than a mere checklist, it&amp;rsquo;s a dynamic process that blends analytical rigor with creative foresight, enabling you to anticipate and mitigate threats before they materialize.
</description>
      <pubDate>Mon, 21 Aug 2017 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/threat-modeling/</guid>
    </item>
    
    <item>
      <title>Blockchain Meetup -  1</title>
      <link>https://pradeepl.com/blog/blockchain-meetup-1/</link>
      <description> https://www.facebook.com/pradeepl/videos/685380101645645/ </description>
      <pubDate>Sat, 05 Aug 2017 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/blockchain-meetup-1/</guid>
    </item>
    
    <item>
      <title>Blockchain Meetup - 2</title>
      <link>https://pradeepl.com/blog/blockchain-meetup-2/</link>
      <description> </description>
      <pubDate>Sat, 05 Aug 2017 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/blockchain-meetup-2/</guid>
    </item>
    
    <item>
      <title>What is OWIN? How does it relate to Katana and Kestrel</title>
      <link>https://pradeepl.com/blog/owin-katana-kestrel/</link>
      <description>The Open Web Interface for .NET (OWIN) is a standard that defines an interface between .NET servers and web applications. Katana is an implementation of OWIN by the .Net foundation. Kestrel is a lightweight cross-platform web server that supports .NET Core and runs on multiple platforms such as Linux, macOS, and Windows.</description>
      <pubDate>Wed, 02 Aug 2017 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/owin-katana-kestrel/</guid>
    </item>
    
    <item>
      <title>What is Blockchain</title>
      <link>https://pradeepl.com/blog/what-is-blockchain/</link>
      <description>A blockchain is a fully-distributed, peer-to-peer software network which makes use of cryptography to securely host applications, store data, and easily transfer digital instruments of value. Originally proposed by Satoshi Nakamoto in 2008 as the back-end for the Bitcoin cryptocurrency.( Nakamoto, 2008 ), Blockchain is now distinct from Bitcoin as a platform and stands on its own right seperated from the cryptocurrency implemenations from where it was born. Satoshi Nakamoto married his distributed consesus protocol to Adam Backs Hashcash algorithm which pioneered the use of mining to send transaction creating a simple database that is decentralized and stored in the nodes of its network.
</description>
      <pubDate>Fri, 21 Jul 2017 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/what-is-blockchain/</guid>
    </item>
    
    <item>
      <title>OAuth 2.0 - Tokens, Client types, Endpoints and Scope</title>
      <link>https://pradeepl.com/blog/oauth2-tokens/</link>
      <description>There are two types of tokens in OAuth 2.0, the access token, and the refresh token.
Access token The access token represents the authorization of a specific application to access specific parts of a user’s data. Access tokens must be kept confidential in transit and in storage. The only parties that should ever see the access token are the application itself, the authorization server, and resource server.
The access token can only be used over an https connection, since passing it over a non-encrypted channel would make it trivial for third parties to intercept.
</description>
      <pubDate>Thu, 13 Jul 2017 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/oauth2-tokens/</guid>
    </item>
    
    <item>
      <title>Consensus algorithms</title>
      <link>https://pradeepl.com/blog/consensus/</link>
      <description>Consensus is one of the most important and fundamental problems in distributed computing. Simply put, the goal of consensus is to get several nodes to agree on something. It is a distributed computing concept that is used to provide a means of agreeing to a single version of truth by all peers on the distributed network.</description>
      <pubDate>Wed, 12 Jul 2017 14:06:19 +1000</pubDate>
      <guid>https://pradeepl.com/blog/consensus/</guid>
    </item>
    
    <item>
      <title>Merkle Trees</title>
      <link>https://pradeepl.com/blog/merkle-trees/</link>
      <description>A Merkle tree, named for its inventor, Ralph Merkle, is also known as a “hash tree&amp;quot;. It’s a data structure represented as a binary tree, and it’s useful because it summarizes in short form the data in a larger data set. In a hash tree, the leaves are the data blocks (typically files on a filesystem) to be summarized. Every parent node in the tree is a hash of its direct child node, which tightly compacts the summary.
</description>
      <pubDate>Wed, 12 Jul 2017 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/merkle-trees/</guid>
    </item>
    
    <item>
      <title>Cross origin resource sharing CORS</title>
      <link>https://pradeepl.com/blog/rest/cross-origin-resource-sharing/</link>
      <description>Cross-Origin Resource Sharing or CORS is a mechanism that enables a web browser to perform cross-domain requests. Cross-domain requests are HTTP requests for resources hosted on a different domain than the domain of the resource making the request.</description>
      <pubDate>Mon, 10 Jul 2017 12:25:09 +1000</pubDate>
      <guid>https://pradeepl.com/blog/rest/cross-origin-resource-sharing/</guid>
    </item>
    
    <item>
      <title>Hexagonal Architectures</title>
      <link>https://pradeepl.com/blog/hexagonal-architectures/</link>
      <description>Hexagonal architecture aims to decouple business logic from other parts of the component, especially the persistence, eventing and services layers. A component, built on the ports and adapters pattern, exposes a set of ports to which one or more adapters can be added as necessary.</description>
      <pubDate>Mon, 10 Jul 2017 12:25:09 +1000</pubDate>
      <guid>https://pradeepl.com/blog/hexagonal-architectures/</guid>
    </item>
    
    <item>
      <title>Public Key Cryptography</title>
      <link>https://pradeepl.com/blog/public-key-cryptography/</link>
      <description>The concept of public-key cryptography was invented by Whitfield Diffie and Martin Hellman, and independently by Ralph Merkle.Their contribution to cryptography was the notion that keys could come in pairs—an encryption key and a decryption key—and that it could be infeasible to generate one key from the other. Diffie and Hellman first presented this concept at the 1976 National Computer Conference ; a few months later, their seminal paper “ New Directions in Cryptography ” was published.
</description>
      <pubDate>Thu, 06 Jul 2017 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/public-key-cryptography/</guid>
    </item>
    
    <item>
      <title>What is a Hash? Hashing algorithms and the secrets they keep.</title>
      <link>https://pradeepl.com/blog/hashing/</link>
      <description>A hash is a one-way function that maps data of any arbitrary length to an output digest of fixed length, where it is computationally infeasible to find the input from the output. The values returned by a hash function are often known as Message digest, hash values, hash codes, hash sums, checksums, or simply hashes. Hash functions are keyless and provide the data integrity service. They are usually built using iterated and dedicated hash function construction techniques. A hash function compresses data to a fixed size, which could be considered a shortened reference to the original data. The hash function should be easy to compute but hard to invert. For compression, hash functions usually utilize a one-way function of number theory; hence, they are irreversible. Consequently, it is infeasible to reconstruct specific data when a hash value is known. A hash is a one-way function because it cannot be reversed. We can think of a hash as a digital fingerprint of data that is input into it. These types of hash functions are used in many ways. They can be used for authentication, indexing data into hashed tables, checksums, and digital signatures. An example of an SHA256 hash looks like this: 4UsOw2gKuwzwFpY2UH8cDnfMOqHM7Gv5XZBFxDnV4Ww.
</description>
      <pubDate>Sat, 01 Jul 2017 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/hashing/</guid>
    </item>
    
    <item>
      <title>ASP.NET Core framework lifecycle.</title>
      <link>https://pradeepl.com/blog/asp-net-core-framework-lifecycle/</link>
      <description>A lifecycle encompasses how a web application handles incoming requests, processes them, and generates responses. It is fundamental for developing efficient, scalable, and maintainable web applications</description>
      <pubDate>Wed, 31 May 2017 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/asp-net-core-framework-lifecycle/</guid>
    </item>
    
    <item>
      <title>AWS CloudFormation</title>
      <link>https://pradeepl.com/blog/aws-cloudformation/</link>
      <description>AWS CloudFormation is an IaC tool for creating AWS resources in a declarative way.</description>
      <pubDate>Tue, 30 May 2017 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/aws-cloudformation/</guid>
    </item>
    
    <item>
      <title>Startup VLog - Week 1</title>
      <link>https://pradeepl.com/blog/startup-vlog-week-1/</link>
      <description>As promised last week, I am publishing the first week 1 roundup of my vlog. As I started off my initial focus was on product planning, market analysis, architecture, road map discussions etc. All of this was blown away very soon by the nuts and bolts of running a small organization with zero support. I ran headlong into red tape in registering the company which took a few days to get sorted out. I had to understand terms like Memorandum of Association (MOA), Article of Association (AOA) and many others. Post this was bank work and some more legal documentation.
</description>
      <pubDate>Sun, 28 May 2017 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/startup-vlog-week-1/</guid>
    </item>
    
    <item>
      <title>Video logging my startup journey.</title>
      <link>https://pradeepl.com/blog/watch-startup-vlog-intro-on-youtube/</link>
      <description>Some of the folks who know me closely know that I recently quit my job at Dell and have started to work on building out my startup. Like any new-born it requires a lot of TLC and takes a lot of my time and energy but it is very exhilarating to start on a fresh new canvas.
It has been a huge decision to leave a well-paying , stable and long-term association with Dell and invest Money, time and energy into starting out from scratch. As people have come to grips with my decision , I have been fortunate to receive lots of support and encouragement from my colleagues and friends. As I pick my way across this intriguing path, I am planning to video log every week so that I can share it with folks across and also create a self-reference for me to check back on.
</description>
      <pubDate>Mon, 22 May 2017 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/watch-startup-vlog-intro-on-youtube/</guid>
    </item>
    
    <item>
      <title>OAuth2</title>
      <link>https://pradeepl.com/blog/oauth2/</link>
      <description>OAuth2 is an open authorization standard designed to provide an authentication and authorization protocol for the web.OAuth 2 was created with the intention of providing a way to grant limited access to protected content hosted by third-party services in a standardized and open manner.</description>
      <pubDate>Sat, 11 Mar 2017 11:00:08 +1000</pubDate>
      <guid>https://pradeepl.com/blog/oauth2/</guid>
    </item>
    
    <item>
      <title>REST - Identifying Resources and URI design.</title>
      <link>https://pradeepl.com/blog/rest/identifying-resources-and-designing-representations/</link>
      <description>The key parts of a Resource oriented architecture (REST architecture) are resources, identifiers, representations, and the links between them. There is no exact science to identifying resources and there is no right or wrong with resources identified.In this post we will look at best practices to do so.</description>
      <pubDate>Wed, 14 Dec 2016 11:00:08 +1000</pubDate>
      <guid>https://pradeepl.com/blog/rest/identifying-resources-and-designing-representations/</guid>
    </item>
    
    <item>
      <title>Handling common input validation - Guard.cs</title>
      <link>https://pradeepl.com/blog/handling-common-input-validation-guard-cs/</link>
      <description>A fairly simple but common task across all application code that I have written is simple validation of parameters and inputs. Everybody has thier own way of handling this and here is mine. Can I do it better? You Bet.
View this gist on GitHub
</description>
      <pubDate>Tue, 25 Oct 2016 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/handling-common-input-validation-guard-cs/</guid>
    </item>
    
    <item>
      <title>Richardson&#39;s Maturity Model</title>
      <link>https://pradeepl.com/blog/rest/richardsons-maturity-model/</link>
      <description>Richardson&amp;rsquo;s Maturity Model breaks down the journey towards building a truly RESTful API into levels, each adding more constraints and adhering more closely to REST principles.</description>
      <pubDate>Fri, 21 Oct 2016 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/rest/richardsons-maturity-model/</guid>
    </item>
    
    <item>
      <title>Rest - Idempotency and Safety</title>
      <link>https://pradeepl.com/blog/rest/rest-idempotency-safety/</link>
      <description>Implementing the REST architectural principles results in the both Idempotency and safety being incorporated into the system. This is not however not completely automatic and needs to be thought through in detail.</description>
      <pubDate>Wed, 19 Oct 2016 11:00:08 +1000</pubDate>
      <guid>https://pradeepl.com/blog/rest/rest-idempotency-safety/</guid>
    </item>
    
    <item>
      <title>REST architectural constraints</title>
      <link>https://pradeepl.com/blog/rest/rest-architectural-constraints/</link>
      <description>REST defines six architectural constraints which make any web service – a truly RESTful API. These are also called as Fielding&amp;rsquo;s constraints. They generalize the Web’s architectural principles and represent them as a framework of constraints or an architectural style.</description>
      <pubDate>Wed, 19 Oct 2016 11:00:08 +1000</pubDate>
      <guid>https://pradeepl.com/blog/rest/rest-architectural-constraints/</guid>
    </item>
    
    <item>
      <title>Rest API- Communicating with Verbs and status codes</title>
      <link>https://pradeepl.com/blog/rest/rest-communicating-with-verbs-and-status-codes/</link>
      <description>REST API&amp;rsquo;s have a very rich vocabulary to communicate a variety of statuses and results. The verbs put, post, update, get and others are used to indicate the action that must be performed. The status indicate the result of the actions performed by the verbs.</description>
      <pubDate>Tue, 20 Sep 2016 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/rest/rest-communicating-with-verbs-and-status-codes/</guid>
    </item>
    
    <item>
      <title>Demystifying REST: How API-First Design is Redefining Web Interactions</title>
      <link>https://pradeepl.com/blog/rest/rest-api-what-is-rest/</link>
      <description>Rest is a client server communication model which is stateless, resource based, and Idempotent.</description>
      <pubDate>Sun, 18 Sep 2016 15:55:13 +1000</pubDate>
      <guid>https://pradeepl.com/blog/rest/rest-api-what-is-rest/</guid>
    </item>
    
    <item>
      <title>GIT Basics</title>
      <link>https://pradeepl.com/blog/git-basics/</link>
      <description>Introduction Git, affectionately termed “the information manager from hell” by its creator Linus Torvalds is a distributed version control system. It allows for fast scaling, has robust branching features and is an open source software. It is also a relatively new version control system released in April 2005. It was created to version control the Linux source code and as such was a much proven system at birth. GIT is optimized for distributed development, large file counts, complex merge scenarios and is blazingly fast.
</description>
      <pubDate>Sat, 10 Sep 2016 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/git-basics/</guid>
    </item>
    
    <item>
      <title>Docker Part 3 &amp;ndash; Taking Docker for a spin on Windows.</title>
      <link>https://pradeepl.com/blog/docker-part-3-installing-docker-on-windows/</link>
      <description>This post is part of a three-post series on Docker
What is Docker Docker Architecture Docker on Windows To install Docker, head over to Download Docker for Windows if you are running windows 10 Pro or enterprise 64 bit and download the installer from this link. If you are on a previous version of Windows, you would need to download Docker Toolbox . Also, you would need to enable Hyper-V virtualization to enable Docker to work. The setup installs the Daemon and the CLI tools. The Docker engine is installed as a service, and you also have a helper on the task bar which is used to further configure Docker. You can also download Kitematic from download.Docker.com to graphically manage Docker containers.
</description>
      <pubDate>Wed, 24 Aug 2016 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/docker-part-3-installing-docker-on-windows/</guid>
    </item>
    
    <item>
      <title>Docker Architecture</title>
      <link>https://pradeepl.com/blog/docker-architecture/</link>
      <description>This post is part of a three-post series on Docker
What is Docker Docker Architecture Docker on Windows The concept of containers has been on the making for some time. Docker is currently available in two primary flavors namely, Docker for Linux and Docker for Windows based on the platform on which it is running. Docker for Mac is a version of Docker for Linux. It is also available on all cloud platforms such as Azure, AWS, Google Cloud, and others. The Docker architecture is different based on the platform on which it is running.
</description>
      <pubDate>Tue, 23 Aug 2016 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/docker-architecture/</guid>
    </item>
    
    <item>
      <title>What is Docker?</title>
      <link>https://pradeepl.com/blog/what-is-docker/</link>
      <description>What is Docker?
This post is part of a three post series on Docker
What is Docker Docker Architecture Docker on Windows Docker is a container technology for packaging an application along with all its dependencies. Docker did not invent containers, it made container technology simpler and easier to use. Solomon Hykes started the development of Docker in March 2010 as a PaaS offering from dotCloud, a company which he cofounded along with Sebastien Pahl. This was open sourced in March 2013. In the last quarter of that same year, the name of the company was changed to Docker Inc.
</description>
      <pubDate>Tue, 23 Aug 2016 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/what-is-docker/</guid>
    </item>
    
    <item>
      <title>Multiversion Concurrency Control</title>
      <link>https://pradeepl.com/blog/multiversion-concurrency-control/</link>
      <description>Every developer I know of has used or uses databases on a daily basis, be it SQL Server or Oracle but quite a few of them are stumped when asked how this SQL will execute and what would its output be.
insert into Employee select * from Employee; Select * from Employee;
Additionally what happens if multiple people execute this statement concurrently. Will the select lock the insert ? Will the insert lock the select ? How does the system maintain data integrity in this case ? The answers have ranged from, this is not a valid SQL statement to this will be an indefinite loop.
</description>
      <pubDate>Sun, 20 Jul 2014 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/multiversion-concurrency-control/</guid>
    </item>
    
    <item>
      <title>Internet of things&amp;ndash;IOT</title>
      <link>https://pradeepl.com/blog/internet-of-things-iot/</link>
      <description>Microsoft recently announced that Visual Studio will start supporting device development and started by initially supporting Intel’s Galileo board.This is not entirely new to Visual Studio. One of the earliest add on’s to support board based development was visual micro which supported the Arduino board.
Arduino is an open-source physical computing platform based on a simple i/o board and a IDE integrated development environment that implements the Processing/Wiring language. Arduino can be used to develop stand-alone interactive objects and installation or can be connected to software on your computer. The first Arduino board was produced on January 2005. The project is the result of the collaboration of many people primarily David Cuartielles and Massimo Banzi who taught physical computing. The others would be David Mellis, who built software engine , Tom Igoe and Gianluca Martino.
</description>
      <pubDate>Tue, 15 Jul 2014 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/internet-of-things-iot/</guid>
    </item>
    
    <item>
      <title>Support Vector Machines (SVM)</title>
      <link>https://pradeepl.com/blog/suportvectormachines/</link>
      <description>Support Vector Machines (SVMs) Support Vector Machines (SVMs) are a robust and versatile set of algorithms utilized in machine learning and data science for classification and regression tasks. Originally developed for binary classification by Cortes &amp;amp; Vapnik in 1995, SVMs are distinguished by their capability to find an optimal hyperplane that categorizes observations into distinct classes. This guide delves into the theoretical underpinnings, operational mechanics, and practical applications of SVMs.
</description>
      <pubDate>Tue, 11 Mar 2014 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/suportvectormachines/</guid>
    </item>
    
    <item>
      <title>External Environment, Opportunities, Threats, Industry competition and Competitor analysis.</title>
      <link>https://pradeepl.com/blog/external-environment-opportunities-threats-industry-competition-and-competitor-analysis/</link>
      <description>Understanding the competitive forces shaping your industry is not just beneficial; it&amp;rsquo;s essential for survival and growth. Porters five forces provides the key</description>
      <pubDate>Fri, 06 Dec 2013 10:17:38 +1000</pubDate>
      <guid>https://pradeepl.com/blog/external-environment-opportunities-threats-industry-competition-and-competitor-analysis/</guid>
    </item>
    
    <item>
      <title>Graphing my Facebook network &amp;ndash; Social Network Analysis</title>
      <link>https://pradeepl.com/blog/graphing-my-facebook-network-social-network-analysis/</link>
      <description> Netvizz is a cool tool which can export your Facebook data in a format which makes it easier to visualize or do a network analysis offline. There are other apps available on the Facebook platform which perform this using predefined bounds within the app itself but what I like about Netvizz is that it allows you to extract this information and play with it using any tool you are comfortable with like R, Gephi etc. This sort of visualization is a core of Social network analysis systems.
I spent some time to play around with my Facebook network information over the weekend. I extracted out my network using Netvizz. It gives a GDF file with all the necessary information and can be imported into Gephi directly. The idea was to see how much the Facebook visualization of my friend network compares with my real life network. I do understand that the online world and the offline world social networks differ but on a massive system like Facebook my guess was that it should mirror my real life network much more realistically. I built the network and used the community detection algorithm and did a ForceAtlas2 layout. This is the network visualization I ended up with after tweaking a few things. The network diagram is both surprising and a bit scary.
</description>
      <pubDate>Tue, 08 Oct 2013 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/graphing-my-facebook-network-social-network-analysis/</guid>
    </item>
    
    <item>
      <title>Porters Five forces in Advertising and Marketing industry</title>
      <link>https://pradeepl.com/blog/porters-five-forces-in-advertising-and-marketing-industry/</link>
      <description> </description>
      <pubDate>Sun, 11 Aug 2013 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/porters-five-forces-in-advertising-and-marketing-industry/</guid>
    </item>
    
    <item>
      <title>Walmart Globalization Strategy</title>
      <link>https://pradeepl.com/blog/walmart-globalization-strategy/</link>
      <description> http://www.slideshare.net/pradeep_loganathan/globalization-strategy-walmart </description>
      <pubDate>Sat, 09 Mar 2013 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/walmart-globalization-strategy/</guid>
    </item>
    
    <item>
      <title>Strategy Execution</title>
      <link>https://pradeepl.com/blog/strategy-execution/</link>
      <description>Strategy helps an organization position itself uniquely in order to create value and exploit the unfolding opportunities , hedge against threats, leverage strengths and remove weaknesses.
Strategy execution has two components namely the action planning to operationalize the core strategy and its physical implementation. Strategy execution is one integrated in which action planning and physical implementation are integrated in real time basis. High quality execution presupposes high quality action planning , assigning the right people for the right jobs, adequate follow through and robust MIS and review processes. Strategy execution involves the optimal balancing of seven key variables namely Strategy, Structure, Systems , Staff, Skills, Style and Shared values. Strategy execution is the key role of the business leader. This execution is a discipline and must be learned specifically. The primary areas are
</description>
      <pubDate>Mon, 11 Feb 2013 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/strategy-execution/</guid>
    </item>
    
    <item>
      <title>Concept of Strategy and Strategy Process</title>
      <link>https://pradeepl.com/blog/concept-of-strategy-and-strategy-process/</link>
      <description>In the new business environment customers are not just demanding but they also have infinite options. Competition is not just intensifying but there are new sources of competition. Resources too are not just limited but they are fluid and move fast. Investors are impatient and look at above average returns consistently and constantly. Huge opportunities coexist with massive risks. An organization must think and act differently and smartly to face the new environmental context. Strategy derived through the strategy process is what makes the organization stand apart from ”also rans” and perform differently.
</description>
      <pubDate>Wed, 30 Jan 2013 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/concept-of-strategy-and-strategy-process/</guid>
    </item>
    
    <item>
      <title></title>
      <link>https://pradeepl.com/blog/agentic-ai/plan/</link>
      <description>Agentic AI with Akka (Java): A 16‑Part Blog Series &amp;amp; Book Plan Goal: Author a cohesive blog series that can be compiled into a book. The series teaches readers to design, implement, and operate production‑grade agentic systems using Akka (Java), with optional Python stubs where helpful. Each post includes runnable code, diagrams, and a clear learning objective.
Table of Contents Part 1 — Foundations of AI Agents </description>
      <pubDate>Mon, 01 Jan 0001 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/agentic-ai/plan/</guid>
    </item>
    
    <item>
      <title></title>
      <link>https://pradeepl.com/blog/greenplum/introduction-to-in-database-machine-learning-greenplum-madlib-pgvector/introduction/</link>
      <description>Introduction
The Business Challenge: Traditional loan approval processes are slow, error-prone, and rely on outdated data. Manual reviews and data silos create bottlenecks and hinder decision-making. Businesses need a way to quickly analyze vast amounts of loan data and make accurate predictions in real-time. The In-Database ML Solution: In-database machine learning (ML) with Greenplum leverages the power of your existing data warehouse to build and deploy ML models. This eliminates the need to move data out of the database, resulting in faster model training and scoring. Greenplum&amp;rsquo;s MPP architecture enables parallel processing, accelerating ML tasks and providing real-time insights. Why Greenplum for In-Database Machine Learning?
</description>
      <pubDate>Mon, 01 Jan 0001 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/greenplum/introduction-to-in-database-machine-learning-greenplum-madlib-pgvector/introduction/</guid>
    </item>
    
    <item>
      <title></title>
      <link>https://pradeepl.com/blog/greenplum/introduction-to-in-database-machine-learning-greenplum-madlib-pgvector/untitled-1/</link>
      <description>Blog Post Series: Building a Logistic Regression Model with Greenplum, MADlib, and pgvector Part 1: Introduction to In-Database Machine Learning with Greenplum, MADlib, and pgvector Title: &amp;ldquo;Introduction to In-Database Machine Learning with Greenplum, MADlib, and pgvector&amp;rdquo;
Summary: Explore the benefits of in-database machine learning with Greenplum. Learn about Greenplum, MADlib, and pgvector, and understand why in-database machine learning is a game-changer.
Sections:
Introduction
Overview of in-database machine learning Benefits of in-database machine learning Key Technologies
</description>
      <pubDate>Mon, 01 Jan 0001 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/greenplum/introduction-to-in-database-machine-learning-greenplum-madlib-pgvector/untitled-1/</guid>
    </item>
    
    <item>
      <title></title>
      <link>https://pradeepl.com/blog/understanding-agentic-ai/</link>
      <description></description>
      <pubDate>Mon, 01 Jan 0001 00:00:00 UTC</pubDate>
      <guid>https://pradeepl.com/blog/understanding-agentic-ai/</guid>
    </item>
    
  </channel>
</rss>