Handwriting my Website with a Digital Amanuensis

Handwriting my Website with a Digital Amanuensis

A Capital User Interface Idea

A few weeks ago I saw Ben Stokes’ post about PaperWebsite.com and my immediate reaction was, “I have to be able to do that!” I’ve long enjoyed writing by hand over typing as the tactile feel of of pen or pencil and paper is such an enjoyable one. I particularly enjoy using a nice fountain pen on high quality paper.

Obviously there was a route to doing a workflow like this as Ben had shown. I just needed to figure out a method with a low enough barrier that I could personally implement for doing this with my own WordPress website.

A Quick Solution

Not being a serious coder, I immediately began looking for ways I could leverage some of the IndieWeb building blocks my site supports. Micropub seemed like a no-brainer for the posting portion since I’ve got an endpoint using the Micropub WordPress plugin. Certainly not wanting to manually re-type everything once I was finished writing, I needed a way of converting my handwriting to text and then automating a way to plug that into my micropub client.

A short burst of searching revealed that Google Docs could do Optical Character Recognition (OCR) on photos. I pulled out my IFTTT app and found a recipe for taking a photo and saving it to Google Drive. Then I set up another recipe to watch a particular folder in Google Drive and take whatever text appears in new documents and send it to my website using a webhook that uses my Micropub endpoint. The whole thing only took a half hour from idea to a working prototype. In the end it took a tap to open IFTTT on my phone and another tap to take the photo. Then I had to manually open the document to trigger the OCR. Finally, I had to manually open and edit the post before posting.

I had set the micropub client to post as a draft as a default just in case the OCR wasn’t perfect. This was fortunate as the Google photo OCR was so solid that the letters “Dia” of the microscopic text from the word “Diamond” partially visible on my pen cap that was in the photo got pulled into the post.

In the few times I’ve used this workflow so far, I’ve mostly done straight text and syndicated posts to Twitter, Mastodon, and Micro.blog. Perhaps in the future I might set things up to add HTML links, but they’re fairly easy to add at the editing stage.

Since I started my experimentation, a few others in the IndieWeb community have noticed the paperwebsite.com site. Greg McVerry popped up and linked to it as well. He mentioned that he had a digital notebook with OCR capability. This reminded me that I’ve got both a Livescribe Echo pen and a Rocketbook notebook with a Pilot Frixion pen that has an app for uploading digitized images of notebook pages. I hadn’t done OER with Livescribe in ages, so I pulled out the Rocketbook, which is cleverly erasable and thus reusable not to mention being fairly inexpensive. A bit of quick set up allowed me to take a photo of a page which automatically uploads to Google Drive and does its own OCR process. This already dovetails with my prior process, so the whole thing is much smoother. As a result, I’m composing this post in my Rocketbook notebook and will automatically upload and post it to my site as a draft. I’ll probably add some links, a photo or two, and then publish it in a bit.

Rocketbook Interface

The Rocketbook notebook has some solid pages with an odd shiny texture and feel, presumably part of the technology that makes it easy to wipe them clean for reuse. The bottom of each page has seven different faint icon images which are meant to allow the app to determine where to send the digital copy of the notes. One can send them via email or to a variety of storage or sharing services. I could imagine having different recipes set up to allow one to publish their notes to different websites based on the icon X-ed out. Given the micropub possibilities, one could also use the icons as a means of differentiating post kinds (for example, indicating that a particular post is a note, an article, or a bookmark). Another alternate idea would be to use the icons as a means of selecting which services to syndicate your content to (for example, the diamond could mean syndicate this post to Micro.blog, the bell could mean Mastodon, and the clover syndicates the post to Twitter).

The printed interface at the bottom of the Rocketbook notebook: a QR code eith icons for a rocket, a diamond, an apple, a bell, a clover, a star, and a horseshoe. The last one has an "X" over it to indicate choosing the horseshoe.

The overall process is quite elegant and pleasant. The OCR for Rocketbook is reasonably good aside from a few spelling errors which are easy enough to click and fix. I’ll admit that I far prefer using a fountain pen on some Tomoe River paper to using the Rocketbook paper and the Frixion pen, but really, who wouldn’t?

Handwritten notes for your digital zettelkasten or personal wiki

Since I’ve already got most of the infrastructure, I’ve gone the extra mile and set things up so that I can take notes on index cards zettelkasten-style and use a similar set up to post them to my Obsidian vault using similar IFTTT recipes.

Try it yourself

For those who want to set this up themselves, I’ve documented the IFTTT/micropub portion before. I’ll post the specific code I’m using below for these who may want it. The nice part is that as long as you have a micropub server for your website platform (there are many CMSs that have native or plugin support) the WordPress portion isn’t a deal breaker for others.

I’m sure, now that there are multiple proofs of concept, some enterprising developer will build a custom micropub client to do all of this work automatically or with a few options built into a clever interface.

I could see pen and paper manufacturers (Moleskin, Leuchtturm, Rocketbook, etc.) creating apps for doing this too. I’d love to see and hear about others trying this out for themselves. Hopefully it can be done with almost no code or some easy cut and paste from my example. Ask if you need help, and I’ll see what I can do to help.

IFTTT Webhook settings

This following will be roughly standard for WordPress endpoints using the plugin, but they can obviously be modified for your platform of choice.

  • URL: https://example.com/wp-json/micropub/1.0/endpoint
  • Method: POST
  • Content type: application/x-www-form-urlencoded
  • Body: access_token=PasswordHere&content=<<<{{Body}}>>>&h=entry&category[]=Social%20Stream&post-status=published&visibility=private

Historical examples

While doing some of this I did come across some older examples of handwriting to websites. Aside from handwriting typography which I think is usually ugly, I saw some interesting examples from Jeff Bridges[1] [2], gRegor Morrill, and scrolled through some great examples of handwritten and typed Tweets by Alton Brown. In his case, he was simply taking photos of his writing, but it worked! I’ll admit he had some fun and was definitely creative about it. Hopefully Twitter always exists to save the copies for him.

https://platform.twitter.com/widgets.js

https://platform.twitter.com/widgets.js

https://platform.twitter.com/widgets.js

https://platform.twitter.com/widgets.js

Conclusion

In short, I’ve now got another great way to post to my website. I love the great old school tactile user interface of pen and paper. Now I’m glad to have a reason to be able to do more of it in an ever-digitized culture.

Until I start working on cuneiform solutions…

Write On! 🖋


Editor’s note: This post was originally handwritten on Dec 16, 2021 at 20:15.

This post was originally published on Chris Aldrich

A sketchnotes diagram of IndieWeb Syndication practices featuring in decreasing order of desirability: POSSE, PESOS, PASTA, PESETAS, POOSNOW

I’ve been reading about sketchnotes for a bit this past week. As a first experiment I created some sketchnotes for a short talk on syndication in social media I prepared a while back. Here’s to hoping that no one ends up taking the actual spiral down to POOSNOW with their own social media presence.

This post was originally published on Chris Aldrich

Automating syndication of reply contexts in Twitter Cards using OGP metacrap and plugins in WordPress

A Metacrap Problem

It’s metacrap–I know, I know–but I’ve been thinking about easy ways to use Open Graph Protocol meta data to add contextual Twitter cards to some of my content when syndicating posts to Twitter. My goal is to leverage the speed and ease-of-use of Micropub clients while doing as little as possible manually, but achieving as much parity between posts on multiple sites. 

I’m particularly keen to do this to syndicate/share more of the articles I read and post about on my site without adding additional manual work on my own part.

Outline of Some Resources

The Post Kinds plugin for WordPress parses URLs for me and pulls in data to create reply contexts for a variety of posts like bookmarks, reads, watches, listens, etc. Since Post Kinds doesn’t display featured images (yet), I’ve also been using the External Featured Image plugin to display the featured images from the original to add to the reply context of my posts as well. 

In addition to all these I’ve been using the All in One SEO plugin to easily add an SEO layer to posts without having to do much thinking about it. AIOSEO recently upgraded their UI and features in the last year, and yesterday I upgraded to the newest v4.0+. One of the new features it’s got is the ability to add default fields or pull in pre-existing custom fields to output OGP meta data. 

Start of a Solution

So I got the idea that since Post Kinds and External Featured Image plugins are pulling in and displaying the sort of data I’d like to show in Twitter cards, I figured why not use them? While metacrap is a DRY violation, the fact that it’s automated for me and is based on data I’m actually showing visually on my website makes it feel much less dirty. It also has the benefit that it helps make some of my syndicated content look and feel on Twitter, more like it does on my website. This is also a problem since Twitter hampers how much data I can syndicate in a single post.

I’ve still got some issues about how to deal with the Post Kinds data, but after a bit of digging around, I discovered the image URL for External Featured Image plugin is hiding in the _dcms_eufi_img field. So I can make the default Twitter settings in AIOSEO pull the external image by setting Default Post Image Source to Image from Custom Field and set the Post Custom Field Name to _dcms_eufi_img

Since a lot of my posts are reads, bookmarks, etc., this works well, but I can easily override the settings for articles or other custom posts which I make less frequently. 

Hopefully I can figure out the settings for Post Kinds to get the rest of the default fields to map across. I’m happy to hear ideas on what field names I’d need to use to get the Post Kinds Name and Summary/Quote fields to map over for the og:title and og:description respectively. Ideally I can manage to get it done without needing to get a subscription to the pro version of AIOSEO which also has support for custom taxonomies which is how Post Kinds works.

Since my theme has relatively solid microformats support, and I have plugin infrastructure to allow easy syndication from my website to Twitter through micropub clients, this last bit for creating Twitter reply contexts helps close some of the loop for me in my syndication workflow while keeping as much context across platforms.

Example

Here’s a visual example of a native post on my site and the corresponding syndicated copy on Twitter. There are some differences, mostly because I don’t have as much control of the appearance on Twitter as I do on my own site, but they’re about as close as I can get them with minimal work.

screen capture of a tweet with my thought at the top and a Twitter card underneath it including the reply context of the article I'm responding to

screencapture of a read post on my website for a Slate article with a reply context at the top and my response to it just below

This post was originally published on Chris Aldrich