Portfolio
My day job for the last 18+ years has been first creating and then leading the technical writing practice at a software company. If you need technical writing done, this page is a convenient place to evaluate my work in this area. Those interested in my fiction and other writing can safely ignore this page.
Liferay in Action
Liferay in Action is a bit old as computer books go, but I list it first because it’s probably my greatest impact (so far) on the industry.
Liferay Documentation
I created and then ran Liferay’s software documentation practice for 18+ years. During that time, we had two GitHub documentation repositories. The older one is public; the current one is private. I edited every piece of documentation written until I was laid off in April 2026. Since the current repository is private, I’ll link to specific articles I know I wrote. I also created the overall structure of the documentation site and the style guide.
There are different types of documentation. Here’s a diagram to help explain my view on these types:

Briefly, if you think of these types as parts of a house, your foundation is features and reference. Features docs can be subdivided into two types: explanation of what the feature is for, and steps for using the feature. Reference docs are lists of each function and what it does. Recipes sit in the middle as the structure of the house. They give instructions for specific cases users want, such as setting up Apache as a reverse proxy. They solve a specific, common problem people need to solve. Tutorials are larger, multi-step projects that combine many features and recipes to produce a specific project, such as building an example web application or, outside the software world, putting a piece of furniture together (i.e., Ikea manuals are tutorials). Training combines several tutorials into an entire course of study. Not pictured, Learning Paths are groups of training courses that lead to certification.
- AI Tools in Liferay Workspace (feature: steps)
- Using OAuth 2.0 (feature: explanation and steps)
- Upgrading to Jakarta (feature: steps)
- SCIM: Group API Basics (reference)
- SCIM: User API Basics (reference)
- Developing a Web Application (tutorial) This is older; you’ll have to download the PDF and search for “Developing a Web Application” in the contents and then go to that chapter. Incidentally, I generated this PDF by converting the Markdown to LaTeX, which produced the book.
- The Older GitHub Repository. I created this repository in 2011 when I moved us to a docs-as-code methodology. It contains the documentation for Liferay 6.0-7.2.
VimStar Documentation
Detailed on the blog here is my experience with writing tools, culminating in my creating VimStar, which is a Neovim distribution. To create its documentation, I first generated it using AI and then wrote about my experience on LinkedIn. If you’re interested in my experience modifying what the AI generated, all the parts are in the link in the previous sentence.
I keep the VimStar documentation up to date as I add features. The docs are hosted via GitHub pages, and a GitHub action publishes them whenever I push a commit.
Fiction
Publicizing my fiction is the purpose of this site, so I would be remiss if I didn’t provide links to it in my portfolio:
- My novel, Providence, can be purchased via the Buy link above.
- I contributed “The Siege of Acme” to Mammon: Collateral, a collection of stories set in Robert Kroese’s Mammon universe.
