author: eslerm@cyberplace.social Mark Esler