Each page of this site – blog.randomstring.org – is generally written in MarkDown or occasionally ReStructured Text. A Makefile offers handy shortcuts to set up a new static page, new post, or assemble it via the Pelican static site generator and publish it.
I write in vim on Debian Linux machines that I own, and can securely access from anywhere in the world via OpenSSH. Pelican’s generation process is largely in Python; parts of it depend on Pandoc. If you want to convert some format of text to another, pandoc is usually a good choice.
Static pages are served by the nginx web server, presenting SSL certificates from Let’s Encrypt.