Andrew Simonson October 4, 2022
This project started with a phone call. I needed to reserve a room for a presentation with some friends and to do that, I had to open the phone app on my phone. I had to converse with a real person, suggesting that, if not Thursday at noon, maybe the following Monday at 4 PM would work.
Luckily for this scenario, I already knew the schedules of everyone in attendance and I only had to find a time the room was open. But event coordinators greater than myself have always had to juggle the plans of a dozen people, sometimes without actually knowing their schedules, and that’s work. Even during the dark ages (read: 2020), that’s unacceptable. Let’s fix that.
Slate is an event coordination tool that compiles the calendars of participants to generate a table representing when the most participants can attend. CSH members can link their calendar to their profile, allowing coordinators to load up to date schedules and select event times with maximal attendance.
How it works
- Organization members add icalendar (.ics) files from any online calendar service (Google Calendar, Apple Calendar, etc.) to their profile for live calendar updates
- Coordinators select participant members and add additional external calendars and define the searched time period
- Slate uses an LDAP connection to the organization services to download calendars
- date and time intervals are scored with the weighted availabilities of the participants, discarding time intervals where mandatory attendees are unavailable
- Average weekly analysis is generated for planning recurring weekly events
Ver. 1.0 (2020-21)
My freshman year’s contribution to Slate was dedicated to creating the calendar compiler and a primitive web interface to interact with the service. Time, as it turns out, is hardly a linear thing in the minds of humans. Even with widely accepted libraries for datetime and icalendar, managing timezone-naive events, daylight savings, and the different calendar services’ methodology was by far the greatest challenge Slate faced.
Working on Slate’s web application also introduced me to the Flask framework, Docker, and Openshift. And since all three of these tools became my first choices for all subsequent projects, I’d like to extend my personal thanks to the CSH sysadmin people and RTPs. Thanks to these chads, I’m officially a computer person now.
Ver. 2.0 (2021-22)
Slate should be, by definition, a boring project to work on. Time math is warm and bad. And yet, I couldn’t stop working on it. Over the summer, I overhauled the calendar compiler, speeding it up by 12,000% for 3 calendars over a 3 month period. Now it’s fast enough to be an actual product to society. I also made the weekly analysis with a much improved UI (websockets! That’s new to me) and added the LDAP (also new to me) connection to CSH. CSH members can now add their calendars to their profiles. Guests can still use an open version of Slate without organization profiles.
Yeah, I plan.
As of version 2.0 I believe Slate is in a servicable state, but, as with all good ideas, expanding it is totally doable. It might not be much coming from the guy who wrote it, but Slate is more than a gimmick. Slate can easily be made faster, more user friendly, and, Machine Learning Ultimate aside, more helpful in its analysis. I could work on this project until the end of time. If this project taught me anything, it’s that these little projects stemming from a mundane phone call can become real products and that it doesn’t take a company or even a startup team to make them real. I might be moving on for now, but don’t count it out - good projects always have the potential for us to come back to them.
More blog posts