Mermaid Diagrams in Markdown
Created: 2025-12-05, Modified: 2025-12-06
Adding Mermaid diagram rendering to a Next.js blog via a custom remark plugin, with syntax examples for flowcharts, sequence diagrams, and state diagrams.
Github Pages: Basics
Created: 2020-02-27, Modified: 2019-10-25
Spinning up a GitHub Pages site from the docs folder on master, with a custom domain via Cloudflare CNAME, a Jekyll theme, and Markdown-based sub-pages.
Python Ceph Examples
Created: 2020-02-03, Modified: 2020-02-03
Use Ceph's rados and rbd Python libraries to check cluster health, list and create pools, and manage RBD block-device images with real code samples.
CircleCI: Continuous Delivery for Firebase
Created: 2020-01-16, Modified: 2020-01-16
Set up continuous deployment for a Firebase Hosting app using CircleCI, a firebase login:ci token, and a minimal config.yml that runs firebase deploy.
Firebase Basics: Hello World
Created: 2020-01-11, Modified: 2026-04-11
Set up Firebase CLI and deploy a Hello World app from Ubuntu. Includes a Vagrant port-forwarding trick for authenticating the Firebase CLI without a desktop browser.
Installing Node.js with Ansible
Created: 2019-12-13, Modified: 2019-12-13
How to install a current Node.js version on Ubuntu with Ansible using the nodesource apt repository. Covers why NVM fails in Ansible and includes complete playbook tasks for the apt key, repo, nodejs, and npm packages.
CloudFlare HTTPS CDN
Created: 2019-12-02, Modified: 2019-12-02
Put HTTPS in front of an HTTP-only static site like Google Cloud Storage using Cloudflare's Flexible SSL mode and the Always Use HTTPS redirect.
Vim Spell-Check
Created: 2019-10-25, Modified: 2019-10-25
Enable Vim's built-in spell checker with :set spell spelllang=en_ca, jump between misspellings with ]s and [s, and fix, add, or flag words using z=, zg, zw.
Docker Shared Memory (/dev/sdh)
Created: 2019-09-06, Modified: 2019-09-06
Docker's 64MB /dev/shm default is tiny. Raise it per-container with --shm-size, set a daemon-wide default in daemon.json, or remount /dev/shm on the host.
Upload a Python Package to PyPi
Created: 2019-09-06, Modified: 2019-10-2
Publish a pip-installable Python package to PyPI. Walks through setup.py, setup.cfg, a GitHub release for download_url, and uploading with twine.
Working with JSON SQL values in Python
Created: 2019-09-05, Modified: 2019-09-05
Pull a JSON blob out of a MariaDB column into a file, edit it, and write it back using raw SQL in Python with the mysql-connector library.
Local Pelican Development Environment
Created: 2019-08-04, Modified: 2019-08-04
Preview Pelican markdown changes live in a persistent Docker container with content, config, and theme mounts plus auto-regeneration on save.
Writing Blog Content for Pelican
Created: 2019-08-03, Modified: 2019-08-03
Set up a Pelican static site project with pelicanconf.py, structure posts and pages under content/, and write markdown with the metadata fields Pelican uses.
Building a Docker Pelican Image
Created: 2019-08-01, Modified: 2019-08-01
Build a reusable Docker image that runs Pelican to convert markdown into a static site, bundling a theme from GitHub and the series plugin in one layer.