The More Things Change...

Published:August 19, 2018Estimated Reading Time:
~6 minutes

A lot has gone on since the last update. The theme has completely changed
under the hood and has a new name. There’s a new form-handling server
(currently in beta) that makes it easy to do what you want when people
submit forms on your website. Plus, future plans for keeping the projects
sustainable.

Midnight Theme

After deciding I was going to add other, related software under the
umbrella of BluestNight, I figured I needed to rename the theme to avoid
ambiguity when writing about the theme versus the collection of software.
Midnight sounded like a good name, it wasn’t taken on the Hugo Themes
showcase, and it fits the BluestNight theme. Midnight it was.

A lot has changed between the last release of BluestNight theme and the
first release of Midnight. Some were planned. Others came about after I
realized now would be the best time to do any backwards-incompatible changes.

Foundation CSS

The theme was originally written with
Foundation, a CSS framework similar in ways to
Bootstrap, but without that “this was definitely made in
Bootstrap” feeling. Foundation was removed when I decided to make the theme a
little lighter by implementing only the things I needed. It’s been added back
in now that I have other projects to work on - it’s nice to let the framework
do some of the heavy lifting - and to make this next item easier.

Plugins!

Possibly the biggest change under the hood - maybe second to switching in
Foundation - was the gutting and reorganizing of the templates to foster a
plugin system.

General plugins are the simplest kind of plugin. They are
only able to insert content into the <head> and at the end of the <body>
of every page - such as for inserting CSS or JavaScript, respectively, or
adding metadata to each page. You could, for instance, load custom fonts and
use them instead of the theme defaults, or integrate a different analytics
system on the site.

Sidebar widgets have existed as part of the theme before,
but this allows site creators to make their own widgets to integrate with
their needs. Widgets can also insert code into the site like general plugins:
Midnight will automatically include that code when that widget is enabled.

Shortcodes are nothing new in Midnight, nor are they
particular to it. Rather, the idea of shortcode plugins are to integrate
your custom shortcodes into the theme, so that you can load whatever CSS and/or
JavaScript is necessary for the shortcode to work correctly. That code will
only be included on a page if the shortcode is used on it, preventing
unnecessary requests and longer load times.

Comment providers allows site owners to integrate their
preferred commenting system onto content pages, while allowing all of the
theme controls for whether comments load on a page to still work. And, again,
any CSS or JavaScript necessary to make the comment system work can be loaded
on the page as needed and in the appropriate places.

Mobile Menu

Midnight does away with the accordion-style menu from the BluestNight theme
and instead uses Foundation’s off-canvas combined with the
drilldown menu for a better experience.

Assets, Not Static Files

Midnight now uses asset resources for its CSS and JavaScript
files. This allows the theme to rely on Hugo to minify files instead
of bundling separate minified and non-minified versions (which can lead to bugs
being fixed in the latter and not the former). Hugo can also bundle multiple
assets together in one file, if desired, such as for the next added feature.

Optimizing For The Modern Web

Midnight now comes with the option to optimize for HTTP/1.1 or HTTP/2. You can
find a discussion about the differences in the documentation, but the
big idea is that a few large, bundled files is better for HTTP/1.1 and a bunch
of small, separate files is better for HTTP/2. Midnight allows you to choose
which to build for. If you really wanted, you could even build one for each and
let your server choose which version to serve, based on if the browser supports
it or not.

Changed Shortcodes, And More

A new shortcode has been added to work with the new
form-handling server. The static shortcode has been renamed
to link and is now much more powerful. Plus, a bunch of
other smaller things I may have forgotten. It’s really worth looking through
the documentation, especially if you were previously using BluestNight.

Nebula Forms

Meet Nebula, the newest addition to the BluestNight suite of software
(if it can be called that yet).

Nebula is a form-handling server configured with TOML files that lets you
choose what to do when a form is submitted. It’s written in Go and takes
advantage of Go’s template system (the same one behind Hugo themes) and Go’s
plugin system to make a customizable and extensible piece of software. It is
integrated with Midnight but can be used with any website on any platform.

Nebula currently only supports sending emails when forms are submitted, though
those emails can be easily customized using templates, even to determine
whether fields should have values at all. It also supports generating errors
to return to the user - the most important piece of server-side validation.

The software is currently in beta, as it hasn’t been battle-tested too much
and there are some security-related features I’d still like to build in -
features like audit logs and rate limiting to help prevent people from abusing
the server software.

If you want to help out, check out the guides for setting up
Nebula on your own machine and file an issue if you run into
any issues or something isn’t implemented that you think should be.

Supporting the Projects

If you like the stuff I’m doing, please consider donating. I work on
these and other projects in my spare time, and paying for server space,
privacy policies, and other things necessary to keep this all running is
burning through my savings. I’m a full-time college student, so once school
starts I’m going to have a lot less free time to work on these projects. I’d
rather not have to spend it working on campus to be able to pay server bills.

For those who are curious how much that is, I’ve posted previously on my
personal programming blog about what those costs are.

The two main ways you can support are through Patreon and Liberapay. Both are
recurring donation platforms, so if you want to make a one-time donation, the
best way to do so is to subscribe for the amount, then unsubscribe when the
payment goes through.

Finally, thanks to those who are currently supporting as they are able. It’s
not much, but it does help.

Future Plans

I’m going to be working on building Nebula into a good stable release, plus
contributing to Commento, a self-hosting comment platform
that is integrated with Midnight. It’s not enabled on this site yet as there
are a couple of things I’d like to see in it first, but it will soon be the
system running the comments on this and my other sites.

Past that, I intend on making a server that integrates with Stripe and
platforms like Patreon and Liberapay to give subscribers a single account
that can be used to access versions of Nebula and Commento hosted by me, as
a thank you for supporting. It probably won’t come for some time, as I work
on getting some other things polished first, but it will happen.

Until next time!

About Michael Bryant

A college student at Seattle Pacific University. Programmer and blogger on the side. Author of the BluestNight software.