Writing
2026
-
Turning WSO2 Identity Server's SCIM 2.0 APIs into a governed MCP server with the WSO2 AI Gateway
How to expose the SCIM 2.0 APIs of WSO2 Identity Server 7.3 as an MCP server, secure it with Identity Server's own tokens at the WSO2 AI Gateway, and let Claude Desktop manage users and groups.
-
mcp-remote Crashed When the OAuth Port Was Taken, Here's How I Fixed It
An open source contribution to mcp-remote: recovering from EADDRINUSE on the OAuth callback port without silently breaking the registered redirect_uri.
-
Business Rules Don't Have to Live in a Wiki Page: Enforcing Them with a Roslyn Analyzer
A business rule that lived only in developers' memory, pushed down into the compiler with a .NET Roslyn analyzer that warns on every rule violation
-
How the Upcoming MCP Auth Spec Tightens Up (PKCE Won't Save You)
The 2026-07-28 MCP authorization release candidate brings six hardening and interoperability fixes: issuer validation, per-issuer credentials, refresh token guidance, and more. Explained in plain terms.
-
Sorting 70,000 Photos Without Losing the Weekend
How I used OpenAI's CLIP model to classify 70,000 photos into 13 categories locally in three hours — no cloud, no API, no labelled data.
-
Testing Your Local MCP Server with Claude Desktop and Claude Code
You've built an MCP server and it's running on localhost. Here's how you can actually test it.
-
MCP Server Authentication in .NET: Implement OAuth 2.1 with PKCE Natively
The MCP spec mandates OAuth 2.1 with PKCE for remote servers. This post walks through implementing the full auth layer in ASP.NET Core.
-
The Residuality Method: Evolving an Identity System from Naive to Unbreakable
When we design software, usually we focus on the functional requirements and try to follow the happy path.
-
Blame Canada Moment of the Big Tech
The big tech is having a 'Blame Canada' moment. Recent lawsuits, addictive product designs.
-
Stay ahead of the Information Overflow - Shift to Personalized Podcasts
Turn your unread reading list into personalized audio - how to use Google Chrome, Google Drive, NotebookLM to create podcasts from any source, powered by Gemini.
2025
-
Practical Experience: Migrating an Old .NET Project with GitHub Copilot Agent
Practical Experience: Migrating an Old .NET Project with GitHub Copilot Agent
-
To wrap or not to wrap
To wrap or not to wrap, that is the Angular question.
-
Securing Remix Apps with Asgardeo - Part 2
Add logout, token refresh, and route protection to your Remix app secured with Asgardeo — part two of the series.
-
Securing Remix Apps with Asgardeo
Secure Remix (built on React) apps with Asgardeo. This step-by-step guide covers user login, OIDC integration and more.
-
Customizing Account Locking Rules in WSO2 Identity Server
Implement custom account locking rules for different authentication methods in WSO2 Identity Server.
-
This Hidden Web Security Feature Can Break Your Cookies - Here’s How to Fix It
While working on a project with WSO2 Identity Server (IS) 7.0.0, I encountered a rather interesting issue.
2024
-
Implementing CQRS in ASP.NET Core - Separating Read and Write Operations for Scalability and Performance
How to separate read and write operations in ASP.NET Core using CQRS.
2023
-
Monitoring Java Applications on Azure with Application Insights
Wiring up Azure Application Insights for Java apps - covering agent setup, custom telemetry, and live metrics.
-
Running WSO2 Products on Azure with Azure Membership Scheme
Deploy WSO2 Identity Server and other WSO2 products on Azure using the Hazelcast Azure Membership Scheme.
2022
-
A Robust Angular Search Bar with RxJs Debounce
A robust search bar in Angular using RxJS debounce, distinctUntilChanged, and switchMap to avoid unnecessary API calls.
20 articles total