Skip to main content

Developer advocacy

Talks

Nium

Venue
Topic
Audience
Crowd sizeRemarks
Monthly Nium events- Fintech Meetup
- Money20/20
- Money Street Fest
- Developers
- PMs
- payment leaders
- treasury teams
20+Panel discussions about trust, compliance, payments stack, other financial topics, and how Nium can help

Couchbase

VenueTopic
Audience
Crowd sizeRemarks
San Jose Convention CenterCouchbase Connect Hands-on query walkthrough- Developers
- techy PMs
300+Projected a PowerPoint presentation while speaking and leading the crowd to build queries on their laptops while I did on mine
Monthly MeetUp groupsCouchbase NoSQL vs SQL- Developers
- DBAs
20+Discussed index and query types and Big Data use cases

Published articles

LinkedIn (21,000+ followers)

TitleTarget audience
Gmail agent for job auto-repliesJob hunters
15 passive ways for employers to find youEveryone
13 active ways for employers to find youJob hunters
The healthier doughnutEveryone

Fintech blog posts

FIS/Atelio

  • Pay by Bank payment method allows payments without credit/debit card info
  • Consumer Secured Charge Card is an embeddable solution for many use cases
  • Identity solves for use cases across key customer channels

Nium

  • Client Prefund Account APIs let you track those funds across all currencies
  • Wallet-to-Wallet Transfers APIs move funds across different clients
  • Customer Virtual Accounts APIs manage virtual account numbers for a customer's wallet

API

Nium -- for fintech developers

CategoryAPIs
ClientsClient Prefund AccountClient SettingsClient Transactions
CustomersUser ManagementCustomer Account - IndividualCustomer Account - CorporateCustomer ManagementAccounts - Files
WalletsCustomer Wallet BalanceWallet to Wallet Transfers
PayinsCustomer FundingCustomer Virtual Accounts
PayoutsBeneficiaryPayout
CardsSimulatorsLifecycleSecurityControls
RFIsRequest for Information
ReportsReports
TestingPayoutsPayinsCustomer

SDK

ROAM -- for fintech developers

Title
Code samples
Contents
[SDK for Android payments](./roam-android-sdk-online-payments.mdJavaUsing Android Pay, collecting credit card info and payments, setting up an app, creating & using tokens, testing & deploying
[SDK for iOS Apple Pay payments](./roam-ios-sdk-apple-pay-payments.md- Swift
- Objective-C
Using Apple Pay, collecting credit card info, creating tokens, sending tokens to your server

Atelio -- for fintech developers

Title
Code samples
Contents
SDK for web documentationRequirements, importing, displaying, setting card PIN

KB

VMware -- for UEM developers

TitleProduct
AppStack exclusions are not excluded from Writables VolumesAppStack
After AppStack rescan, AppStacks is disabled or unprovisionedAppStack
Writables are not created upon login in a multi-vCenter environmentAppVolumes
How to install and use Log Collection with AppVolumesAppVolumes
Printers with ThinPrint default conflictsThinPrint
How to allowlist blocked applicationUEM
Run Once configurations that run multiple timesUEM
How to replace an expired UEM license fileUEM

Dev problems I've solved

Developer problemHow I solved itCompany
Developers had a hodgepodge of skill.md and instruction.md and various .yaml files and needed structure for their internal agent-driven workflows, server architecture, and usability.I Created a framework of governance and guardrails with templates in Markdown and YAML files to make it easier for developers to build Copilot AgentsMicrosoft
Metaverse developers had trouble making 3-D objects behave the way they wanted.I improved the Metaverse documentation with explanations and examples for faster building.Meta
Developers created an AI/ML/LLM system to populate the Netflix home screen of titles and needed to share this technology with other Netflix departments but weren't able to install or configure it outside their group.I tested and created internal documentation for the complex installation and configuration of their tool that populates the Netflix Home screen of titles so other departments can use it as wellNetflix
Customers' developers weren't able to onboard Nium's products due to the complexity of different steps for different company types in different countries.I made a step-by-step unified onboarding process that immediately saw 70% more onboarded while 70% fewer helpdesk tickets.Nium
Developers were building internal AI/ML/LLM tools but had difficulty since Apache's documentation didn't cover all of their use cases or needs.I filled in their documentation gaps and greatly enhanced their internal documentation with more explanations and examples for engineers to use the Apache ecosystem tools for their Big Data and IoT projects. An engineer said my docs are "more thorough than Apache's documentation site."Yahoo
AdWordsAPI developers had trouble finding what they needed since the AdWords department hadn't updated their Confluence pages in many years and some were simply obsolete.I improved the completeness and accuracy of the AdWords API department's documentation to be the highest rated department in all of Google.Google
Customer developers had trouble writing queries since the documentation was sparse and had no example queries of usage.I vastly improved their documentation by elaborating on the explanations and adding many example queries, which Reduced helpdesk tickets by 30%Couchbase
Developers couldn't keep up with the ever-growing queue of helpdesk tickets since their process didn't call customers at the best time to reach them.I redesigned their Helpdesk system to call them during the time range the customer specified and at the number (home or work) specified; and I answered many calls myself instead of creating a ticket. These Reduced helpdesk tickets by 92%Microsoft

Dev tools I've built

Developer problemHow I solved itCompany
Since Couchbase is schemaless and query performance is index-dependent in a way that isn't always obvious from the query syntax alone, developers routinely write a SQL++ query that works fine against a small local dataset, then silently full-scans a multi-million-document bucket in production; and it's often not discovered until someone notices latency or cost spike.

My Couchbase documentation work detailed this exactly in the Adaptive Index and GSI Indexing / Index Pushdown pages.
Query preflight checker.

I built a small CLI tool that takes a SQL++ query and a target bucket, and warns before the query runs in production whether it will trigger a full primary index scan instead of using a covering secondary index.
Couchbase
Since Couchbase documents in the same collection have no enforced schema, teams coming from a relational background often created a kind of silent drift that's easy to introduce and hard to notice in a schemaless system.Schema drift detector.

I built a tool that samples a collection and reports fields that are inconsistently typed or present across documents, catching that kind of silent drift.
Couchbase

Community contributions

Websites

  • Atelio ............ Dev Portal (product discontinued)
  • Nium ............. Dev Portal
  • Couchbase ... Forums

Roles I performed at those websites

Moderator

  • Helped facilitate community discussions by enforcing forum guidelines
  • Removed spam, ads, and self-promotion posts
  • Ensured posts remain respectful and on-topic
  • Moved, edited, or merged threads so questions are properly categorized and easier to find

Developer advocate

  • Assisted developers
  • Escalated technical questions to the right engineering teams
  • Replied to posts with technical answers
  • Replied to dozens of forum posts via email due to privacy issues
  • After replying to sensitive matters in email, I learned to post a 2nd reply without sensitive info in the forum so everyone can benefit

Driver of growth

  • Gathered customer and potential customer feedback which influenced the product
  • Identified friction points of customers and potential customers and addressed them
  • Generated dozens of "leads" and "pipeline influence"
  • Noticed stalled or immature forum categories and designed plans to grow them

Marketing contributions

At Couchbase, Nium, and FIS/Atelio, I've helped the marketing department in the following ways:

CategoryDescription
Technically credible content- Blog posts
- Tutorials
- Training videos
Developer feedback loop- Forums
- Discord
- Conference hallway conversations
- Support threads (objections, confuses them, etc.)
Organic reach- Conference talks
- Meetups
- Community presence
Customer stories- Deep relationships have surfaced genuine use cases and testimonials orgnically
- Helped Marketing turn those into case studies and proof points
Launch support and technical narrative- When shipping a new feature, I turned "what we built" into "why it matters and how to use it"
- Deep-dive blog posts
- Demos and workshops
Event strategy by informed community knowledgeI informed Marketing which developer-specific meetups and communities would have a good chance of reaching the target audience

Feedback loops

On the Couchbase SQL++ for Query Reference and Atelio documentation pages, I added a feedback mechanism that:

  • asks Is this page helpful? Yes/No
  • has a Leave Additional Feedback? box to send entered text to the technical writer for triage and ticket making

Code samples I wrote

SDK quickstarts

PostAudience
Code samples
Remarks
Android SDK for online paymentsFintech developersJavaUsing Android Pay, collecting credit card info and payments, setting up an app, creating & using tokens, testing & deploying
iOS SDK for Apple Pay paymentsFintech developers- Swift
- Objective-C
Using Apple Pay, collecting credit card info, creating tokens, sending tokens to your server
Atelio SDK for cardsFintech developers- cURL
- Ruby
- Python
- JavaScript
- C#
- Java
Requirements, importing, displaying, setting card PIN

API sandbox demos

Sandbox demoCompany
Sandbox vs ProductionAtelio of FIS
Testing servicesNium

Postman collections

Postman collectionCompany
Atelio APIsAtelio of FIS
Nium APIsNium

Nium API reference

Nium has added more API endpoints and supported languages after I left. The following are the API endpoints I documented with code samples in:

  • C
  • cURL
  • HTTP
  • Java
  • JavaScript
  • Python
CUSTOMERS

Customer onboarding
List customers
Create customers
Get customer
Update customer
Submit KYC for entity
Fetch public corp details
Fetch exhaustive corp details

Customer account - individual
Unified add customer
Customer update
Fetch indv cust RFI details
Respond to RFI
Upload document
Add customer - MyInfo
Add customer - eDoc verify

Customer account - corporate
Fetch corp details by Biz ID
Onboard corporate customer
Fetch corp cust RFI details
Respond to RFI for corp cust
Upload doc for corp customer
Regenerate KYC URL
Fetch corp constants
Update corp customer
Fetch public corp cust details

Customer management
Customer list
Customer details
Block/Unblock customer
Acct statement
Acct statement of a wallet
Manage customer tags

LINKED BANK ACCOUNTS

Fetch all accounts
Fetch an account
Create an account
Confirm acct authentication
Delete account
Update account

PAYINS

Customer funding
Confirm funding instrument
Get funding instr. details
Get funding instr. list
Delete funding instr.
Add funding instr.
Fund wallet
Approve or reject funds

Customer virtual accounts
Assign payment ID
Manage virtual acct tags
Virtual account details
Acct ownership certificate
Verification of consent

PAYOUTS

Account verification
Beneficiary list
Add beneficiary
Beneficiary details
Update beneficiary
Bene validation schema
Delete beneficiary



CARDS

Simulators
Simulate authorize card
Simulate settlement

Lifecycle
Add card
Activate card
Card details
Update card details
Card list
Get card details widget
Block and replace card
Convert to physical card
Lock/Unlock card
Renew card
Assign card

Security
Fetch card data encrypted
Fetch PIN status
Unblock PIN
Fetch ATM PIN
Set/Reset PIN
Show sec details encryp

CLIENTS

Prefund account
Client prefund request
Fetch prefund request
Client prefund balances

Client settings
Client details
Fee details
Get max and avail limits
Client transactions
WALLETS

Wallet balance
Get wallet balance
Update wallet
Fetch wallet
Add wallet

Wallet transfers
Wallet-to-wallet xfer
Transactions
Update biz trans flag
Trans geo-tagging
Download trans receipt
Upload trans receipt
Manage trans tags

REPORTS

Initiate report
Download report

TESTING

Sim payout trans
Sim payin recv
Sim payin funding

CUSTOMERS

User management
List users
Create user
Get user
Submit user KYC




SQL indexes and queries

  • While at Couchbase, there was a potential customer who wanted to buy if he could see examples of a new ANSI Index that was shipping in the latest version.
    • The problem was that the default database that comes with Couchbase Server didn't contain enough specialized indexed fields to demonstrate the power of the new ANSI Index, and Couchbase executives didn't want to change any part of their example database.
    • So, I created the indexes needed to make a query that could use the new ANSI Index and then made sample queries that used the new ANSI Indexes with my newly made indexed fields; and then I made a script so anyone could replicate those creation steps.
    • I did this ad hoc "patch" again a few weeks later for a different customer who had a different use case.
    • A few months later, Couchbase modified their example database to include these and other index types for all customers.
  • I wrote or vastly improved nearly all pages under SQL++ for Query Reference by adding:
    • Examples
    • Diagrams
    • Indexes and queries
OperatorsFunctions
Statements (A-D)
Statements (E-U)SELECT
Arithmetic


Collection

Comparison

Conditional

Construction


Logical


Nested


Sequence

String
Aggregate
Array

Bitwise

Comparison
Conditional for X
Conditional for Int

Date

JSON

Miscellaneous Utility

Number

Object

Pattern-Matching
Search

String

Token
Type

User-Defined

Vector

Window
ADVISE
ALTER BUCKET
ALTER GROUP
ALTER INDEX
ALTER SEQUENCE
ALTER USER
ALTER VECTOR INDEX

BEGIN TRANSACTION
BUILD INDEX

COMMIT TRANSACTION
CREATE BUCKET
CREATE COLLECTION
CREATE FUNCTION
CREATE GROUP
CREATE INDEX
CREATE PRIMARY INDEX
CREATE SEQUENCE
CREATE SCOPE
CREATE USER
CREATE VECTOR INDEX

DELETE
DROP BUCKET
DROP COLLECTION
DROP FUNCTION
DROP GROUP
DROP INDEX
DROP PRIMARY INDEX
DROP SEQUENCE
DROP VECTOR INDEX
DROP SCOPE
DROP USER
EXECUTE
EXECUTE FUNCTION
EXPLAIN
EXPLAIN FUNCTION

GRANT

INFER
INSERT

MERGE

PREPARE

REVOKE
ROLLBACK TRANSACTION

SAVEPOINT
SET TRANSACTION

UPDATE
UPDATE STATISTICS
UPSERT
USING AI
Syntax
Clause

WITH
WITH RECURSIVE

FROM

USE

JOIN
JOIN Comma-Separated

NEST
UNNEST

LET

WHERE

GROUP BY
WINDOW

UNION, INTERSECT, EXCEPT

ORDER BY

LIMIT
OFFSET

Meetup events I attend

EventCityFrequencyRemarks
Agents & APIs Developer MeetupSFMonthlyby Postman
AI Tinkerers - SFSFMonthly
Global AI MakersSFMonthly
SF AI Code & CoffeeSFMonthly
ToastmastersAlamedaWeekly
Write the DocsSFMonthly

Reddit communities I'm in

r/Description
LocalLLaMALocally hostable AI
MachineLearningAI & ML
ChatGPTCodingFor building and learning with AI-assisted coding
ClaudeCodeFor building and learning with AI-assisted coding
StableDiffusionOpen-source, local AI photorealistic art from text