Tuesday, 19 May 2026

AI infiltrates Development Segments so quickly

A decade ago, the companies that used Agile processes along these lines built the best software using CI/CD, and Automated Testing were the big winners. 


5 Years ago, low-code and platforms provided governance and faster ways to build apps.

We are seeing AI coming into all 6 steps, and low code is optional; it still offers good governance for businesses.


Test
Was: Unit Tests, Postman, Spec Flow, Selenium 
Becoming: Postman, MCP, Unit test generation

Deploy
Was: Scripts, PowerShell, TeamCity, Ansible, ARM, Portal UIs, TFS, Git, Terraform, Pulumi
Becoming: BICEP, MCP, VS Code/IDEs, GitHub, Claude CLI, GitHub Copilot

Code
Was: Java, C#, NodeJS, SDKs, RUST, GO APIs, Low-code/No-code
Becoming: Python, TypeScript, Power Platform, Agents

Saturday, 9 May 2026

Key Anthropic terminology for Ai (and Claude)

Overview: I have found that many people don't understand what Anthropic and Claude do, how they relate to each other, or how they fit into the AI industry.


The key takeaway is that Claude has two main parts: Tooling (e.g., Claude AI chat, Claude code, and Claude Cowork), and models for AI. The main product lines for these LLMs are Opus, Sonnet, and Haiku.

Saturday, 25 April 2026

VSCode with Claude Code or GitHup Copilot

Overview: I have seen people really struggling with understanding that Claude is not GitHub Copilot (GHCP).  And GitHub Copilot is not an LLM. 

Terminology

Claude by Anthropic is made up of various parts, and it helps to be more specific.  Calusde is amazing at providing great Large Language Models (LLMs).  There are Claude Opus (for programming the lastest us 4.7), Claud Sonnet, and Claude Haiku.  GPT-5.4 is OpenAI's current flagship LLM.  Gemini 3.1 Pro is known for UI-focused coding. I found Gemini 3.0 good, but I don't use it that often.   

Claude also offers other services beyond supplying LLMs like Claude Code and Claude CLI.  These are the key ones for me:

  • Claude in Chrome — a browsing agent
  • Cowork — a desktop tool for non-developers to automate file and task management, rival to Microsoft 365 Copilot.
  • GitHub Copilot for VS Code is the equivalent of Claude Code for VS Code

    Developing in VS Code:

    In the screen below, I am using both Claude Code and GitHub Copilot in the VS Code IDE.

    Here I have some C# code that creates and deploys an Azure Function. I can use either option until I run out of credits with my monthly (GHCP) or hourly (Claude) subscription allowance.  When I go over my GHCP allowance, I have it set up to use my Azure Credits.

    Wednesday, 22 April 2026

    Copilot Studio Custom Agent SharePoint Channel unexpected behaviour

    Overview: I have been using Copilot Studio for production solutions for a few weeks now, and I am impressed.  I pushed my fist Copilot Studio custom agent from using ALM into QA and Production, where I finished the iteration a week ago.  My boss was looking at the Agent in SharePoint and identified a bug with uploading files and using them.

    Anyway, I tested the scenario in other channels and in the Test area without issue.  In SharePoint, a Custom Copilot Agent can't upload a file to work with OOTB.






    Sunday, 15 March 2026

    Chess, I mean IT for beginners

    Medium- and large-sized IT projects often run into trouble at various points.  This analogy has helped me keep projects online and delivered, so I thought I'd share.

    Firstly, for those who don't know in depth about chess strategy, it generally goes something like this: 

    Opening, Middle and Endgame is how to break down a chess game.

    Chess Cheat Sheet for Beginners

    Opening Principles

    • Control the center: Aim for squares e4, d4, e5, d5.
    • Develop pieces early: Knights and bishops out before moving the same piece twice.
    • Don’t bring your queen out too soon: Avoid early queen moves.
    • Castle early: Protect your king and connect rooks.

    Middle Game Tips

    • Coordinate pieces: Make them work together.
    • Avoid unnecessary pawn moves: Pawns can’t move back.
    • Look for tactics: Pins, forks, skewers, discovered attacks.

    Endgame Basics

    • Activate your king: It becomes powerful in endgames.
    • Push passed pawns: They’re your winning ticket.
    • Rooks behind passed pawns: Classic endgame rule.

    General Rules

    • Every move should have a purpose.
    • Don’t sacrifice without clear compensation.
    • The threat can be more serious than the execution.
    As an Analogy, I find this extremely useful for getting all stakeholders working together and understanding how to do so.

    MVP cost balloons when “nice‑to‑haves” silently become “required”.  Not relatable to chess, except it is key, what are we doing in the Min viable Prod and why?  Think of it more like recon for the battle, learn, don't try to win it.

    Sunday, 15 February 2026

    Entra ID App Registrations

    Overview: MS Graph and OAuth permissions must be assigned via Entra ID (IdP) App Registrations.

    App registration - is the definition of an app (API permissions it exposes, scopes, app roles, redirect URIs, etc.).

    Enterprise Application (Service principal) - the instance of that app in the Entra tenant, created after consent is granted.

    Consent is granted to an Enterprise Application instance/service principal, not by an app registration.

    Steps to Set up MS Graph Access for SharePoint Online (Site Collection Level Access)

    1. Register a new App Reg in Entra ID


    2. Add the MS Graph API Permission: Sites.Selected Delegated

    3. Using PowerShell 7, install the Pnp.PowerShell module and connect to PnPOnline

    PS> Install-Module PnP.PowerShell -Scope CurrentUser

    PS> Connect-PnPOnline -Url https://radimaging.sharepoint.com/sites/Contracts  -ClientID <xxx-xxx> -Interactive

     
    4. Assign the new App Registration to your SharePoint site, and you will need Site Collection Admin.

    PS> Grant-PnPAzureADAppSitePermission  -AppId "8f468b7c-9APP-YOU-WANT-TO-GRANT"   -DisplayName "My App"  -Site "https://<tenant>.sharepoint.com/sites/<site>" -Permissions Write

    Tip: You may want "Read" instead of "Write" permissions or another higher level.

    5. When you access the Site for the first time, you will be asked to provide consent (the administrator can also consent on behalf of business users).

    6. Verify that within Portal.azure.com > Enta ID > Manage > Enterprise Applications (find the app reg that has been consented to)

    7. Connect to the site using Postman or any client to verify you have the access you need.







    Thursday, 22 January 2026

    GitHub Copilot (GHCP) for VS Code - Notes

    I’m a big fan of using GitHub Copilot with VS Code. Right now, my preferred LLM is Claude Opus 4.5 — it’s so good.

    Anyway, these are my notes and findings for using GHCP:

    Custom Agents are built for a specific role or working style. You select an agent when you want Copilot to follow a particular set of instructions and use dedicated tools tailored to that job.

    Agent Skills, on the other hand, are reusable capabilities. They bundle instructions, scripts, and resources that Copilot can automatically draw on whenever they’re relevant—no need for you to choose or switch anything manually.

    Tuesday, 20 January 2026

    App Insights for Power Platform - Part 12 - A fix story

    Overview: My system notified me that my production errors were going crazy.  Quickly I knew all the tenants at my largest customer were down.  

    Problem: Apps would load and stay in a loading state.  I could see the Canvas apps but that is where is would continue try to load.  

    Initial Hypothesis: Originally, I thought is was 1 environment and I know it was loading a SharePoint list so i thought it may be permissions, but it was on all my environments and my continuous test was picking them all up.

    I checked the Microsoft Services and all the services are working: https://azure.status.microsoft/en-gb/status

    I went to QA and Dev and they were also failing with the same issue.  I ran the Canvas app in debug mode and could see the error was relating to Connectors to the European APIM for Dataverse.

    Next I went to other environments on my client in other regions, they too were also failing.  I was a bit surprised as I wasn't getting any feedback from other clients, or feeds, so i logged onto my own company Power Platform tenant and in environments, they were working.  So this was only to this specific client. And now I knew the extent, and i could not run flows only on the client environments.

    Here are the CI test report and results for a subset of the apps on the business units production environment.

    Ran a test to check a single Production department Environment with 24 Canvas apps:

    Simple test: runs on 3 worker processes on a single browser engine chromium.

    Reports logs show all 8 of these sites are not working

    All 8 tests were not finding the Title of the page.  I log from Playwright and from Canvas apps using App Insight traces, the error was supper easy to pickup even without the Power Platform trace in the Dev environment.

    Resolution: Raise a ticket, tell MS that we had the issue and provide the info (not raised by me, but by a support engineer).  30 minutes later, the company has been advised to close the browsers and try again.  Did this manually and issue resolved.

    I still had the old token for SPO in Playwright for Chromium, so I ran the test on for all 3 browser engines.  Chromium fails with the old token, Firefox and webkit pass as they grabbed new login tokens.
    Success: Same test using webkit browser engine - working as they have a new SPO Bearer token.


    If I find out what cause the issue, I'll post what MS did and found out.  


    Useful Dashboards I used:


















    Portal.azure.com OOTB App Insights Url to retrieve an OperationIDs' history
    https://portal.azure.com/#blade/HubsExtension/BladeRedirect/bladeName/Microsoft_Azure_LogicAppsRunBlade/
    runId/<OPERATION_ID>/ logicAppName/<LOGIC_APP_NAME>/ resourceGroupId/%2Fsubscriptions%2F<SUBSCRIPTION_ID>
    %2FresourceGroups%2F<RESOURCE_GROUP_NAME>%2Fproviders%2FMicrosoft.Logic%2Fworkflows%2F<LOGIC_APP_NAME>



    Series

    App Insights for Power Platform - Part 1 - Series Overview 

    App Insights for Power Platform - Part 2 - App Insights and Azure Log Analytics 

    App Insights for Power Platform - Part 3 - Canvas App Logging (Instrumentation key)

    App Insights for Power Platform - Part 4 - Model App Logging

    App Insights for Power Platform - Part 5 - Logging for APIM 

    App Insights for Power Platform - Part 6 - Power Automate Logging

    App Insights for Power Platform - Part 7 - Monitoring Azure Dashboards 

    App Insights for Power Platform - Part 8 - Verify logging is going to the correct Log analytics

    App Insights for Power Platform - Part 9 - Power Automate Licencing

    App Insights for Power Platform - Part 10 - Custom Connector enable logging

    App Insights for Power Platform - Part 11 - Custom Connector Behaviour from Canvas Apps Concern 

    App Insights for Power Platform - Part 12 - A fix story (this post)


    Thursday, 15 January 2026

    MS Fabric - Storage underpinning

     Microsoft Fabric get all its data from OneLake.  I believe all storage, except Real Time Intelligence (RTI), uses OneLake to ensure there is only one copy of the data.


    Left side of the diagram/Data sources:

    Any data source - copy data from any source into a Lakehouse, and the Parquet and Delta is stored in OneLake and exposed via the Catalog Layer

    Mirroring: Some data sources are mirrored into OneLake Parquet, including Snowflake, PostgreSQL, and Azure SQL 2025. 

    MS Fabric SQL is part of Fabric, and the SQL database is mirrored into OneLake.

    Shortcuts - 3rd party software holds the parquet* data and allows MS Fabric to query the data.   

    Sunday, 11 January 2026

    Working with Snowflake and MS Fabric

    Overview: Snowflake covers a small area of what Fabric does.  But Snowflake cover it's area unbelievably well.  For large enterprises use these together even though there is some overlap, Snowflake is great at what it does! 

    Five ways to use Snowflake data in Fabric: 

    1. ETL - use Data Factory or an ETL tool to copy data from Snowflake to Fabrics OneLake (point in time copy).  This should be your last option. 

    2. Direct query (no copy) - Fabric compute (Power BI, Notebooks, Dataflows, Pipelines) runs queries directly against Snowflake’s SQL endpoint. Best when you want zero‑copy and Snowflake stays the system of record.

    3. Mirroring (copy + sync) - Fabric mirrors a Snowflake database using CDC into OneLake so Fabric can work locally with governed, accelerated data while staying synced with Snowflake.  Good for small and commonly accessed data. 

    4. Shortcut to Snowflake‑hosted Iceberg (no data copy) - Fabric creates a Shortcut (virtual pointer) to Iceberg tables stored with Snowflake, so Fabric tools read them without moving data.

    5. Snowflake writes Iceberg to OneLake - Like option 3 but Snowflake handle the outbound - Snowflake materializes Iceberg tables into a OneLake location; Fabric then reads them natively (open‑format interop).

    Reference:
    Greg Beaumont's Architecture blog - Fantastic stuff! 

    Saturday, 10 January 2026

    SharePoint AI new features

     SharePoint has added some great AI components when coupled with M365 Copilot.  We have had this for a few weeks in GA:

    The Summarize feature is fantastic:

    • It works well in Word and Excel and is okay in PPTX files.
    • It processes images using OCR and AI to interpret them and generate a summary.
    • It works with PDFs/Adobe documents, including text with embedded images and image-based PDFs.  Pdf-A also.

    There is no MS Graph API yet for this functionality, so I used Playwright to scrape the summaries and add them to a summary metadata field.  I came across Knowledge Agent, which is in public preview, and it is fantastic.  

    Knowledge Agent (for SharePoint online if you have a M365 Copilot licence): 

    Knowledge Agent in the SPO UI

    If you need it enabled, as a SharePoint Admistrator you need to enable it using PowerShell.

    Generate metadata using your existing files and metadata as the example shows below: