Like many I’m not great at keeping blogs up-to-date and we’ll see how long I keep going with this one. So in an effort to be better at sharing my work and nerdy explorations I’ve been thinking of workflows that could incorporate tools that I already use. I figure if I build blogging into my existing habits there might be a better chance that I keep it up.
Evernote is a tool I’ve used for 8 years and it’s the place where I keep all my thoughts and scribbles. For example, I capture notes on all of my IoT and technology endeavors so that I can easily return to long running personal projects without loosing technical knowledge I’ve already acquired, or decisions I’ve already made - like where to put my blog. Why Evernote?
For two reasons it emerged that Evernote might be a good place to write blog posts:
Most of the content I’ll publish is already in Evernote, and I just need to clean it up.
It’s a tool that’s stuck and I just need to work publishing into my workflow, using Evernote to write and publish blog posts.
I can write anywhere and use the off-line syncing built into Evernote to keep things up-to-date. For example, I added this item on an airplane. And yes, I said two reasons and gave you three. Value.
I’m not alone in this crazy endeavor. This guy has built a similar system that allows you to publish blog posts using Google Docs. Pretty cool.
How does it work?
I’ve built a simple web-service which integrates the Evernote API. The service converts Evernote notes stored in Evernote Markup Language (ENML) into HTML. The service removes all of the Evernote formatting and applies it’s own so that I can change the style of my blog easily. Effectively it separates content (notes) from layout and style (HTML and CSS). That’s right folks, I’ve re-invented the wheel and built my own CMS.
Conversion between ENML and HTML
Moving on, below is a diagram that illustrates the main components. The system is quite simple and easy to maintain because the web-service is stateless.
Conversion between ENML and HTML Components that make up my blog publishing system.
All the state and content is maintained in Evernote. Controlling publishing is easy, the web-service only publishes notes in a pre-configured notebook, which are tagged with a pre-defined tag. This allows me to clean up existing content in a draft form and then publish them by applying the tag. Which, I’m going to do to this post now 👋.