Creating a public, read-only calendar

Last year, I blogged about why I make my work calendar public. It is useful to have a public website where people can see if I'm free or busy.

But the version I created relied on Google Calendar which, sadly, isn't that great. It doesn't look wonderful, especially on small screens, and is limited to only one calendar feed.

So I used the mighty power of Open Source to build my own!
A bright and easy to use weekly view of my diary.
It uses two cool components. First, the DHTMLX Scheduler tool - a GPL-licensed project to make beautiful web calendars.

Secondly, Open Web Calendar by Nicco Kunzmann. It takes multiple ICS feeds and transforms them into a format suitable for the scheduler.

With a little bit of prodding and poking, I was able to create a responsive web calendar which shows my personal, work, social, and group calendars all at once.

There are a few snags. The project uses Python Flask - which meant learning a new programming paradigm. I might try to rewrite parts of it to use PHP. Because I'm using someone else's code, I've hacked away parts which aren't of use to me - let's hope nothing was load bearing! Similarly, as it's a small personal project, there are no tests. There are a few aesthetic touches I'd like to make - but it is quite serviceable. I also need to set up a better way to deploy it rather than FTP'ing files and restarting Flask.

But, for a weekend of sporadic hacking, I'm quite pleased with the result! The code is available on my GitLab.

Privacy and Risks

All the entries on my various calendars are set to private. That means if you send me a meeting invite, your details shouldn't appear on the page.

This co-mingles my personal and work calendars. Because I don't want someone booking a meeting when I've got an evening Zumba class. Is there a risk that you knowing that I'm busy from 19:30 to 21:56 reveals the train journey I'm taking?

If something is in both my personal and work calendar - it shows up as a double booking. Should I merge these?

Could advertisers mine my data to better target me? It's not very granular, and I block adverts.

If someone annoying wants to meet with me, it's harder to fob them off with "my diary's chockablock."

When I jet off to an exotic foreign country (*sobs in pandemic*) will it be obvious what timezone I'm in based on my appointments?

By opening up this data, am I participating in a destructive form of "quantified self"? Will people judge me / themselves on how busy I am?

Share this post on…

5 thoughts on “Creating a public, read-only calendar”

  1. I find @Calendly super useful for letting me show people when I am available to other people without having to reveal anything about what I'm doing, or how long I'm doing it for

  2. Tempest says:

    I think there is some amount of criminal element to be considered – it seems reminiscent of alerting robbers of when you are out of the house by “checking in” somewhere on Facebook. Beyond that, someone knowing your personal schedule is dangerous – this data doesn’t exist by itself, but can be added to the vast amount of data already publicly available about someone.

    Maybe an access-based model would be more secure. I.e. give people access to some specific span of weeks, or even the entirety of it if you really trust them, but with the added ability to revoke it or hide certain time slots / calendars.

    Which isn’t to say this isn’t cool, it just seems riskier than you account for.

    1. @edent says:

      That's a reasonable point. But I'm in lockdown. I don't anticipate leaving the house for several more months!

      Once normal life returns, I don't think it takes a criminal mastermind to realise that I'll be in an office 9-5. Nor that I'm likely to be in a pub on a Friday evening.


What are your reckons?

All comments are moderated and may not be published immediately. Your email address will not be published.