AI & Product Experience Leader, Builder, Writer and More
Developer Experience | Documentation Engineering
Docs as code | AI | Python | Stack Overflow top 0.1%
Webhooks developer guide for CardConnect CoPilot at Fiserv. Includes not only webhook setup and integration, but also HMAC signature validation and security guidance.
Tutorial for building a web application that orchestrates four Azure services to
provide a chat-style interface for searching declassified documents related to the
JFK assassination. The four services are:
This application includes server-side code in C# and client-side code in JavaScript.
As the first writer on Snowflake's AI and ML topics, I established the information architecture for the Cortex AI Functions topics and authored the initial content. This work includes the overview page, the subordinate guides for each significant piece of AI functionality, and the associated SQL reference topics.
I authored the AWS CDK developer guide from scratch and shepherded it through two major releases. You'll notice code examples in multiple programming languages, including TypeScript, Python, Java, and C#. Particular high points include:
A blog post for Espresso AI about a common performance issue in SQL queries.
The brief for this sample was "explain a simple game as if the reader has never heard of it." A fun exercise!
A tool for extracting code snippets from AWS SDK examples. I completely rewrote the Code Snippet Extractor, adding better error handling. The first run of this tool found issues with the code examples that had existed for years.
As part of a product modernization effort, I developed the Welcome Screen that appears when Tecplot products are launched. The Welcome Screen provides quick access to recently-opened files, documentation, and support information. The feature was adopted in all Tecplot products. Eventually, it was extended to provide launch analytics, a customizable banner for displaying product news, and the ability to block known pirated serial number from being used with the product.
The Welcome Screen is implemented in HTML and JavaScript and is displayed in an embedded Qt browser control. A simple API allows the Welcome Screen to be driven by the host application.
The screen includes a basic Javascript REPL to inspect the internal state of the Welcome Screen, so it can be debugged more easily in situ.
When I arrived at Tecplot, their FrameMaker-based documentation build system had a serious bug that resulted in extra blank pages appearing in documents where pages had been conditionalized out. I addressed this issue, then went on to add:
Additionally, I:
I've contributed more than 2,300 answers to Stack Overflow. Here are some of my favorites:
How to get the return value from a thread?
How to capture stdout output from a Python function call?
Rotating a two-dimensional array in Python
How do I print functions as they are called?
Python dictionary keys besides strings and integers?
Detect if an image is completely black or white
How to get current function into a variable?
Booleans have two possible values. Are there types that have three possible values?
What is the fastest way to flatten arbitrarily nested lists in Python?
How can I detect duplicate method names in a Python class?
Is it possible to see variable scope of just called function in Python?
Enforcing Class Variables in a Subclass
Exceptions for the whole class
Python HTMLParser dividing data at &
How can I write a Python decorator to increase stackdepth?
Python multiple inheritance not showing class variables or method of second inherited base class
Can pexpect be told to ignore a pattern or signal?
Cerberus: allow any key name in a dictionary schema?
How to fuse multiple Python functions together
Function which computes once, caches the result, and returns from cache infinitely
Python try/except block inside lambda
Does the @property decorator cache results?
How can I intercept calls to python's "magic" methods in new style classes?
This one got a mention in the EasyBuild documentation!
Early on at Fiserv, I was tasked to update my team's style guide. At a technology company, almost everyone writes technical prose, even if writing is only part of their job. These incidental writers aren't going to memorize dozens of rules from a style guide. So I split the style guide into two parts: an AI persona that knows all the fiddly style rules so it can offer improvements, and an empathetic writing framework that helps authors evaluate and improve their own writing via a handful of easy-to-remember principles.
My blog on artificial intelligence, including explanations of core concepts, the legal and social implications of AI, and my experiences with the technology.
An experiment in writing clearer instructions for AI. AI produces better results when it receives clear, complete instructions. Charlie endeavors to provide a framework for writing unambiguous instructions that LLMs can follow more effectively.
An experiment in preserving engaging prose across languages. Documentation that people enjoy reading often has a distinct voice: rhythm, well-chosen idiom, concrete examples, and sometimes humor. Those same engaging qualities can make documentation hard to translate. Mister Sparkle aims to retain reader engagement while improving translatability.
Just for fun, a playful spoof of AI bots with all the intelligence of a 36-month-old human.
A short story about a man, a genie, and another man. Content warning: swears.
The greatest guitar player in the world sat, by long-established habit, atop the tallest pile of smoking rubble in the world. A panting acolyte perhaps nineteen years old climbed up over the edge of the platform on which he sat. It had once been a ping-pong table; now it was a sort of home for a man with a near-supernatural malodor and an extinct cigarette of uncertain provenance dangling from his lip. »»»
I used to have a spare bedroom full of synthesizers and used them to compose and produce this track, inspired by Tangerine Dream and Alan Parsons instrumentals.
I made this diagram for the AWS CDK Developer Guide.

