<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Software Craftsperson</title>
    <link>https://www.softwarecraftsperson.com/</link>
    <description>Recent content on Software Craftsperson</description>
    <image>
      <title>Software Craftsperson</title>
      <url>https://www.softwarecraftsperson.com/logos/web/png/Color%20logo%20-%20no%20background.png</url>
      <link>https://www.softwarecraftsperson.com/logos/web/png/Color%20logo%20-%20no%20background.png</link>
    </image>
    <generator>Hugo -- 0.147.1</generator>
    <language>en</language>
    <lastBuildDate>Wed, 01 Apr 2026 09:00:00 +0100</lastBuildDate>
    <atom:link href="https://www.softwarecraftsperson.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Design a Content Delivery Network (CDN)</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/content-delivery-network/design-cdn/</link>
      <pubDate>Sat, 21 Dec 2024 12:16:28 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/content-delivery-network/design-cdn/</guid>
      <description>Design a highly available CDN from scratch. Learn about edge servers, caching strategies, content propagation, and global content distribution.</description>
    </item>
    <item>
      <title>Design a Distributed Key-Value Store</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/key-value-store/design-kv-store/</link>
      <pubDate>Sat, 21 Dec 2024 12:16:28 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/key-value-store/design-kv-store/</guid>
      <description>Design a highly available key-value store like DynamoDB or Redis. Learn about consistent hashing, replication, partitioning, and handling failures.</description>
    </item>
    <item>
      <title>Introduction</title>
      <link>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-07-15-k8s-for-non-ops-folks/</link>
      <pubDate>Mon, 15 Jul 2024 20:30:26 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-07-15-k8s-for-non-ops-folks/</guid>
      <description>A look at the concepts you must know if you are using kubernetes to run applications or a software development team that uses kubernetes</description>
    </item>
    <item>
      <title>Databases Introduction - System Design Fundamentals</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/databases/2022-12-10-sys-des-db-1/</link>
      <pubDate>Sat, 10 Dec 2022 20:51:37 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/databases/2022-12-10-sys-des-db-1/</guid>
      <description>What is a database and why do we need it? Learn about database fundamentals, types of databases, SQL vs NoSQL, and when to use each for system design.</description>
    </item>
    <item>
      <title>Load Balancers Explained - Part 1</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/load-balancers/2022-11-25-sys-des-lb/</link>
      <pubDate>Fri, 25 Nov 2022 17:55:38 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/load-balancers/2022-11-25-sys-des-lb/</guid>
      <description>What is a load balancer? Learn about global and local load balancing, load balancing algorithms, health checks, and how to scale distributed systems effectively.</description>
    </item>
    <item>
      <title>System Maintainability - Building Evolvable Systems</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/non-functional-requirements/2022-10-30-sys-des-det-10/</link>
      <pubDate>Sun, 30 Oct 2022 11:30:09 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/non-functional-requirements/2022-10-30-sys-des-det-10/</guid>
      <description>What is maintainability in system design? Learn about code quality, documentation, modularity, and building systems that are easy to modify and debug.</description>
    </item>
    <item>
      <title>Abstractions in System Design - Building Modular Systems</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/foundational-concepts/2022-10-27-sys-des-det-4/</link>
      <pubDate>Thu, 27 Oct 2022 20:16:27 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/foundational-concepts/2022-10-27-sys-des-det-4/</guid>
      <description>What are abstractions and why are they crucial in system design? Learn how abstraction layers simplify complexity and enable scalable architectures.</description>
    </item>
    <item>
      <title>What is a System Design Interview</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/introduction/2022-10-16-sys-des-oview/</link>
      <pubDate>Sun, 16 Oct 2022 12:16:28 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/introduction/2022-10-16-sys-des-oview/</guid>
      <description>Why do organisations conduct system design interviews? What is expected from the candidate? Learn how to prepare and ace your system design interview.</description>
    </item>
    <item>
      <title>Architecture</title>
      <link>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-07-16-k8s-for-non-ops-folks-0-architecture/</link>
      <pubDate>Tue, 16 Jul 2024 05:53:40 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-07-16-k8s-for-non-ops-folks-0-architecture/</guid>
      <description>A look at the concepts you must know if you are using kubernetes to run applications or a software development team that uses kubernetes</description>
    </item>
    <item>
      <title>Databases - NoSQL Fundamentals</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/databases/2022-12-11-sys-des-db-2/</link>
      <pubDate>Sun, 11 Dec 2022 16:06:32 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/databases/2022-12-11-sys-des-db-2/</guid>
      <description>Understanding NoSQL databases - when to use them, types of NoSQL databases, and how they differ from relational databases for system design.</description>
    </item>
    <item>
      <title>Load Balancers Layer 4 vs Layer 7 - Deep Dive</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/load-balancers/2022-12-05-sys-des-lb-1/</link>
      <pubDate>Mon, 05 Dec 2022 21:27:29 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/load-balancers/2022-12-05-sys-des-lb-1/</guid>
      <description>Understanding Layer 4 and Layer 7 load balancers, OSI model, hardware vs software load balancers, and choosing the right load balancing approach.</description>
    </item>
    <item>
      <title>Fault Tolerance - Designing Resilient Systems</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/non-functional-requirements/2022-10-30-sys-des-det-11/</link>
      <pubDate>Sun, 30 Oct 2022 13:53:39 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/non-functional-requirements/2022-10-30-sys-des-det-11/</guid>
      <description>What is fault tolerance in system design? Learn about graceful degradation, redundancy, circuit breakers, and building systems that handle failures.</description>
    </item>
    <item>
      <title>Consistency Models in Distributed Systems</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/foundational-concepts/2022-10-27-sys-des-det-5/</link>
      <pubDate>Thu, 27 Oct 2022 20:56:46 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/foundational-concepts/2022-10-27-sys-des-det-5/</guid>
      <description>Understanding consistency models from strong consistency to eventual consistency. Learn CAP theorem, consistency trade-offs, and choosing the right model.</description>
    </item>
    <item>
      <title>System Design Interview Preparation - Structured Learning Path</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/introduction/2022-10-22-sys-des-det-1/</link>
      <pubDate>Sat, 22 Oct 2022 14:31:27 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/introduction/2022-10-22-sys-des-det-1/</guid>
      <description>How to prepare for system design interviews with a structured approach. Learn the fundamentals, practice case studies, and master interview techniques.</description>
    </item>
    <item>
      <title>What are Containers</title>
      <link>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-07-17-k8s-for-non-ops-folks-1-containers/</link>
      <pubDate>Wed, 17 Jul 2024 21:02:54 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-07-17-k8s-for-non-ops-folks-1-containers/</guid>
      <description>A look at the concepts you must know if you are using kubernetes to run applications or a software development team that uses kubernetes</description>
    </item>
    <item>
      <title>Database Resiliency - Replication and Disaster Recovery</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/databases/2022-12-23-sys-des-db-3/</link>
      <pubDate>Fri, 23 Dec 2022 19:43:01 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/databases/2022-12-23-sys-des-db-3/</guid>
      <description>Learn about database replication strategies, disaster recovery, data redundancy, and ensuring high availability for distributed systems.</description>
    </item>
    <item>
      <title>System Availability - Understanding Uptime and SLAs</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/non-functional-requirements/2022-10-30-sys-des-det-7/</link>
      <pubDate>Sun, 30 Oct 2022 08:25:15 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/non-functional-requirements/2022-10-30-sys-des-det-7/</guid>
      <description>What is availability in system design? Learn how to measure availability, understand SLAs, calculate nines (99.9%, 99.99%), and design highly available systems.</description>
    </item>
    <item>
      <title>Failure Models in Distributed Systems</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/foundational-concepts/2022-10-30-sys-des-det-6/</link>
      <pubDate>Sun, 30 Oct 2022 06:48:26 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/foundational-concepts/2022-10-30-sys-des-det-6/</guid>
      <description>Understanding failure modes in distributed systems. Learn about crash failures, Byzantine failures, network partitions, and the fallacies of distributed computing.</description>
    </item>
    <item>
      <title>What to Do During Your System Design Interview</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/introduction/2022-10-25-sys-des-det-2/</link>
      <pubDate>Tue, 25 Oct 2022 22:48:03 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/introduction/2022-10-25-sys-des-det-2/</guid>
      <description>Ace your system design interview with proven strategies. Learn how to handle stress, ask clarifying questions, communicate effectively, and structure your solution.</description>
    </item>
    <item>
      <title>Database Scalability - Sharding and Partitioning</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/databases/2024-12-13-sys-des-db-4/</link>
      <pubDate>Fri, 13 Dec 2024 19:43:01 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/databases/2024-12-13-sys-des-db-4/</guid>
      <description>Learn database sharding, partitioning strategies, consistent hashing, and how to scale databases horizontally for millions of users.</description>
    </item>
    <item>
      <title>Nodes</title>
      <link>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-07-18-k8s-for-non-ops-folks-2-nodes/</link>
      <pubDate>Thu, 18 Jul 2024 22:11:44 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-07-18-k8s-for-non-ops-folks-2-nodes/</guid>
      <description>A look at the concepts you must know if you are using kubernetes to run applications or a software development team that uses kubernetes</description>
    </item>
    <item>
      <title>Approximate Calculations for System Design Interviews</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/foundational-concepts/2022-10-31-sys-des-det-12/</link>
      <pubDate>Mon, 31 Oct 2022 21:06:57 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/foundational-concepts/2022-10-31-sys-des-det-12/</guid>
      <description>Master back-of-the-envelope calculations for system design. Learn to estimate storage, bandwidth, QPS, and make quick capacity planning decisions.</description>
    </item>
    <item>
      <title>System Reliability - Building Dependable Systems</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/non-functional-requirements/2022-10-30-sys-des-det-8/</link>
      <pubDate>Sun, 30 Oct 2022 09:54:06 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/non-functional-requirements/2022-10-30-sys-des-det-8/</guid>
      <description>What is reliability in system design? Learn how to measure MTBF, MTTR, build fault-tolerant systems, and ensure consistent performance.</description>
    </item>
    <item>
      <title>What is System Design? Understanding the Fundamentals</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/introduction/2022-10-26-sys-des-det-3/</link>
      <pubDate>Wed, 26 Oct 2022 21:12:54 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/introduction/2022-10-26-sys-des-det-3/</guid>
      <description>What is system design and why does it matter? Learn the core concepts, principles, and thinking patterns behind designing scalable distributed systems.</description>
    </item>
    <item>
      <title>Objects and manifests - an introduction</title>
      <link>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-08-05-k8s-for-non-ops-folks-3-objects/</link>
      <pubDate>Mon, 05 Aug 2024 22:37:12 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-08-05-k8s-for-non-ops-folks-3-objects/</guid>
      <description>A look at the concepts you must know if you are using kubernetes to run applications or a software development team that uses kubernetes</description>
    </item>
    <item>
      <title>Domain Name System (DNS) Explained</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/foundational-concepts/2022-11-21-sys-des-dns/</link>
      <pubDate>Mon, 21 Nov 2022 20:25:01 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/foundational-concepts/2022-11-21-sys-des-dns/</guid>
      <description>What is DNS and how does it work? Learn about the internet&amp;#39;s phonebook, DNS architecture, resource records, and how domain names translate to IP addresses.</description>
    </item>
    <item>
      <title>System Scalability - Horizontal and Vertical Scaling</title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/non-functional-requirements/2022-10-30-sys-des-det-9/</link>
      <pubDate>Sun, 30 Oct 2022 11:07:16 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/non-functional-requirements/2022-10-30-sys-des-det-9/</guid>
      <description>What is scalability in system design? Learn horizontal vs vertical scaling, load balancing, caching strategies, and designing systems for millions of users.</description>
    </item>
    <item>
      <title>The path to become an expert in k8s</title>
      <link>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-12-14-k8s-path-to-expert/</link>
      <pubDate>Fri, 13 Dec 2024 22:37:12 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/intro-k8s/2024-12-14-k8s-path-to-expert/</guid>
      <description>Now that you have seen the basics, how do you become a seasoned professional with k8s</description>
    </item>
    <item>
      <title>Practical GitHub Repository Hardening for a Hugo Site</title>
      <link>https://www.softwarecraftsperson.com/posts/github-repository-hardening-playbook/</link>
      <pubDate>Wed, 01 Apr 2026 09:00:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/github-repository-hardening-playbook/</guid>
      <description>A practical playbook for hardening a Hugo repository with reproducible builds, dependency controls, secret scanning, Semgrep, scorecards, and local guardrails.</description>
    </item>
    <item>
      <title>When Your Workplace Controls Your Personal GitHub Repos: Understanding GitHub Org Policies</title>
      <link>https://www.softwarecraftsperson.com/posts/github-org-policies-affect-personal-repos/</link>
      <pubDate>Wed, 01 Apr 2026 09:00:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/github-org-policies-affect-personal-repos/</guid>
      <description>Joining a GitHub organisation with your personal account means enterprise policies can silently restrict your private repos. Here is how GitHub permission layers work and what to expect.</description>
    </item>
    <item>
      <title>Prompting Essentials for Software Engineers: 4 Practical Strategies for Better AI Output</title>
      <link>https://www.softwarecraftsperson.com/posts/prompting-essentials-for-software-engineers/</link>
      <pubDate>Sun, 29 Mar 2026 21:43:23 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/prompting-essentials-for-software-engineers/</guid>
      <description>Learn four practical prompting strategies software engineers can use with LLMs to gather better requirements, evaluate trade-offs, and ship higher-quality code faster.</description>
    </item>
    <item>
      <title>Start Here to Learn Large Language Models: Best Andrej Karpathy Resources</title>
      <link>https://www.softwarecraftsperson.com/posts/learn-large-language-models-karpathy-resources/</link>
      <pubDate>Sat, 07 Mar 2026 21:38:10 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/learn-large-language-models-karpathy-resources/</guid>
      <description>Start your LLM learning journey with Andrej Karpathy&amp;#39;s best talks on pretraining, finetuning, scaling laws, and practical model-building resources.</description>
    </item>
    <item>
      <title>From Concept to Production: Building CalOohPay with AI-Assisted Development</title>
      <link>https://www.softwarecraftsperson.com/posts/2026-01-31-ai-assisted-development-caloohpay-journey/</link>
      <pubDate>Sat, 31 Jan 2026 10:00:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2026-01-31-ai-assisted-development-caloohpay-journey/</guid>
      <description>A personal journey of building CalOohPay - from a simple CLI tool to a full-fledged web application - using GitHub Copilot with Claude Sonnet 4.5. Discover how AI-assisted coding accelerated development, the importance of clear constraints, and the real-world impact of generative AI on software delivery.</description>
    </item>
    <item>
      <title>Shift Reliability Left: Use SLOs to Guide Architecture Early</title>
      <link>https://www.softwarecraftsperson.com/posts/2025-12-04-sli-slo-reliability-shift-left/</link>
      <pubDate>Thu, 04 Dec 2025 09:00:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2025-12-04-sli-slo-reliability-shift-left/</guid>
      <description>A practical guide to defining SLOs and SLIs early in the SDLC so reliability requirements shape architecture, testing, and release decisions.</description>
    </item>
    <item>
      <title>To Code or Not to Code as an Engineering Manager: Making the Right Choice</title>
      <link>https://www.softwarecraftsperson.com/posts/2025-10-30-engineering-manager-code-or-not/</link>
      <pubDate>Thu, 30 Oct 2025 21:44:57 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2025-10-30-engineering-manager-code-or-not/</guid>
      <description>Explore whether engineering managers should code. Discover the balance between strategic leadership and technical contributions, different EM archetypes, and when it makes sense to write code as an engineering manager.</description>
    </item>
    <item>
      <title>Transactional Outbox Pattern: A Practical Guide to Trade-offs</title>
      <link>https://www.softwarecraftsperson.com/posts/2025-10-08-transactional-outbox-pattern/</link>
      <pubDate>Mon, 08 Sep 2025 21:40:52 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2025-10-08-transactional-outbox-pattern/</guid>
      <description>How the Transactional Outbox Pattern addresses the dual write problem, with practical implementation choices and operational trade-offs.</description>
    </item>
    <item>
      <title>The Honey Badger Management Framework</title>
      <link>https://www.softwarecraftsperson.com/posts/2025-07-29-honey-badger-management-framework/</link>
      <pubDate>Tue, 29 Jul 2025 10:13:49 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2025-07-29-honey-badger-management-framework/</guid>
      <description>What is honey badger management framework? Why do we need it? Can we not use it in 2025?</description>
    </item>
    <item>
      <title>Moving to AWS Amplify from Azure</title>
      <link>https://www.softwarecraftsperson.com/posts/2025-05-26-aws-amplify-hugo/</link>
      <pubDate>Mon, 26 May 2025 08:16:14 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2025-05-26-aws-amplify-hugo/</guid>
      <description>Good bye Azure Front Door, welcome AWS Amplify</description>
    </item>
    <item>
      <title>Azure CDN, Front Door and the cost</title>
      <link>https://www.softwarecraftsperson.com/posts/2025-04-25-azure-cdn-front-door/</link>
      <pubDate>Fri, 25 Apr 2025 22:41:59 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2025-04-25-azure-cdn-front-door/</guid>
      <description>How I raked up 34 times more cost for hosting a static website</description>
    </item>
    <item>
      <title>How to install an older version of Hugo on MacOs</title>
      <link>https://www.softwarecraftsperson.com/posts/2025-04-12-how-install-older-hugo/</link>
      <pubDate>Sat, 12 Apr 2025 16:26:05 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2025-04-12-how-install-older-hugo/</guid>
      <description>How do I rollback to an older version of Hugo because the new version has breaking changes</description>
    </item>
    <item>
      <title>Evolving your Leadership Style as you scale your organisation</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-12-14-scaling-evolving-leadership-style/</link>
      <pubDate>Sat, 14 Dec 2024 22:58:57 +0530</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-12-14-scaling-evolving-leadership-style/</guid>
      <description>What worked for small teams will not work for larger teams. Change in leadership style is necessary</description>
    </item>
    <item>
      <title>How and Why should you Sign Git Commits with GPG: A Practical Guide</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-11-12-signing-gpg-commit/</link>
      <pubDate>Thu, 12 Dec 2024 09:00:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-11-12-signing-gpg-commit/</guid>
      <description>Learn how to sign Git commits with GPG, why commit signing matters for security and trust, and step-by-step setup for macOS, Linux and GitHub. Prevent identity spoofing and enable verified commits.</description>
    </item>
    <item>
      <title>Adding a responsive menu to your Hugo PaperMod blog</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-11-09-responsive-menu/</link>
      <pubDate>Sat, 09 Nov 2024 16:37:36 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-11-09-responsive-menu/</guid>
      <description>How to add a responsive menu to your Hugo-PaperMod themed blog or website</description>
    </item>
    <item>
      <title>Why your internal developer platform will fail</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-10-31-why-your-idp-will-fail/</link>
      <pubDate>Thu, 31 Oct 2024 21:35:44 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-10-31-why-your-idp-will-fail/</guid>
      <description>What you need to do to avoid failure and make the best internal developer platform</description>
    </item>
    <item>
      <title>Managing life with a new born</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-10-20-managing-a-newborn/</link>
      <pubDate>Sun, 20 Oct 2024 21:04:16 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-10-20-managing-a-newborn/</guid>
      <description>What no one tells you about starting a family. Parenting, sickness, work conference, etc</description>
    </item>
    <item>
      <title>Virtual Private Cloud (VPC): A Practical Guide to Cloud Network Isolation</title>
      <link>https://www.softwarecraftsperson.com/posts/2025-08-21-virtual-private-cloud/</link>
      <pubDate>Wed, 21 Aug 2024 21:44:57 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2025-08-21-virtual-private-cloud/</guid>
      <description>Learn what a VPC is, how it works, and why organizations use it to create secure, isolated networks in public cloud environments. Includes real-world examples and architecture patterns.</description>
    </item>
    <item>
      <title>The Hidden Dangers of Unconscious Bias: Understanding and Managing Implicit Prejudices</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-08-15-dangers-of-unconscious-bias/</link>
      <pubDate>Thu, 15 Aug 2024 07:55:18 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-08-15-dangers-of-unconscious-bias/</guid>
      <description>A look at how unconscious bias works, the harm it can cause, why it is important to manage it</description>
    </item>
    <item>
      <title>Lack of product thinking - A rant</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-04-01-lack-product-thinking/</link>
      <pubDate>Mon, 01 Apr 2024 22:28:49 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-04-01-lack-product-thinking/</guid>
      <description>Pragmatic iterative solutions are always better than embracing a shiny new thing because FAANG has proven it can be done.</description>
    </item>
    <item>
      <title>Using Hugo Modules for themes</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-04-01-hugo-modules/</link>
      <pubDate>Mon, 01 Apr 2024 15:29:34 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-04-01-hugo-modules/</guid>
      <description>How to manage your Hugo themes using Hugo Modules</description>
    </item>
    <item>
      <title>What is Incident Management in Software Engineering?</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-03-02-incident-response-and-management/</link>
      <pubDate>Sat, 02 Mar 2024 07:09:15 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-03-02-incident-response-and-management/</guid>
      <description>Incidents, managing them and the various roles involved in managing them. How do you go about setting up an incident management process for your org?</description>
    </item>
    <item>
      <title>What is my Management Philosophy</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-02-20-management-philosophy/</link>
      <pubDate>Tue, 20 Feb 2024 21:44:40 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-02-20-management-philosophy/</guid>
      <description>What is a management philosophy? What is mine? How to manage successful teams?</description>
    </item>
    <item>
      <title>The journey of an email - from sender to receiver and everything in between</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-02-18-how-email-works/</link>
      <pubDate>Sun, 18 Feb 2024 18:21:06 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-02-18-how-email-works/</guid>
      <description>What happens when you send an email? How does it go from sender to receiver? How does one know if the email was not spam?</description>
    </item>
    <item>
      <title>Updating PaperMod to the latest and greatest</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-02-06-papermod-update/</link>
      <pubDate>Tue, 06 Feb 2024 22:42:57 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-02-06-papermod-update/</guid>
      <description>&lt;p&gt;This post is more of a note to self.&lt;/p&gt;
&lt;h2 id=&#34;papermod-update&#34;&gt;PaperMod Update&lt;/h2&gt;
&lt;p&gt;So last week, after a very long time, I actually spent some time doing some housekeeping on this blog. I decided to check Hugo versions and what&amp;rsquo;s new on &lt;a href=&#34;https://github.com/adityatelange/hugo-PaperMod&#34;&gt;paperMod&lt;/a&gt;. Found that there were many new things. Pulled in the latest and built the site only to realize it broke!&lt;/p&gt;
&lt;h3 id=&#34;how-did-you-get-the-latest-version&#34;&gt;How did you get the latest version?&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git submodule update --recursive --remote
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So some of the features introduced in the latest version of PaperMod weren&amp;rsquo;t supported in the version of Hugo that I had running, which was &lt;code&gt;v0.109.0&lt;/code&gt;. I am not aware of what features exactly, so can&amp;rsquo;t really tell you. I didn&amp;rsquo;t have the time to explore.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I optimised my blog&#39;s search performance</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-02-05-hugo-optimise-fusejs-search/</link>
      <pubDate>Mon, 05 Feb 2024 00:25:31 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-02-05-hugo-optimise-fusejs-search/</guid>
      <description>How to give a better user experience for those searching for articles in your blog, using simple programming techniques and overriding the theme&amp;#39;s default search mechanism.</description>
    </item>
    <item>
      <title>How to add commenting functionality to your Hugo Blog using Utterances</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-02-04-blog-comments-using-utterances/</link>
      <pubDate>Sun, 04 Feb 2024 18:36:45 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-02-04-blog-comments-using-utterances/</guid>
      <description>Your blog posts are conversation starters and to support conversations, you need readers to be able to comment on the post. Utterance is a free, open source lightweight comment widget build on GitHub issues for using on blog, wiki, github pages etc.</description>
    </item>
    <item>
      <title>How to create a custom mode for Hugo-PaperMod theme using go template and html</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-02-03-hugo-papermod-modes/</link>
      <pubDate>Sat, 03 Feb 2024 22:23:40 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-02-03-hugo-papermod-modes/</guid>
      <description>Creating a custom landing page for Hugo-PaperMod that is a combination of the HomeInfo mode and the profile mode. I call it the Hybrid mode.</description>
    </item>
    <item>
      <title>Style Modifications to Hugo PaperMod</title>
      <link>https://www.softwarecraftsperson.com/posts/2024-02-02-hugo-papermod-mods/</link>
      <pubDate>Fri, 02 Feb 2024 04:00:31 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2024-02-02-hugo-papermod-mods/</guid>
      <description>&lt;p&gt;I wanted to give a shout-out to a GitHub Repository that I came across, which hosted some custom CSS for modifying the look of PaperMod by a tiny bit. I thought I&amp;rsquo;d try it and hence the shout-out.&lt;/p&gt;
&lt;p&gt;Checkout &lt;a href=&#34;https://github.com/arashsm79/hugo-PaperMod-Mod/tree/main&#34;&gt;hugo-PaperMod-Mod&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The styles include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;thumbnails&lt;/li&gt;
&lt;li&gt;sidebar table of contents&lt;/li&gt;
&lt;li&gt;wider posts on landing page&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Hugo Partial for Buy me a coffee button</title>
      <link>https://www.softwarecraftsperson.com/posts/2023-12-26-partial-for-bmc/</link>
      <pubDate>Tue, 26 Dec 2023 21:43:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2023-12-26-partial-for-bmc/</guid>
      <description>How to add a Buy me a coffee button to all your posts in a Hugo static website or your blog</description>
    </item>
    <item>
      <title>What happens during a TLS handshake?</title>
      <link>https://www.softwarecraftsperson.com/posts/2023-10-22-what-happens-during-tls-handshake/</link>
      <pubDate>Sun, 22 Oct 2023 14:02:28 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2023-10-22-what-happens-during-tls-handshake/</guid>
      <description>&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
&lt;p&gt;I have been wondering how to simplify the concept of handshakes - not the human handshakes; I&amp;rsquo;m talking about the computer ones, like the ones that happen between a server and a client when establishing a connection over HTTPS.&lt;/p&gt;
&lt;p&gt;So I went reading online to see if the content was digestible for everyone - including beginners. I couldn&amp;rsquo;t find a simple diagrammatic representation, so I thought maybe this is my chance to draw them and help others understand it at a glance. To be fair, it isn&amp;rsquo;t that straightforward to jump into discussing TLS handshakes, without learning about a few key terms. So I am certain that I will update this post with more information later on&lt;/p&gt;</description>
    </item>
    <item>
      <title>Handling conflicts in a high performing team</title>
      <link>https://www.softwarecraftsperson.com/posts/2023-02-19-handling-difficult-questions/</link>
      <pubDate>Sun, 17 Sep 2023 11:04:20 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2023-02-19-handling-difficult-questions/</guid>
      <description>Handling conflicts in high performing teams</description>
    </item>
    <item>
      <title>Why and When would you use a Serverless approach to solving your problem?</title>
      <link>https://www.softwarecraftsperson.com/posts/2023-06-11-why-when-serverless/</link>
      <pubDate>Sun, 11 Jun 2023 13:02:28 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2023-06-11-why-when-serverless/</guid>
      <description>&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
&lt;p&gt;As a relatively senior engineering manager, I have been transforming into a less technical person over time. The reason being, I am in charge of two fantastic teams that both have excellent engineers. I generally rely on the technical leads of the respective teams to own the technical aspects of their domains and try to interfere as little as possible. I do this to empower them to take more ownership and learn to be accountable. After all, it is humanly impossible to be everywhere at the same time. I build my teams based on trust, psychological safety and accountability. However, I do review their technical proposals and other documents or design diagrams etc. and I challenge them by asking questions. I have never had to tell them what is right or wrong so far, and I don&amp;rsquo;t think that I&amp;rsquo;ll ever need to do that either because our hiring process is good enough to filter out problem candidates. I give them the feedback they need at the time they need it, covering their blind-spots when necessary.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why I became an Ethnic Diversity Community Lead</title>
      <link>https://www.softwarecraftsperson.com/posts/2023-04-21-why-i-am-edc-lead/</link>
      <pubDate>Fri, 21 Apr 2023 21:52:28 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2023-04-21-why-i-am-edc-lead/</guid>
      <description>&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
&lt;p&gt;I grew up as a third culture kid, born in India and raised in the United Arab Emirates. At a very early age, I had encounters with some racist kids, often while in a school bus in the lane next to mine. This altered my perception of myself, created an inferiority complex when compared to the instigators of the racist incident, and I felt helpless and trapped.&lt;/p&gt;
&lt;p&gt;The problem in the UAE was not a lack of diversity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Switching from managing teams to managing managers</title>
      <link>https://www.softwarecraftsperson.com/posts/2023-02-15-managing-managers/</link>
      <pubDate>Wed, 15 Feb 2023 13:04:20 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2023-02-15-managing-managers/</guid>
      <description>From Managing teams to other managers</description>
    </item>
    <item>
      <title>What is Homebrew? How is it useful?</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-12-25-homebrew-macos/</link>
      <pubDate>Sun, 25 Dec 2022 20:40:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-12-25-homebrew-macos/</guid>
      <description>A look at the unofficial but extremely invaluable package manager for MacOS - Homebrew.</description>
    </item>
    <item>
      <title>Setting up your Macbook Pro as a developer</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-12-25-macbook-pro-setup/</link>
      <pubDate>Sun, 25 Dec 2022 18:04:20 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-12-25-macbook-pro-setup/</guid>
      <description>What I do to setup and customize my MacBook Pro as an engineer</description>
    </item>
    <item>
      <title>What did I learn from The Unicorn Project?</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-12-24-unicorn-project-summary/</link>
      <pubDate>Sat, 24 Dec 2022 00:16:02 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-12-24-unicorn-project-summary/</guid>
      <description>A summary of useful things I learned from the Unicorn Project, a book by Gene Kim, the author of The Phoenix Project.</description>
    </item>
    <item>
      <title>What is a System Design Interview</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-10-16-system-design-overview/</link>
      <pubDate>Sun, 16 Oct 2022 12:16:28 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-10-16-system-design-overview/</guid>
      <description>Why do organisations conduct system design interviews? What is expected from the candidate? Demystify a system design interview.</description>
    </item>
    <item>
      <title>Creating a great organisational culture</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-10-07-organisational-culture/</link>
      <pubDate>Fri, 07 Oct 2022 19:38:31 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-10-07-organisational-culture/</guid>
      <description>Exploring the importance of developing a positive culture in an organisation</description>
    </item>
    <item>
      <title>Psychological Safety: What, how and why?</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-08-13-psychological-safety/</link>
      <pubDate>Sat, 13 Aug 2022 13:22:14 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-08-13-psychological-safety/</guid>
      <description>Exploring psychological safety and importance of it in developing great organisations.</description>
    </item>
    <item>
      <title>Invisible Work and how you can tame it in your organisation</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-08-07-invisible-work/</link>
      <pubDate>Sun, 07 Aug 2022 16:25:57 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-08-07-invisible-work/</guid>
      <description>What is invisible work? How can you tame it in your organisation?</description>
    </item>
    <item>
      <title>What is Self Management and why do you need to get better at it?</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-06-27-self-management/</link>
      <pubDate>Mon, 27 Jun 2022 23:35:31 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-06-27-self-management/</guid>
      <description>How does better self-management help you lead others better?</description>
    </item>
    <item>
      <title>Azure Service Principal Credential Reset</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-04-23-az-sp-credential-reset/</link>
      <pubDate>Sat, 23 Apr 2022 17:21:09 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-04-23-az-sp-credential-reset/</guid>
      <description>How to reset Azure Service Principal Credentials?</description>
    </item>
    <item>
      <title>Coaching conversations using the GROW Model</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-04-18-coaching-using-grow-model/</link>
      <pubDate>Mon, 18 Apr 2022 16:05:59 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-04-18-coaching-using-grow-model/</guid>
      <description>What is the GROW model? How can it be used to have effective coaching conversations?</description>
    </item>
    <item>
      <title>Leadership, trust and how not to ruin it</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-03-26-trust-leadership-toxic/</link>
      <pubDate>Sat, 26 Mar 2022 11:44:58 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-03-26-trust-leadership-toxic/</guid>
      <description>Some observations as a manager on trust and leadership in a rapidly changing company with inexperienced people leaders.</description>
    </item>
    <item>
      <title>What are Git submodules?</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-02-19-git-sub-modules/</link>
      <pubDate>Sat, 19 Feb 2022 20:39:46 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-02-19-git-sub-modules/</guid>
      <description>A look at a less known feature of git - submodules</description>
    </item>
    <item>
      <title>What is Agile Scrum?</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-02-14-agile-scrum-series/</link>
      <pubDate>Mon, 14 Feb 2022 02:13:20 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-02-14-agile-scrum-series/</guid>
      <description>What is Scrum? What is Agile? Are they the same or very different things?</description>
    </item>
    <item>
      <title>Building software quality from Day 1 using Lean Quality Assurance</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-01-30-good-quality-assurance/</link>
      <pubDate>Sun, 30 Jan 2022 16:24:06 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-01-30-good-quality-assurance/</guid>
      <description>Understand what we can do to build quality into an agile development environment</description>
    </item>
    <item>
      <title>Customize your Mac or Linux prompt or terminal</title>
      <link>https://www.softwarecraftsperson.com/posts/2022-01-23-shell-customize-mac-linux/</link>
      <pubDate>Sun, 23 Jan 2022 10:10:13 -0800</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2022-01-23-shell-customize-mac-linux/</guid>
      <description>Customize your bash or zsh prompt or terminal.</description>
    </item>
    <item>
      <title>Site Reliability Engineering vs DevOps — How they differ and when to use each</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-12-04-site-reliability-engineering/</link>
      <pubDate>Sat, 04 Dec 2021 00:17:06 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-12-04-site-reliability-engineering/</guid>
      <description>A practical comparison of Site Reliability Engineering (SRE) and DevOps: responsibilities, culture, tooling, and recommendations for building reliable systems.</description>
    </item>
    <item>
      <title>Azure Active Directory for Developers: What you need to know</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-10-23-az-ad-for-devs/</link>
      <pubDate>Sat, 23 Oct 2021 15:27:17 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-10-23-az-ad-for-devs/</guid>
      <description>What do I need to know of Azure Active directory as a developer</description>
    </item>
    <item>
      <title>How to use complex settings in Azure Functions using Options pattern and Dependency injection</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-09-19-az-fn-di-opts/</link>
      <pubDate>Fri, 22 Oct 2021 22:25:15 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-09-19-az-fn-di-opts/</guid>
      <description>Dependency Injection: Options pattern and settings in Azure Functions</description>
    </item>
    <item>
      <title>Azure functions with Swagger and OpenAPI</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-09-19-az-fn-swagger-openapi/</link>
      <pubDate>Sun, 19 Sep 2021 21:13:56 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-09-19-az-fn-swagger-openapi/</guid>
      <description>How to create a swagger page for your HTTP Azure functions</description>
    </item>
    <item>
      <title>DevOps, Continuous Integration, Delivery and Deployment</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-08-09-ci-cd-deploy-strategies/</link>
      <pubDate>Sun, 29 Aug 2021 16:36:18 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-08-09-ci-cd-deploy-strategies/</guid>
      <description>What are : DevOps, Continuous Integration, Continuous Delivery and Continuous Deployment</description>
    </item>
    <item>
      <title>Azure Cognitive Search (formerly Azure Search)</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-08-27-azure-search/</link>
      <pubDate>Fri, 27 Aug 2021 11:23:02 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-08-27-azure-search/</guid>
      <description>An intro into Azure Cognitive Search</description>
    </item>
    <item>
      <title>What is Software Architecture and what does a software architect do?</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-07-24-software-architecture/</link>
      <pubDate>Sat, 24 Jul 2021 15:37:38 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-07-24-software-architecture/</guid>
      <description>What is software architecture and how is it different from Software design? What does a software architect do?</description>
    </item>
    <item>
      <title>Azure Pipelines and test code coverage for Dotnet core projects</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-06-29-az-pipeline-test-coverage/</link>
      <pubDate>Tue, 29 Jun 2021 11:44:22 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-06-29-az-pipeline-test-coverage/</guid>
      <description>Azure Pipelines and dotnet core test coverage: How to configure your pipeline to generate test code coverage for continuous integration quality checks.</description>
    </item>
    <item>
      <title>Entity Framework Core: Configure Database Connection using Azure Service Token Provider</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-06-22-az-ad-sql-conn/</link>
      <pubDate>Sat, 26 Jun 2021 11:44:22 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-06-22-az-ad-sql-conn/</guid>
      <description>Entity Framework Core: The right way to configure Database Connection using Azure Service Token Provider. A deep dive into EF Core Interceptors, ORM, AzureServiceTokens and related things.</description>
    </item>
    <item>
      <title>OPENJSON - The Utility function you did not know you needed in a Data transfer Logic App</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-06-21-open-json/</link>
      <pubDate>Mon, 21 Jun 2021 11:44:22 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-06-21-open-json/</guid>
      <description>OPENJSON - The Utility function you did not know you needed in a Data transfer Logic App</description>
    </item>
    <item>
      <title>What is Caching? The different types of caches and interfaces in .NET Core for caching</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-06-20-caching/</link>
      <pubDate>Sun, 20 Jun 2021 16:50:45 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-06-20-caching/</guid>
      <description>What is caching? The different types caches and interfaces in .NET Core for caching.</description>
    </item>
    <item>
      <title>What are Azure Logic Apps and How to deploy them using Azure Devops Pipeline - A tutorial and a list of challenges you might encounter</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-06-12-az-logic-app-pipeline/</link>
      <pubDate>Sat, 12 Jun 2021 11:44:22 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-06-12-az-logic-app-pipeline/</guid>
      <description>Walking you through steps on How to deploy Azure Logic Apps and some challenges you could face - Tutorial</description>
    </item>
    <item>
      <title>Proxy vs Reverse Proxy - What are they?</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-06-06-proxy-reverse/</link>
      <pubDate>Sun, 06 Jun 2021 15:25:41 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-06-06-proxy-reverse/</guid>
      <description>Proxy vs Reverse Proxy - A simple description of what they are and the differences are</description>
    </item>
    <item>
      <title>Git, Case Sensitivity and Github actions</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-05-15-git-case-sensitivity/</link>
      <pubDate>Sat, 15 May 2021 22:50:18 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-05-15-git-case-sensitivity/</guid>
      <description>Git, Case sensitivity and Github actions can confuse you. How do avoid wasting time?</description>
    </item>
    <item>
      <title>Cohesion and Coupling - two important concepts to understand when building good software</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-05-09-cohesion-coupling/</link>
      <pubDate>Sun, 09 May 2021 22:55:34 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-05-09-cohesion-coupling/</guid>
      <description>What is Cohesion and What is Coupling? What exactly is the difference between them?</description>
    </item>
    <item>
      <title>Using ProblemDetails in .NET Core 3.1 with C#</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-05-04-problem-details/</link>
      <pubDate>Sat, 08 May 2021 15:30:08 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-05-04-problem-details/</guid>
      <description>Conveying information about an error using ProblemDetails in .NET Core with C#</description>
    </item>
    <item>
      <title>.NET (dotnet) Framework and Core and things</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-05-07-dotnet/</link>
      <pubDate>Fri, 07 May 2021 21:48:44 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-05-07-dotnet/</guid>
      <description>What is this ASP .NET? What about Framework? What about Core?</description>
    </item>
    <item>
      <title>Client Side Search for your Hugo Blog with Fuse.js</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-05-01-client-side-search-fuse/</link>
      <pubDate>Sat, 01 May 2021 22:21:16 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-05-01-client-side-search-fuse/</guid>
      <description>How to provide simple, fast search functionality for your Hugo static website using fuse.js</description>
    </item>
    <item>
      <title>Event Storming</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-04-25-event-storming/</link>
      <pubDate>Sun, 25 Apr 2021 18:41:27 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-04-25-event-storming/</guid>
      <description>Discover your domain and uncover hidden complexities using Event storming.</description>
    </item>
    <item>
      <title>Why Domain Driven Design</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-04-08-why-domain-driven-design/</link>
      <pubDate>Thu, 08 Apr 2021 22:38:30 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-04-08-why-domain-driven-design/</guid>
      <description>Domain Driven Design might be the way to solve complex solution.</description>
    </item>
    <item>
      <title>Good Bye Wordpress. Hello Hugo on Azure Storage</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-04-04-good-bye-wordpress/</link>
      <pubDate>Sun, 04 Apr 2021 17:24:42 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-04-04-good-bye-wordpress/</guid>
      <description>Migrating from Wordpress to Static Generator Blog using Hugo, continuously deployed from GitHub to Azure storage served through Azure CDN, using Continuous Integration with GitHub Actions</description>
    </item>
    <item>
      <title></title>
      <link>https://www.softwarecraftsperson.com/about/</link>
      <pubDate>Sun, 28 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/about/</guid>
      <description>Who is Eakan Gopalakrishnan?</description>
    </item>
    <item>
      <title>Web API Versioning</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-03-12-web-api-versioning/</link>
      <pubDate>Fri, 12 Mar 2021 22:35:38 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-03-12-web-api-versioning/</guid>
      <description>&lt;p&gt;Back-end developers quite often find themselves thinking about making breaking changes to their API. A change that could break the client application consuming the API. We quite often forget how easy it is to cause havoc for our clients by breaking the contract we agreed between front-end and back-end. All sorts of unintentional consequences could arise from this.&lt;/p&gt;
&lt;p&gt;We recently had a similar conversation at my workplace about how we wanted to deal with the release of a feature we had been working on in the last sprint.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Managing a team</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-03-03-managing-a-team/</link>
      <pubDate>Wed, 03 Mar 2021 23:21:26 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-03-03-managing-a-team/</guid>
      <description>&lt;p&gt;Featured Image by &lt;!-- raw HTML omitted --&gt;Austin Distel&lt;!-- raw HTML omitted --&gt; on &lt;!-- raw HTML omitted --&gt;Unsplash&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;p&gt;The title of this post is a bit vague. I agree it doesn&amp;rsquo;t give away much. Having managed teams since 2015ish, I have finally come to realise that as managers, one must make sure that their team members have an environment to thrive. A place where they can grow, be stretched just enough to feel proud of their achievement and not too much where they feel, work is taking over their life. It is not just about getting something done or achieving a target, but it is more about how you get there in a way that your team is committed to it rather than forced to it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Azure Functions - Overview and tutorial</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-01-24-azure-functions-overview-and-tutorial/</link>
      <pubDate>Sun, 24 Jan 2021 22:44:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-01-24-azure-functions-overview-and-tutorial/</guid>
      <description>&lt;p&gt;I have been building and deploying Azure functions at work and it is really exciting.
&lt;figure&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://media1.giphy.com/media/l2SpXyO9TOJCrCbo4/giphy.gif?cid=ecf05e47r2hmihg2p9k5crudx3hm1ifw9q73uxhbd03fs5me&amp;amp;rid=giphy.gif&#34;
         alt=&#34;excited will smith GIF by 1LIVE&#34;/&gt; 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;However, due to the time constraints, we often have to learn just enough to build the solution. And this makes me sad 😢 because I like learning things in depth and understanding every detail.&lt;/p&gt;
&lt;p&gt;So my solution was to create a tutorial with information to help anyone understand Azure Functions.
&lt;figure&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://media1.giphy.com/media/a7NBvg3Ss8UYo/giphy.gif&#34;
         alt=&#34;Fun Learn GIF by SoulPancake&#34;/&gt; 
&lt;/figure&gt;
&lt;/p&gt;</description>
    </item>
    <item>
      <title>React aka Reactjs</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-01-23-react-aka-reactjs/</link>
      <pubDate>Sat, 23 Jan 2021 20:31:51 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-01-23-react-aka-reactjs/</guid>
      <description>&lt;p&gt;So last week I did a little example app following instructions by &lt;a href=&#34;https://www.youtube.com/redirect?event=video_description&amp;amp;redir_token=QUFFLUhqbTR6YWRXNW9Rd09iOTlnY3R4WXJsX0djdExIZ3xBQ3Jtc0tsUkVPbjA2Z09sRlAzaVZ5ZkhHcWRybjd3LTYyMThtU2J2bWtGQUk0dk1vZUlUM09uUEo5T0IyZC12dnF2TjNfZHJGaXVORm85R25PZ090RDFtSzFOMm9EbzdwSVBnbG5sNVF2blFSN0YyTEZJX1pyWQ&amp;amp;q=http%3A%2F%2Fwww.traversymedia.com&#34;&gt;Brad Traversy&lt;/a&gt;. To give credit where credit is due, I have linked his video right here in my post. I&amp;rsquo;m going to share the gist of what I learned here as part of this post. Because sometimes, you might just want to get an overview, you may not want to get hands on and start coding. This is a very high level overview of some of the concepts. And the source code can be found in &lt;a href=&#34;https://github.com/lonelydev/react-todolist&#34;&gt;my github repository&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quirky Arrays in C#</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-01-14-quirky-arrays-in-c/</link>
      <pubDate>Thu, 14 Jan 2021 21:30:16 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-01-14-quirky-arrays-in-c/</guid>
      <description>&lt;p&gt;I have been coding in C# &lt;strong&gt;&lt;em&gt;on and off&lt;/em&gt;&lt;/strong&gt; since the end of 2013. You might be wondering why I mentioned that here though.
&lt;figure&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://media4.giphy.com/media/z1GQ9t8FxipnG/giphy.gif?cid=ecf05e47xp22emm8yqmmvt2yliqevehk85xvs6ffb54hzf4t&amp;amp;rid=giphy.gif&#34;
         alt=&#34;Confused Liam Neeson&#34;/&gt; 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The reason is that, a large part of that time especially between 2015 to 2021, I was pretty much managing a team, rather than coding full-time. Now, does that make a difference? Of course, it does. Being primarily in a managerial role meant that I had less time to code and more time to do non coding tasks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HashSet in C#</title>
      <link>https://www.softwarecraftsperson.com/posts/2021-01-10-hashset-in-csharp/</link>
      <pubDate>Sun, 10 Jan 2021 13:08:58 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2021-01-10-hashset-in-csharp/</guid>
      <description>Hashsets in C# - high performance unique elements store</description>
    </item>
    <item>
      <title>Windows Terminal and customisations</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-12-31-windows-terminal-and-customisations/</link>
      <pubDate>Thu, 31 Dec 2020 15:58:17 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-12-31-windows-terminal-and-customisations/</guid>
      <description>&lt;p&gt;I began my software development career on Linux. I am and have always been very comfortable with the command line and do not really care if I have to open up the command line on Windows.&lt;/p&gt;
&lt;p&gt;However, in the Windows world, command line used to suck. I think that is a polite way to put it. It truly sucked so bad that developers from a Linux background, often wondered how windows even got this far. It had a weird window size limitation and used to open only halfway through your wide screen!&lt;/p&gt;</description>
    </item>
    <item>
      <title>What did I learn as a software engineering manager</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-12-22-what-i-learned-from-5-years-as-a-software-engineering-manager/</link>
      <pubDate>Tue, 22 Dec 2020 22:53:51 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-12-22-what-i-learned-from-5-years-as-a-software-engineering-manager/</guid>
      <description>Adventures of a software engineering manager - a taste of leadership</description>
    </item>
    <item>
      <title>Application Insights in .Net Core App</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-12-20-application-insights-in-net-core-app/</link>
      <pubDate>Sun, 20 Dec 2020 12:15:55 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-12-20-application-insights-in-net-core-app/</guid>
      <description>Application Insights in .NET Core applications</description>
    </item>
    <item>
      <title>Semantic versioning - Semver - An introduction - node package manager syntax and quirks</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-12-06-semantic-versioning-semver-introduction/</link>
      <pubDate>Sun, 06 Dec 2020 18:33:07 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-12-06-semantic-versioning-semver-introduction/</guid>
      <description>Semantic versioning - Semver - An introduction and how to specify version logic to your node package manager</description>
    </item>
    <item>
      <title>Node - Get started</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-12-06-node-get-started/</link>
      <pubDate>Sun, 06 Dec 2020 17:37:59 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-12-06-node-get-started/</guid>
      <description>&lt;h2 id=&#34;what-is-it&#34;&gt;What is it?&lt;/h2&gt;
&lt;p&gt;For a really simple introduction, check out my earlier post on an &lt;a href=&#34;https://www.softwarecraftsperson.com/posts/2020-12-06-node-and-npm-the-intro-i-wish-i-got-when-i-began-web-development/&#34;&gt;Introduction to Node and npm&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Node is a javascript runtime environment outside your browser.&lt;/p&gt;
&lt;p&gt;It is a program that embeds Chrome&amp;rsquo;s V8 engine into a command line executable that lets you run javascript.&lt;/p&gt;
&lt;p&gt;You can download and install it from &lt;a href=&#34;https://nodejs.org/en/&#34;&gt;Nodejs.Org&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;so-what&#34;&gt;So what?&lt;/h2&gt;
&lt;p&gt;Node comes with a package manager - npm, node package manager. that allows you to &lt;em&gt;publish and download&lt;/em&gt; packages from &lt;a href=&#34;https://www.npmjs.com/&#34;&gt;npmjs.com&lt;/a&gt;, a web portal that allows developers to share their re-usable javascript modules. It has inherent support for both &lt;a href=&#34;https://en.wikipedia.org/wiki/CommonJS&#34;&gt;CommonJS&lt;/a&gt; and &lt;a href=&#34;https://nodejs.org/api/esm.html&#34;&gt;ECMAScript&lt;/a&gt; modules. When you download and install node, you&amp;rsquo;ll get node executable and also the node package manager.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Node and npm: The intro I wish, I got when I began web development</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-12-06-node-and-npm-the-intro-i-wish-i-got-when-i-began-web-development/</link>
      <pubDate>Sun, 06 Dec 2020 14:30:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-12-06-node-and-npm-the-intro-i-wish-i-got-when-i-began-web-development/</guid>
      <description>&lt;p&gt;There are times in life, when you begin doing something without fully understanding it, simply because, at that point, you didn&amp;rsquo;t have the luxury to dig deeper, go further and be in a position where you could explain to a 5 year old, what it is really like to do what you were doing.&lt;/p&gt;
&lt;p&gt;I have been in this position several times. A lot of times, software development for me has been a journey of reverse engineering, or figuring things backwards. Do it first, based on snippets read here and there online and then connecting the dots gradually as you spend more time doing similar things. Sounds familiar? Probably, the life of every other software engineer on the planet working on a target deadline.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Application Insights, SeriLog and .NET Core</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-11-28-application-insights-serilog-and-net-core/</link>
      <pubDate>Sat, 28 Nov 2020 07:27:55 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-11-28-application-insights-serilog-and-net-core/</guid>
      <description>&lt;p&gt;I realised recently that I have always taken application logging for granted.&lt;/p&gt;
&lt;p&gt;In my previous firm, which was a pretty large company, over a few thousand employees, we had a centralised logging platform and some lovely packages for each language and a team to configure the logging instance for our application and all that luxury.&lt;/p&gt;
&lt;p&gt;Developers, did just application development. For everything else, there was always somebody you could lean on. So the good thing was, you could spend all your time, polishing your code, applying all sorts of clean-code principles and achieve some coding nirvana and focus on just the business logic and the core problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Feature Toggles</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-11-08-feature-toggles/</link>
      <pubDate>Sun, 08 Nov 2020 16:07:49 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-11-08-feature-toggles/</guid>
      <description>&lt;p&gt;How many times have you as a software engineer worked on a large feature, in an isolated branch that only got merged to the mainline branch when it is time to actually release the feature and then struggled for hours and sometimes days with the merge conflicts, simply because many other changes were contributed to the main branch in the meanwhile?&lt;/p&gt;
&lt;p&gt;If your answer is &lt;strong&gt;&lt;em&gt;many times&lt;/em&gt;&lt;/strong&gt;, then you really might benefit from this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A static responsive website as an Azure AppService</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-10-31-static-website-as-an-azure-appservice/</link>
      <pubDate>Sat, 31 Oct 2020 21:06:06 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-10-31-static-website-as-an-azure-appservice/</guid>
      <description>What to consider when hosting a static responsive website as an Azure AppService</description>
    </item>
    <item>
      <title>Entity Framework Core 3.1 - Part 4</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-11-12-ef-core-3-1-part-4/</link>
      <pubDate>Sun, 25 Oct 2020 17:53:59 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-11-12-ef-core-3-1-part-4/</guid>
      <description>Entity Framework Core 3 - Things you must know</description>
    </item>
    <item>
      <title>Entity Framework Core 3.1 - Part 3</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-10-25-ef-core-3-1-part-3/</link>
      <pubDate>Sun, 25 Oct 2020 17:22:33 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-10-25-ef-core-3-1-part-3/</guid>
      <description>Entity Framework Core 3 - Things you must know</description>
    </item>
    <item>
      <title>Entity Framework Core 3.1 - Part 2</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-10-25-ef-core-3-1-part-2/</link>
      <pubDate>Sun, 25 Oct 2020 17:16:49 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-10-25-ef-core-3-1-part-2/</guid>
      <description>Entity Framework Core 3 - Things you must know</description>
    </item>
    <item>
      <title>Entity Framework Core 3.1 - Part 1</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-10-24-ef-core-3-1-part-1/</link>
      <pubDate>Sun, 25 Oct 2020 17:04:36 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-10-24-ef-core-3-1-part-1/</guid>
      <description>Entity Framework Core 3 - Things you must know</description>
    </item>
    <item>
      <title>Containers! Docker! Virtual Machines! What exactly do they do?</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-10-04-docker/</link>
      <pubDate>Sun, 04 Oct 2020 11:58:01 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-10-04-docker/</guid>
      <description>When should use a container? Why should you even think of it as a solution? How is it different from a virtual</description>
    </item>
    <item>
      <title>Git: Part 5 - Reset and further</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-10-03-git-part-5-reset-and-further/</link>
      <pubDate>Sat, 03 Oct 2020 13:30:31 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-10-03-git-part-5-reset-and-further/</guid>
      <description>A practical introduction to Git - Part 5 - Undoing changes</description>
    </item>
    <item>
      <title>Git: Part 4 - Branching and more</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-10-03-git-part-4-branching-and-more/</link>
      <pubDate>Sat, 03 Oct 2020 13:09:57 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-10-03-git-part-4-branching-and-more/</guid>
      <description>A practical introduction to Git - Part 4</description>
    </item>
    <item>
      <title>Git: Part 3 - Hands on</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-10-03-git-part-3-hands-on/</link>
      <pubDate>Sat, 03 Oct 2020 12:39:45 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-10-03-git-part-3-hands-on/</guid>
      <description>A practical introduction to Git - Part 3 - Try some Git commands</description>
    </item>
    <item>
      <title>Git: Part 2 - Some essential concepts</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-10-03-git-part-2-some-essential-concepts/</link>
      <pubDate>Sat, 03 Oct 2020 12:36:03 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-10-03-git-part-2-some-essential-concepts/</guid>
      <description>A practical introduction to Git - Part 2</description>
    </item>
    <item>
      <title>Git: Part 1 - An introduction</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-10-03-git-part-1-an-introduction/</link>
      <pubDate>Sat, 03 Oct 2020 12:30:48 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-10-03-git-part-1-an-introduction/</guid>
      <description>A practical introduction to Git - Part 1</description>
    </item>
    <item>
      <title>Moving a blog to Wordpress</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-09-28-moving-a-blog-to-wordpress/</link>
      <pubDate>Mon, 28 Sep 2020 17:41:27 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-09-28-moving-a-blog-to-wordpress/</guid>
      <description>&lt;p&gt;&lt;figure&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://live.staticflickr.com/2525/4236186947_ff0093c191_b.jpg&#34;/&gt; 
&lt;/figure&gt;

&lt;a href=&#34;https://www.flickr.com/photos/25653307@N03/4236186947&#34;&gt;&amp;ldquo;01119 (304) 08-09-2009 Curley Cattle Transport - Mack Prime Mover 02-CCT + 3 trailers for cartage of cattle in a yard in Burke Development Road, Normanton, Queensland, Australia.&amp;rdquo;&lt;/a&gt; by &lt;a href=&#34;https://www.flickr.com/photos/25653307@N03&#34;&gt;express000&lt;/a&gt; is licensed under &lt;a href=&#34;https://creativecommons.org/licenses/by-nc-sa/2.0/?ref=ccsearch&amp;amp;atype=rich&#34;&gt;CC BY-NC-SA 2.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When starting this blog, I really hadn&amp;rsquo;t done enough research onto which platform to start blogging. I previously used to post some of my daily work problems on blogger.&lt;/p&gt;
&lt;p&gt;It was alright. But I hadn&amp;rsquo;t really written many interesting posts apart from posting some problems and solutions. Hopefully importing all those posts into this domain, will not only give them some visibility but also give my blog some content.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Software and invisibility</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-09-16-software-and-invisibility/</link>
      <pubDate>Wed, 16 Sep 2020 20:29:26 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-09-16-software-and-invisibility/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;The Invisible Man.&amp;rdquo; by Chaotic Good01 is licensed with CC BY-NC-SA 2.0. To view a copy of this license, visit &lt;a href=&#34;https://creativecommons.org/licenses/by-nc-sa/2.0/&#34;&gt;https://creativecommons.org/licenses/by-nc-sa/2.0/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;keeping-people-informed&#34;&gt;Keeping people informed&lt;/h2&gt;
&lt;p&gt;Early in my career, I thought writing software is all about the outcome. Delivering something that works. I thought it didn&amp;rsquo;t matter how it was done. At the end of the sprint if you didn&amp;rsquo;t have a deliverable, it was a problem. This was true in companies which adopt a waterfall model of development.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Software design - Why?</title>
      <link>https://www.softwarecraftsperson.com/posts/2020-06-27-software-design-why/</link>
      <pubDate>Sat, 27 Jun 2020 14:31:41 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2020-06-27-software-design-why/</guid>
      <description>&lt;h2 id=&#34;the-problem&#34;&gt;The problem&lt;/h2&gt;
&lt;p&gt;A lot of software engineers get into the industry and often end up starting to write code soon after they read the requirements&amp;rsquo; specification. Sounds familiar? You might have done it too. Hard to admit? Can be. We are humans, after all.&lt;/p&gt;
&lt;p&gt;Jumping right into the coding process might be a great idea for a simple coding challenge, where the objective is to solve a problem in as little time as possible, with potentially &lt;em&gt;very few lines of code&lt;/em&gt;. You just have that &lt;em&gt;very specific goal&lt;/em&gt;. You &lt;em&gt;don&amp;rsquo;t have worry about future enhancements&lt;/em&gt; for that solution, nor do you have to &lt;em&gt;think about maintainability&lt;/em&gt; of that solution. Once solved, the code might have to run through a set of tests and pass the criteria of the question. Fantastic! And you might even get selected for the next round of interviews! Great! So why think about design when you start working on a real solution?&lt;/p&gt;</description>
    </item>
    <item>
      <title>LINQ - watchout for slow queries</title>
      <link>https://www.softwarecraftsperson.com/posts/2016-02-14-linq-watchout-for-slow-queries/</link>
      <pubDate>Sun, 14 Feb 2016 19:19:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2016-02-14-linq-watchout-for-slow-queries/</guid>
      <description>LINQ - what is it? why are queries slow? What to look out for?</description>
    </item>
    <item>
      <title>Password free SSH login to Server using Putty</title>
      <link>https://www.softwarecraftsperson.com/posts/2016-02-13-password-free-ssh-login-to-server-using/</link>
      <pubDate>Sat, 13 Feb 2016 23:29:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2016-02-13-password-free-ssh-login-to-server-using/</guid>
      <description>&lt;p&gt;Hey folks,&lt;br&gt;
So I&amp;rsquo;ve seen a lot of people open putty and then select their host and finally enter a user name and password. I don&amp;rsquo;t do that. I don&amp;rsquo;t want to either. Why would I? I&amp;rsquo;m a computer scientist/programmer/whatever. I should not do repetitive tasks. I should automate it. Password free SSH login is just that: Automation.&lt;/p&gt;
&lt;p&gt;How do you do it?&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t rocket science. Let us start with what SSH is Secure Shell. OMG! That didn&amp;rsquo;t help. It is a protocol that helps you to connect to remote machines securely over unsecured networks. Over use of &lt;strong&gt;secure&lt;/strong&gt; you might say. You generally need an SSH server and an SSH client for this purpose. Generally most of your enterprise linux hosts would be configured to allow your personal workstation to connect to it using an SSH client like Putty. There are several different versions of this protocol too. But I&amp;rsquo;m not a networking protocol geek. So enough said. Let us go right into what you have to do to setup your computer to log in.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting to know LINQ</title>
      <link>https://www.softwarecraftsperson.com/posts/2014-07-27-getting-to-know-linq/</link>
      <pubDate>Sun, 27 Jul 2014 20:54:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2014-07-27-getting-to-know-linq/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://msdn.microsoft.com/en-GB/library/bb397897.aspx&#34;&gt;LINQ&lt;/a&gt; stands for Language Integrated Query Language. It was a feature introduced along with Visual Studio 2008 that extends the querying capabilities of C# for any sort of data source. Generally LINQ is used to query data sources like SQL Server Databases and XML files. I use it to query databases.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not going to explain everything about LINQ here. I&amp;rsquo;m going to just talk about some very basic details.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Refactoring - Code written by others</title>
      <link>https://www.softwarecraftsperson.com/posts/2014-04-21-refactoring-code-written-by-others/</link>
      <pubDate>Mon, 21 Apr 2014 01:26:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2014-04-21-refactoring-code-written-by-others/</guid>
      <description>&lt;p&gt;As you might have noticed from my recent posts, I&amp;rsquo;ve just recently jumped from one platform to another. And my current project is a bit of a legacy thing. A lot of people worked on it previously and those who did weren&amp;rsquo;t necessarily experts in the technology that they used when they initially developed it. They did a lot of hacky things, to get things going. But such hacks are good for getting a product moving, but not really good for maintaining them.  And now that I&amp;rsquo;m having to implement changes to them, I realized how hard they have made this for me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl Catalyst - VBox Network Configuration on Ubuntu</title>
      <link>https://www.softwarecraftsperson.com/posts/2014-02-09-perl-catalyst-vbox-network/</link>
      <pubDate>Sun, 09 Feb 2014 22:35:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2014-02-09-perl-catalyst-vbox-network/</guid>
      <description>&lt;p&gt;In my previous post regarding &lt;a href=&#34;http://teknologk.blogspot.com/2014/02/perl-catalyst-tutorial-needs-us-to.html&#34;&gt;PerlCatalyst tutorial setup&lt;/a&gt; I mentioned about setting up a virtual machine inside a virtual machine. I didn&amp;rsquo;t provide you with much information regarding how I did it because all the tutorials related to that is already available online. Pasting the links below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://metacpan.orgf/pod/Catalyst::Manual::Tutorial::01_Intro&#34;&gt;Catalyst::Manual::Tutorial::01_Intro&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But I had a serious problem with my virtual box inside a virtual box. Not so serious actually, just that it stopped me from proceeding ahead because of my &lt;strong&gt;ignorance&lt;/strong&gt; of network configuration. The tutorial says that after downloading the virtual machine for the tutorial and setting it up as mentioned in the website, I could start using it as a server and log into it using ssh from my host computer. But for some reason the VM (virtual machine) provided by Catalyst just had a loopback network configuration. It wouldn&amp;rsquo;t show me a proper ip address to which I could connect to. And hence I had no way of connecting to this new tutorial virtual machine that I started from within an Ubuntu Virtual machine. I played around with the network configuration of VBox for a couple of hours trying out the different settings provided:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl Catalyst Tutorial needs us to download a virtual machine</title>
      <link>https://www.softwarecraftsperson.com/posts/2014-02-09-perl-catalyst-tutorial-needs-us-to/</link>
      <pubDate>Sun, 09 Feb 2014 11:29:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2014-02-09-perl-catalyst-tutorial-needs-us-to/</guid>
      <description>&lt;p&gt;I was trying to explore more about how and where Perl is used on the web. I figured out that there are a lot of web frameworks that are based on Perl. Catalyst seems to be a nice MVC framework that is really popular. I thought I&amp;rsquo;d take some time off to learn more about it. And I downloaded all the necessary packages and modules and then went on to check out the tutorial which is posted here: &lt;a href=&#34;https://metacpan.org/pod/Catalyst::Manual::Tutorial::01_Intro&#34;&gt;Catalyst Tutorial&lt;/a&gt;. I am already using Ubuntu on a virtual machine. My laptop came pre-loaded with Windows 8. And I&amp;rsquo;ve upgraded it to Windows 8.1. I always wanted to own a Linux laptop. But thinking about the lack of availability of games, I chose Windows over Linux. But I still can&amp;rsquo;t avoid using Linux as I always use it at work. Though recently I made a move to a windows based development team, which still has some code on non-windows based boxes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>emacs - Why do I use it?</title>
      <link>https://www.softwarecraftsperson.com/posts/2014-02-09-emacs-why-do-i-use-it/</link>
      <pubDate>Sun, 09 Feb 2014 00:01:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2014-02-09-emacs-why-do-i-use-it/</guid>
      <description>&lt;p&gt;Over the past few years, the only text editor I&amp;rsquo;ve been using on Linux is emacs. Not because I wanted to. But after I joined the firm that I currently work for, I was trained in emacs. And I found it difficult to use initially. But then I decided that if every one else in the firm could use it and become an expert, then so can I. So I spend some time with the built-in emacs tutorial and I just learned it really quick.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl module installation - Ubuntu</title>
      <link>https://www.softwarecraftsperson.com/posts/2014-02-05-perl-module-installation-ubuntu/</link>
      <pubDate>Wed, 05 Feb 2014 22:59:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2014-02-05-perl-module-installation-ubuntu/</guid>
      <description>&lt;p&gt;Ever wondered how to install a Perl module from CPAN:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo perl -MCPAN -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;install ModuleName&amp;#39;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Perl - Modules and path on disk</title>
      <link>https://www.softwarecraftsperson.com/posts/2014-02-02-perl-modules-and-path-on-disk/</link>
      <pubDate>Sun, 02 Feb 2014 20:51:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2014-02-02-perl-modules-and-path-on-disk/</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t know if you have ever wondered where a module that you have been using is installed. Working in a corporate with multiple operating systems and having to maintain data update systems on multiple platforms that run on Perl based scripts, you might have to make sure that the CPAN modules you use are of the same versions, to keep your code portable. So recently I ran across one of these problems and came up with some interesting solutions as suggested by my colleague. I didn&amp;rsquo;t understand what I was doing at the time. So I took a break and tried to understand how I actually got to know what it was.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GNU Screen - Dynamic Window Titles, etc - tmux after this</title>
      <link>https://www.softwarecraftsperson.com/posts/2014-02-02-more-about-gnu-screen-tmux-after-this/</link>
      <pubDate>Sun, 02 Feb 2014 04:50:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2014-02-02-more-about-gnu-screen-tmux-after-this/</guid>
      <description>How to use GNU Screen? What can I customize? Why is it useful? Terminal Multiplexing?</description>
    </item>
    <item>
      <title>BASH - keymap and binding</title>
      <link>https://www.softwarecraftsperson.com/posts/2014-01-26-bash-keymap-and-binding/</link>
      <pubDate>Sun, 26 Jan 2014 13:55:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2014-01-26-bash-keymap-and-binding/</guid>
      <description>&lt;p&gt;Hello there folks!&lt;br&gt;
I have been using &lt;code&gt;[BASH](http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29)&lt;/code&gt; for quite a long time. Yet I feel like there is a lot that I don&amp;rsquo;t know. The irony is that I am doing the BASH and Linux Basics training for new hires at my firm. I am not that bad, you see. It is just that there is so much to know. And I am never happy with what I know. &lt;/p&gt;</description>
    </item>
    <item>
      <title>GNU Screen - Introduction to terminal multiplexing</title>
      <link>https://www.softwarecraftsperson.com/posts/2014-01-22-gnu-screen-introduction-to-terminal/</link>
      <pubDate>Wed, 22 Jan 2014 21:32:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2014-01-22-gnu-screen-introduction-to-terminal/</guid>
      <description>&lt;p&gt;I thought everyone knew it. But very few actually do. Especially young software engineers. Probably everyone uses a GUI today and don&amp;rsquo;t interact much with the terminal. In fact many of the new hires at my firm have only heard of the term multiplexer, but never really bothered to use one. So I thought I&amp;rsquo;d just write a bit about it.&lt;/p&gt;
&lt;p&gt;I used to be normal putty user till 2011 (which is a shame). Then my friend introduced me to screen. At first I thought &amp;ldquo;OMG! What a mess! I would have to remember so many commands!&amp;rdquo;. But in less than a month I was a big fan of screen and had learned a lot more than necessary information about it. When you work in a company that gives you laptops as your primary workstation, your putty session dies off when you dock your laptop off or go to the next floor. So screen helped me maintain my session and made me less worried about saving work on the terminal. And it is so convenient, when I have long running tests or scripts, I just don&amp;rsquo;t bother waiting, switch to another window and keep working.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 8 and Windows 8.1 shortcuts</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-12-23-windows-8-and-windows-81-shortcuts/</link>
      <pubDate>Mon, 23 Dec 2013 21:11:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-12-23-windows-8-and-windows-81-shortcuts/</guid>
      <description>&lt;p&gt;I was playing around with Windows 8.1 on my computer and I figured out there are some cool shortcuts maybe you haven&amp;rsquo;t known.&lt;/p&gt;
&lt;p&gt;Did you know that the icons in your task bar starting after the start button on the left bottom corner of your screen are numbered from 1 - 9.&lt;br&gt;
&lt;figure&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;http://4.bp.blogspot.com/-PY549EatRLY/Urihz1VTQjI/AAAAAAAAB68/soA9fwW6yJE/s200/images.jpg&#34;/&gt; 
&lt;/figure&gt;
 + 1 - opens the application or whatever your 1st icon after the start menu&lt;br&gt;
&lt;figure&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;http://4.bp.blogspot.com/-PY549EatRLY/Urihz1VTQjI/AAAAAAAAB68/soA9fwW6yJE/s200/images.jpg&#34;/&gt; 
&lt;/figure&gt;
 + 2 &amp;amp; and so on. Does the same.&lt;br&gt;
&lt;figure&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;http://4.bp.blogspot.com/-PY549EatRLY/Urihz1VTQjI/AAAAAAAAB68/soA9fwW6yJE/s200/images.jpg&#34;/&gt; 
&lt;/figure&gt;
 + ShiftKey + &lt;/p&gt;</description>
    </item>
    <item>
      <title>Vertica and K-Safety</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-11-06-vertica-and-k-safety/</link>
      <pubDate>Wed, 06 Nov 2013 01:41:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-11-06-vertica-and-k-safety/</guid>
      <description>&lt;p&gt;So you probably know that I have been working with HP&amp;rsquo;s Vertica. I&amp;rsquo;m very glad that I had this opportunity to interact with something like this. The technology behind it is pretty new and immature and lacks the power of PL/SQL but the speed that it achieves through massive parallel execution of queries is simply amazing.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t know if you have heard of the term K-Safe or K-Safety. When I first heard it, I had no idea what it was. Then after going through some of the documentation I kind of got the point.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl - Autovivification</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-11-04-perl-autovivification/</link>
      <pubDate>Mon, 04 Nov 2013 23:41:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-11-04-perl-autovivification/</guid>
      <description>&lt;p&gt;When I first heard that term, I was worried. I felt ashamed of myself for not knowing it. After all I&amp;rsquo;ve been writing Perl scripts for almost 3 years now. And I still don&amp;rsquo;t know what that means.&lt;/p&gt;
&lt;p&gt;But finally I accepted that computer science is too vast to know everything about everything. You learn it as you get through it. So apparently:&lt;br&gt;
Autovivification is the name for what happens when you attempt to assign a nonexistant entry of a hash; Perl actually creates the missing hash entry for the key you specified. You might not have intended that to happen. But Perl does exactly that. I&amp;rsquo;ve recently seen a bug in my new team because of this very feature or curse of Perl. And it did take a long time for them figure out the root cause of the problem. Because Perl doesn&amp;rsquo;t complain when this happens. This is more of a logical error than a compile time or run time error. Hence too hard to find.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Software Engineers should read this</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-10-14-software-engineers-should-read-this/</link>
      <pubDate>Mon, 14 Oct 2013 10:21:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-10-14-software-engineers-should-read-this/</guid>
      <description>&lt;p&gt;I think as programmers you should read and understand this:&lt;br&gt;
&lt;a href=&#34;http://martinfowler.com/ieeeSoftware/explicit.pdf&#34;&gt;http://martinfowler.com/ieeeSoftware/explicit.pdf&lt;/a&gt;&lt;br&gt;
From the expert in OOAD and related stuff - Martin Fowler.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQuirreL graphical user interface for Vertica</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-09-24-squirrel-graphical-user-interface-for/</link>
      <pubDate>Tue, 24 Sep 2013 17:21:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-09-24-squirrel-graphical-user-interface-for/</guid>
      <description>&lt;p&gt;Hey guys,&lt;br&gt;
I tried out DBVisualizer earlier. I liked it and I have blogged about &lt;a href=&#34;http://teknologk.blogspot.co.uk/2013/06/setup-dbvisualizer-with-hp-vertica-db.html&#34;&gt;setting that up for your Vertica database&lt;/a&gt;. But it is expensive. I mean I can&amp;rsquo;t buy it for my personal use unless a company actually sponsors me. I&amp;rsquo;m a poor developer you see.&lt;br&gt;
So I searched for alternatives and I kind of liked SQuirrel SQL client. It is a java based open source SQL client which is pretty awesome. First you should go and download it to know what I mean: &lt;a href=&#34;http://squirrel-sql.sourceforge.net/&#34;&gt;http://squirrel-sql.sourceforge.net/&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vertica Query Performance Tuning - An introduction</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-09-12-vertica-query-performance-tuning/</link>
      <pubDate>Thu, 12 Sep 2013 13:36:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-09-12-vertica-query-performance-tuning/</guid>
      <description>Query performance optimisation in Vertica</description>
    </item>
    <item>
      <title>DIR on VMS and display useful information</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-08-07-dir-on-vms-and-display-useful/</link>
      <pubDate>Wed, 07 Aug 2013 11:20:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-08-07-dir-on-vms-and-display-useful/</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t know if you have even heard of this operating system named OpenVMS by HP. Unfortunately or maybe fortunately I have had a chance to work on it. The operating system has a cool feature, file version is built into the OpenVMS file system. But the problem with this is that if you go into a log directory and list out files, the list could get really long.&lt;/p&gt;
&lt;p&gt;I was just trying to make it display things that I usually use on Linux.&lt;br&gt;
ls -lrt&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vertica and its version - Find out using SQL</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-06-24-vertica-and-its-version-find-out-using/</link>
      <pubDate>Mon, 24 Jun 2013 22:09:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-06-24-vertica-and-its-version-find-out-using/</guid>
      <description>&lt;p&gt;I was playing around with Vertica and my friend suddenly asked me what version of Vertica I was using. This was because he was trying to debug something and posted a question to guys from Vertica and they asked him that question. At my workplace we use the same Vertica cluster for development. It is a playground with a lot of restrictions. Without DB Admin access you can&amp;rsquo;t really explore much in Vertica. But yea we are trying to get the most out it despite all that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring Vertica&#39;s INTERPOLATE predicate </title>
      <link>https://www.softwarecraftsperson.com/posts/2013-06-18-exploring-verticas-interpolate-predicate/</link>
      <pubDate>Tue, 18 Jun 2013 00:55:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-06-18-exploring-verticas-interpolate-predicate/</guid>
      <description>&lt;p&gt;Vertica has a special feature to join tables and fill in the last available values where values would otherwise be null. I had a similar use case and wanted to test how I could make the best use of it. I played with simple examples and got it right, but with a slightly more complex one, I was stuck or maybe I just couldn&amp;rsquo;t understand what was happening. So I posted a question at &lt;a href=&#34;http://stackoverflow.com/q/17070545/2262959&#34;&gt;Stackoverflow&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vertica - Calendar table with dates from a start date to an end date using analytical SQL</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-06-18-vertica-calendar-table-with-dates-from/</link>
      <pubDate>Tue, 18 Jun 2013 00:50:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-06-18-vertica-calendar-table-with-dates-from/</guid>
      <description>&lt;p&gt;I had a problem creating a table with just SQL that is supported by Vertica. Most of the solutions that I came across online were using procedures. But after a lot of playing around and reading vertica documentation I found a solution to my problem. read more about the problem and the solution at &lt;a href=&#34;http://stackoverflow.com/q/17155805/2262959&#34;&gt;Stackoverflow&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bash v/s Cshell - Functions and their definitions - useful &#39;type&#39; keyword</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-06-09-bash-vs-cshell-functions-and-their/</link>
      <pubDate>Sun, 09 Jun 2013 23:41:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-06-09-bash-vs-cshell-functions-and-their/</guid>
      <description>&lt;p&gt;Hey if you have worked on Linux then you have interacted with bash. Maybe not. But it is mostly likely that your default shell is bash. I&amp;rsquo;m not surprised. I&amp;rsquo;m among the few people on this planet who regularly interacts with cshell also. Thanks to the kind of work I do.&lt;br&gt;
One great feature of bash that I miss in cshell is: Functions.&lt;br&gt;
Surprised? Cshell doesn&amp;rsquo;t support functions. It doesn&amp;rsquo;t have any concept of function. If you wanted to simulate a function, you have to write another cshell script that does what your function would do and define an alias that calls it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Viewing function definitions in Vertica</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-06-05-viewing-function-definitions-in-vertica/</link>
      <pubDate>Wed, 05 Jun 2013 09:28:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-06-05-viewing-function-definitions-in-vertica/</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t know if you have tried this. But I did try to read function definition from the system tables in Vertica.&lt;/p&gt;
&lt;p&gt;I used the table called USER_FUNCTIONS which is a table in the V_CATALOG system schema. More details can be found here: &lt;a href=&#34;https://my.vertica.com/docs/6.1.x/HTML/index.htm#15021.htm&#34;&gt;https://my.vertica.com/docs/6.1.x/HTML/index.htm#15021.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But unfortunately when I try and do something like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vertdeva01:20130604-113434 &amp;gt; &lt;span class=&#34;k&#34;&gt;select&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\_&lt;/span&gt;definition from v&lt;span class=&#34;se&#34;&gt;\_&lt;/span&gt;catalog.user&lt;span class=&#34;se&#34;&gt;\_&lt;/span&gt;functions where schema&lt;span class=&#34;se&#34;&gt;\_&lt;/span&gt;name&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;calc&amp;#39;&lt;/span&gt; and &lt;span class=&#34;k&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\_&lt;/span&gt;name&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;getCYForDate&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;\-&lt;/span&gt;---------------------------------------------------------------------------------------------------------------------------------  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RETURN to&lt;span class=&#34;se&#34;&gt;\_&lt;/span&gt;date&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;concat&lt;span class=&#34;o&#34;&gt;(((((&lt;/span&gt;date&lt;span class=&#34;se&#34;&gt;\_&lt;/span&gt;part&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;year&amp;#39;&lt;/span&gt;, &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;processDate&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;::timestamp&lt;span class=&#34;o&#34;&gt;))&lt;/span&gt;::int - CASE WHEN &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt;date&lt;span class=&#34;se&#34;&gt;\_&lt;/span&gt;part&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;month&amp;#39;&lt;/span&gt;, &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;processDate&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;::time  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; row&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you notice the function definition is only partly visible. The rest of it gets truncated. I don&amp;rsquo;t know how to set it right. If you know how, feel free to comment on this post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup DBVisualizer with an HP Vertica DB connection</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-06-05-setup-dbvisualizer-with-hp-vertica-db/</link>
      <pubDate>Wed, 05 Jun 2013 00:03:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-06-05-setup-dbvisualizer-with-hp-vertica-db/</guid>
      <description>&lt;p&gt;Download your free copy of DBVisualizer from &lt;a href=&#34;http://www.dbvis.com/download/&#34;&gt;http://www.dbvis.com/download/&lt;/a&gt;&lt;br&gt;
I am going to give you the steps to setup vertica connection to DB Visualizer on a windows 7. Our windows might look different. But I suppose the terms used on the GUI would match that on any operating system.&lt;/p&gt;
&lt;p&gt;I know this might be a big assumption as I don&amp;rsquo;t work for DBVisualizer and I haven&amp;rsquo;t installed it on any other platform. But it is always worth giving this a try if you are starting to use Vertica and would like to see your tables and write queries on a GUI based environment. I am not a big fan of GUIs. But some times it might become handy. Especially if you are a DBA and you manage quite a lot of databases.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CShell and Absurd quotes and eval</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-06-03-cshell-and-absurd-quotes-and-eval/</link>
      <pubDate>Mon, 03 Jun 2013 20:58:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-06-03-cshell-and-absurd-quotes-and-eval/</guid>
      <description>Quirky C-Shell and difficulties with quotes and eval</description>
    </item>
    <item>
      <title>MySQL Partitioning Tutorial</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-06-03-mysql-partitioning-tutorial/</link>
      <pubDate>Mon, 03 Jun 2013 20:57:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-06-03-mysql-partitioning-tutorial/</guid>
      <description>&lt;p&gt;This is a brilliant power point presentation that helped summarize partitioning and its uses. I am currently working on mapping an object oriented database into a relational one, focusing on query time performance. So partitioning data according to how it is accessed was a key. And this sure helped a lot in clearing the basics, without wasting much time. hope it helps you as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;http://www.slideshare.net/datacharmer/mysql-partitions-tutorial&#34; title=&#34;MySQL partitions tutorial&#34;&gt;MySQL partitions tutorial&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>VSQL extract data into file</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-05-30-vsql-extract-data-into-file/</link>
      <pubDate>Thu, 30 May 2013 17:34:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-05-30-vsql-extract-data-into-file/</guid>
      <description>&lt;p&gt;Hey there! So you use Vertica and vsql to interact with your tables. Ever had those times when you wanted to take stuff from your table and paste it into Microsoft Excel for sending it off to someone not so technically acquainted with Vertica?&lt;br&gt;
You could write a script to do that for you. But if you just had to do it within a vsql session you also have options to do it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vertica DELETE columns from one table using data from another</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-05-30-vertica-delete-columns-from-one-table/</link>
      <pubDate>Thu, 30 May 2013 16:34:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-05-30-vertica-delete-columns-from-one-table/</guid>
      <description>How to delete columns from one table using data from another</description>
    </item>
    <item>
      <title>Windows Run box</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-05-07-windows-run-box/</link>
      <pubDate>Tue, 07 May 2013 15:17:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-05-07-windows-run-box/</guid>
      <description>Windows Run box - `apps you can open directly</description>
    </item>
    <item>
      <title>xargs saved my day</title>
      <link>https://www.softwarecraftsperson.com/posts/2013-02-06-xargs-saved-my-day/</link>
      <pubDate>Wed, 06 Feb 2013 22:33:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2013-02-06-xargs-saved-my-day/</guid>
      <description>&lt;p&gt;So I was doing my regular job, writing new queries to test out my team&amp;rsquo;s new databases on Vertica. And suddenly my senior manager sends out an email to all in the team asking an estimated disk space requirement for each of our work. I had to find out how much space the raw data files for a complete history that were used to load my databases occupy on disk.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Emacs - Copy Line</title>
      <link>https://www.softwarecraftsperson.com/posts/2012-10-02-emac-copy-line/</link>
      <pubDate>Tue, 02 Oct 2012 13:19:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2012-10-02-emac-copy-line/</guid>
      <description>&lt;p&gt;To get the equivalent of kill line command in emacs for copying purposes, I use the following code snippet.&lt;br&gt;
Just copy paste it in your .emacs file.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;copy-line&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;arg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Copy lines (as many as prefix argument) in the kill ring&amp;#34;&lt;/span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;interactive&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;p&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kill-ring-save&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;line-beginning-position&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;line-beginning-position&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;arg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;%d line%s copied&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;arg&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;arg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;s&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;\\M-k&amp;#34;&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;copy-line&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If \C is your control key then \M is your alt key.&lt;br&gt;
So generally by default your kill line can be done by \C-k&lt;br&gt;
Now you can also copy a line by doing: \M-k
I don&amp;rsquo;t remember where I got this bit of code from, I lost those tabs when Firefox crashed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Surrogate keys v/s natural keys</title>
      <link>https://www.softwarecraftsperson.com/posts/2012-07-18-surrogate-keys-vs-natural-keys/</link>
      <pubDate>Wed, 18 Jul 2012 13:37:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2012-07-18-surrogate-keys-vs-natural-keys/</guid>
      <description>Difference between a surrogate key vs natural keys in databases</description>
    </item>
    <item>
      <title>Static in C&#43;&#43;</title>
      <link>https://www.softwarecraftsperson.com/posts/2012-07-18-static-in-c/</link>
      <pubDate>Wed, 18 Jul 2012 11:02:00 +0100</pubDate>
      <guid>https://www.softwarecraftsperson.com/posts/2012-07-18-static-in-c/</guid>
      <description>&lt;p&gt;Hey, its been a really long time.&lt;br&gt;
I couldn&amp;rsquo;t get my adsense account approved.&lt;br&gt;
It seems I need more content.&lt;br&gt;
If only I spend enough time blogging. Everyone gets busy once in a while. And everyone forgets that they have a blog. Especially ones like mine, where people rarely visit.&lt;br&gt;
Anyways, that&amp;rsquo;s relevant to what I wanted to make note of here.&lt;br&gt;
I was working on a minor change in my company&amp;rsquo;s C++ code base.&lt;br&gt;
Its a simple one for anyone who knows C++. But I don&amp;rsquo;t do much C++. The last time I remember writing real C++ code was during my university days. I mean my bachelors degree. During my masters I worked solely on Java based stuff for my projects and for a coursework, I just opted to do something in ASP .NET, just to get a feel of it.&lt;br&gt;
Coming straight back to the point. Static is an overused keyword. Literally it would mean something that doesn&amp;rsquo;t change. But in C++, this keyword has special meanings, depending on the context it is used.&lt;br&gt;
Static can be used for three purposes.&lt;br&gt;
One use is to have a variable defined that has a lifetime of the whole program. That is once you declare it static and initialize it, then that variable&amp;rsquo;s value can be accessed from anywhere in that program. That variable&amp;rsquo;s allocation is cleared up only when the program closes or quits. And it helps prevent re-initialization. If I were to write something like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/distributed-cache/1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/distributed-cache/1/</guid>
      <description>&lt;h1 id=&#34;foundational-learning&#34;&gt;Foundational learning&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=U3RkDLtS7uY&#34;&gt;https://www.youtube.com/watch?v=U3RkDLtS7uY&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;writing-policies&#34;&gt;Writing policies&lt;/h2&gt;
&lt;p&gt;The order in which data is written to the cache and the persistent data store will affect the performance of the cache.&lt;/p&gt;
&lt;h2 id=&#34;what-happens-if-data-is-written-into-the-cache-first&#34;&gt;What happens if data is written into the cache first?&lt;/h2&gt;
&lt;p&gt;Writing the data in the cache first, means you can then choose to either:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;write synchronously to the persistent datastore and then respond to the client&lt;/li&gt;
&lt;li&gt;write to cache and respond to the client but allow writing to the persistent storage asynchronously&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first approach is called Write-through cache. The implications of this approach is that writes will take longer as both the cache and the database are written to and ensured it is successful before a response is sent to the client.&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/distributed-cache/2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/distributed-cache/2/</guid>
      <description>&lt;h1 id=&#34;high-level-design-of-the-distributed-cache&#34;&gt;High level design of the Distributed Cache&lt;/h1&gt;
&lt;h2 id=&#34;functional-requirements&#34;&gt;Functional requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;insert data into the distributed cache&lt;/li&gt;
&lt;li&gt;retrieve data from the distributed cache&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;nfr&#34;&gt;NFR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Fast retrieval of data - insert and retrieve should be fast&lt;/li&gt;
&lt;li&gt;scalability - distributed cache must be scalable horizontally without bottlenecks&lt;/li&gt;
&lt;li&gt;availability - ensure that there is sufficient redundancy to keep the system highly available.&lt;/li&gt;
&lt;li&gt;Consistency - The same data retrieved from the cache concurrently should be the same.&lt;/li&gt;
&lt;li&gt;Affordability - shouldn&amp;rsquo;t cost the planet&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;api&#34;&gt;API&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;put (key, value)&lt;/li&gt;
&lt;li&gt;get (key)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;design-considerations&#34;&gt;Design considerations&lt;/h2&gt;
&lt;h3 id=&#34;storage-hardware&#34;&gt;Storage hardware&lt;/h3&gt;
&lt;p&gt;Make use of commodity hardware where possible to keep costs relatively low. Large data will demand more shards, hence keeping commodity hardware will enable us to scale efficiently.&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/distributed-cache/3/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/distributed-cache/3/</guid>
      <description>&lt;h1 id=&#34;evaluating-the-design&#34;&gt;Evaluating the design&lt;/h1&gt;
&lt;h3 id=&#34;high-performance&#34;&gt;High performance&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Consistent Hashing results in O(log(N)) complexity where N represents the number of shards&lt;/li&gt;
&lt;li&gt;On a hash server, it takes constant time to retrieve a value using the key O(1)&lt;/li&gt;
&lt;li&gt;for eviction in the linked list&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let&amp;rsquo;s assess the effective access time considering there could be cache hits and misses.&lt;/p&gt;
&lt;p&gt;EAT = Ratio (hit) x Time (hit) +  Ratio(miss) x Time (miss)&lt;/p&gt;
&lt;p&gt;if MFU, we have 10% cache miss and for LRU, 5% cache miss rate&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/distributed-monitoring/1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/distributed-monitoring/1/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;A distributed system is inherently complex and hence when something goes wrong, it is difficult to pinpoint what happened unless there is good level of observability.&lt;/p&gt;
&lt;p&gt;Observability is the ability to understand what is happening in a distributed system by looking at its external outputs - in this context - logs, metrics, traces etc.&lt;/p&gt;
&lt;p&gt;Failures in distributed systems could be attributed to infrastructure - server, network, electrical, etc or due to the application that we care about. One service going down in the system can take down multiple systems across the board if the system is not resilient.&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/distributed-monitoring/2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/distributed-monitoring/2/</guid>
      <description>&lt;h2 id=&#34;requirements&#34;&gt;Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;all critical processes on the servers must be monitored for crashes&lt;/li&gt;
&lt;li&gt;anomalies and overall values in CPU/Memory/Disk/Network bandwidth, average load and so on&lt;/li&gt;
&lt;li&gt;hardware component faults - memory failure, slow disk, cpu heat etc&lt;/li&gt;
&lt;li&gt;network access - server to server comms&lt;/li&gt;
&lt;li&gt;networking components - switches, load balancers, routers, etc&lt;/li&gt;
&lt;li&gt;power consumption at server, rack and data centre level&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;building-blocks&#34;&gt;Building blocks&lt;/h2&gt;
&lt;p&gt;Blob storage - to store info about our metrics!&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://www.softwarecraftsperson.com/courses/system-design/distributed-monitoring/3/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/courses/system-design/distributed-monitoring/3/</guid>
      <description>&lt;h2 id=&#34;client-side-errors&#34;&gt;Client side errors&lt;/h2&gt;
&lt;p&gt;Example of a case where an ISP accidentally released different internet routes. Google customers couldn&amp;rsquo;t reach google in this case. This was a result of a BGP leak. Border gateway protocol is a routing protocol that connects the entire internet. In a LAN, routing is easy, but as the network grows, it gets complicated.&lt;/p&gt;
&lt;p&gt;Thus for routing in the internet, there are special methods. Large organisations and ISPs manage internet connectivity for multipl network sites and locations. Often called Autonomous Systems.&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://www.softwarecraftsperson.com/resume/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.softwarecraftsperson.com/resume/</guid>
      <description>&lt;article class=&#34;jr__item jr-basics__item first-entry home-info&#34;&gt;
        &lt;div class=&#34;profile_inner&#34;&gt;
                &lt;img draggable=&#34;false&#34; src=&#34;https://www.softwarecraftsperson.com/images/eakan.jpg&#34; alt=&#34;Eakan with his pet dog&#34;
                    title=&#34;Eakan with his pet dog&#34; height=&#34;300&#34;
                    width=&#34;300&#34; /&gt;
        &lt;/div&gt;
        &lt;header class=&#34;entry-header&#34;&gt;
            &lt;h2&gt;Eakan Gopalakrishnan&lt;/h2&gt;
        &lt;/header&gt;
        &lt;div class=&#34;entry-content&#34;&gt;
            
            
                
                    &lt;div class=&#34;jr-work__position&#34;&gt;Senior Engineering Leader&lt;/div&gt;
                
                
                    &lt;div class=&#34;jr-work__summary&#34;&gt;An engineering leader with a proven track record of empowering teams to deliver high-quality software solutions. Proficient in building high performing teams, driving technical excellence and delivering value iteratively.&lt;/div&gt;
                
            
        &lt;/div&gt;
        &lt;footer class=&#34;entry-footer&#34;&gt;
            &lt;div class=&#34;social-icons&#34; align=&#34;center&#34;&gt;
    &lt;a href=&#34;https://twitter.com/eakangk&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer me&#34;
        title=&#34;Twitter&#34;&gt;
        &lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34;
    stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
    &lt;path
        d=&#34;M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z&#34;&gt;
    &lt;/path&gt;
&lt;/svg&gt;
    &lt;/a&gt;
    &lt;a href=&#34;https://stackoverflow.com/users/2262959/eakan-gopalakrishnan&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer me&#34;
        title=&#34;Stackoverflow&#34;&gt;
        &lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34;
    stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
    &lt;path
        d=&#34;M2.913 16.041v6.848h17.599v-6.848M7.16 18.696h8.925M7.65 13.937l8.675 1.8M9.214 9.124l8.058 3.758M12.086 4.65l6.849 5.66M15.774 1.111l5.313 7.162&#34; /&gt;
&lt;/svg&gt;
    &lt;/a&gt;
    &lt;a href=&#34;https://github.com/lonelydev&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer me&#34;
        title=&#34;Github&#34;&gt;
        &lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34;
    stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
    &lt;path
        d=&#34;M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22&#34;&gt;
    &lt;/path&gt;
&lt;/svg&gt;
    &lt;/a&gt;
    &lt;a href=&#34;https://www.linkedin.com/in/eakangk&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer me&#34;
        title=&#34;Linkedin&#34;&gt;
        &lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34;
    stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
    &lt;path d=&#34;M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z&#34;&gt;&lt;/path&gt;
    &lt;rect x=&#34;2&#34; y=&#34;9&#34; width=&#34;4&#34; height=&#34;12&#34;&gt;&lt;/rect&gt;
    &lt;circle cx=&#34;4&#34; cy=&#34;4&#34; r=&#34;2&#34;&gt;&lt;/circle&gt;
&lt;/svg&gt;
    &lt;/a&gt;
    &lt;a href=&#34;https://instagram.com/ekky.in.transit&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer me&#34;
        title=&#34;Instagram&#34;&gt;
        &lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34;
    stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
    &lt;rect x=&#34;2&#34; y=&#34;2&#34; width=&#34;20&#34; height=&#34;20&#34; rx=&#34;5&#34; ry=&#34;5&#34;&gt;&lt;/rect&gt;
    &lt;path d=&#34;M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z&#34;&gt;&lt;/path&gt;
    &lt;line x1=&#34;17.5&#34; y1=&#34;6.5&#34; x2=&#34;17.5&#34; y2=&#34;6.5&#34;&gt;&lt;/line&gt;
&lt;/svg&gt;
    &lt;/a&gt;
    &lt;a href=&#34;https://flickr.com/eakangk&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer me&#34;
        title=&#34;Flickr&#34;&gt;
        &lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34;&gt;
    &lt;path
        d=&#34;M5.334 6.666C2.3884 6.666 0 9.055 0 12c0 2.9456 2.3884 5.334 5.334 5.334 2.9456 0 5.332-2.3884 5.332-5.334 0-2.945-2.3864-5.334-5.332-5.334zm13.332 0c-2.9456 0-5.332 2.389-5.332 5.334 0 2.9456 2.3864 5.334 5.332 5.334C21.6116 17.334 24 14.9456 24 12c0-2.945-2.3884-5.334-5.334-5.334Z&#34; /&gt;
&lt;/svg&gt;
    &lt;/a&gt;
    &lt;a href=&#34;https://www.goodreads.com/user/show/60827212-eakan-gopalakrishnan&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer me&#34;
        title=&#34;Goodreads&#34;&gt;
        &lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34;&gt;
    &lt;path
        d=&#34;M11.43 23.995c-3.608-.208-6.274-2.077-6.448-5.078.695.007 1.375-.013 2.07-.006.224 1.342 1.065 2.43 2.683 3.026 1.583.496 3.737.46 5.082-.174 1.351-.636 2.145-1.822 2.503-3.577.212-1.042.236-1.734.231-2.92l-.005-1.631h-.059c-1.245 2.564-3.315 3.53-5.59 3.475-5.74-.054-7.68-4.534-7.528-8.606.01-5.241 3.22-8.537 7.557-8.495 2.354-.14 4.605 1.362 5.554 3.37l.059.002.002-2.918 2.099.004-.002 15.717c-.193 7.04-4.376 7.89-8.209 7.811zm6.1-15.633c-.096-3.26-1.601-6.62-5.503-6.645-3.954-.017-5.625 3.592-5.604 6.85-.013 3.439 1.643 6.305 4.703 6.762 4.532.591 6.551-3.411 6.404-6.967z&#34; /&gt;
&lt;/svg&gt;
    &lt;/a&gt;
    &lt;a href=&#34;https://www.buymeacoffee.com/swcraftsperson&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer me&#34;
        title=&#34;Buymeacoffee&#34;&gt;
        &lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 884 1279&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34;&gt;
    &lt;path d=&#34;M791.109 297.518L790.231 297.002L788.201 296.383C789.018 297.072 790.04 297.472 791.109 297.518Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path d=&#34;M803.896 388.891L802.916 389.166L803.896 388.891Z&#34; fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path
        d=&#34;M791.484 297.377C791.359 297.361 791.237 297.332 791.118 297.29C791.111 297.371 791.111 297.453 791.118 297.534C791.252 297.516 791.379 297.462 791.484 297.377Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path d=&#34;M791.113 297.529H791.244V297.447L791.113 297.529Z&#34; fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path
        d=&#34;M803.111 388.726L804.591 387.883L805.142 387.573L805.641 387.04C804.702 387.444 803.846 388.016 803.111 388.726Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path d=&#34;M793.669 299.515L792.223 298.138L791.243 297.605C791.77 298.535 792.641 299.221 793.669 299.515Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path
        d=&#34;M430.019 1186.18C428.864 1186.68 427.852 1187.46 427.076 1188.45L427.988 1187.87C428.608 1187.3 429.485 1186.63 430.019 1186.18Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path
        d=&#34;M641.187 1144.63C641.187 1143.33 640.551 1143.57 640.705 1148.21C640.705 1147.84 640.86 1147.46 640.929 1147.1C641.015 1146.27 641.084 1145.46 641.187 1144.63Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path
        d=&#34;M619.284 1186.18C618.129 1186.68 617.118 1187.46 616.342 1188.45L617.254 1187.87C617.873 1187.3 618.751 1186.63 619.284 1186.18Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path
        d=&#34;M281.304 1196.06C280.427 1195.3 279.354 1194.8 278.207 1194.61C279.136 1195.06 280.065 1195.51 280.684 1195.85L281.304 1196.06Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path
        d=&#34;M247.841 1164.01C247.704 1162.66 247.288 1161.35 246.619 1160.16C247.093 1161.39 247.489 1162.66 247.806 1163.94L247.841 1164.01Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path
        d=&#34;M472.623 590.836C426.682 610.503 374.546 632.802 306.976 632.802C278.71 632.746 250.58 628.868 223.353 621.274L270.086 1101.08C271.74 1121.13 280.876 1139.83 295.679 1153.46C310.482 1167.09 329.87 1174.65 349.992 1174.65C349.992 1174.65 416.254 1178.09 438.365 1178.09C462.161 1178.09 533.516 1174.65 533.516 1174.65C553.636 1174.65 573.019 1167.08 587.819 1153.45C602.619 1139.82 611.752 1121.13 613.406 1101.08L663.459 570.876C641.091 563.237 618.516 558.161 593.068 558.161C549.054 558.144 513.591 573.303 472.623 590.836Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path d=&#34;M78.6885 386.132L79.4799 386.872L79.9962 387.182C79.5987 386.787 79.1603 386.435 78.6885 386.132Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
    &lt;path
        d=&#34;M879.567 341.849L872.53 306.352C866.215 274.503 851.882 244.409 819.19 232.898C808.711 229.215 796.821 227.633 788.786 220.01C780.751 212.388 778.376 200.55 776.518 189.572C773.076 169.423 769.842 149.257 766.314 129.143C763.269 111.85 760.86 92.4243 752.928 76.56C742.604 55.2584 721.182 42.8009 699.88 34.559C688.965 30.4844 677.826 27.0375 666.517 24.2352C613.297 10.1947 557.342 5.03277 502.591 2.09047C436.875 -1.53577 370.983 -0.443234 305.422 5.35968C256.625 9.79894 205.229 15.1674 158.858 32.0469C141.91 38.224 124.445 45.6399 111.558 58.7341C95.7448 74.8221 90.5829 99.7026 102.128 119.765C110.336 134.012 124.239 144.078 138.985 150.737C158.192 159.317 178.251 165.846 198.829 170.215C256.126 182.879 315.471 187.851 374.007 189.968C438.887 192.586 503.87 190.464 568.44 183.618C584.408 181.863 600.347 179.758 616.257 177.304C634.995 174.43 647.022 149.928 641.499 132.859C634.891 112.453 617.134 104.538 597.055 107.618C594.095 108.082 591.153 108.512 588.193 108.942L586.06 109.252C579.257 110.113 572.455 110.915 565.653 111.661C551.601 113.175 537.515 114.414 523.394 115.378C491.768 117.58 460.057 118.595 428.363 118.647C397.219 118.647 366.058 117.769 334.983 115.722C320.805 114.793 306.661 113.611 292.552 112.177C286.134 111.506 279.733 110.801 273.333 110.009L267.241 109.235L265.917 109.046L259.602 108.134C246.697 106.189 233.792 103.953 221.025 101.251C219.737 100.965 218.584 100.249 217.758 99.2193C216.932 98.1901 216.482 96.9099 216.482 95.5903C216.482 94.2706 216.932 92.9904 217.758 91.9612C218.584 90.9319 219.737 90.2152 221.025 89.9293H221.266C232.33 87.5721 243.479 85.5589 254.663 83.8038C258.392 83.2188 262.131 82.6453 265.882 82.0832H265.985C272.988 81.6186 280.026 80.3625 286.994 79.5366C347.624 73.2301 408.614 71.0801 469.538 73.1014C499.115 73.9618 528.676 75.6996 558.116 78.6935C564.448 79.3474 570.746 80.0357 577.043 80.8099C579.452 81.1025 581.878 81.4465 584.305 81.7391L589.191 82.4445C603.438 84.5667 617.61 87.1419 631.708 90.1703C652.597 94.7128 679.422 96.1925 688.713 119.077C691.673 126.338 693.015 134.408 694.649 142.03L696.732 151.752C696.786 151.926 696.826 152.105 696.852 152.285C701.773 175.227 706.7 198.169 711.632 221.111C711.994 222.806 712.002 224.557 711.657 226.255C711.312 227.954 710.621 229.562 709.626 230.982C708.632 232.401 707.355 233.6 705.877 234.504C704.398 235.408 702.75 235.997 701.033 236.236H700.895L697.884 236.649L694.908 237.044C685.478 238.272 676.038 239.419 666.586 240.486C647.968 242.608 629.322 244.443 610.648 245.992C573.539 249.077 536.356 251.102 499.098 252.066C480.114 252.57 461.135 252.806 442.162 252.771C366.643 252.712 291.189 248.322 216.173 239.625C208.051 238.662 199.93 237.629 191.808 236.58C198.106 237.389 187.231 235.96 185.029 235.651C179.867 234.928 174.705 234.177 169.543 233.397C152.216 230.798 134.993 227.598 117.7 224.793C96.7944 221.352 76.8005 223.073 57.8906 233.397C42.3685 241.891 29.8055 254.916 21.8776 270.735C13.7217 287.597 11.2956 305.956 7.64786 324.075C4.00009 342.193 -1.67805 361.688 0.472751 380.288C5.10128 420.431 33.165 453.054 73.5313 460.35C111.506 467.232 149.687 472.807 187.971 477.556C338.361 495.975 490.294 498.178 641.155 484.129C653.44 482.982 665.708 481.732 677.959 480.378C681.786 479.958 685.658 480.398 689.292 481.668C692.926 482.938 696.23 485.005 698.962 487.717C701.694 490.429 703.784 493.718 705.08 497.342C706.377 500.967 706.846 504.836 706.453 508.665L702.633 545.797C694.936 620.828 687.239 695.854 679.542 770.874C671.513 849.657 663.431 928.434 655.298 1007.2C653.004 1029.39 650.71 1051.57 648.416 1073.74C646.213 1095.58 645.904 1118.1 641.757 1139.68C635.218 1173.61 612.248 1194.45 578.73 1202.07C548.022 1209.06 516.652 1212.73 485.161 1213.01C450.249 1213.2 415.355 1211.65 380.443 1211.84C343.173 1212.05 297.525 1208.61 268.756 1180.87C243.479 1156.51 239.986 1118.36 236.545 1085.37C231.957 1041.7 227.409 998.039 222.9 954.381L197.607 711.615L181.244 554.538C180.968 551.94 180.693 549.376 180.435 546.76C178.473 528.023 165.207 509.681 144.301 510.627C126.407 511.418 106.069 526.629 108.168 546.76L120.298 663.214L145.385 904.104C152.532 972.528 159.661 1040.96 166.773 1109.41C168.15 1122.52 169.44 1135.67 170.885 1148.78C178.749 1220.43 233.465 1259.04 301.224 1269.91C340.799 1276.28 381.337 1277.59 421.497 1278.24C472.979 1279.07 524.977 1281.05 575.615 1271.72C650.653 1257.95 706.952 1207.85 714.987 1130.13C717.282 1107.69 719.576 1085.25 721.87 1062.8C729.498 988.559 737.115 914.313 744.72 840.061L769.601 597.451L781.009 486.263C781.577 480.749 783.905 475.565 787.649 471.478C791.392 467.391 796.352 464.617 801.794 463.567C823.25 459.386 843.761 452.245 859.023 435.916C883.318 409.918 888.153 376.021 879.567 341.849ZM72.4301 365.835C72.757 365.68 72.1548 368.484 71.8967 369.792C71.8451 367.813 71.9483 366.058 72.4301 365.835ZM74.5121 381.94C74.6842 381.819 75.2003 382.508 75.7337 383.334C74.925 382.576 74.4089 382.009 74.4949 381.94H74.5121ZM76.5597 384.641C77.2996 385.897 77.6953 386.689 76.5597 384.641V384.641ZM80.672 387.979H80.7752C80.7752 388.1 80.9645 388.22 81.0333 388.341C80.9192 388.208 80.7925 388.087 80.6548 387.979H80.672ZM800.796 382.989C793.088 390.319 781.473 393.726 769.996 395.43C641.292 414.529 510.713 424.199 380.597 419.932C287.476 416.749 195.336 406.407 103.144 393.382C94.1102 392.109 84.3197 390.457 78.1082 383.798C66.4078 371.237 72.1548 345.944 75.2003 330.768C77.9878 316.865 83.3218 298.334 99.8572 296.355C125.667 293.327 155.64 304.218 181.175 308.09C211.917 312.781 242.774 316.538 273.745 319.36C405.925 331.405 540.325 329.529 671.92 311.91C695.906 308.686 719.805 304.941 743.619 300.674C764.835 296.871 788.356 289.731 801.175 311.703C809.967 326.673 811.137 346.701 809.778 363.615C809.359 370.984 806.139 377.915 800.779 382.989H800.796Z&#34;
        fill=&#34;currentColor&#34;&gt;&lt;/path&gt;
&lt;/svg&gt;
    &lt;/a&gt;
&lt;/div&gt;

        &lt;/footer&gt;
    &lt;/article&gt;


&lt;a href=&#34;https://www.softwarecraftsperson.com/download/eakan-g-2-col-resume.pdf&#34; class=&#34;download-button right-aligned&#34; title=&#34;Download a PDF version of this CV&#34; download=&#34;&#34;&gt;
    &lt;i data-feather=&#34;download&#34;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;h3 id=&#34;technologist-professional-experience&#34;&gt;&amp;#x1f9d1;&amp;zwj;&amp;#x1f4bb; Professional Experience&lt;/h3&gt;



  &lt;div class=&#34;jr__list jr-work__list&#34;&gt;
    
      &lt;div class=&#34;jr__item jr-work__item&#34;&gt;
        &lt;div class=&#34;jr__item-meta collapsible&#34;&gt;
          &lt;div class=&#34;jr-work__position&#34;&gt;Senior Engineering Manager&lt;/div&gt;
          &lt;div class=&#34;jr__date-range&#34;&gt;
    &lt;span&gt;2025-07-15&lt;/span&gt;
    &lt;span&gt;-&lt;/span&gt;
    &lt;span&gt;Present&lt;/span&gt;
  &lt;/div&gt;
          
            &lt;div class=&#34;jr-work__name&#34;&gt;
              
                
                  &lt;a href=&#34;https://www.kaluza.com/&#34;&gt;
                    Kaluza
                  &lt;/a&gt;
                
              
            &lt;/div&gt;
            &lt;div class=&#34;jr-work__description&#34;&gt;
              
                &lt;span &gt;An intelligent retail energy platform powering the future of energy.&lt;/span&gt;
              
            &lt;/div&gt;
          

          
            &lt;div class=&#34;jr-work__location&#34;&gt;London, United Kingdom&lt;/div&gt;
          

          
            &lt;p class=&#34;jr-work__summary&#34;&gt;Orchestrated the rapid scaling of software engineering teams for delivering Energy Commerce capabilities.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
