Tuesday, January 21, 2014

Google Calendar Integration Upgrade Brings Speed Improvements to GQueues

Last November GQueues highly popular Google Calendar integration was completely re-written to use version 3 of the Google Calendar API. The upgrade was gradually rolled out to users in December, and hopefully you've noticed that queues load much faster now when you click on them. While the upgrade process was fairly seamless, quite a bit has changed behind the scenes to make these speed improvements possible.

GQueues 2-way syncing with Google Calendar has been a standout feature since 2009 when it was first added. To achieve this "real-time" 2-way syncing, whenever a person clicked to view a queue, GQueues checked the person's Google Calendar for any changes before displaying the tasks. This check increased the queue load-time 0.5 - 2 seconds depending on network congestion, but it was essential to providing the most current and accurate view of a person's tasks.

Last July Google added "push notifications" to the Calendar API. This was a significant improvement because it meant Google Calendar could be set to immediately notify a third-party server when any changes happened to a calendar instead of the server always having to check for changes. GQueues could finally be notified of calendar changes as they happened, and process them entirely in the background. The 2-second calendar check before a queue loaded could now be eliminated!

Unfortunately implementing the change was not so simple. The new "push notifications" feature is only available in version 3 of the Calendar API, which is wholly different than version 2 (which GQueues used), thus requiring a complete re-write of the calendar integration code. More troubling though, version 3 only supported OAuth2 for getting authorized access to a person's calendar. The Google Apps Marketplace did not support the newer OAuth2 protocol, so GQueues could not change to version 3 without leaving all its business users behind (obviously not a viable option). Fortunately Google updated the Marketplace in November to support OAuth2, and GQueues, as one of the launch partners finally had all the pieces in place to upgrade its calendar integration. After a few weeks of development and testing the upgrade was ready to launch and users now benefit from background calendar syncing and faster queue loading.

Tuesday, January 7, 2014

Top 3 Productivity Hacks for 2014

During the holidays I inevitably end up having conversations with family and friends comparing notes on the best apps we've found, how to do X on device Y, and savvy tricks we use to be more efficient and productive. It's always a great time of sharing and it prompted me to think about the tech "hacks" I use that have resulted in my largest productivity gains over the past few years.

Here are my top three "productivity hacks," which may seem commonplace to many, but they are so simple and provide such huge gains that they're worth mentioning for the benefit of anyone unacquainted.

1. Google Chrome Profiles to Manage Multiple Accounts

Most of us have multiple email accounts - at minimum personal and work - and often several more. I like to have all of my Gmail and Google Apps accounts open at once to save time logging in and out of each. Before 2013 I achieved this through a concoction of browsers - primary work email and browsing was isolated to Safari, all things personal in Chrome, test accounts in Firefox, and all secondary work accounts in a Chrome incognito window with Google's limited support for multiple account login. This configuration worked for the most part, but was a hassle to setup whenever I restarted my computer, and supported a limited number of accounts (I was still always signing in and out of test accounts on Firefox).

Profiles in Google Chrome changed everything!  When you add a profile to Chrome it's like running an entirely separate browser with a separate browsing history, separate cookies so your logged in accounts don't get mixed up and separate bookmarks.

Adding a profile to Chrome is easy - just go to Settings -> Users and "Add new user...". I created a profile for every email account I have, with a different color icon and theme for each so they are easily distinguishable. Now, essentially I have a separate browser for every account, and since I've signed in to Chrome once for each profile, I can open Gmail or any Google service without ever having to sign in again. (This also works great if you like to have multiple GQueues accounts open at once). And when I restart my machine I just select the profiles I want to open again and choose "Recent tabs" from the menu to restore everything as it was.

I can now open any email account with two clicks, keep all my online identities separate and open simultaneously, and I get to use my favorite browser for everything now too!

2. Multiple Desktops to Stay Organized and Focused

The idea behind multiple desktops is that you can create several different workspaces or desktops on a single computer, thus making it easier to organize and manage disparate computing activities and avoid having layers and layers of windows on top of each other. When I discovered how to setup multiple desktops several years ago it felt like I had just gotten 5 new computers for free!

Multiple desktops are available on most operating systems - Mac OS X allows you to setup "Spaces" for each desktop, on a Windows machine you can choose from a number of free applications to install, and on a Linux box they are included with most distros and desktop environments.

I have six Spaces setup on my Mac (you can add up to 16) - one for each type of activity with unique wallpapers for each desktop so I can instantly know where I am at. I've also setup keyboard shortcuts to quickly navigate between them (option key + the desktop number).

  • 1st desktop - All email accounts are open here, all social networking and web browsing happens here
  • 2nd desktop - All music apps are open here, the control center for my daily soundtrack
  • 3rd desktop - All web development happens here - Terminals, App Engine and testing on various browsers
  • 4th desktop - Exclusively for Photoshop
  • 5th desktop - Android and iOS development - Eclipse and XCode live here
  • 6th desktop - A "free" desktop for whenever I need a blank workspace

Using multiple desktops on my computer is the best hack for keeping myself organized and focused on the task at hand. When I start to develop a new feature for GQueues or fix a bug everything is already setup and ready to go on desktop 3. While developing, I'm less tempted to check my email every minute because it's not on the screen. If I need to design a new component, I hop over to desktop 4 where Photoshop is my entire focus. And when it is time to take a break and check email I can easily switch to this context without losing my place anywhere else. Yes, sometimes it's too easy to just pop over to desktop 1 for a quick peek. Having separate workspaces for each activity helps though, and with a little willpower I can stay focused on one task at a time, minimize switching costs and maintain flow while I work.

3. Multiple Monitors to Maximize Productivity

Adding an additional monitor to your computer setup is probably the easiest way to instantly increase your productivity. Increasing the size of your desktop allows you to have more windows open without covering each other, which means you spend less time switching between them. Copying text between documents or emails, referencing multiple articles, reviewing large spreadsheets all become faster and easier with an additional monitor.

There have been a number of studies and articles over the past 10 years showing productivity boosts from an additional monitor. I've actually cited these in two previous jobs to successfully lobby management for second monitors for all co-workers in my department. And with dwindling prices on monitors, it's even easier to get a return on this one-time investment.

Two years ago I updated my computer to a 15" laptop with a 27" external monitor. All my everyday activities were much easier with the additional desktop space, and my time at the computer was actually more pleasant. A year later I added another 27" monitor to my setup. Before purchasing, I thought it was a little excessive, but now I couldn't imagine working without it. Developing the Android and iOS apps for GQueues was so much easier having an entire screen for writing code, a second one for monitoring logs and debugging, and a third for simulators and documentation. Having multiple email accounts open and fully visible simultaneously is incredibly useful. And this hack is not just for developers - I know a number of accountants, managers, administrators and executive assistants who have all benefited from additional monitors.

Yes, some have questioned the validity of the second monitor studies, and it's true that in some cases people might become less focused when they have more things open and visible on their desktop. For me though, when I combine additional monitors with my multiple desktops hack I get the optimal setup. Each desktop encompasses all three monitors, so I have a huge amount of space within each desktop to maximize my efficiency, while still using distinct workspaces to maintain my focus.

There is certainly an abundance of tips for increasing productivity, but these three I found to have the biggest impact in my own work. What strategies and "hacks" do you use to help boost productivity?