Copperleaf TechnologiesCopperleaf2008Copperleaf Technologies, 2008hyperWALLET SystemshyperWALLET2009 to 2011hyperWALLET Systems, 2009 to 2011. Acquired by PayPal in 2018.eBayeBay2013 to 2023eBay, 2013 to 2023Watson StandardWatson Standard2025 to nowWatson Standard, 2025 to now. Independent from January 2025, as Watson Standard since September 2026.hyperWALLET SystemshyperWALLET
BCITBCIT, Diploma of Technology, Computer Systems, 2007 to 2009BCITBCIT, Bachelor of Technology, Computer Systems (Network Security Administration option), 2011 to 2013Mobile Web, 2009 to 2011Mobile WebItem page and toolingeBay for CharityBidding and Best OfferAdsMobile WebMobile WebMobile WebMobile WebItem page and toolingItem pageeBay for CharityCharityBidding and Best OfferBiddingAdsAds
ShippedEarly 2011hyperWALLET Systems
hyperWALLET mobile app on PhoneGap
I took over hyperWALLET's iPhone and iPad app from Nitobi, the team that created PhoneGap, then added features and took it to Android and the mobile web from one codebase. Nitobi published a customer case study about the project in early 2011.
PatentJuly 14, 2015Item page and tooling, 2015 to 2016
Enhanced shopping actions on a mobile device
Co-inventor on a family of three US patents for choosing between buy, watch and bid by how hard you press a search result. First filed July 2015; granted December 2018, March 2021 and May 2023.
Helped replace the old eBay for Charity site with a new Node.js site, from its first change through its first production releases. The same application still serves the site today.
An MCP server that gives AI agents structured context from a SQLite graph, with depth-limited traversal, context validation and a graph agents can share.
Reusable Claude Code plugins, skills and templates: spec-first development, lessons mined from session logs, and tooling to share skills across projects.
My PR exposing progress_callback in ServerSession methods, bringing the MCP Python SDK to parity with TypeScript. Still open; it needs a rebase on main.
An MCP server that brought DALL-E 3 image stylization into Claude Desktop, with credits and abuse prevention. Retired June 2026; kept for its architecture.
An agent for preparing Etsy listings, with persistent operational memory and human publication approval. A dated implementation account and early results.
A local-first viewer for your own Claude Code transcripts: it indexes CLI logs and privacy exports into one timeline and finds corrections worth making rules.
ContractApril 2026AkayaAkaya, an AI knowledge tool. I've been contracting with Portland State University on it since April 2026.Akaya
ShippedJune 11, 2026Active
Command
A shared kit of skills, rules and guard hooks for my Claude Code project sessions: what each session inherits, the September trial, and the earlier operator.
In September 2026 I ran free security and usability checks for people building apps with AI tools, and answered builders' questions in public forums. The free 15-minute call carries on as Office Hours.
Not to scale. Each break marks a change of scale, so the recent months get the room the earlier years would take. Gaps in the employer row are the months I was at school.
All milestones as a list
Watson Standard2025 to now
Independent from January 2025, as Watson Standard since September 2026.
32October 11, 2026Graph Starz
ShippedActive
A map for exploring pictures by appearance, subject, style and mood, live at graphstarz.com with 415 public-domain artworks in three views.
In September 2026 I ran free security and usability checks for people building apps with AI tools, and answered builders' questions in public forums. The free 15-minute call carries on as Office Hours.
A shared kit of skills, rules and guard hooks for my Claude Code project sessions: what each session inherits, the September trial, and the earlier operator.
ContractApril 2026AkayaAkaya, an AI knowledge tool. I've been contracting with Portland State University on it since April 2026.Akaya
23April 19, 2026chat-arch
Open sourceReleased
A local-first viewer for your own Claude Code transcripts: it indexes CLI logs and privacy exports into one timeline and finds corrections worth making rules.
An agent for preparing Etsy listings, with persistent operational memory and human publication approval. A dated implementation account and early results.
An MCP server that brought DALL-E 3 image stylization into Claude Desktop, with credits and abuse prevention. Retired June 2026; kept for its architecture.
My PR exposing progress_callback in ServerSession methods, bringing the MCP Python SDK to parity with TypeScript. Still open; it needs a rebase on main.
Reusable Claude Code plugins, skills and templates: spec-first development, lessons mined from session logs, and tooling to share skills across projects.
An MCP server that gives AI agents structured context from a SQLite graph, with depth-limited traversal, context validation and a graph agents can share.
Helped replace the old eBay for Charity site with a new Node.js site, from its first change through its first production releases. The same application still serves the site today.
4July 14, 2015Enhanced shopping actions on a mobile device
Patent
Co-inventor on a family of three US patents for choosing between buy, watch and bid by how hard you press a search result. First filed July 2015; granted December 2018, March 2021 and May 2023.
Education: BCIT, Bachelor of Technology, Computer Systems (Network Security Administration option)
hyperWALLET Systems2009 to 2011
Acquired by PayPal in 2018.
1Early 2011hyperWALLET mobile app on PhoneGap
Shipped
I took over hyperWALLET's iPhone and iPad app from Nitobi, the team that created PhoneGap, then added features and took it to Android and the mobile web from one codebase. Nitobi published a customer case study about the project in early 2011.
Nitobi's site is gone, so this links an archived copy.
Employer: hyperWALLET Systems
Copperleaf Technologies2008
Nothing public from this period.
BCIT2007 to 2009
Diploma of Technology, Computer Systems
Nothing public from this period.
More about me
At eBay, I spent more than a decade shipping buying, advertising and charity features. That included helping rebuild the public charity site in Node.js and taking a redesigned bidding flow to production. Lately I've also been working on AI agents and the tools they use.
Software EngineeringApplications & ToolsAI SystemsProduct & Research
How I set up projects for Claude Code
I build tools and project instructions that help me work with Claude Code. My project files give a new session context about the work. Skills describe goals and constraints, leaving the session room to work out the implementation. I keep experimenting with how much structure helps and where it gets in the way.
In the March 2026 ShopForge account , I rewrote seven core skill files from 6,163 to 1,613 lines, a 74% reduction in instructions. The files describe intent and quality checks rather than prescribing every step. The agent stores lessons from operational failures and can use them in later listing work; a person still approves publication. The early results show that memory working, but do not establish a quality or sales improvement trend.
How I check what I publish
I built a review process for my writing, with separate checks for facts, technical claims, editing, and the rendered page. It helps me catch errors before publishing, though I've also had to correct findings afterward. I trace claims to primary sources and compare metrics with the underlying data. One investigation led me to correct advice about Cowork that was pointing people toward wrong fixes .
When something breaks and there's no documentation, I trace the root cause through log files, undocumented APIs, and system internals, then publish the fix. I've diagnosed Anthropic's Cowork startup freeze , its file upload failure , and 6 distinct VM failure modes hiding behind one generic error. I've filed issues upstream on Google's Gemini SDK (silent parameter stripping, no error message) and Anthropic's GitHub issue tracker.
I build applications, developer tools and AI systems for clients and for myself. I worked independently from January 2025 and have run the work as Watson Standard, my software practice, since September 2026: watsonstandardco.com. I use Claude Code for AI-paired development and publish source or technical accounts of my own work where I can.
Selected work:
Client: I’m contracting with Portland State University on Akaya, an AI knowledge tool.
Command. A shared kit of rules, skills and guard hooks for project sessions. The September 11, 2026 account records day one of a seven-day trial with the earlier dispatcher off; the trial tests whether the kit can carry useful work with less separate coordination.
ShopForge. An agent for preparing Etsy listings, with memory that stores lessons from operational failures and uses them in later work. A person approves publication. The project account includes the May 2026 status check and the initial ten-day results.
Bryce Labs Toolkit. Claude Code plugin suite including spec-driven development, session history mining, and cross-platform skill management. Installable from marketplace.
MCP API Bridge. A released starter kit for adapting a REST API into a Model Context Protocol (MCP) server, with a working example, public source and tests.
Shopify TYOS Migrator. Automated migration of Shopify tracking pixels to the Customer Events API across 8 ad platforms with pixel parity validation.
My workflow uses pull requests, automated checks and a separate review before merging. The working-method account records the tools and measurements from that stage of the work.
Jul 2013 - 2023
eBay
Software Engineer 2 → Member of Technical Staff 2 (a senior engineering level)
At eBay I helped rebuild the public eBay for Charity website, replacing a Python application with a new Node.js site that launched in 2017, and ran its releases through 2018 and the seller dashboard’s through 2019. In early 2022 I took a redesign of the item page’s bidding flow to production behind an experiment switch, and in 2023 rebuilt the Promoted Listings promote flow inside the listing tool so it could carry the dynamic ad rate option eBay announced that March. Around those, I cut releases, carried platform upgrades, closed security findings, and did the accessibility and localisation work a flow shipped on every eBay marketplace needs. The linked charity site has continued to evolve since my work on it.
Public record
Most of what I built at eBay lives in private repositories, so the timeline at the top of this page links each milestone to something anyone can open: a patent, an engineering blog post, a merged open-source pull request, eBay’s release notes and announcements, or an archived copy of a page.
Nothing public exists for the design-system, accessibility, security, Android or release work, or for anything after September 2023, and company-level numbers are left off.
Last checked September 30, 2026.
Teams and surfaces
Years
Team
What shipped
2022 to 2023
Ads
The Promoted Listings promote flow inside the listing tool, rebuilt to carry dynamic ad rate
2020 to 2022
View Item and Buying Experience
The bidding-flow redesign on the item page; Best Offer rebuilt to render inside eBay Messages
2020
Android
Charity search in the Android listing flow, moved off a legacy endpoint and rebuilt
2016 to 2019
eBay for Charity
charity.ebay.com rebuilt and launched in 2017; charity filters in the public Browse API; the seller dashboard restructured in 2019
2015 to 2016
View Item and front-end tooling
Mobile item-page sections on the Node.js rewrite; the eBay for Charity option in the listing flow, built twice
2013 to 2015
Mobile Web
Much of the checkout page, when the whole mobile site was one codebase
Ads, 2022 to 2023
What shipped
Promote-flow rebuild. Rebuilt the Promoted Listings promote flow inside the listing tool as a new application with one fewer service hop, streaming backend responses into the page, then shipped the dynamic ad rate option through it (an ad rate eBay adjusts daily toward its suggested rate, under a cap the seller sets) and retired the legacy path.
Embedded in the listing page. Replaced an iframe in the listing page with a server-streamed embed, which first meant upgrading the build toolchain and UI framework across the shared seller-tool layouts and components it depended on.
Campaign dashboard. Shipped the campaign-dashboard changes a Promoted Listings rollout needed: a listing-format column and filter, click tracking, and feature flags for a staged ramp.
Platform upgrades. Ran the Node.js, TypeScript, design-system, and test-runner upgrades across four Ads applications and the shared seller-tool component library.
Marketplace correctness. Marketplace labels, plural rules, decimal formatting, and tooltip placement across languages and marketplaces, plus a production fix for sellers whose session expired mid-submit.
Promoted Listings Advanced. Started folding Promoted Listings Advanced into the same promote flow in August 2023.
View Item and Buying Experience, 2020 to 2022
What shipped
Bidding-flow redesign. Took a redesign of the item page’s place-bid experience from platform preparation in late 2021 to production configuration in early 2022, gated by an experiment so it could be switched on for a treatment group and fall back to the old flow if the experiment lookup failed.
Best Offer in Messages. Rebuilt the Best Offer application (eBay’s make-an-offer feature) so another team’s page could render it, and shipped that version inside eBay Messages, where a seller answers a buyer with an offer without leaving the conversation. Offers in Messages had been public since at least 2019; what I changed was how they’re delivered. Getting there meant restructuring the application into a monorepo with its own proxy, end-to-end tests, and a wrapper that streams its HTML into another page.
Bid history. Replaced a legacy bid history layer with a standalone mobile-web page that works for signed-out visitors, built on a shared card component I wrote for it.
Legacy migration. Moved the item page’s bid and watch-list actions off an older platform one path at a time, and removed the bid fallbacks that still pointed at it.
Accessibility and compliance. A screen-reader and keyboard sweep of the bidding layer, including a Safari-specific fix, plus the interstitials required for restricted items, adult items, and German pharmacy listings.
Releases and upgrades. Cut the numbered releases for both the bidding and Best Offer applications and carried their framework, Node.js, and security-library upgrades.
Android, 2020
What shipped
Charity search in the listing flow. Moved the eBay Android app’s charity search off a legacy endpoint, rebuilt its results list as a paged list, and fixed the bugs that surfaced with it.
eBay for Charity, 2016 to 2019
What shipped
Site rebuild. Helped replace the Python-era public site with a new Node.js site on Marko, eBay’s own front-end framework. I authored the new repository’s changes from its first pull request through its first production releases in spring 2017, kept the old site’s image URLs working while it was decommissioned, ran its release train through 2018, and kept shipping fixes to it until the end of 2019. The linked public site has continued to evolve since that work.
Public API. Added charity filters to eBay’s public Browse API, so a developer can search for items benefiting a given charity or restrict results to charity items only, with acceptance tests and error handling for the US and UK marketplaces.
Charity picker for the listing tool. In 2018 built a reusable, embeddable charity search that a newer listing flow opens in a pop-up and talks back to through a controlled cross-origin callback.
Seller dashboard. Shipped a new invoice screen with self-serve donation cancellation in 2019, including a revert and re-land of the first release, on top of a restructured dashboard with a testable service layer and a new PayPal sign-in flow.
Search backends. Tuned relevance in the Java services behind charity search so exact-name matches rank higher, fixed unbounded per-request thread creation that was exhausting memory, upgraded the framework, and added load tests.
Security follow-through. Closed security findings from scans and a penetration test in the code: CSRF validation, https enforcement, an enforced content security policy, and rate limiting.
View Item and front-end tooling, 2015 to 2016
What shipped
Item page rewrite. On the Node.js rewrite of the item page, delivered the mobile shipping, payments, returns, about-item, and charity sections, wired them to live backend data, and set up the linting, coverage, and CI jobs the repository ran on.
Component generator. Contributed to eBay’s internal scaffolding tool for Marko UI components, from its file structure and test fixtures through its 1.0 release.
Charity in the listing flow. Added the donate-a-share-to-charity option to the consumer listing flow, worked through five weeks of fixes to ship it, then rebuilt it on the successor listing flow later that year.
Mobile Web, 2013 to 2015
This is where I started. I built much of the checkout page back when the whole mobile site was a single codebase.
How I worked
Cut the numbered releases for the charity site and dashboard and for the bidding and Best Offer applications, from 2017 to 2022.
Followed security findings through to fixes: static and dynamic scans, penetration tests, and library advisories.
Treated accessibility and localisation as part of done: VoiceOver and Safari quirks, US and UK wording, French plural rules, German decimal formatting.
Made coverage honest, removing test excludes even when the reported number dropped.
Fixed platform libraries at the source when they broke my applications, and filed reproducible reports when I could not.
Worked outside my own team when the work needed it: the public Browse API, the Android app, eBay Messages, and another team’s tooling.
All eleven sources
3 Writing May 13, 2015
Mobile First: A Retrospective
A co-written post on eBay's engineering blog about what we learned building responsive pages for the mobile site.
Co-inventor on a family of three US patents for choosing between buy, watch and bid by how hard you press a search result. First filed July 2015; granted December 2018, March 2021 and May 2023.
Helped replace the old eBay for Charity site with a new Node.js site, from its first change through its first production releases. The same application still serves the site today.
At a Vancouver payments company I was the lead mobile developer and a Java enterprise developer. I designed, built and shipped iOS and Android apps, working closely with the original PhoneGap team, delivered skinned apps for several clients, and wrote the mobile and web build and deploy scripts. On the core product I built new JSF and Java EE components and became the domain expert for the features I shipped.