If you are anything like me, you have a love-hate relationship with WordPress. It's a great app, rock solid and extensible in almost any manner imaginable. It is also bloated needing thousands of files for even one single blog post. It hides my post content inside a cryptic MySQL database, and has more features than I'd ever need, making it complex and difficult to learn and use. I wrote Innuendo to get around these issues.
Innuendo, which began life as an internal module to Gigatrees, has several advantages if all you need is a compact, clean and completely free blog. First of all, Innuendo is anonymous. You do not need to create an account to download or use the application. That also means you don't need to tell me who you are or give me your email address. I won't be contacting you or sending you spam emails, so that's a plus.
Innuendo stores all post content and configuration parameters into an XML configuration file (no database). It also provides a simple interface for offline editing of your blog posts. Innuendo supports well-behaved third party plugins for adding features such as photo moasics or video support. Innuendo is a Windows application that can generate either static web pages, or store those web pages inside an SQLite3 database so that they can be served dynamically. All web pages load jQuery and Bootstrap 3 from content delivery networks by default, making them responsive on both desktops and mobile devices. Static web pages can be in either HTML or PHP format. The footprint totals one page per post/category/author and hashtag, one page for each index, a page for the master index, a page for the feed, and 7 asset files ... that is 19 files for the first post and 1 or 2 files per post after. If you are serving your pages dynamically, the footprint is reduced to 1 database file, 6 support files (including a URL router for friendly URLs) and 7 asset files, that's 14 files total, no matter how many posts/categories/authors or hashtags you have. You cannot get a blog much smaller than that.
If you use Innuendo and find it useful, please consider making a donation.
The Innuendo application is composed of two programs, the Application Interface (AI) and the Command Line Interface (CLI). The AI was written using FormType . You can click on any configuration option title in the AI to get detailed help. When you launch the application from the AI, the CLI will open, read your configuration file, and generate your webpages into the Output Path speicifed on the main configuration screen. If you have not loaded a configuration file, the default configuration, void of any posts, will be used. Web pages must be deployed manually to your web server. The AI's Options menu has several available configuration categories that can be edited.
The Media Gallery is where you can define images that can be used as featured images or in your embedded references.
The Posts menu is where your posts will be added, edited and removed from. When editing a blog post, you have options to set the base filename (slug), publication date and time, modification date and time, author, abstract or summary, a featured image id, a category, mutiple external hash tags and multiple keywords. Hash tags can also be embedded within post content. You can also specify to exclude the specific post or just its content from the feed, hide the post on public sites, and put the post in draft mode so that it will not be included in the generated blog. You can also choose to remove extra line breaks on per post basis, and hide the featured image on the actual post.
The Database menu is where you will setup and enable the SQLite3 database for dynamic page serving.
The Metadata menu allows you to set your dynamic web page metadata and provides hooks that can be added to your Headers and Footers for metadata replacement. The metadata options available and their associated hooks are: domain (%Domain%), website title (%SiteTitle%), website description, (%Description%), website author (%Author%), website location (%Location%), language code (%LangCode%), website generator (%Application%), post title (%PageTitle%), post URL (%PageURL%), post image (%OGImage%), keywords (%Keywords%), feed link (%FeedLink%), assets folder path (%AssetsPath%) and plugins folder path (%PluginsPath%). Many of the metadata options are directly configurable, others are determined dynamically when the page is served. Most of these hooks are already setup in the default Metadata Header and Footer options. Additionally there are several other hooks (%PreHeader%, %DropHeader%, %DropBody%, %DropFooter% and %MenuBar%) that can be used by plugins to insert content into your Header and Footer. It is common practice for blogs to include external scripts and style sheets in plugins rather than hardcoding them into the Header and Footer as is shown in the default configuration, but Innuendo lets you decide for yourself which method best suits your needs. No need to complicate things if it is not necessary.
The Security menu allows you to privatize your website. When the Privatize option is checked, posts that are configured to be hidden on public website will be excluded from the generated website. This allows you to have a private blog the requires user authentication to access all the posts, and a public version of the same blog where a subset of posts would be displayed.
The Extension menu lets you choose which between PHP and HTML files, and lets you choose whether you want the extension to be included in hyperlinks.
The Menu Bar menu lets you choose whether you want the integrated Bootstrap navigation bar to be included in the Header and whether you want the navigation bar to be fixed to the top of the page, or floating so that is scrolls with the page. You also have the option to include/exclude 'index.html' or 'index.php' in/from the the menu hyperlinks. There is also an option to add menu extension text so that you can easily add sign-in or contact links to the integrated menu. The integrated menu will be inserted where the %MenuBar% hook appears in your Header or Footer. You can exclude the menu bar and use your own simply by disabling it or removing the hook.
The Plugins menu lets you specify the folders where your plugins are located. See the article on Adding Plugins for some examples. The examples apply to Innuendo as well.
The Translation menu can be used to translate the display strings generated by Innuendo. You can translate the display strings manually, or using one of the supported translation services. See the article on Translating Your Gigatree for details. Again, the description applies to Innuendo as well as to Gigatrees.
The Disqus menu lets you integrate the Disqus commenting system with your blog. The comments area will be attached to the bottom of every blog post.
The Blog menu provides numerous useful options. If you want your blog to be placed into a subfolder of your Output Path, you can specify the path. You can specify the number of post abstracts to include on the index pages and on your feed, you can set auto-generated abstract length, sort order, data format, feed syndication hours, minimum hashtag size, category, tag and author list filename prefixes and their suffixes. You can enable/disable the feed, include/exclude post content from feeds, prepend category names to post titles, and remove extra line breaks (when embedding HTML, see below).
The Featured Images menu lets you define several generic images that will be taken at random when one is not included within the post itself. This can save time when you're too lazy to go find a new image when the post is ready to publish.
Innuendo supports pagination on the index pages, and allows embedding HTML tags into post content. It will auto hotlink all URLs it finds in the text and images will be opened using the FancyBox jQuery plugin. Innuendo also supports hash tags. Whenever Innuendo finds a pound sign (#) followed by text, it will flag it as a hash tag. Dashes in hash tags are converted to spaces when displayed. Hash tags can also be added outside of a post in the configuration. Separate index pages are created for each hash tag, category and author found in your Blog. Hash tags in your text are automatically hotlinked to their index pages. The category and author are also linked at the top of your posts and on the index pages, and the hash tags are linked at the bottom. In addition, the author, category and hash tag index pages are listed and linked at the bottom of the main index below the pagination element. When Disqus is enabled, your posts will also include at the bottom of the page a complete commenting system.
By default, blog indexes are sorted by reverse publication date. Innuendo also supports sorting by reverse modified date, and by reverse record id. Since record ids are generally assigned in numerical order, sorting by id is the same as publication date with the added benefit that you can manually adjust your record id to force a particular sorting order. You can for instance give a post that you want to be sticky an id much larger than all the others.
By default, publication and modified dates are shown in long format (i.e. January 12, 2001). Innuendo supports a Short Dates option to force showing the dates in short format (i.e. Jan 12, 2001).
Innuendo allows you to specify an abstract to display on the index page along with the blog post's title. When no abstract is specified, one will be created automatically from post content. HTML tags are stripped from all abstracts.
If you are embedding HTML in a blog post, you will find Innuendo treats all carriage returns (or newlines) found in text as HTML break characters. Unexpected line breaks can occur in text because many tags such as header (<h>), page (<p>), and blockquotes have implied line breaks built into their opening and closing elements. To minimize these unexpected breaks, you generally need to butt HTML tags up against one another rather than putting them on separate lines. Innuendo has a Remove Extra Line Breaks option that will convert multiple breaks to single breaks, and remove extra breaks around some of the more common HTML opening and closing tags. When this option is enabled, you can still force extra breaks by adding the HTML non-breaking space characacter entity (
) to a blank line. The Remove Extra Line Breaks option only works if the HTML tags contain only breaks between them and no whitespace.
Using Innuendo is a snap. Download it and then extract it to a folder of your choice. This will be the installation folder. It does not install itself into your Registry, so you can move the folder at any time. To uninstall it, simply delete the installation folder. The installation includes a sample configuration file (
sample.xml) that contains a single blog post. It also sets the Output Path to the installation's subfolder:
web. To run the program, execute (
innuendo.exe). Use the File menu to load your configuration file and use the Options menu to modify your configuration and manage your blog posts. Clicking on the title of any configurable item will display additional help. When you are ready to generate your blog, launch the application from the Run menu. The View menu can be used to display the build log and to view your blog offline. Viewing your blog simply means the Innuendo loads the blog's
index.html file into your default browser. If you build your blog using the PHP option, you will not be able to view it offline. To view your blog online, you will need to copy the contents of the
web folder to your web server.
As you can see, there are quite a few useful options built into Innuendo to support blogging. If you want a simple blog without the bloat and hassle of a complete WordPress installation, Innuendo has your back. If you also happen to be a genealogist, see the article How to Add an Integrated Blog to your Gigatree.