This is NOT a WordPress blog.
There, I'm glad we got that out of the way. I've not got anything against WordPress per se but I wish it was easier and more intuitive to do simple things like post. It's outgrown being just a blogging platform so now has to try to be all things to all people.
That's why I originally designed a custom layer over the top of it to enable inline posting and editing, as well as media uploads, without ever having to resort to wp-admin. As this was all essentially separate from the Wordpress core I started thinking about making it a standalone blogging engine and that's what we have here.
The engine (although that's really too grand a term) is called "blog-In" which is an obvious play on blogging. the "In" alludes that the blog content is all managed inline with no back-end. (There is, however, an admin page.)
It is a PHP site, with a bunch of JavaScript, connected to a database in a similar fashion to WordPress, albeit, drastically simplified. It has a login system and inline posting/editing functionality that is only displayed when logged in, I can even delete posts and comments directly from the blog page should I need to. The method for media uploads has also been ported over from my custom WordPress layer and operates in a similar manner dividing them into year & month folders which are created on the fly if they don't exist.
The blog itself displays posts for the day, in chronological order, with previous/next links to reload the page and change the day being viewed. It uses Emanuil Rusev's Parsedown & a customised version of ParsedownExtra libraries for PHP so that posts can be written in Markdown Extra which I mainly use for footnotes and applying classes to images (width and alignment) but rendered in HTML. Littlefoot is now being used to handle footnotes and most icons are inline SVGs from Bootstrap.
A "daily RSS feed" is built automatically according to a daily schedule. It combines all posts for that day into a single, chronological item reflecting the view on the blog itself. The live feed has been retired — at least for now.
Comments are viewed by clicking the icon in front of each post, this toggles a 'tray' which slides in from the right of the acreen. I am using PHPMailer to send myself notification emails whenever a comment is received. Outgoing webmentions are sent using the indieweb mention-client-php library and I have built a webmention endpoint to receive mentions. This uses the mf2-php library to parse remote HTML into easily handled JSON to help convert incoming mentions to comments based on mention type. Top level comments can be replied to and webmentions will be sent where appropriate. HTMX is used to load pages via AJAX calls when posting and view transitions animate transit from one page to another if you have a browser that supports them and they are enabled (usually by flags.) I heartily recommend that you do.
(Note: I was using my fork of Clark Rasmussen's BlueskyAPI PHP library to cross-post most things to Bluesky and pull in replies but this has been disabled.)
This is now my only blogging platform, the muse-letter (now retired), journal and digital garden (also retired) were all migrated. The old posts from the WordPress blog are displayed within an archive, so the site is completely WordPress free — I just pull from the old database tables.
The site also incorporates my own custom-built, public/private feed reader. This checks for updates every 6 hours and displays items for the added feeds from the last week. It also serves as a blogroll of sorts and an OPML file is available for download. The reader supports enclosures and has a "podcast view" which tracks listening progress, markdown in items and rssCloud so will receive updates instantly for those feeds that notify of updates.
Guidance
Most features should be easily discoverable and intuitive, but here is a quick rundown of things to make your experience better:
- Previous/Next links will take you to the next day with a post. Empty days are now ignored.
- On This Day: clicking the date takes you to OTD for that day
- images with an expand/fullscreen icon overlaid are thumbnails and can be clicked to view full size
- click the comment icon before a post to toggle comment section (this doubles as the permalink)
- reply via email is located under the comment form
- click 'send a webmention' under the comment form to manually submit a webmention from your site via a handy form
- hashtags are clickable search links
- other text sections double underlined are also clickable search links
- the 'shuffle' icon in the footer is to show a random post
- fragmentions: link to specific text by appending it to the URL in the format ##desired+text
Privacy
The site does not collect any information just from your being here and there are no local cookies. On occasion I may embed third-party material such as YouTube videos so the usual caveats apply. Should you wish to leave a comment the only compulsory field is "Name" but that doesn't even have to be your real name. If you provide your website this will be used in an attempt to pull a favicon to display as an avatar next to the comment — this is pulled at display time and not stored.
On receipt of webmentions the source URL and any reply content will be recorded. The author's name and avatar location will be pulled from the source if available and stored in the database solely for the purpose of displaying the webmention as a comment.
Deleting your post such that it sends a 410 GONE http header and sending a fresh mention should remove the associated comment from the blog.