To start, Evernote is nice app. But not for me, I always had this love/hate relationship with it and with note talking apps in general. All I want from a note talking app is very simple.
Evernote supported none of these requirements, but it was the best one and recommended by nearly everyone I know. So I started to use it and then after a couple of years I moved to simplenote which was a bit better but note much better than Evernote, it supported Markdown to some extend the app was less sluggish too which was a huge plus.
Last year I found about Alternote for Evernote, It combined what I liked between Evernote and Simplenote together and it allowed me to write note using Markdown. So I went back to Evernote. But I was still not happy at all.
I use Vim and most of my day I spend doing stuff in iTerm2, and I don't see any point for me to not be able to write my notes using Vim or insert your fav text editor here and/or using Markdown. Both Evernote and Simplenote don't officially have any way to do this, so I found these Vim plugins evervim and simplenote.vim I tried both for a while but I was not satisfied and it was not the workflow I liked.
I'm aware of Geeknote but it was too much for me, I like simple solutions.
.enex
or .html
.Both doesn't support this option.
So I had to find another option because I was really getting annoyed, I tried lots of apps that integrated with Evernote or Simplenote but I didn't like any of them. In my search for a better workflow, I found jrnl which you can use without Day one Which seemed like exactly what I was looking for. But I needed a way to get my notes on my phone and also to keep the tagging and search functionality here when Day one comes to play. Did I mention that they have an official CLI tool too!
.enex
export to .json
But in order to do this I have to migrate my notes from Evernote to Day one. But
the export from Evernote is .enex
, how can I do anything useful with it. I
found this Python package called
ever2simple it was meant to be a tool
to convert .enex
to .json
to be able to import your notes into Simplenote
but the irony is that Simplenote doesn't support this anymore!
But still having all my notes as .json
was a huge improvement to .enex
.json
At this point I have a .json
file with all my notes info in there with all the
metadata too, which is great. Day one CLI tool can import any text format file
to Day one. So at this point I wrote a dirty node script to create all my
notes as Markdown files and import them using the Day one CLI tool.
Here is the quick & dirty script using node and ES2016 (aka ES6) syntax.
#!/usr/bin/env node
const fs = require('fs')
const path = require('path')
const {execSync} = require('child_process')
const moment = require('moment')
const slug = require('slug')
const notes = require('./evernote.json')
let title
let tags
let date
let creationDate
let content
let file
let slugg
notes.forEach((note) => {
title = note.content.split('\n')[0].substring(2)
slugg = slug(title.toLowerCase())
date = moment(note.createdate).format('YYYY-MM-DD')
creationDate = moment(note.createdate).format('YYYY-MM-DD HH:mm')
tags =
note.tags.length > 1
? note.tags.map((tag) => `#${tag.toLowerCase()}`).join(', ')
: note.tags.map((tag) => `#${tag.toLowerCase()}`).join()
file = path.join(__dirname, './evernote-md', `${date}-${slugg}.md`)
content = `# ${title}
---
date: ${creationDate}
tags: ${tags}
---
${note.content
.substring(note.content.split('\n')[0].length)
.replace(/\s?\n\n?\s?/g, '\n')}
`
console.log(tags)
fs.writeFileSync(file, content, 'utf-8')
execSync(`dayone -d="${creationDate}" new < ${file}`)
})
At this moment I managed to import all my notes to Day one with my all metadata.
And the nice thing in Day one that if you have #something
this can be
converted automatically for you as a tag.
After managing to import all my notes from Evernote to Day one app, now I need
to connect the dots using jrnl
. jrnl configuration is stored inside
~/.jrnl_config
file as JSON you can check all the option
here It does
support encryption too.
Here is how my configuration looks like
{
"default_hour": 9,
"linewrap": 79,
"encrypt": true,
"default_minute": 0,
"tagsymbols": "#",
"editor": "nvim",
"timeformat": "%Y-%m-%d %H:%M",
"highlight": true,
"journals": {
"default": {
"journal": "<dayone iCloud path on my laptop>"
}
}
}
Also in Day one I've set it to iCloud although you can use one or more of these options:
Now all I need to do is type jrnl
in my terminal and it will open my editor
with all my settings, snippets etc... and I can write in Markdown. Once I save,
my note is created in Day one uploaded and synced to all my devices.
© 2024 Ahmed El Gabri