One man's ongoing quest to create a blogging system, the Mercury CMS, without the BS.

Another protracted pause 2018/01/01 15:00

I know, it's been quiet here. Real life has been taking priority. But I've been working slowly on a few things:

Tags: database  exporting  installer  queue  themes 

October check-in 2017/10/20 08:00

Queuing, performance, UI, preview management, and more.

Time for a check-in. It's been a bit.

Read more

Tags: previews  progress  queue 

Long may you run 2017/09/03 14:07

What to do about blockers and long-runners?

One thing I've been wrestling with on and off is how to deal with long-running operations that are potentially blocking. For instance, deleting tags. If you have to delete a tag and re-queue 200 pages because of the deletion, the re-queuing operation can be quite expensive, and it can hang input for a long time.

The current solution I have for this is to allow such operations to be operator-batched. That is, we do the queuing and deletion in batches of, say, 25 or 50, with either the operator re-confirming at the end of each batch or using an AJAX page to keep things humming. It's not ideal, because it brings up all kinds of questions of how to lock things that are not necessarily directly affected by these operations (what if someone adds a tag to a page while it's being deleted?). But I'd rather have some plan for how to do this properly in the long run than no plan at all.

Tags: queue 

Let's get rid of this 2017/09/02 20:00

Tag deletion is now live.

I just landed a new feature: deleting tags. Rebuilds are also intelligently queued to handle both pages and archives affected by the change.

Next up is a way to merge tags on rename. Shouldn't be too difficult.

Tags: tags 

Preview power! 2017/09/02 11:37

A new way to look at work in progress.

I just landed some improvements to the ways previews are generated. There's a new field in the FileInfo table (which lists all the physical files generated for a given blog), which holds the path to the last preview generated for a given fileinfo entry. This makes it easy to mop up after them when we don't need them anymore, and to allow them to be persistent if we want to allow that option in the future.

Tags: previews 

You can put away your magnifiers 2017/08/31 19:00

The site works properly on mobile.

Somewhere along the way I never properly added the <meta name="viewport" content="width=device-width, initial-scale=1.0"> declaration that makes the site more readable on mobile. It's in now. Silly me.

Tags: CSS  design 

Tag renaming is now available 2017/08/30 19:00

New feature, just landed.

I landed a commit last night that allows tags to be renamed across a blog. When you do so, all pages affected by those changes are automatically queued for republishing.

One tiny drawback of implementing this right now: There's still no mechanism for locking pages for editing. It's possible renaming a tag while a page is being edited could have weird side effects.

To offset that, I added a little safeguard. if you attempt to edit a tag used by a page that has itself been modified (or even just opened) in the past hour, you'll get a warning. It's not a perfect solution but it's a nod in the right direction.

Tags: features  progress  tags 

See all previous posts