WRITING
Guides on everything I ship.
Sixty-four deep dives across the stack — EV charging protocols, .NET and microservices, cloud and delivery, data and messaging — written from fourteen years of production platforms, not documentation.
PROTOCOLS & STANDARDS
Beckn for EV charging: BAP & BPP, explained end to end
Decentralized discovery, booking, and session management on the UBC spec.
READ →OCPI 2.2.1: modules, routing, and version history
Module-level tour of the EV roaming spec.
READ →OCPP: the charger-to-CSMS protocol in practice
1.6J vs 2.0.1, lifecycle, commands, smart charging.
READ →DEX: vending telemetry decoded
Building an IoT platform over a 1980s protocol.
READ →AI & GENERATIVE AI
Enterprise AI architecture: the complete guide
The five-layer reference model, build order, .NET and Azure path, and cost.
READ →RAG: retrieval that survives production
Chunking, hybrid retrieval, reranking, grounding, evaluation and failure modes.
READ →Vector search and embeddings
Distance metrics, HNSW and IVF, filtered ANN, freshness and cost.
READ →Agentic AI: orchestration that holds up
The agent loop, tool design, orchestration patterns and guardrails.
READ →AI governance: control for systems that don't repeat
Evaluation suites, versioning, data boundaries, audit trails and oversight.
READ →Conversational AI for enterprise support
Escalation design, multi-turn state, and the metrics that reveal the truth.
READ →BACKEND & ARCHITECTURE
.NET: the platform I’ve built a career on
14 years from WebForms to .NET 8.
READ →ASP.NET Core: APIs that stay up
Middleware, resilience, and partner-grade versioning.
READ →Microservices: architecture that earns its complexity
Boundaries, messaging, and consistency in production.
READ →API Gateway: the front door pattern
Routing, auth, and rate limits for 30+ partner networks.
READ →CLOUD & DELIVERY
Azure: the cloud my platforms run on
An AZ-305 view from production.
READ →AWS: the second cloud every architect needs
Multi-cloud fluency without the buzzwords.
READ →Azure DevOps: the delivery machine
Pipelines, boards, and traceability that survives audits.
READ →Docker: containers as the unit of delivery
Image discipline and production realities for .NET.
READ →CI/CD: shipping without ceremony
Quality gates, deploy strategies, and the culture part.
READ →Nginx: the quiet workhorse at the edge
TLS, WebSockets for OCPP, and hardening.
READ →DATA & MESSAGING
RabbitMQ: the message backbone
Topology, idempotency, and dead-letter discipline.
READ →MQTT: the language of devices
Topic design and QoS for 2000+ field devices.
READ →SQL Server: the enterprise workhorse
T-SQL, tuning, and production troubleshooting.
READ →MySQL: the cloud-native default
Telemetry-scale schema design and operations.
READ →OCPI 2.2.1 MODULES — IN DEPTH
OCPI Versions: the handshake before the handshake
Version negotiation, the endpoint directory, and sender vs receiver roles.
READ →OCPI Credentials: the registration handshake
The Token A/B/C dance, the roles array, rotation and revocation.
READ →OCPI Commands: remote control across company lines
All five commands, the two-phase async pattern, timeouts and correlation.
READ →OCPI ChargingProfiles: smart charging across parties
The SCSP role, profile anatomy, and how it maps onto OCPP.
READ →OCPI HubClientInfo: knowing who is online
Hub topology, the four status values, and routing without hurting drivers.
READ →OCPI COMMANDS — ONE PAGE PER COMMAND
OCPI START_SESSION: remote start, end to end
The async flow, evse targeting, failure modes and a production-safe sequence.
READ →OCPI STOP_SESSION: ending a charge remotely
Why session_id is the only identifier, and the race against natural session end.
READ →OCPI RESERVE_NOW: holding a charger before arrival
Expiry design, location vs evse level, and the commercial reality of reservations.
READ →OCPI CANCEL_RESERVATION: releasing a hold
The canceled_reservation result, unknown_reservation, and why cancelling matters.
READ →OCPI UNLOCK_CONNECTOR: releasing a latched cable
Why cables latch, why cpos disable it, and how to design the driver flow.
READ →BECKN PROTOCOL — ACTIONS & CONCEPTS
Beckn select: turning a listing into a quote
Building the order, reading the quote breakup, re-checking availability.
READ →Beckn init: billing, terms and the draft order
Payment types, cancellation terms, and why init is separate.
READ →Beckn confirm: creating the order
Order creation, the authorization token, and mandatory idempotency.
READ →Beckn status: tracking an active order
Fulfilment states, unsolicited pushes, live charging progress.
READ →Beckn update: changing an order in flight
update_target, stopping a charge, provider-initiated updates.
READ →Beckn cancel: ending an order before fulfilment
Reason codes, fees bound to state, BPP-initiated cancellation.
READ →Beckn context: the envelope every message shares
transaction_id vs message_id, TTL, and correlation rules.
READ →Beckn signing and the registry
Ed25519 signatures, subscriber lookup, and the trust model.
READ →The Beckn gateway: broadcast discovery
Fan-out, why it leaves after search, and ACK/NACK.
READ →OCPP — MESSAGE BY MESSAGE
OCPP Heartbeat: liveness and clock sync
Interval tuning, clock drift, and why ping is not a substitute.
READ →OCPP StatusNotification: what the connector is doing
Nine states, error codes, connectorId 0, and OCPI mapping.
READ →OCPP Authorize: deciding who may charge
idTagInfo, local lists, cache, and offline policy.
READ →OCPP StartTransaction: opening a session
meterStart, transaction IDs, and offline queuing.
READ →OCPP StopTransaction: closing the books
meterStop, stop reasons, and reconciliation.
READ →OCPP RemoteStopTransaction: stopping from the cloud
The race against natural session end.
READ →OCPP TransactionEvent: the 2.0.1 rewrite
triggerReason, seqNo, and migrating from 1.6J.
READ →OCPP smart charging: shaping power at the charger
Profile stacks, purposes, and GetCompositeSchedule.
READ →OCPP configuration: reading and changing settings
Key settings, RebootRequired, and configuration drift.
READ →OCPP firmware and diagnostics
Staged rollout, bricking risk, and update discipline.
READ →OCPP Reset and availability control
Soft vs hard reset, and safe remote intervention.
READ →PROTOCOL CONCEPTS — WITH WORKED EXAMPLES
OCPI CDR: the record money depends on
Structure, charging periods, and a full JSON example.
READ →OCPI Sessions: the live view of a charge
Lifecycle, push vs pull, and a live update example.
READ →OCPI Tariffs: pricing as data
Components, elements, restrictions — with a TOD example.
READ →OCPI Tokens: who is allowed to charge
Whitelisting and real-time authorization, with examples.
READ →OCPI Locations: the map behind every app
Location → EVSE → Connector, with a full example.
READ →OCPP BootNotification: how a charger comes online
The registration handshake, with 1.6J JSON.
READ →OCPP RemoteStartTransaction: behind every app tap
Command to StartTransaction linkage, with examples.
READ →OCPP MeterValues: the numbers billing runs on
Measurands, validation rules, and a sample message.
READ →Beckn search: discovery on the open network
search/on_search with full JSON per the UBC spec.
READ →FRONTEND