Nothing matches your search.
All articles
- Development & automation
Before Design Patterns: How Software Engineering Learned to Manage Complexity
From Lovelace's Notes of 1843 to Brooks's essay of 1986, each advance in programming removed a difficulty of the tools and left the difficulty of the problem. One pricing routine, written three ways with identical output, shows what structure and names buy and what they do not.
Keep reading → - Development & automation
Structured Programming, Modularity and Information Hiding
Structured control flow, procedures, modules, information hiding, coupling, cohesion and separation of concerns are separate ideas from separate authors. The same pricing rules, cut as functions and then as modules, show what Parnas's criterion localises and what it does not.
Keep reading → - Development & automation
Object-Oriented Programming: Origins, Promises and Trade-offs
Object orientation is several mechanisms with separate origins: Simula's subclasses, abstract data types, Smalltalk's messaging. One pricing example shows what encapsulation and an interface buy, what they cost, and when functions over plain data stay the better design.
Keep reading → - Development & automation
The Gang of Four: 23 Design Patterns and the Problems They Solve
The 23 patterns of the 1994 book, each as a problem, a shape, a cost and its modern C# form, in one pricing example. Most are a single move, an interface placed where something varies, and the example needed only one of them.
Keep reading → - Development & automation
SOLID, Coupling, Cohesion and Dependency Inversion
Coupling and cohesion are the criteria; the five SOLID principles are later heuristics with separate origins in Meyer, Liskov and Martin. One pricing calculator shows what each buys and costs, and why dependency inversion, dependency injection and a container are three different things.
Keep reading → - Development & automation
Refactoring: Improving Design Without Changing Behaviour
Refactoring changes structure against a recorded definition of behaviour, in steps small enough to check. One legacy pricing method is pinned by characterisation tests, reshaped in seven steps, and the tests themselves are proved able to fail.
Keep reading → - Development & automation
From Design Patterns to Domain-Driven Design and Modern Architecture
Domain-driven design, ports and adapters, the onion and the clean architecture share one rule: the business rules refer to nothing else. The pricing example gains a domain model and a tested boundary, and needs 22 types where one class did.
Keep reading → - Development & automation
Do We Still Need Gang of Four Patterns in Modern C# and .NET?
All 23 patterns set against C# 14 and .NET 10: eleven have a shorter form in the example, built from a language or platform feature, and twelve do not. The problems remain in every case, and each modern form has a failure of its own.
Keep reading → - Governance & security
Automatic external forwarding in Exchange Online: three controls, and one value that tells you nothing
Whether mail can leave a Microsoft 365 organisation by automatic forwarding is decided by three separate controls, and the default value of the first one means On in some tenants and Off in others. How to read each control with PowerShell, how to find the mailboxes that forward today, and how to block forwarding with named exceptions.
Keep reading → - Azure & Cloud
Azure Functions timer triggers that run late, twice or not at all, and how to prove a run
A timer-triggered function has no caller to notice when it does not run. This article sets out what Microsoft documents about schedules, time zones, missed occurrences and retries, and shows how to prove each run, and each absence, in Application Insights.
Keep reading → - Governance & security
Giving an application access to specific SharePoint sites with Sites.Selected
An application needs one SharePoint site and the request on the table is Sites.Read.All or Sites.FullControl.All for the whole tenant. This article sets out what Sites.Selected grants on its own, who can create the per-site grant, the Microsoft Graph and PnP PowerShell calls that create, list and remove it, and where the documentation stops.
Keep reading → - Development & automation
Reading a SharePoint list with more than 5,000 items without hitting the list view threshold
A script or view that worked for years fails once a list passes 5,000 items, even when the filter matches a handful of rows. This article establishes what the list view threshold measures, where it can and cannot be changed, and how to page through a large list with PnP PowerShell, REST and Microsoft Graph.
Keep reading → - Development & automation
The green test that measured nothing
A test suite can be green because the system works, or green because the test points at nothing. We collected our own specimens: a suite verifying a build nobody shipped, a read-only gate over a collector that could not load, a published guarantee table that never executed, a pinned assertion that was a fossil of a bug, and a suite that proved every rule and never ran the handler. Each one with the code, and the one-line question that catches all five.
Keep reading → - Development & automation
Developing for SharePoint Server Subscription Edition: the practices that hold up
Subscription Edition is supported until at least 2035 and its SharePoint Framework ceiling has not moved since 2023. That combination is the whole job: a long runway on an older stack. This is how to build on it well, with code that runs on the version your farm actually accepts.
Keep reading → - Migrations
SharePoint 2016, 2019, Subscription Edition and Online: what actually changes
2016 and 2019 both left support on 14 July 2026. Subscription Edition has no end date and cannot be bought outright. Online has features the others do not have, and Subscription Edition has two that are no longer a simple no. A practical comparison, with the licensing that decides it.
Keep reading → - Migrations
Migrating SharePoint 2016 and 2019 to Subscription Edition: the scripts
SharePoint 2016 goes straight to Subscription Edition. There is no hop through 2019, the method is database attach and nothing else, and the order of the service applications is not a preference. The sequence in PowerShell, from the inventory you take before touching anything to the checks you run before anyone is let in.
Keep reading → - AI & agents
A Copilot agent manifest is a security boundary. Here is the linter for it.
Every scoping property in a Microsoft 365 Copilot agent manifest is optional, and in six places omitting one grants the widest scope instead of the narrowest. A JSON Schema validator approves those manifests, because nothing in them is invalid: something optional is missing. So we wrote the check that does catch it. It finds six problems in a manifest that passes every other test.
Keep reading → - Development & automation
SPFx before version 1.0: our web parts in the official Microsoft samples
The SharePoint Framework developer preview came out in August 2016. Version 1.0 arrived in February 2017. Our first contribution to the official Microsoft 365 samples repository is dated October 2016, five months before there was a 1.0 to build against. Four of our web parts are in that repository today, and this is what each of them is for.
Keep reading → - AI & agents
Can your AI assistant read documents the user cannot see?
A badly built RAG searches with the application's identity, not the asker's, and the assistant answers with what the person should not see. The fix is not a filter someone can forget to write: it is passing the user's token and letting Azure AI Search enforce permissions inside the engine.
Keep reading → - Development & automation
SPFx 1.23.2: upgrading is not changing a number
The previous version was pulled from npm for regressions, and that is the warning: the risk of upgrading the SharePoint Framework is almost never in the SharePoint runtime, it is in the build. What changed in Heft, in Sass and in npm audit, with the code showing how it was, how it is, and how it will be.
Keep reading → - Microsoft 365 & SharePoint
Windows 10 has ended: Windows 11 is the minimum, not the plan
Support ended in October 2025. Whether a fleet is already on Windows 11, paying for Extended Security Updates, or simply exposed, the decision underneath is the same: swap the PCs, or use the forced move to modernise the workplace behind them. This is the how, with the Intune, Autopilot and Azure commands, and the reason the same Windows 10 is free to keep alive in the cloud.
Keep reading → - Governance & security
A cookie banner you can prove, with Azure Tables and Functions
The banner you copy from a vendor can itself be a tracker. Build your own instead, with no third parties, and the hard part turns out not to be the banner: it is keeping the proof that the person consented. Here is all of it, from the browser to the Azure Table, step by step.
Keep reading → - Development & automation
Sending email from an application, without a single password
Microsoft turned off SMTP with a password. The answer is not to store a better secret: it is to store no secret at all. Managed identity, Microsoft Graph, and Mail.Send tied to a group of mailboxes. Here is the whole configuration, mistakes included.
Keep reading →
Categories
- Keep reading →
AI & agents
6 - Keep reading →
Azure & Cloud
4 - Keep reading →
Company
1 - Keep reading →
Development & automation
24 - Keep reading →
Governance & security
8 - Keep reading →
Microsoft 365 & SharePoint
3 - Keep reading →
Migrations
5
Send us a message
or write to hello@ph7x.com