My longtime friend Stan Krute sent an email asking how I do my blog. Rather than do a one-off email, I am going to explain it via blog post, so it's documented publicly.#
In the spring of 2017, I wrote a piece of software called Old School. It's a Node.js server app that is configured via a big JSON file. It handles incoming REST-style messages telling it to build blogs that it knows about via the JSON file. #
I write the blog content with an outliner, and the result is a big OPML file. The server software (Old School) knows where to look for the OPML file, via the config.json file. You can use any outliner to edit the content as long as it produces an OPML file as output. #
I archive the content of the blog in a GitHub repository, so you can see how the content works, going back to May 2017. #
The <head> elements of the OPML file also configure Old School and it contains information other applications might find useful. #
Even though Old School is undocumented and unsupported, I did provide an example app. Never know when I will need to install a second instance.#
The outliner I use is called Electric Outliner. I've never shipped it, and don't have any plans to. I got tired of supporting "products" that few if any people use. This, and Old School were the first two products I made just for myself. It's cool, because the users of the product really respect the hell out of the developer, and the developer knows the users will understand the software even with no docs. 😄#
You can use LO2 -- it's very similar to EO, in fact the core outliner is the same code. #
If I want to attach a video to a post, I add an attribute called urlvideo, which points to a YouTube file. The runtime of the blog, a browser-based JavaScript app, looks for these attributes when the page is loaded, and builds the necessary structures. #
Similarly for urltweet, which points to a tweet. #
If you put an attribute named flNumberedSubs on a headline, Old School generates an <ol> element. flBulletedSubs generates an <ul> element.#
If you put an attribute named image on an element, its value should be the address of an image, i.e. something that can be put in the src attribute of an <img> element. Old School adds it to the output with a CSS style of float: right. That's how I create right-margin images that I love so much. #
That reminds me, you can use emoji short codes. 💥#
Old School also supports a glossary, a CMS idea that goes back to Clay Basket in 1996. It's a simple two-column table represented in an outline. It does string substitutions of the top-level string with its sub-head's value. The glossary I use for Scripting News is also archived in the repo. #
If you have questions about this, post a comment in this GitHub thread. #