I’ve been using Day One to varying degrees of success for about 8 years now. Part of the ‘value’ of it has been the tight integration into the Apple ecosystem and modern design. While for awhile it felt like it had stagnated, recently the UI has been refreshed and it feels like a joy to use. For me there’s one small problem, I don’t like journaling on my phone. I barely tolerate it on my laptop. There’s something about it that just doesn’t feel as meaningful.

A few years back I grabbed a Remarkable 2, so I would have a portable whiteboard solution for diagramming software concepts and taking scratch notes. Mainly because I cannot keep anything in my head for the life of me, without writing it down or drawing it (here I am, being a software engineer 😆). I’ve had the idea that I could use that as journal, but I found I missed the connectivity of synced notes and good interface for when I have just my phone (yes, I forgot to bring various devices all the time). So, that hadn’t worked for me either.

Until I got the idea of integrating it together. That can’t be that difficult, right? Well…

Connecting two services that don’t want to connect with anything

Connecting both of these together presented their own problems.

  • Remarkable: Undocumented API (somehow with a Go library!) that deals with their own custom file format.
  • Day One: No API, only through CLI running on macOS.

Day One’s lack of an API beyond their CLI was going to present some problems, but I decided to punt on that.

Starting with the Remarkable API was… remarkably easy (see what I did there?). Thanks to past efforts, there’s an already existing almost archived Go library handling authentication and document (zip file) fetching: https://github.com/juruen/rmapi. I was able to quickly spin up the remarkable side of the code, but ran into an issue. Remarkable changed their proprietary format’s version which causes it to be inoperable with the archive parsing in this library. Furthermore, there was no clear way I could turn these “rm” files (fancy zips with their custom format) into something importable into day one (ideally png).

Going back to the drawing board, I was able to find a tool that did both of these things (well, to SVG): https://github.com/ricklupton/rmc. Throwing in some code to convert svg to png and building state management to track which pages to sync, and I was ready to integrate with day one.


The Day One CLI (dayone2) is pretty unremarkable. It only provides a single command: new so, I knew immediately that my state tracking was going to have to be one-way and one-time if there wasn’t a way to read the existing data. Thankfully, it was relatively straight forward to hook up to day one and tie it all together.

The Results

The final battle was getting this thing running constantly. I don’t have any macOS servers and I’d need this to run daily with Day One running in the background. Thankfully, I was able to find a short-term Mac mini host that I’ll probably switch to self-hosted soon to run it on. That combined with cron, I have the ability to view every new page in one of my journals on my remarkable in day one! At least, every night at 3am after it syncs.

Ignore the incorrect date 😆

Check out the project here if you’re interested in running it!