I have released a new version 1.0.2 of the Paper theme today, which addresses the reported issues and suggestions since the first release yesterday. Here are the changes, in brief.

  • Added support to include replies on individual posts
  • Added the configuration of social icons as plug-in setting
  • Updated the styling to display categories along with posts
  • Updated documentation to include installation steps
  • Fixed styling of images on smaller screens

You can go to the Plug-ins section in Micro.blog and click “Upgrade” once the option is available. You will have to reconfigure (for the last time, hopefully) the social IDs in the settings of the plug-in. No need to modify the config.json, anymore. This also means the configurations will not be lost during the future upgrades.

I am thrilled with all the feedback that I have received. Paper is a beautifully designed theme, something I can take no credit for. At the same time, I am glad I could make it simpler for others to adopt it.

Paper – A Clean Theme for Micro.blog

After playing around briefly to understand how to bring a theme made for Hugo to Micro.blog, I have finally ported one that I love. Today, I am ready to share it with the Micro.blog community. The theme is called Paper and goes with a tagline “simple, clean, flexible”. You can check for yourself in the screenshot below, or see it live at my test blog.

I am a big fan of clean themes that are minimal, yet impressive. Paper is one such theme — I had used it earlier when I was hosting this blog with Hugo. Although it looks minimal, it isn’t so in the way it works. It has a simple, yet signature header, a built-in dark mode support with a beautiful toggle and a clean black & white look.

I have added the first version of this theme to the plug-ins directory so that you can install it directly as a plugin. It works with both Hugo versions that Micro.blog supports (0.54 and 0.91) [Update]: An issue was reported while using the theme with Hugo version 0.54. So, until further update, the theme supports only version 0.91 of Hugo. However, here are a few points to remember before you install the theme.

Uninstall any theme that you have installed as a plugin. Set you current theme to blank and Hugo Version to 0.91 in the design section of your blog. Make sure there are no other conflicting custom CSS configured for the previous theme. Then install the Paper theme from the plugin directory. Once the theme is successfully installed, you can configure the social icons displayed in the header by modifying the available options in config.json.

There’s already a brilliant selection of themes available for Micro.blog and I am excited to see the support grow further with every passing day. I hope you like this and a few folks benefit from it. If you do, I would love to hear from you.

I verified today that the Post Stats Micro.blog plugin works with the upgraded Hugo version (0.91). So, that’s one less issue I need to handle as part of the next upgrade. However, if you are using the plug-in (I am glad) and see an issue, please let me know.

Back to work on what I had originally planned.

After a few busy weeks, it’s good to be back reading the timeline at M.b again. The inspiration to write, to tinker, to create, to reflect is contagious; and the M.b timeline is full of that.

I am happy with the second issue of the weekly newsletter that I sent out today. The minimal styling that I had recommended last week seems to have helped it. Sure, it was still some work to restructure a few things. But it was worth it. I also fixed a few minor issues.

I decided against replacing my theme with something entirely new. I have too many custom components baked in currently that I don’t have time to replicate afresh. Plus, all the feedback from folks helped me convince myself that what I have is good enough.

But, I have refreshed a few aspects in the existing theme. As advised by Khalid, I started with a typeface and replaced it with a serif one. It looks a lot bolder to me. A few clean-ups around accent colours. And a lot of moving stuff around.

What I have, thus, is something that looks different, yet is the same. The journey is incomplete yet, there are many ugly corners that need clean-up. But I will get to those as time permits.

An inner monologue around my site’s theme to follow. I have grown bored by looking at my current theme. Not that I don’t like it, it just needs a reset. This has been how the site looks for a couple of years now. It looks so bland. Not playful. Not personal. There is no character.

Over the year, I have added so much stuff to the theme. It does not, at all, resemble what I started with. It feels hacky all around. I have realised I can’t create anything polished, so I prefer not to build something totally custom. I prefer anything that comes ready-made. But that’s tricky as these are still early days for theming with Micro.blog. I like a couple, but neither is perfect. Shall I start with one and personalise in limit? Do I want to take the project up?

I know, I know. “It is the words that matter and not what’s around.” & “Make the content beautiful, not the container” & blah blah.

I get it. That’s the writer in me speaking. But the developer in me is craving for change. Can I hold him back?

With another tumultuous year coming closer to end, it was time to start reflecting back. As I did last year, my Now page is the best place to start. I updated it one last time this year. Over to review how I spent the year, always wonderful to read the strikethrough entries.

Now that there is a better support for drafts and scheduling posts in Micro.blog web interface, I can’t believe it didn’t exist till now. It was refreshing to hear Manton acknowledhe the same during Micro Monday. That said, I wish I could directly schedule a post from the web editor rather than saving as draft followed by schedule, as it is now.

I published the first (planned) issue of the newsletter via Micro.blog today about my first evening in Sydney. I’d scheduled the post & it worked as expected. Sure, I want to improve the styling of the emails. But it’s good to post at a single place. All feedback welcome!

I’ve moved all the posts from Ghost to Micro.blog. With a single outlet for all my writing now, I’ve got an archive of the posts, the likes of which would make the future newsletter issues. With each update, this place continues to be better and closer to what I need. Yay!

A request if you are serving a newsletter. Please mention what I, as a reader, can expect when I sign up for your newsletter. It would be great if the subscribe page on your blog describes this and also links to the archive of the older posts.

With Micro.blog simplifying newsletters, many folks that I already interact with have enabled the option. If I haven’t subscribed to you, know that I am already closely following you on the platform and via RSS. I am an active community member, I hardly miss anything you say 😊

As much as I love Ghost as a blogging platform, I hate maintaining an additional platform. I needed to keep it on because it provided a wonderful way to deliver newsletters as an extension to a regular blog. Another reason I used it was the editor — it is hands-down the best web editor interface out there. But, I never draft my newsletter posts directly in the web interface anymore. I use Ulysses for all forms of writing, and I love it.

With Micro.blog supporting the email newsletters, I can again bring all my writing to a single place. That will be one less platform to manage and to pay for. So, the Slanting Nib newsletter shifts to Micro.blog now.

Today, I unintentionally delivered an email newsletter from Micro.blog to my subscribers. While importing the older posts to the new system, even a post with earlier date got scheduled for email delivery. Thankfully, it was a single post. Need to be wary now while importing.

An easy upgrade to Micro.blog premium just for email newsletters. Plus it’s in line with what I wanted. Feedback to follow. For now, the plan is to email long-form posts to the subscribers. I will move Slanting Nib posts and subscribers here. I would love if you join the group.

Assuming Manton is about to announce some way of emailing posts or digest of post to the subscribers of Micro.blog hosted blogs, here’s how I wish it works. Email is just another cross-posting option. I know it’s tricky, and it will not work that way given Micro.blog, as timeline, also supports feeds from external blogging hosts. But here’s how I hope it works for it to be useful for me.

The writer selects a category (or a group of categories) for emailing. The posts she publishes under those categories are emailed to the subscribers. Subscribers decide whether they want an email for every post or for a digest of the posts (on a defined schedule — daily, weekly).

This would be a good start, everything else can come later. I have no idea if this is even a feature Manton is working on. But he says it’s “totally unique”. So, I am hoping it works very different from typical newsletter services.

Now that Micro.blog can schedule a post, it supports the bare minimum set of features that a basic blogging system should, according to me. Both this and the drafts filters were easy fixes. It makes using the web interface for posting a lot more usable.

PS: I had scheduled this post to go live at a later time :-)

Now that Drummer supports Markdown, I find it’s a nice change overall. There are times when I invariably want the power of Markdown while writing some long posts. It’s good that Drummer has that option now. I also like how Dave is implementing it – it’s just a new node type. More I think about that, it feels very similar to WordPress’ block-editor, but much better and simple. Even with this though, here’s how I summarize my thought.

I do not want to unnecessarily hamper the simplicity of posting with Drummer. That lack of complexity is this system’s USP.

When I published the final issue of my newsletter last week, I had promised I won’t send another letter to anyone, even if they stay subscribed. Even if I continue writing the essays. Here’s what I had said.

I prefer not to break your trust. You had signed up for something which I no longer intend to deliver.

I wanted the reader to provide me explicit permission to mail the essays. Today, I received the first one, with a really wonderful feedback on my writing. I am so glad the message wasn’t lost.

Getting Post URL in Drummer

I enjoy writing posts in Drummer. One of the many reasons for that is I can see all my posts in the same editing space. It is so easy to scroll through all your posts and find reference to just that one old post.

One thing that missing, though, was there was no easy way to get the url for that post right in Drummer. So, I got scripting. I have created a script which does just that. Select any node, run the script, and it will present the URL for that post in a dialog box. Here’s how you enable it.

  • Copy the below Drummer script and paste it in your special opml file for Scripts menu (File ⇾ Special files ⇾ Scripts menu…)
  • You will see a new entry in Scripts menu
  • Select any node, even the headline (a titled post), and select the newly added script menu item

You will get the URL for the selected node.

Get Post URL
	var created = op.attributes.getOne("created");
	var baseurl = opml.getHeaders().urlBlogWebsite;
	if(typeof(baseurl) == "undefined"){
		baseurl = "http://oldschool.scripting.com/" + opml.getHeaders().ownerTwitterScreenName + "/";
	var dt = new Date(created)
	var day = (dt.getUTCDate() < 10 ? '0' : '') + dt.getUTCDate();
	var month = ((dt.getUTCMonth() +1) < 10 ? '0' : '') + (dt.getUTCMonth() + 1);
	var year = dt.getUTCFullYear();
	var hour = (dt.getUTCHours() < 10 ? '0' : '') + dt.getUTCHours(); 
	var minutes = (dt.getUTCMinutes() < 10 ? '0' : '') + dt.getUTCMinutes()
	var seconds = (dt.getUTCSeconds() < 10 ? '0' : '') + dt.getUTCSeconds()
	var post = opml.parse(op.getCursorOpml());
	var isTitledPost = typeof(post.opml.body.subs[0].subs) != "undefined";
	var postUrl = "";
	if(isTitledPost) {
		postUrl = baseurl + year + "/" + month + "/" + day + "/" +  hour + minutes + seconds + ".html";
		postUrl = postUrl + "?title=" + op.getLineText();
	} else 
		postUrl = baseurl + year + "/" + month + "/" + day + ".html#a" +  hour + minutes + seconds;
	dialog.ask("This is the URL for the selected post:",  postUrl);

Getting Started Blogging with Drummer

I recently started blogging with Drummer, a new Outliner made public by Dave Winer. It has been a wonderful experience. I don’t know what it is about a single outline as a base for your blog, but it feels natural. I have been enjoying writing and playing around with my Drummer blog. However, it is not easy to fathom the simplicity of the whole system just through words — only trying it out will make you appreciate the ease. I wanted to capture what it is and how to quickly get started with it for myself and others to follow.

Drummer documentation captures most of this information. But for someone, like me, who’s new to the concept of outliner, the whole stuff can be pretty overwhelming. So, here I capture what I learned and liked so that it helps other newbies like me.

What’s an Outliner?

An outliner is basically an editor that can edit an outline. What is an outline, you ask? Well, outline is text items represented in a hierarchy, with each item having a parent (typically a title) or multiple sub-items (typically related points). There’s a lot more to know, but I am more focused on drawing a parallel with regular blogging terminologies.

You can think of a first parent item as a title of your post. Each sub-item that follows is like a new paragraph. You can further divide the items into sub-items, that’s grouping related points into a subtitle for example. The only difference is instead of it being represented as a header and list of paragraphs, it is a tree-structure of points, closely related and unrelated.

If a post doesn’t have any child, it’s a titleless post, a micro-post — something like a tweet.

Dave Winer is the strongest proponent of using the outlines as the base for the blogs, he uses them for his blog, Scripting News. The basic hierarchical structure of an outline, makes using outliner for blogging powerful. Both the types of posts, long-form and micro, sit well together. After all, it’s just one long list of text items one after another. Whether they have a sub-item or not define how they get represented. Or that’s how Dave likes them represented.

Drummer is one such outliner that benefits from the years of Dave’s experience. He has understood all the nitty-gritty of blogging through this form. So, once you overcome the initial struggle of unknown, the experience is pretty smooth.

Is it a Blogging CMS?

Not really, Drummer is just a web application that can edit outlines. These outlines are typically represented as an OPML file. Basically, all you do with Drummer is edit OPML files of different forms. It wraps a few special OPML files — mainly blog.opml — to give them specific meaning while using them as base for blogging.

But, all we do is edit these OPML files then, what builds the blog?

Well, the software that runs Dave’s blog does that job. It is called Old School (because Dave believes this is the old school way of blogging) and is hosted by Dave. In a way, Old School is the blogging CMS and not Drummer.

So, from my understanding, the way the thing connect is as below.

  1. You sign in with your Twitter account and that creates the necessary backend — basically a S3 store for your OPML files — based on your Twitter username.
  2. You create, view, edit the OPML files using Drummer. The special files like blog.opml and about.opml hold special meaning for Old School. (Update: In fact, about.opml is just used for representation. You can name it anything.) So, you update them and through a command in Drummer (Build my blog), you communicate to Old School server to refresh your blog.
  3. Old School receives the communication and based on provided inputs, it identifies the files to use for building the blog. It reads the OPML files from the backend store for the files and converts them to static files that get served as your blog.
  4. Old School also serves you blog at the http://oldschool.scripting.com/<your-user-name> URL. So in a way, you don’t need to host any additional software.

In a way, then, Drummer and Old School together act as your blogging engine. Drummer is your editor where you write your posts. Old School acts as a CMS to build and serve your blog.

How do I get started?

Dave has a got a handy documentation in place that you can follow. I will point to the relevant parts in the documentation so that you can follow along and get started.

  1. Main blog: Follow the getting started guide to get a blog up and running with Drummer. In short, create a blog.opml outline file. Make the outline public. And finally, build the blog using Tools > Build my blog.... This should open a new tab with your blog rendered with Old School. You can customise your title and description of your blog and a few head-level attributes.
  2. Title and Description: Modify/add the head-level attributes title and description and rebuild your blog.
  3. Header Image: Add a head-level attribute urlHeaderImage pointing to the header image of your choice and rebuild your blog.
  4. Copyright: Add a head-level attribute copyright with the text you want to appear in the footer and rebuild your blog.
  5. About Page: If you want to create a new tab in your blog for your About page, create a new about.opml outline file using Drummer, make the outline public, add a head-level attribute urlAboutOpml pointing to this public outline and build your blog again. (Update: In fact, about.opml is just used for representation. You can name it anything, as long as you configure the value for urlAboutOpml accordingly.)
  6. Link Blog: If the concept of linkblog excites you, you can use another software by Dave, Radio3. Just add a new head-level attribute urlLinkblogJson pointing to your linkblog JSON file, which would look something like http://radio3.io/users/<your-user-name>/linkblog.json.
  7. TimeZone: To make sure the dates are rendered correctly on your blog, add a head-level attribute timeZoneOffset for the place where you would be blogging from. The value should be the offset from UTC — for example, +5:30 for India or -4 for New York.
  8. Creating Post: Head over to your blog.opml file in Drummer and click on the + icon (for New Note), write what you want to write and rebuild your blog. Your post should be up.
  9. Adding Links: Select the text to which you want to add a link, click on the “Link” icon (the second icon from top in the icon bar that sits on the left of the editing area) and insert the URL.
  10. Adding Images: This one’s slightly tricky. First, have your image hosted on some place where it would be accessible publicly. Get the URL to your image. While on the item you want to associate the image with, click on the “Edit attributes” icon (the third icon from top in the icon bar that sits on the left of the editing area). Now you can either create an inline image (with attribute inlineImage), right-margin image (with attribute image), title image (with attribute metaImage). I wish this work was simpler.

At this point, you should have a well-configured blog up and running. Keep Drummer interface open in tab and keep adding entries. This method of updating your blog will soon grow on you.

What else can I customise?

Even though you have all the basics covered till now, there is still a lot that you can and should do. But I would recommend get comfortable working Drummer and check for yourself if the workflow fits your routine and liking. If it doesn’t, these additional configurations are just a distraction.

Anyway, if you find out that you are enjoying this system of blogging, here are links to a few additional configurations that you can perform.

A Few Additional Notes

  1. There’s a Mac app (electron based) called Electric Drummer that can act as an outliner. However, you should avoid using it for blogging if you intend to blog from multiple systems. Changes made through the app can overwrite ones as done on the web Drummer. So thread carefully.
  2. Drummer is evolving. Dave is working hard to make sure all serious reported issues are resolved. Early adopters are trying out a hundred things independently. If that sounds fun, the Drummer support issues page is the place to go.
  3. You can stay-to-date with all things Drummer by following this official blog.
  4. How does Drummer cost zero? Dave answers.
  5. Why is Drummer, and other software from Dave, so tightly coupled with Twitter? Dave answers.

I intend to use Drummer as a place where I form my thoughts over the time. The ease of the updating process makes posting unformed thoughts a breeze. So, in a way, this space represents the most raw me. You can follow this me as he experiments with my Drummer blog. And of course, there’s an RSS feed.

Reminder to self. Stop being too serious about what and where I post. Be aware, though.

Of course, I am giving Drummer a try. I have got the basics set up the way I like it. I know there are a hundred other things that I can do. But I want to understand how things work with Outliners first. The link blog based on Radio3 is a nice addition that I can use for sure.

Would you call yourself an editor of your blog? I prefer the word writer.