Making it easier to schedule cross-timezones, with the tz CLI

Featured image for sharing metadata for article

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:

A screenshot of the output of the Ruby script, tz, which shows a list of timezones and the local time. Europe/London is in magenta text, to indicate it's the home location, and timezones that are outside of normal working hours have a strikethrough

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

Written by Jamie Tanna's profile image Jamie Tanna on , and last updated on .

Content for this article is shared under the terms of the Creative Commons Attribution Non Commercial Share Alike 4.0 International, and code is shared under the Apache License 2.0.

#blogumentation #command-line #go #charm #elastic #remote-work.

This post was filed under articles.

Interactions with this post

Interactions with this post

Below you can find the interactions that this page has had using WebMention.

Have you written a response to this post? Let me know the URL:

Do you not have a website set up with WebMention capabilities? You can use Comment Parade.