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


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 


Now, where was I? 2017/08/20 14:00

It's been a while. I owe people an update.

It's been a while. I owe people an update.

No, the project is not dead! I have just been incredibly busy. But between here and there, I found time to do a few things:

There's still a lot left to do, though.

I'm trying to stake out strategic blocks of time to take care of each of these things in turn. Hope to be posting more often shortly.


Tags: bugs  progress  real life 


See all previous posts