Stacked Directories - A directory/file watcher for static website generators(June 17, 2021) It's very convenient when a static website generator can automatically watch the source files, automatically rebuilding any changed pages, and automatically updating a browser tab. Having the web page automatically rebuilt is almost as good as a WYSIWYG editor. Some statically generated website projects require complex directory configurations. A new Node.js package, spun off from the AkashaCMS project, aims to support such complex directory relationships, while automatically watching files in those directories, and emitting events that can drive automated rebuilding of changed or added files.
Correctly configuring the AkashaCMS blog-podcast plugin for multiple layout templates(August 9, 2020) In AkashaCMS, the blog-podcast module determines which files are included in a given blog by the layout templates. The layout template turns out to be a useful way of determining the kind of document for each file. In other words, a blog post would use the blog.html.ejs layout template. That assumption works until you start implementing other layout templates, which I've done on the AkashaCMS news blog to correspond to adopting Liquid and Nunjucks templates.
What is JAMStack and how does it differ from static website generators?(August 8, 2020) Two ideas, JAMStack and static website generators, are getting attention as a way to simplify website and web application development, while simultaneously being vague unclear marketing terms. Both talk about static assets for website, but what does that really mean? To help decode the vague marketing words, let's examine the technologies, see how they differ, and try to figure out if there's anything important to learn.
Added support for Liquid templates to AkashaCMS, no performance improvements(August 6, 2020) AkashaCMS was designed to support multiple layout rendering engines, but I never went beyond implementing EJS templates. The EJS template engine is competent, but there are many other engines with huge capabilities that could potentially be useful in AkashaCMS. I have two thoughts in mind, to bring in more powerful template engines, but to also find which template engine has the best performance. In other words, it's possible to improve AkashaCMS performance by adopting a different template engine.
Embed code snippets in AkashaCMS rendered HTML documents(April 4, 2020) When presenting code snippets it is useful to have the code highlighted properly. With the Markdown documents used in AkashaCMS it is easy to use code snippets since the Markdown language directly supports this. But sometimes we want to include an external file and have it treated similarly.
Better HTML previewing of AkashaCMS project pages in Visual Studio Code(January 27, 2020) WYSIWYG is a useful document editing model, but in an AkashaCMS project there hasn't been a way to do that. The tools for AkashaCMS let us edit Markdown files in a programmers editor, like Visual Studio Code, but then we're left to our imagination as to how the page will look. It's easy to set up a preview mode in an AkashaCMS project using a simple command-line HTML server and an external web browser. But it's not well integrated with the editing experience, and in practice I never did it. There is a Visual Studio Code extension that makes this better offering a good preview experience right inside VSCode.
Implementing tests for AkashaRender and the plugins, and an automated testing infrastructure(October 7, 2019) I'm finally getting around to implementing much-needed tests for the AkashaCMS system. Not only can each module now be quickly verified, it is now easy to test features as they're being developed. The final step is implementation of an automated system (using Jenkins) to run the tests on every push to the repository, and if the version number in package.json has changed to publish the package.
New AkashaCMS plugin to acknowledge authors on AkashaCMS documents(August 11, 2019) It's helpful on many levels to have an author byline, and author bio, on web pages. Both of these help your readers know who you are and can act to build credibility for a website. Today we have released a new plugin to serve that purpose.
Why use a Static Site Generator to generate HTML files for modern websites(July 27, 2019) I have put a lot of work into developing AkashaCMS, and have used it to develop several websites comprising thousands of total pages. I often whether the time I spend on developing AkashaCMS is worth it, given the lost opportunity to write content for my websites. AkashaCMS is a reflection of my concern over the energy and resource consumption involved in regular dynamic CMS's like Wordpress or Drupal. Getting good performance on a dynamic CMS requires a virtual private server (VPS), adding to the cost and resource consumption. We should all be worried over the climate change and environmental impacts of our choices, including how we host our websites.
How to display UML diagrams inline on an AkashaCMS website(July 19, 2019) UML diagrams are widely used in software engineering, and I'm working on an AkashaCMS project that's meant to be used for software documentation websites. While looking around I found a Markdown-it plugin to support rendering UML diagrams after placing a small UML descriptor in the Markdown file. It's easy to use, and better yet easy to integrate with an AkashaCMS website.
With 0.7, the AkashaCMS plugins need to be updated to reflect new API's(July 17, 2019) For the AkashaRender/Mahabhuta 0.7 release we added a critical API change making it easier to configure Plugin's and MahabhutaArray's. While some of the Plugin's have been updated, not all have.
Announcing 0.7 release of AkashaRender and Mahabhuta(July 17, 2019) A major change was made to the AkashaRender and Mahabhuta API's back in March/April. I had held back on publishing an update to these modules but they've been in use long enough to prove their stability. The changes improve configuration files, and make it easier to reuse MahabhutaArray's outside of an AkashaRender project.
How to set rel=nofollow or affiliate tags in external links in a Node.js web application(March 27, 2019) Setting rel=nofollow or other attributes on outbound links is critically important. Search engines take a dim view of outbound links where there is a monetary gain -- e.g. an affiliate link -- that lack the rel=nofollow attribute. Automatically setting appropriate affiliate referral codes on all relevant external links is important for fully monetizing external links. In this article we'll go over a new package that handles both those tasks. It has an easy-to-use API where HTML enters the processor, and processed HTML is given as a result. The methodology can be expanded to handle approximately a zillion other HTML DOM processing tasks.
Updating an AkashaCMS site to use Bootstrap v4.3.x(February 25, 2019) Bootstrap v4 has been out for a long time, and it's high time we here in the AkashaCMS project moved forward. I've just gone through the exercise of converting akashacms.com to use Bootstrap v4, and should therefore document what I had to do. It wasn't terribly hard but I think it was harder than necessary, and will study how to streamline the process.
Announcing AsciiDoc rendering support in AkashaCMS, another easy-to-edit text format option(August 25, 2017)
The big goal with AkashaRender is simplifying the content editing experience. Until now that meant encuraging the use of Markdown when editing content, and EJS for writing templates. Markdown isn't the only easy-to-use content format. AsciiDoc is widely used especially in book authoring, and is far more powerful than Markdown.
Initial AsciiDoc support has been added to AkashaRender. This post is being written with the AsciiDoc Renderer, and the AkashaCMS Example website has a corresponding test page.
Collapsing figure/img tags into simplified fig-img tag(August 11, 2017)
A purpose of a system like AkashaCMS is simplifying the work of content authors to more efficiently write their content. The task of simplifying work is multi-faceted and can be taken in many different directions.
The task at hand was to collapse the <figure>/<img> combination into a simplified tag.
This combination is the preferred way of presenting images, especially when there's to be a caption.
Building EPUB electronic books and websites on your laptop, no server-side tools required(August 6, 2017)
Yesterday I announced the 2nd edition of Creating eBooks with Markdown and Open Source Tools is available on the Amazon Kindle store, and will be available on other marketplaces soon. I also tangentially talked about the lack of other tools with similar capabilities. It seems from my incomplete survey of the market that software to create EPUB's or static HTML websites usually require either an installed server-side rendering system, or else a heavy-weight WYSIWYG desktop-publishing application.
What the AkashaRender, AkashaCMS, AkashaEPUB system offers is lightweight tools that run on your laptop yet produce websites or EPUB's built using the latest web techniques.
Let's talk about that for a bit.
Published 2nd edition Creating eBooks with Markdown and Open Source Tools(August 5, 2017)
In June and July, I set about updating the AkashaCMS toolchain to be based on AkashaRender. The AkashaEPUB toolchain also had to change, and that necessitated a new edition of Creating eBooks with Markdown and Open Source Tools. This book is the official guide for using AkashaCMS/AkashaEPUB tools to build electronic books. The major feature addition, despite it being much easier to configure AkashaRender to produce EPUB's, is that you can now publish to both EPUB and Website from the same content.
I haven't found another system to do that - to publish exactly the same content as either EPUB or a Website. Okay, that's not quite right since Gitbook can publish to EPUB, MOBI, PDF or online. However, Gitbook limits you to using their servers which just doesn't make sense. Rendering EPUB's and Websites is a lightweight lightweight enough to run on your laptop. Why use a SaaS eBook-publishing system that ensnare's you into using their server? With AkashaEPUB, you get a light-weight system that can run on any computer, and publish EPUB's or websites.
Published AkashaCMS-External-Links, adding "rel=nofollow" and icons to outbound links(July 3, 2017)
It's now required that outbound links to sites that pay money (e.g. affiliate marketing) be marked with rel=nofollow. Your visitors might feel comforted being informed that a link leads to an external site, and perhaps to know what site that is.
AkashaCMS-Embeddables overhaul, huge simplification(June 28, 2017)
The akashacms-embeddables plugin has long been a sore thumb, being overly complicated in part because of the wide variety of methods for embedding content from other sites. It may seem utterly simple when you paste a URL into a Facebook or Twitter status message, or a Wordpress blog post, and voila the embedded HTML snippet automatically pops up. Under the covers certain kinds of magic is done with oEmbed and OpenGraph protocols. A couple years ago when I started the akashacms-embeddables plugin that stuff either was immature, or I didn't understand it, or didn't know about it, or something, but the initial versions of the plugin didn't take advantage of those protocols, and instead had lots of special casing and hard-coded understanding of how to construct a Twitter iframe.
Now that the new AkashaRender-based system is published, I wanted to take the opportunity to clean up the akashacms-embeddables plugin. I've found a pair of packages that make retrieving oEmbed and OpenGraph data very nice and easy.
Massive change, AkashaCMS is gone, replaced with AkashaRender(June 27, 2017)
A couple years ago I grew dissatisfied enough with the design of akashacms, the previous processing engine in AkashaCMS. It was a powerful system, with it I built several large websites, wrote a book, and so forth. But its inner structure had grown organically into a bit of a mess. My pondering about what to do led me to implement a complete rewrite. The new rendering engine, AkashaRender, is more flexible and is more sensibly organized. It is also incompatible with the older system.
Over the last week I have deprecated the old akashacms-based system, and have published updates to everything including the plugins and this website. This blog post goes over what's happened.
Major upgrade to Mahabhuta, the server-side DOM processing engine in AkashaCMS(September 15, 2016) Mahabhuta can now, with its version 0.5 release, emerge from the shadows of AkashaCMS and serve a useful purpose in its own right. DOM processing in the style of jQuery is now possible in Node.js server applications. The update makes it more feasible to integrate Mahabhuta into applications other than AkashaCMS, including integration into Express applications.
How to add a free shopping cart and sell products on an AkashaCMS website(November 13, 2015) Supposedly selling products via a website and having a shopping shopping cart requires a dynamically generated website using a content management system. But, there are online store services which can be added to any website, even ones built as static HTML files.
Created skeleton for akashacms-blog-podcast(September 27, 2015) It occurred to me, potential AkashaCMS users need a helping hand to start a blog.
Added akashacms-footnotes plugin - EPUB's can get footnotes(June 7, 2015) In the book I'm writing now, I want footnotes. Therefore repurposing existing code was the order of the day.
AkashaEPUB received nearly complete rewrite - hugely simplified(May 19, 2015) The initial version of AkashaEPUB demonstrated the need to hugely simplify book configuration. That's been done.
AkashaEPUB 0.4.6 released, Guidebook posted to eBook stores(April 28, 2015) Achieved a major goal with AkashaEPUB - the guidebook has been successfully uploaded to several online eBook marketplaces.
AkashaEPUB 0.4.2 released, Guidebook written(April 20, 2015) Since the last news in February, I had the crazy idea to repurpose AkashaCMS to support building EPUB's. That's now finished, and a guidebook has been written.
Announcing AkashaCMS 0.4.1 - rendering chains, grunt integration, EPUB generation, and more(Feb 25, 2015 12:07 PDT) Major amount of work went on the last two weeks, restructuring AkashaCMS to allow pluggable rendering chains, using it in a Grunt workflow, and generate EPUB files.
Announcing AkashaCMS 0.4.0 - server-side jQuery, streamlined rendering, and more(Feb 14, 2015 12:07 PDT) Nearly a year in the making, with v0.4.x AkashaCMS is greatly improved, faster, uses server-side jQuery-style DOM manipulations, and more.
Upgraded akashacms-theme-boilerplate to Boilerplate v5, AkashaCMS 0.4.x release imminent(Feb 14, 2015) The Boilerplate team just released version 5, which has now been rolled into akashacms-theme-boilerplate.
AkashaCMS 0.4.x release on hold for Boilerplate v5(Feb 12, 2015) Since Boilerplate forms the basis for AkashaCMS theming, and since they just released version 5, it seems necessary to hold the 0.4.x release to integrate the latest Boilerplate.
Looking forward to AkashaCMS 0.5.x work(Feb 11, 2015 12:00 PDT) Now that AkashaCMS is reaching its 0.4.x milestone, what am I thinking of for the 0.5.x release
Created AkashaCMS organization to shephard AkashaCMS into the future(Feb 11, 2015) On the cusp of its 0.4.x release, AkashaCMS creator David Herron announces the ownership transfer of AkashaCMS to the new AkashaCMS organization.
Announcing the Blog & Podcast plugin(Feb 10, 2015) They say every content management system becomes a blogging platform. Whether or not that's true, it's just become true for AkashaCMS. A new AkashaCMS plugin allows the creation of multiple blogs within an AkashaCMS website.
Progress on jQuery-style templates for AkashaCMS (Mahabhuta)(2014-06-01 16:43) Since last weekend I've been working on Mahabhuta, the new element-oriented template system using jQuery's API, in AkashaCMS. The goal was to verify that it's useful by attempting to implement some important things with it. I'm happy to say that Mahabhuta is living up to what I hoped. I've been able to reduce complexity in AkashaCMS and the path is clear to perhaps removing the Kernel template engine, because the functionality I sought with Kernel is now available via Mahabhuta.
Major change in AkashaCMS - new model for rendering content, and jQuery as a template engine(2014-05-27 14:47) I'm about to release an AkashaCMS v0.3.x update that represents a major rewrite of the rendering system, and the addition of support to use the jQuery API on the server side to manipulate rendered pages. Both of the changes are major, and take AkashaCMS to a new level of flexibility. First, Website authors will be able to use any combination of template engine on each page, giving better flexibility over page formatting. Second, the capability to use server-side jQuery calls means a different approach to inserting content into the page (versus traditional templates) plus we can implement filters to make broad-based content tweaks.
Static HTML website builders (AkashaCMS, etc) slashes web hosting costs to the bone(2014-04-15 01:52) Today's web is supposedly about fancy software on both server and client, building amazingly flexible applications merging content and functionality from anywhere. What, then, is the role of old-school HTML websites? In particular, why am I wasting my time building AkashaCMS and not building websites with Drupal?
AkashaCMS v0.3.0 released - major rearchitecting, plugins, improvements, much more planned for v0.4.x(2014-04-15 00:44) I'm pleased to announce that AkashaCMS has reached version 0.3.0. This version has been over a year in development and isn't quite what I'd intended, but it is a result of the actual needs during the past year. The primary change was to architect AkashaCMS to support plugins, a move which allowed the creation of several useful plugins.
Preparing AkashaCMS for 0.3.x, adding plugin support(2013-08-04 21:08)
I'm going to be declaring AkashaCMS 0.3.x pretty soon, and I have an interesting new feature in the works. The idea is to support multi-way extensibility of the processing of a website via the configuration file. The implementation is a form of "plugin" that allows anybody to write a module that extends the configuration of an AkashaCMS site, add new processing functions, hooks at different steps of the processing, and add directories managed by the plugin containing assets, layouts or partials.
Okay, that was pretty dense so let's take it one step at a time.