Staff Technical Writer — Developer Content, Applied AI, Open-Source Documentation.
Profile
I'm a versatile content creator with over 15 years' experience in technical communication. I've worked on a variety of technical documentation projects, as well as technical whitepapers and other sales collateral. I like to approach writing projects like an investigative reporter, probing subject matter experts for useful nuggets of information. Most recently, I've interviewed customers using the "Jobs to be done" methodology to understand what content they might appreciate.
I tend to treat technical documentation as a very particular form of product testing. I try out the features I'm documenting, push their limits, and look for the things that trip readers up. This means that I often end up giving product managers proactive feedback on what could be better, alongside writing the docs. Since most of my experience is in documenting developer tools, I'm very used to the docs-as-code approach and can do a bit of Python scripting when I want to automate something tedious.
A personal workshop with two of the authors of IBM's Developing Quality Technical Information: A Handbook for Writers and Editors (Michelle Carey and Elizabeth Wilde) helped me take a disciplined approach to information architecture, especially according to the DITA guidelines. I'm not a DITA purist and don't do much DITA these days, but it has given me a good sense for topic-based authoring.
Experience
Anchor client: Quix (Python stream processing, event-driven architecture, and — from late 2024 — industrial data processing). Additional clients including Distil Labs and Chainlink Labs.
- Quix.io: Primary technical content creator for Quix's developer-facing output — long-form technical guides, end-to-end tutorials, interview-based deep-dives, and explanatory content for data engineers, data scientists, stream-processing developers, and (from 2024) industrial automation engineers.
- Worked directly in the docs-as-code pipeline: Git-based workflow, staging and production environments, Markdown/HTML source, Quix platform documentation site.
- Distil Labs (Mar 2025): ran a controlled fine-tuning experiment for on-device industrial RAG and wrote the accompanying technical article.
- Chainlink Labs: six-month contract (2022) writing thought-leadership content on building and scaling Web3 startups, for the Startup with Chainlink program.
- Rows.com (now part of Superhuman): three-month contract in 2022 writing user-facing technical documentation.
Berlin-based VC with in-house technical experts deployed to portfolio companies.
- Covered developer innovation and new technologies at Project A, a venture capital firm with in-house operational support for early-stage startups. Writing spanned DevOps best practices, front-end development, and data science.
- Held talks on technical writing.
- Seconded to Quix to help build their technical content function from the ground up. They became my freelance anchor client after I decided to become self-employed.
Berlin.
- Worked across a large suite of developer-facing products as part of a central documentation practice team supporting writers and contributors throughout the company. Acquired deep understanding of developer audiences at scale.
- Trained product owners on how to create effective technical content.
- Developed terminology and writing guidance for use across teams.
- Edited technical content directly in source code and in technical authoring tools; managed contributions from multiple authors via Gerrit and Git.
- Checked code examples for completeness; streamlined the process of continuous documentation and integration.
Berlin. Eleven years across three roles in a content-quality enterprise software company (the "Grammarly for enterprises" category).
- Developed user documentation for Acrolinx's enterprise server product and related plug-in software. Worked with developers and product management to synthesise complex technical specifications into clear user-facing content.
- Migrated the entire publishing infrastructure from Author-it to the DITA Open Toolkit. Customised the DITA Open Toolkit to match the Acrolinx design style.
- Worked with DevOps to integrate publishing automation into continuous integration systems.
- Developed guidelines for terminology, style, and tone of voice across the product line.
- Analysed requirements and developed specifications for new product features. Assessed product design and usability. Researched competitor products and academic papers on comparable systems.
- Provided technical support for enterprise content quality software. Built out the support knowledge base and systems to serve help content more effectively.
Auckland, then London. Commercial Technologies Manager (2003–2005) · Commercial Operations Coordinator (2002–2003) · Editorial Assistant (2000–2001).
- Worked with development teams to build internal systems for sales forecasting and ad revenue management. Collected requirements from stakeholders, wrote detailed specifications, worked with external partners on bespoke ad-serving software. Earlier, as Editorial Assistant, served as New Zealand category expert for the Ask Jeeves International editorial team.
Selected Work
Fine-tuning an SLM for on-device industrial RAG
March 2026I pitched and wrote an article explaining how Small Language Models (SLM) could be useful for question answering in the security-conscious industrial domain. In the process of testing it, I uncovered and reported several product issues.
Klaus Kode — an agentic data integrator built on Claude Code
September 2025Designed, built, and documented an open-source agentic tool for building streaming data pipelines using the Quix platform. I was trying to encourage my main customer, Quix, to incorporate an AI-coding assistant into their platform (since their users were mechanical engineers rather than software engineers). This was an early prototype built on top of the Claude Code SDK. Quix has since started incorporating AI agents directly into the web UI of portal.cloud.quix.io.
Guide to the Event-Driven, Event Streaming Stack
August 2023A long-form technical guide covering the full EDA component landscape (event buses, pub/sub, message queues, event streaming, stream processing, event stores), with cloud-native and open-source paths for each component. The idea was to provide objective value to readers without pushing the Quix platform specifically.
What's the best way to manage Helm charts?
May 2020Best-practices article proposed by my team lead, stemming from debate at one of the portfolio companies. I interviewed the affected developers and identified that the best practice was just as much of a human issue as it was a process issue. The article accrued traffic quickly after publishing — seemed to touch a nerve at the time.
Open-Source Documentation Contributions
The contributions below were made when my main customer, Quix, was trying to forge relationships in the open-source ecosystem (until this approach was abandoned by the founder). I gently deflected his urges to aggressively self-promote and encouraged him to let me try to provide legitimate value to the affected communities.
LangChain
langchain-ai/langchain #16771A cookbook notebook demonstrating how to manage LangChain chat messages via Apache Kafka, proposing an architecture where the chat frontend and LLM run as separate services communicating over an internal network (a deliberate alternative to the typical REST API pattern).
InfluxDB
influxdata/docs-v2 #5342A downsampling tutorial for InfluxDB Cloud Serverless using Python tumbling windows, positioned as a pure-Python alternative to the existing SQL/InfluxQL approach and as a Pythonic replacement for the Kapacitor+Flux/TICKscript toolchain. Merged into InfluxDB's own docs site.
Upstash
upstash/upstash-web #229A full technical blog post on building a CDC pipeline from PostgreSQL to Upstash Vector via Upstash Kafka and Python. It covered change data capture, real-time streaming, and vector database upserts for AI applications.
Aiven
aiven/aiven-docs #173Step-by-step integration guide for connecting Aiven Kafka as a broker to Quix, with screenshots and sidebar navigation updates.
Upstash
upstash/docs #151Integration guide for using Upstash Kafka as a broker with Quix, with screenshots and navigation config.
Talks, Video & Multimedia
Knowledgebase Ninjas Podcast
Participated in an early episode of this vendor-run podcast, giving my views on how technical documentation should not be a siloed function.
Powering Vector Search with Real-Time Data
~April 2025Co-presented with Zain Hasan (Developer Advocate, Weaviate), hosted by Kris Jenkins (Developer Voices). Live RAG and vector search using real-time transcription into Weaviate, with a companion CDC-to-Weaviate code template repo built alongside the talk.
Build an industrial data pipeline using AI and MCP servers
~June 2025Early public experiment with Model Context Protocol for agentic construction of industrial data pipelines — published during the first wave of MCP adoption.
Watch an AI build an industrial data pipeline from a sketch
~June 2025Demo of agentic pipeline construction from a sketch as input. The experimental work that led directly to the development of Klaus Kode.
Using AI to map OPC UA data by making it read a signal manual
~June 2025Demo of LLM-assisted parsing of an industrial signal reference manual to auto-map OPC UA data streams. I explored a similar problem pattern later in the Distil Labs article on fine-tuning SLMs for industrial documentation RAG.
Real-Time Python Aggregations with WarpStream
August 2024A walkthrough of the Quix integration with WarpStream — part of an ongoing campaign to ally with technical partners (WarpStream has since been purchased by Confluent).
Quix repositioning — industrial launch video
April 2025Cut and edited the animated launch video for Quix's industrial repositioning. Designed to be the flagship video that ran on autoplay on the Quix YouTube channel.