Principal Developer Advocate, Salesforce
Building the agentic developer experience for the Salesforce Platform
I'm a Principal Developer Advocate at Salesforce with 15 years of experience building enterprise-scale products on the Salesforce Platform. My career spans enterprise consulting at Deloitte and PwC, ISV product development at CodeScience, and developer advocacy at Salesforce.
Today, I focus on how developers build in the agentic era: Agentforce, Agent Script, agentic development workflows, MCP, AI-assisted software development, Headless 360, Data 360, and the Salesforce Platform. I build tools, reference implementations, technical content, and live demos that help developers move from AI-generated prototypes to reliable, governed, production-ready software.
A recurring theme in my work is that AI can accelerate implementation, but great engineering still depends on intent, architecture, context, testing, governance, and human judgment.
At Dreamforce 2026, I delivered my first Salesforce Developer Keynote as part of Developer Keynote: Build the Agentic Enterprise, demonstrating how AI is transforming developer workflows and how developers can use agentic tools and platform capabilities to build the Agentic Enterprise.
- Developer Keynote: Build the Agentic Enterprise — Dreamforce 2026
- Build an Agentic Delivery Pipeline on AIforce — Orchestrating coding agents across planning, specification, implementation, review, testing, deployment, governance, and quality gates
AgentLens is my open-source debugging and visualization tool for Agentforce. It transforms Agentforce trace JSON into interactive agent graphs, finite state machines, and step-by-step execution inspectors so developers can understand and debug Agent Script orchestration faster.
- AgentLens: Debug Agentforce with Interactive Visualizations
- Open source and MIT licensed
- Runs offline with zero runtime dependencies
- Includes interactive visualizations for agent graphs, state machines, handoffs, and execution traces
I have been developing and sharing a practical agentic development lifecycle for Salesforce development — using coding agents across design, implementation, testing, debugging, review, and deployment while keeping developers in control of architecture and quality.
- Master the Agentic Development Lifecycle for Agentforce
- Agent Development Lifecycle reference implementations
- Fortune — The supervisor class: how AI agents are remaking the developer's career — bylined essay on how agentic development changes the role of software developers
- Forbes — What's Keeping IT Leaders Up At Night — quoted on developer acceleration, enterprise visibility, governance, and guardrails
- Puck — Tokenmaxxing Evangelists & A Meta Micro-Scandal — quoted on hardening the engineering system around coding agents and keeping humans in the loop
I've contributed perspectives on AI engineering, agentic software development, MCP, enterprise governance, developer tooling, and the future of software development to business and technology publications.
| Publication | Article | Role / Topic |
|---|---|---|
| Fortune | The supervisor class: how AI agents are remaking the developer's career | Bylined contributor — agentic development and the evolving developer role |
| Forbes | What's Keeping IT Leaders Up At Night | Quoted expert — AI acceleration, governance, and enterprise guardrails |
| Puck | Tokenmaxxing Evangelists & A Meta Micro-Scandal | Quoted expert — agentic software development, engineering systems, and human judgment |
| The New Stack | Avoiding the AI Agent Reliability Tax: A Developer's Guide | Primary expert source |
| The New Stack | How To Use Vibe Coding Safely in the Enterprise | Primary expert source — introduced the "Red Zone / Green Zone" framework |
| The New Stack | MCP: A Practical Security Blueprint for Developers | Bylined contributor |
| InformationWeek | Building an MCP Server Is Easy, but Getting It to Work Is a Lot Harder | Quoted expert |
| Business of Tech | MCP's Rapid Adoption Outpaces Governance | Quoted expert |
| Concretio | From Doomprompting to Agent Script: A Translation Guide | Quoted expert |
The core of my current work is helping developers build, test, debug, and deploy AI agents as real software systems — systems that can be versioned, governed, observed, and improved.
- Agent Script Language — Developer education and reference implementations for deterministic, testable agent orchestration
- Agent Script Decoded — Authored a foundational guide to Agent Script language fundamentals
- Agent Development Lifecycle — Reference implementations demonstrating sub-agents, mutable variables, flow control, and deterministic branching
- Agentforce Automation Transformation — Modernizing monolithic triggers into Agentforce-orchestrated modular actions
- Agentforce Deploy — Python MCP server for deploying Agentforce agents
- Agentforce for Mobile — Coral Cloud iOS example showcasing Agentforce in a native mobile experience
- Migrate Legacy Agents to the New Agentforce Builder — Migration, testing, and stabilization patterns for the new agent architecture
- Expose Custom Apex as a Hosted MCP Tool for Agents — Using Salesforce-hosted MCP capabilities to expose custom Apex to compatible agents
- Developer education around MCP security, tool orchestration, agent gateways, authentication, and enterprise governance
- Contributor to trailheadapps/coral-cloud — flagship sample app demonstrating Agentforce, Data 360, and the Salesforce Platform
- Built demos showcasing data grounding and personalization for AI agents
- salesforce/einstein-platform — Contributor to the official LLM Open Connector framework for Bring Your Own LLM integrations
- OpenLLMConnectorDemo — Node.js reference implementation connecting Hugging Face models to the Einstein AI Platform
- Introducing Agentforce for Developers — Developer guidance for AI-powered development on Salesforce
- Build Custom Agent Actions Using Apex — Custom agent actions with Apex, Flow, and Prompt Templates
- AgentLens — Open-source Agentforce debugging workbench that transforms trace JSON into interactive diagrams, finite state machines, and step-by-step execution inspectors
- Spring '26 Platform Demos — TypeScript in LWC, GraphQL mutations, dynamic event binding, Flow navigation, and enhanced PDF rendering
- DX-Code-Companion — VS Code extension for Salesforce metadata operations via Tooling API
- mo-dx-plugin — Salesforce CLI plugin for faster deployments via Tooling API
- node-sf-bulk2 — Node.js SDK for Salesforce Bulk API 2.0
- salesforce-slack-starter-kit — Scaffold for building Slack apps integrated with Salesforce
Regular speaker at Dreamforce, TrailblazerDX, Dreamin conferences, developer meetups, workshops, and community events.
| Year | Talk |
|---|---|
| 2026 | Developer Keynote: Build the Agentic Enterprise • Build an Agentic Delivery Pipeline on AIforce |
| 2025 | Build Agents with Agentforce and Data Cloud |
| 2024 | Dive Deep into Advanced Apex Best Practices (w/ Daniel Ballinger) • Unlock Developer Productivity with Modern Tooling |
| 2023 | Experience Cloud Sites with LWR: What Developers Should Know (w/ Geno Mathew) |
| 2022 | How CarMax Achieves Agility Through Salesforce DX and DevOps (w/ Praneeth Galipalli) |
| 2018 | Salesforce DX Demo |
| 2016 | Introduction to Lightning Out |
| Year | Talk |
|---|---|
| 2026 | Ship Faster with Agentforce Vibes |
| 2025 | Deep Dive into Apex Best Practices for Apps and Agents (w/ Daniel Ballinger) • Build Agentic Workflows with Agentforce (w/ Ananya Jha) • Productivity Hacks to Build Apps and AI Agents Fast |
| 2024 | Deep Dive into Apex Best Practices (w/ Daniel Ballinger) • How ISVs Can Innovate with Einstein Copilot (w/ Sangita Gupta) |
| 2023 | Apex Patterns and Best Practices (w/ Daniel Ballinger) |
| Event | Talk |
|---|---|
| Southeast Dreamin 2025 | Boost Your Developer Productivity with Modern Developer Tools |
| Southeast Dreamin 2018 | Salesforce DX |
| Southeast Dreamin 2017 | Salesforce Development |
| Data Dreamin | Hands-on Workshop: Data Cloud and Agentforce |
| Midwest Dreamin | Salesforce Platform Development |
| Northeast Dreamin | Salesforce Platform Development |
| Apidays GraphQL Scale 2022 | Deep Dive Into GraphQL Grammar and Syntax |
| AI + Data Community Tour (Toronto) | Building Next-Gen Apps with Einstein 1 Platform, Data Cloud & Prompt Builder |
| codeLive 2023 | Let's Explore the Salesforce GraphQL APIs |
| Apex Hours 2023 | How to Work with GraphQL Wire Adapter for LWC |
| CodeWithSally | Apex Sessions |
| Show | Episode |
|---|---|
| Code[ish] (Heroku) | Agentforce for Developers |
| Salesforce Developers Podcast | Agentforce Custom Actions • Modern App Development |
| TAGS (Concretio) | Future, AI & Salesforce |
| SalesforceWay | Create Salesforce Managed Packages |
| Title | Publisher |
|---|---|
| Learning Salesforce Lightning Application Development — Build and test Lightning Components for Salesforce Lightning Experience using Salesforce DX | Packt, 2018 |
| Learning Salesforce Einstein — Add AI capabilities to your business solutions with Heroku, PredictiveIO, and Force | Packt, 2017 |
- Migrate Legacy Agents to the New Agentforce Builder
- Master the Agentic Development Lifecycle for Agentforce
- AgentLens: Debug Agentforce with Interactive Visualizations
- Expose Custom Apex as a Hosted MCP Tool for Agents
- Agent Script Decoded: Intro to Agent Script Language Fundamentals
- MCP: A Practical Security Blueprint for Developers
- Salesforce Stack Exchange — Moderator and long-time contributor with ~93K reputation, 2,400+ answers, and 8.5M+ people reached
- Google Scholar — Research cited in scholarly articles on Salesforce development, AI, and cloud computing
- Open Source — Maintainer of AgentLens, developer productivity tools, CLI plugins, SDKs, sample applications, and reference implementations
Software development is changing quickly. Coding agents will write more of the implementation, but great engineering increasingly depends on a developer's ability to provide the right context, define intent, design architecture, build tests, evaluate generated output, apply governance and security, and exercise human judgment.
The developer isn't disappearing. The developer is moving up the abstraction stack.





