Recent Posts

Choosing a new Rich Text Editor in 2022

A few years ago I joined Vanilla Forums and shortly after was tasked with replacing our aging text editor. I dove in and determined QuillJS was the best choice at the time. It was an active open source project and while it had a few warts it seemed liked they could be worked around. We built our new "Rich Editor" project and it has served us pretty well for a few years.


In 2017 the QuillJS author had a posted a a plan to get the project to it's 2.0 release with a few much awaited features.

View Post →

PHP for Javascript Developers - Runtime

This is part 2 of a multi-part series of posts. You can read the first part, PHP for Javascript Developers - Syntax, here.

This post covers some of the runtime differences between PHP and javascript and equivalent parts of each languages standard library.

It's worth noting that PHP has an extensive standard library, far larger than common in javascript. For example, PHP has classes for many common data structures, extensive utilities for data manipulation, official extensions for database connections, file-handling, network requests, and more.

View Post →

PHP for Javascript Developers - Syntax

This is part 1 of a multi-part series of posts. You can read the second part, PHP for Javascript Developers - Runtime, here.


A few years ago I started as frontend developer at Vanilla Forums knowing only frontend technologies like Javascript, Typescript, CSS, and HTML.

I've grown a lot as a developer since then, and a large part of that was becoming familiar with backend technologies like PHP & MySQL. Recently a colleague asked for a resource to be quickly get familiar with PHP. I searched around and didn't find the existing resources sufficient, so I've decided to start writing a series of posts on quickly picking up PHP from the perspective of a frontend developer.

View Post →

Self-Hosting Analytics with Plausible

I was recently looking for a cheap way to move a few sites off of Google Analytics and began looking into various options, both cloud-hosted and self-hosted.

Available Options

Unfortunately most cloud-hosted options (that aren't google analytics) are relatively pricy for what are essentially low traffic sites. After a bit of evalution the best options seemed to be:

View Post →

Speeding Up PHP in Docker w/ XDebug

I've been using Docker for my local environments at Vanilla since 2017. It was a good way to ensure consistent & reproducible developer environments and was a marked improvement over what we were running before. We setup a single repository with our shared environment (vanilla-docker) and it spread across the company like wildfire.

The consistency was great, especially as we onboarded various junior developers over the years. Unfortunately in 2018, Apple released MacOS High Sierra, sporting a new filesystem, APFS.

View Post →

Hello world

I've been meening to start my own blog post for some time. I've written a few posts on before but I decided that if I was going to keep doing it, I would it would be best to have it on my own domain.

I'm aiming to write frequently, at least once a week until this Covid-19 pandemic is over.

This is mostly intended as a bit of a future journal for myself, but hopefully anyone else reading it can get some utility out of my programming experiences.

View Post →

Getting to know QuillJS (Parchment, Blots, and Lifecycle)

Note: This series is targeted at people trying to gain an advanced understanding of Quill and Parchment. If you're just trying to get started with an easy, well-featured editor, it might be good idea to check out Quill's Quickstart Guide or Cloning Medium with Parchment guide.

What is Quill?

QuillJS is a modern rich text editor built for compatibility and extensibility. It was created by Jason Chen and Byron Milligan and open sourced by Salesforce. Since then it has been used by hundreds of other companies and people to build fast, reliable, and rich editing experiences in a browser.

View Post →