Making it easier to schedule cross-timezones, with the tz
CLI
One of the things that drew me to Elastic was the opportunity to work in a fully distributed team.
I've really been enjoying it as a way to get a chance to collaborate with folks from literally all over the world, who have different viewpoints, cultural backgrounds, and some folks who aren't even tied down to a certain country, not to mention some really great engineers, and generally great people too.
However, one of the things about a fully distributed team that I'm still very much getting used to is timezones. Maybe it's not working with my ADHD brain, or maybe it's just one of those things, but trying to work out whether a proposed meeting is in a friendly time or not is a bit awkward.
I've been very fortunate that for most of my career, I've either been working solely with UK folks, or with folks in India or parts of the US, where there were a few morning hours of crossover, but I've never been in the case of trying to needing to wrangle multiple timezones continuously.
Although I have some indication of timezones using folks' working hours being set on Google Calendar, it's still not quite clicking with me around when someone is or isn't going to be available to meet, so I ended up writing a script that just spat out a list of times for the common timezones I was working with:
Over the last few days I've spent a bit of time playing around with the beautiful libraries from Charm, in particular huh
for a replacement of my command-line Micropub clien, and started thinking about making my timezone script a little bit more interactive.
Well, I've just put the finishing touches on a new Charm-powered tz
command that I'm quite liking:
For instance, if I'm trying to schedule a meeting between a few timezones, I can select them from the list by hitting space and then it shows the suitability of the meeting time in the right-most column.
This works based on standard working hours, 0900-1800 - which doesn't mean much a lot of the time due to the flexibility and asynchronous nature of the company, but is a good starting point - and shows as a β .
There's also a "maybe" good option, which shows as a π₯±, for +- 2 hours around working hours. For instance, we have a catch-up between Europe and Australia at 0700 UK (BST) time, which I'm usually a lil' bit sleepy in as I've literally rolled out of bed. These are absolutely best-efforts meetings, and there's not the expectation that anyone would be able to join 2 hours outside of their normal working hours, but we're trusted to move around our day to make it work, or we can catch up on meeting recordings.
And then anything outside of those hours even moreso shouldn't be expected, so we mark it with a π.
Although it's taken a lot of copy-pasting, tweaking, and a bit of trial-and-error, I've managed to get to a solution I quite like, which gives me an interactive means to check times for meetings, and I'm hoping it'll help alleviate a bit of an issue I've had with cross-timezone working.
If you're interested in running it yourself, you can check out the repo on GitLab.com.