Excursions avatar

★ Liked How Does Mastodon Work?

I’m going to try and cover all of the basics of Mastodon in this post, as well as the details of how it all works. By the end of this post, you will hopefully be a Mastodon expert.

Some mornings just aren’t easy. And it is even more frustrating if they are Monday mornings. You get up with a plan in your mind - when kismet has other plans. Sigh.

To anyone using Business G Suite just make sure that you’ve downgrade” instead of cancelling your subscription. (…) To Google, I lost trust in your service.

Google’s customer care horror stories just don’t die.

Upgrading Lab to Home

Updated: 05-Aug 15:15

I am seriously considering the option to make this blot blog as my primary site. I do not want to take decision in haste. So here I am jotting down the things I will have to sort out before the switch. This would be a rolling list.

  1. Moving all the old posts to Blot. This should primarily involve handling of metadata. Hugo frontmatter needs to be converted to something that Blot can parse. Tricky part is going to be around dates and tags.
  2. Handling of redirecting journal posts. Currently they are available at /journal/<postname>. This will have to redirected to /<postname>.
  3. Handling of redirecting lab. urls. All the current blot posts will move to www subdomain.
  4. Handling of Blot images redirect or modification of the posts.
  5. Moving of the /now and /about pages to blot.

As I jot this down, there is another option that looks simpler (and so more probable).

Blot becomes my blog, replaces journal on the current site. Hugo site remains my main site. I will not move any posts, journals or pages. Everything in the old site remains in the old site. All the formatting rework is avoided.

I can move the complete journal section to an archive link in the footer. Blot will be serving /blog. /lab will be redirected.

Main site navigations will be Home | Arcticles | Blog | Now | About

That means the current site will keep serving my long form posts, the articles. Ones for which I spend significant time, I have a machine available to write over the days. And I can control the publish process. The blot blog will sever my thoughts, ones that I need to quickly put out, may be mostly while mobile.

Micro.Threads Update

Update [04-08 17:40]: Discovery of threads

  • Discover new threads from timeline
  • Refresh explore threads if not refreshed for 2 hours
  • Minor styling changes

Update [04-08 17:40]: Possible options to unearth in Dashboard

  1. People I do not follow, but are in my stream (via interactions) - with a easy follow button - Done
  2. Find original posts in the stream - with option to respond
  3. People recommendation from Discover - Done
  4. People recommendation by emojitag
  5. Longest threads
  6. Recommendations from threads — add to recommendations thread
  7. Post reply-of - API seems to not expose this information

Update [20-07 23:43]: User information display

  • Added user information for recommended users
  • Follow directly from app, with an option to open profile at Micro.blog
  • Thread recommendations purging of old items on refresh
  • Upgraded packages to latest - npm-check

Update [17-07 00:50]: Refresh to the Micro.threads

  • Added performance improvements by rewriting using Promises.
  • Added content around user recommendations
  • Security improvements around using and storing tokens
  • Security improvements around using config
  • Fixes for unhanded promise rejection errors

Update [15-07 11:00]: Tentative Authentication flow

Implemented using Passport. Passport handles maintaining os user object in session. DB temporarily stores the token information — deleted on logout.

  1. Get the app token (user provided or from Micro.blog login API)
  2. Make an entry in db with token and a primary key [some thing unique and encrypted]
  3. Store the key as cookie on client side, sent with every API call
  4. On API call, fetch the key from cookie and query DB using the key to get app token.
  5. Use token to fetch data from M.b

I need to improve micro.threads. Noting down the current limitation with the implementation.

  • Threads concept itself is limited. Currently it takes a post id, fetches the conversation (thread) and then pull out all the links and only show these links as a thread.
  • Creating thread is a mess and so is updating it.
  • No way to provide access to external users. Only I can create/update threads at this point

What I want to introduce now

I think it would be important to change the whole direction itself. I feel the goal needs to be discovery. Help users discover interesting posts and people on micro.blog. To achieve this, below has to be handled.

  1. Authentication against micro.blog. Pull individual stream.
  2. Dashboard against individual stream. Summarise. Most active posts, links, micro monday recommendations, likes, books etc - similar to nuzzle etc.
  3. Simple way to build threads, including ones with just posts and no links - similar to twitter moments.
  4. Updating existing threads with contents from different topic id
  5. Auto refreshed public threads - built from discover section of micro.blog (this is close to available).

★ Liked A Moral Imperative

What I don’t hear often in the discussion is the moral imperative to help others: the understanding that taking care of the people around us is the right and only thing we must do

Blotpub - Micropub Endpoint for Blot

Continuing my experiments with Blot, and as a next step in Indiewebifying it, I had recently sorted out the webmentions setup and display.

There was one final piece of puzzle missing, one that I had posted in a recent update on the theme refresh.

Why not make this the primary homepage? Well, I am still on the journey of indiewebifying this place. I still post to my site using other apps, mainly Quill and Micro.blog. Until I get the micropub endpoint that I am working on done, I will keep this place booked for my excursions, my experiments.

Well, I finally managed to get a basic version of one worked out. Basic, but a workable version. Introducing Blotpub.

It is a self-hosteable Micropub endpoint for blot.im and Dropbox. It accepts Micropub requests, creates a simple Blot posts and saves them to a configured Dropbox folder. This enables updating a Blot blog through a Micropub client.

I have tested creation of both long and short posts via Quill. It supports creation of posts with or without titles. For me, the former are my micro posts while later are more of the long form articles.

It also supports metadata creation for tags and slugs as part of the post documents.

With this, I have my basic needs covered. Most of the time, I am posting text posts; the current version should be able to handle that.

Next, I need to handle the creation of like and reply post types and also handle the image files. It may so happen that I end up getting these done soon. However, I wanted to put the bare bones version out there.

How do I use this?

Well, as I said earlier the source is open. It is a Node application which you can self-host as your own micropub endpoint. I have covered some of the details as part of the project readme.

However, before you use blotpub, there is one essential step from IndieWeb that needs to be addressed - to make your website your identity online. It involves declaring openly your social network profiles as rel-me links and link those profiles back to your site. This allows you to login to any IndieAuth enabled services using your website’s homepage - no need to create an account or maintain passwords.

You can refer to the Essential IndiWeb” section in this post on how to display webmentions on your site. That step applies to using a micropub too.

This is an early alpha release of the application. Things may be a bit unstable. Please use it with caution. Also, I will continue to work on this and improve it, so, you may have to refresh your deployment regularly. However, I would be happy if you choose to join me on this bumpy ride - this will only get better with more people using it.
  1. Install: Just install this as a normal Node.js application. A better way would be to deploy directly to Heroku.

  2. Grant Dropbox Access: Generate a Dropbox access token from the Dropbox App Console to grant the application access to your Dropbox folder. Just create a new app in the console, chose API as Dropbox API, select the type of access as Full Dropbox” and finally, name your application. You will need this generated token while configuring your application. Just to reiterate the point, the Permission type” for the app that you create for blotpub in dropbox needs to be set to Full Dropbox”
  3. Configure: Add the required configuration values via environment variables or the Heroku app deploy dashboard. You will need the token generated above.

  4. Endpoint Discovery: Once you have deployed the application, your Micropub endpoint will be available at /micropub (e.g. https://deployed-blotpub-app.com/micropub). Note that the endpoint url is different from your website url. It would be the url for the blotpub application that your installed in the 1st step.

    For Heroku deployment, it would be something like https://*****.herokuapp.com/micropub (exact url will be available at Heroku dashboard). To enable automatic discovery for your Micropub endpoint and token endpoint, you will need to add the following values to your Blot site’s <head> - usually available in the head.html file in your theme/template.

<link rel="micropub" href="https://deployed-blotpub-app.com/micropub"> <link rel="token_endpoint" href="https://tokens.indieauth.com/token">
  1. Media Endpoint: Most of the micropub clients, like quill, can send the media files as multipart data. So, you can attach image while creating a new post. However, some clients like Micro.blog require a Media Endpoint to handle the media files (primarily the image files). Blotpub comes with an inbuilt media endpoint. To use it, just configure the MEDIA_ENDPOINT variable in your blotpub deployment to https://deployed-blotpub-app.com/micropub/media (for Heroku, something like https://*****.herokuapp.com/micropub/media). This will allow you to post image from such clients too.

  2. Note that file uploads via blotpub media endpoint will only add the image file at the location configured at PHOTO_PATH and the URL to the image will be added to the post metadata as photo: <url-to-image>. To render this in the post, you can add the below code block in entries.html and entry.html in your Blot theme either before or after {{{html}}} as per your preference.

{{#metadata.photo} } <img src="{{metadata.photo} }"> {{/metadata.photo} }

You should now be able to post to your Blot site from external Micropub clients (like Micro.blog iOS App, Quill etc). If you do use this, ping me. All your feedback is welcome.

Theme Refresh for My Blot Blog

I have observed that I have been more inclined recently to post on Blot blog. I do have my main website which I have been using for all things long and short. But there is some lure of the simplicity of this place. You write. You save. And the post is up.

No committing a post to a remote repository, waiting then for the engine to trigger a build. No frantic refreshes to check if the post is up. It’s simple.

But every time I saw my published post here, I was left cringing at how awful the interface around was. I wish I could purely focus on the content and the process. But unfortunately I am wired a bit odd. I tend to focus on the design around first; if that sucks, I can’t move on1.

So I had to take a pause today. If I was going to post more here, the place had to be cleaner.

And given that I already had my custom theme up, I got down to work. I refreshed the theme and made it all about content2.

No navigation items or links to other places - a link opens the content. And in just the way I like it.

No homepage summarising the place - /home opens the stream of my posts.

No distinguishing posts by type - all posts are equal3.

For now, I am happy with this design. At least, I won’t cringe when I open my own posts.

Why not make this the primary homepage? Well, I am still on the journey of indiewebifying this place. I still post to my site using other apps, mainly Quill and Micro.blog. Until I get the micropub endpoint that I am working on done, I will keep this place booked for my excursions, my experiments.


  1. This is a costly habit. I can never signup for any service or an app that doesn’t have a good design and UI.

  2. There’s no hiding, the design is heavily inspired by Brent Simmons weblog. I believe no shame in getting inspired by the best of the designers out there.

  3. Eventually, I plan to separate at least the social posts (likes, replies, reposts) from the opinion and stories. But I am still not sold if I should.