Emacs Calendar Extension – Information Unity
Well, I’ve been away for a while. Honestly, I find it hard to make time to post – but I swear, I’m going to make more of an effort because I’m actually working on some very exciting stuff.
I’ll put off the super exciting stuff for a bit, but did want to post something exciting – to me at least…
As a preface, I’ve been getting into pretty heavy use of Emacs over the last few months. To the extent that I’m on a mission to use it for as a replacement for as many apps as possible. If you are aware of Emacs and the multitudes of extensions then you know just how powerful it can be. To the point that my desires of an Emacs-only desktop are not outside the realm of possibility – but I’ll get into that in some later posts.
So one of the things I hate in life is repeating myself – specifically in the realm of information. Having to put to-do items into multiple devices, multiple contacts apps, multiple calendar apps, etc.
Emacs contains its own calendering functionality that is really full featured. I ran into my pet peeve, however, very shortly into its use. I refuse to put my reminders, to-dos, birthdays, etc into multiple applications. I want everything to be available instantly on my PC, my iOS devices, and my Android devices – natively, meaning not from a website – I want them built-in.
As some background, we all know (at least folks familiar with Emacs), the editor in question is extremely customizable in that everything it does – and everything it can do – is based on a variant of Lisp, aptly entitled ELisp (Emacs Lisp, of course). ELisp is built on top of Common Lisp, mostly adding helper functions and functions for interactivity.
Understanding this, and desperately wanting to achieve my goal of information unity, I decided to add Lisp and ELisp to my programming repertoire. It was tough sledding at first with all those weird names for things – s-exp, form, lambda, car, cdr, cons – but the light went on and I finally got past the tutorial stage and into some actual useful programming.
I went about my dream of making this thing happen. Luckily for me, the calendar application within Emacs knows how to handle iCalendar file formats and is able to import them. Even more lucky for me is that the network access code is built-in as well – which solved a major piece of what I’m trying to implement. I really just have to automate this import from the “source of record” and do some processing to get it to the way I wanted it to work. The pieces I’m talking about are:
- Use Google Calendar as my central calendaring application – every other device can leech the data from here – the source of record.
- Export my Google Calendars (I have multiple) in the iCalendar format.
- Import these exported sources into Emacs
- Solve any issues that arise (automation, de-duplication, fromatting, etc.)