LnBlog 2.1.0 - No Need for a Crappy Mobile Experience

Hot on the heels of LnBlog 2.0.0 a mere year and five months ago, release 2.1.0 is here!  This one includes a bunch of quality-of-life and usability improvements, including some basic support for responsive layout, editor improvements, and a less crappy interface to change plugin load order (which tool me like half an hour, so I'm not sure why I didn't do that years ago).  This release also includes entry pagination for the main blog page which, again, didn't take that much work and is a basic feature I should have implemented years ago.

Another new feature is the introduction of a task queue.  This is a glorified way of referring to a command-line script that reads a JSON file and does stuff based on what it contains.  The idea is that you can just run this via a cron job or similar task scheduling system.  Right now it's only used for scheduled publication, but it will be useful in the future for other things.  Configuring it as a cron job is currently optional, but highly recommended (if you don't, the back-end of the script will just run on every request to the main page).  To set up the "cron" functionality, create an entry in your crontab (or wherever you create your cron entries) that runs: php /path/to/lnblog/cli.php --cron.  Then add the line USE_CRON_SCRIPT = true to your userdata/userconfig.cfg file.  (Note: if you prefer to use userconfig.php, you can add the constant definition there instead.)

We also have several security enhancements in this release, including login attempt throttling and CSRF protection.  Again, both long overdue.  The list of tickets with Github links is included below.  There's probably a bunch of other undocumented stuff I fixed and forgot about too.

You can grab the zip file from the download page.  As usual, the upgrade process is to just to move the old directory, extract the zip file, and copy your userdata (and any other custom files) into the new directory.  Or, if you moved userdata up one level (which you should), just move the old directory and extract the new one.  I think we're close to the point where nothing that you should care about is stored in the actual application directory, but I can't swear to it.

Also, you'll need to run a "blog upgrade" for each of your blogs from the admin page.  As always, it's wise to backup all your data before upgrading.  Remember, there's no warranty on this - if it breaks, you get to keep both parts.

Anywho, here's the ticket list.

LnBlog - Now on GitHub

Just as an FYI, since I haven't really been religious about updating the documentation, LnBlog is still alive and well and is now on GitHub.  You can find it here.

For years I hosted LnBlog on my personal Mercurial server running my own bug tracker for project management (first MantisBT, then The Bug Genie).  However, as I wrote in my regular blog, Mercurial has lost the DVCS war and I'm tired of having to manage and administer a bug tracker, so I've switched LnBlog to Git and moved the project management to GitHub.  Of course, I still run a private Git server, because I'm paranoid and I don't want to be totally dependent on a third-party, but I don't want to manage the public-facing stuff anymore.

On the up side, this will also make LnBlog more visible and make it more convenient for anyone who is interested to follow development.

And speaking of following development, I've added an awful lot of stuff since the last official release.  This includes some security enhancements, post auto-save, WYSIWYG editor enhancements (including mobile support), a responsive layout, and actual pagination.  All that stuff will go into the next release, but you can always clone the master branch if you want to try it out now.

LnBlog 2.0.0 - No Need for Regularity

Wow, three and a half years since the last release.  That's kind of a long time.  But on the other hand, seeing how this was my very first PHP project (back in the PHP 4 days), and I've now been writing PHP professionally for over a decade, it's a small miracle that it still works at all.

Anyway, there have actually been quite a few changes since the last release, although many of them have been under the hood.  Basically, I've been using LnBlog as a test bed to practice refactoring legacy code.  So I've done a bunch of restructuring, adding unit tests, fixing bugs, and generally trying to simplify things.  Among the bigger updates were removing most of the wrapper pages and reworking the post publication process.  There's a lot still to do, but the code is gradually getting better.

Since this is a major version, there are some feature additions as well.  Here's the full list of items in the milestone, but the big ones are support for sending and receiving Webmentions (they show up as Pingbacks, which are essentially the same thing anyway) and support for listing and deleting files attached to blogs and entries.

Note that my justification for calling this version 2 is that I'm requiring a data upgrade for older blogs, like this one.  So if you have entries with the old "current.htm" data files, the blog needs to be upgraded.  (Note: I am probably the only person in the world to whom this applies.)  This release adds support to the "blog upgrade" process on the admin page to migrate those files to the newer XML format.  The next release will remove support for the old file formats.

So feel free to check it out.  As usual, you can get the zip archive from the download page.  If you're so inclined, you can also grab the source directly from Mercurial.  You should be able to just drop it on your server, run composer install, and point a browser to the URL.

LnBlog 1.3.0 - No Need For Tenchi Muyo References

Hey, look at that - another release!  And just a little over a year since the previous one. 

There's not really much to this.  It's mostly under-the-hood improvements and cleanup, along with a few bug fixes.  I also played around with the edit form and added support for writing posts in Markdown.  But honestly, I just wanted to get a release out before trying to make bigger under-the-hood changes.  I know, not very exciting, but I just didn't want too many changes piling up.

Anywho, the installable ZIP archive is on the download page and the list of changes is on the isue tracker.  The full source is available from the Mercurial repository linked from the project page.  Please report any bugs.

Have fun!

Documentation update

I've uploaded an updated version of the official documentation.  You can view it here.

Sadly, I hadn't updated the documentation in years.  Some of it was misleadingly out of date — for instance, it still claimed to run on PHP 4.1, which hasn't been true since version 1.0, which I put out in 2011.  So, yeah, it was kind of embarassing.

The new documentation takes care of some details like that.  It also rounds out the documentation for all the standard plugins.  Or, rather, all the plugins that will be standard in the next release.  So it'll be slightly ahead of current until then (though the next release shouldn't be too far off).  It could probaby be a little more comprehensive, but at least every plugin has a page now.

LnBlog 1.2.0 - No Need to Give Up

Hey, look!  It's another LnBlog release!  And only two years since the last one!  Boy, Pete sure knows how to keep those improvements coming, doesn't he?

So...yeah.  Here's another release.  Development isn't anywhere close to what I'd call "active", but I'm still using this thing for my own site and I'm still maintaining it.  In fact, I'm still adding the occasional feature.

The most visible change is probably that the HTML editor plugin is now inclued and enabled by default.  So instead of writing posts in a dialect of BBCode, you can just use the TinyMCE WYSIWYG HTML editor.  Note that the editor is implemented as an update to the old TinyMCE plugin, served via the free CDN.  So if you want to write your HTML in a text area, you can just disable the plugin.  And if you want to write your posts in LBCode, you can still set the markup mode as normal and the editor will be disabled.  There are also a bunch of other fixes in this release - the list of tickets is available here.

You can grab a copy of the latest version from the traditional download page (complete with checksums and GPG signature).  The recent releases are also linked to from the project issue tracker, which has been switched from MantisBT to The Bug Genie and includes things like a "releases" page, planning pages, and so forth.  You can also use the tracker to file reports for any bugs you happen to see.  Anonymous reports are disabled due to spam, so you'll need to either create an account or log in via OpenID.

Enjoy!

LnBlog 1.1 - No Need for Users

Wow, it happened again! Another release!

This version has a few minor feature additions. Mostly just small stuff that I wanted. Honestly, it's not like I have any users, so at this point it's really just releasing the source to code I'm writing for myself.

Anyway, this release includes things like the ability to schedule a draft for future publication, the ability to set the main page of a blog to be an article (rather than having the list of articles as the main page), a new "author bio" sidebar plugin, and some various bug fixes. You can see the changelog here and download the code here.

LnBlog 1.0: Resurrection

Hey, whaddaya know? I finally released version 1 of LnBlog! Yay!

OK, so it's not really that big a deal. Just a few bug fixes and some minor features. But still, it works a little better and is slightly more modern. It's also a relatively stable state, as opposed to the random set of semi-tested changes that have been hanging around in my working copy for God knows how long.

You can find the change log for this version here. The only real new features are in the entry editor - an AJAX-based preview and dynamic addition of file upload fields. Other than that, it's mostly various bug fixes.

Anyway, feel free to mess around with it. You can get it from the download page. If, by any chance, you want to upgrade an existing installation, just copy the new files into place and run the "upgrade blog" from the admin page. Please report any bugs using the issue tracker.

Public Mercurial repository online

To go with the newly-added issue tracker, LnBlog finally has a publicly accessible code repository.

Last week I started playing with Mercurial and switched LnBlog from Subversion to that. In the process, I set up a web-accessible central repository. Previously, I'd just run the Subversion repository on my local machine, but since Mercurial makes it so easy to set up the web-based repository, I figured why not?

You can access the repository at http://hg.skepticats.com/lnblog. Feel free to browse the code, clone the repository, and send me any changesets if you're so inclined.

I have returned

It's been three years since I updated this site, but I'm back. After a fairly long hiatus, I've decided to pick up development of LnBlog again.

There are several reasons for this. The first, and most pressing, is that I still use this software for my personal blog, and I don't really want to migrate to something else. For one thing, writing migration scripts is a drag. For another, it's kind of a point of geek pride to have written the software that runs you site.

The second, and only slightly less pressing, is that I actually still have this application on my resume. And why not? After all, it represents three years of work and tens of thousands of lines of code. So it's a significant accomplishment. Unfortunately, it's also horribly out of date. In other words, it's not such a great example of my current work. In fact, much of the app isn't quite up to my current standards, so I'm going to fix that. Although I am happy to report that, when I was looking through the code the other day, it wasn't nearly as bad as I thought it was going to be. I've seen people get paid to write much, much worse code, so I guess I shouldn't be too hard on myself.

Anyway, in the coming months, I'm going to be slowly updating LnBlog. I'll start with a 1.0.0 release, which will really just be my new starting point - some bug fixes, a few extra features, and killing off support for PHP 4.

To facilitate this, and to ramp up my own software engineering discipline on my personal projects, I've instituted an issue tracking system. You can check it out at http://tracker.skepticats.com/. If you find any bugs or have any feature requests, feel free to create an account and report an issue.

I'll update this site little by little as I get around to it. I have much less time for this than I did when I originally developed LnBlog, so don't look for lots of huge new features or updated documentation. Think frequent incremental releases adding minor features, fixing bugs, and refactoring things. But at least it's better than the project being dead.