On this page

A lot of tools we use are described in the rest of the handbook (GitLab, Google Docs, 1Password, etc.). This section is for tools that don't fit anywhere else.


If you move to another location, you should update Sundial to reflect that change. In order to do that:

  1. Search for "Private Sundial URL" in Google Drive.
  2. Go to the Sundial URL mentioned in the Google doc.
  3. Click "Log in" in the upper right corner.
  4. Choose to "Login with Google" using your GitLab Gmail account.
  5. Hover over your name in the upper right corner and choose "Update your location".

Google Slides templates

Use this general GitLab branded slide template when creating slide decks for internal and external use. Make a copy of the slide deck and only edit the copy; do not edit the template itself.

In the _Templates folder you can also find specific deck templates; for example, the Functional Group Update template.

Updating your slide deck theme

Here are a few quick steps for updating your slide decks to match the most recent template:

  1. In the top toolbar click Theme which will open the Themes panel (on the right-hand side). Change theme in Google Slides
  2. At the bottom of the Themes panel, click Import theme.
  3. In the Import theme dialog box type GitLab deck template into the search field.
  4. Find the GitLab-Deck-Template and click the Select button in the bottom left to apply the theme to your slide deck.
  5. Minor adjustments may be needed once the new theme is applied; the 'Layout' button in the toolbar will help you find the right slide layout for your content.

Google Forms templates

Use these Gitlab branded form templates when creating internal or external surveys or forms. Make a copy of the form and only edit the copy; do not edit the template itself.


Calendly connects to your Google calendar so people can book a time with you without having a Google Account.

  1. Set up a Calendly account.
  2. Link it to your GitLab Google Calendar to make it possible for people to schedule a call with you.
  3. All meetings will have the same Google Hangouts URL on your calendar based on your email handle. You can use that in the booking text above. Events on your calendar will automatically have the Google Hangouts URL added, so you can use the plus landing page to quickly jump into the call. Please note that the appointment will show up in other people's calendars with a different link, so it is essential that you set a text with the link for your time slot as specified below.
  4. Set up the 45 minute time slot with the following event description text (replacing XXXXX with your handle):

    This will be a Google Hangouts at

    Question? Please email me. GitLab Primer:

  5. If you intend to use any of the other event types, make sure to add this to their event descriptions as well.
  6. For people outside of GitLab Inc, send them your Calendly link that links directly to the 45 minute time slot: "Are any of the times on convenient for you? If so please book one, if not please let me know what times are good for you and we'll find an alternative."
  7. Update your availability on Calendy Event Types.
  8. Add your Calendly link to your Slack profile. For Display Text, use this line: Schedule a meeting with me! so GitLabbers can schedule a 1:1 call with you in GitLab, by simply clicking your Calendly link in your Slack profile.

Keep in mind that unlike normal Google Calendar events, Calendly events are not automatically synchronized between both parties when changes are made. If an event needs to be cancelled or modified, make sure to use Calendly to do so.


Do Not Disturb Hours

Slack now supports "Do Not Disturb Hours" so you won't be pinged in the middle of the night or while you are dealing with family matters. You can set your "Do Not Disturb Hours" by clicking on the bell at the top of the left pane in the Slack app. You also have the option of snoozing for 20 minutes or up to 24 hours. Note: Do Not Disturb can be overridden in the event of an emergency. See Slack documentation for more information.

Browse Channels

You can browse all available GitLab channels by clicking on "Channels" on the left pane in the Slack app. From there, you can see every channel, who created it, and how many members there are. Every team member is automatically added to #general, where announcements are made and information for the entire company is shared. There are also a few default channels that every new hire is added to, such as: #celebrations, #new_labbers, #questions, #random, #thanks, & #working-on; these channels are optional, but we think they are a great place for team members to interact and get to know each other.

Slack Status

Slack has the functionality to set an individual status. For example, you can select away from keyboard, vacation, or working remotely. This is a great way to let your team know if you are available or not.

Slack Certification

The Slack Certification Beta is an interactive learning tool.


To set up a Zoom meeting, sign up for a free basic account using your GitLab email address, and share the link for your "personal meeting room" with your participants. Note that on the Basic license, meetings are capped at 100 people, and meeting durations are capped at 40 minutes. If you need to be able to organize calls longer than 40 minutes using Zoom, contact Jennifer Garcia or #peopleops to be granted a Pro account. By default, only Support Engineers and members of the Sales team are given Pro accounts during onboarding since their job routinely involves making video calls with (potential) customers.

To record the meeting set up cloud recording. You can also configure Zoom to save to the cloud automatically. Go to "My Meeting Settings" and find the "Recording" section, then click on "Cloud Recording". Setting the topic of the meeting is important, otherwise all meetings will be recorded with a generic name. Once recording is complete, your videos will not appear in the “Recordings” section of your Zoom account. Your recordings will automatically be saved to a folder on Google Drive under "GitLab Videos".

Our Zoom account has End-to-End Encryption enabled. This may impact performance, so if you run into any issues, let People Ops know.

If there is a meeting active, a new meeting cannot start until the host ends the meeting or all participants leave. People Ops can force end a meeting by logging into Zoom with the credentials in 1Password, going to My Meetings, finding the meeting they would like to end, then selecting "End." This will allow the next meeting to begin.

How to share a presentation in Zoom

At some point, you may need to give a slide presentation using Zoom. Ideally, you should be able to see your speaker notes while participants see your slide show. This is fairly easy to do with two monitors by using presenter view and sharing the monitor which contains the slides. If you have only one monitor, it is still possible using the following steps:

  1. Open your slide deck in Google Slides. Make sure to close any other tabs you may have open. Participants will be able to see these tabs when it comes time to present.
  2. Select Presenter view. This will make your presentation take up the entire screen.
  3. Hover near the bottom of your presentation and you will see a pop up menu. From this menu, select the Toggle Full Screen option, third button from the right, next to settings. This will end full screen mode without leaving the presenter view.
  4. To see your speaker notes, hover at the bottom of your presentation window again and select Presenter View from the menu.
  5. You will now have a presenter view pop-up window which allows you to see your speaker notes as well as advance the slides.
  6. In another browser window enter the Zoom meeting room.
  7. Once in the meeting, select Share Screen from the options at the bottom of the screen.
  8. Do not share your desktop. From the options, select the browser window containing your Google Slides deck. This will allow you to share just the browser window containing your slides.
  9. If you would also like to see the Zoom chat, hover your cursor at the top of the screen containing your Zoom meeting. A menu will appear, from this menu select More > Chat.
  10. Position the windows any way you need to see the presentation and speaker notes.
  11. Make sure to change slides using the presenter view pop up window. This will advance the presentation for your viewers as well as advancing your speaker notes.

If you would like to practice presenting, you can do so using your own private Zoom room.

  1. Open the Zoom app and click Start with video.
  2. Click Record.
  3. Repeat the steps above.
  4. Stop and watch the recording. You'll see what the participants would see.

Live Streaming to YouTube

You can use Zoom to livestream your meeting directly to YouTube. It requires some preparation, so make sure to do the first three steps ahead of time.

  1. Make sure you have access to the GitLab YouTube account. Read the secure note in 1Password called "Youtube" for instructions.
  2. Ask for the Zoom Webinar license to be assigned to you by Jennifer Garcia or #peopleops at least one day in advance, and let #peopleops know when you are done using it. Or share Zoom account within team.
    • If this is for a marketing webinar, ask Emily vH (evhoffmann) to set up the event one day in advance or more. Add her to the calendar event whenever you set it up to avoid a rush.
    • If for whatever reason the license is not available, you can always record the demo & send to Emily to edit and publish on YouTube afterwards, but for many events a live stream is preferable for max participation.
  3. Schedule your meeting as webinar.
  4. For the Retros and Kickoffs
    • Add the release manager, VP of product, and/or product managers as alternate hosts. (Once you've started the webinar, you can promote all others who join from attendees to panelists. This will allow their audio and video to appear on the live stream.)
    • Turn video for panelists On.
    • Enter the correct date and time for the event.
    • Copy the link for the webinar from Zoom and update the calendar event and retro or kickoff doc.
    • To allow audience members time to see that an event is imminent, go live on YouTube for ~5 minutes before the first person begins. This will give you time to tweet out the watch page, and the audience will begin to queue.
  5. Join the meeting ahead of time. If you are using a standby image, make sure that the text is edited to reflect the correct event details. Enter present mode and share your screen.
  6. Click on More and Live on YouTube. Make sure to select the right email address (e.g., your GitLab email) and YouTube account (GitLab) to ensure that the stream occurs through the correct account.
  7. Use the chat function to alert everyone that you are preparing to go live. Once live, let the person with the first agenda item know that they are free to unmute themselves and begin when ready.
  8. Now choose the GitLab YouTube account and mark it as Public (or unlisted for a test).
  9. Click in Zoom on Go Live! to start streaming.

There are a few limitations:

  1. Only 50 people can be 'presenters', that is people sharing their video and audio.
  2. You will have to manually promote people to become presenters, from being just attendees. Do this by going to participants and clicking on the dropdown menu. Promote people to the highest level to allow them to promote others.

The video of the livestream will be available automatically on YouTube and anyone visiting our YouTube page will be notified that we're streaming live. Sharing the stream after it already started is fine, people can go back in time, even while the stream is ongoing.

During streaming, use YouTube chat instead of Zoom chat for any comments related to the content that is being presented.

See the Zoom documentation on live streaming

Zoom on Linux using FOSS (Firejail)

While Zoom works on Linux, the application is not free software. As a result, some might be wary of running this directly on their computer. One way of running Zoom without worrying about what it does is to use firejail.

To use Zoom with Firejail, first install Zoom or download the archive. Zoom offers standalone binaries that you can download should your distribution not have a package for Zoom. Once installed, install firejail.

Once both firejail and Zoom are installed we need two things:

  1. A firejail profile for Zoom
  2. A directory we can use as the home directory for Zoom, preventing it from messing with your home directory

You can use the following firejail profile and store it in ~/.config/firejail/zoom.profile:

noblacklist ~/.config/zoomus.conf

include /etc/firejail/zoom.local
include /etc/firejail/
include /etc/firejail/
include /etc/firejail/

whitelist ~/.zoom

caps.drop all
protocol unix,inet,inet6,netlink


Next we need a home directory for Zoom. For this example we'll use /opt/zoom/home:

sudo mkdir -p /opt/zoom/home
sudo chown -R $USER /opt/zoom

With this in place we can start Zoom using firejail as follows:

firejail --quiet --profile=~/.config/firejail/zoom.profile --private=/opt/zoom/home /path/to/zoom/ZoomLauncher

Note that you must start the ZoomLauncher binary and not the shell script wrapper called zoom.


$4.99 tool for OS X that lets you set a hotkey (e.g. fn) to mute your microphone ("push-to-talk" or "push-to-mute"). Never again will you have to switch your window focus to Google Hangouts or Zoom to speak or mute. The icon will show the current state of your mic input (x means muted). With a right click (or your configured hotkey) you can switch from push to talk to push to mute. Don't forget to unblock your mic in Zoom/Google Hangouts immediately after joining. Be warned that page up with fn+down arrow will activate it. Use space for page down instead of fn+up arrow.

Shush alternative for Linux

If you use Linux (e.g. Arch, Ubuntu or Fedora) you can create a system-wide keyboard shortcut to mute/unmute your mic. Please note that it only works for Linux distributions which use ALSA for sounds (most popular Linux distributions use ALSA). All you need to do is go to your desktop environment's Keyboard Settings and create a custom shortcut with the command amixer set Capture toggle and assign a key combination of your choice (e.g. Pause Break key). Once this is done, you can mute/unmute your mic using the assigned keyboard shortcut while you're in any application. Refer to this original answer on Askubuntu to learn more.

Disabling OS X Notification Center

During a presentation or screen share, you might want to disable your notifications on OS X to prevent distractions or possible embarrassment.

The Notification Center can be quickly disabled by Option-Clicking the menu bar icon in the top right of your screen. This disables notifications until the next day. Option-Click again to re-enable immediately. Alternatively, click on the Notification Center icon, then scroll up to reveal the "Do Not Disturb" toggle.

If your laptop is a MacBook with a Touch Bar, note that you can assign a handy "Do Not Disturb" button on your Control Strip. In System Preferences, navigate to Keyboard settings and click "Customize Control Strip…" to add this.

Google Cloud Platform

See the Engineering handbook for a listing of cloud resources and how to gain access to them.

Google Calendar

Modifying Events

This Chrome extension will allow guests to modify calendar appointments by default.

Add a filter to remove invites responses from your inbox with the following query:

*.ics subject:("invitation" OR "accepted" OR "rejected" OR "updated" OR "canceled event" OR "declined") when where calendar who organizer

Gitlab Availability Calendar

The GitLab Availability Calendar is available to all team members on a read/write basis. It should be automatically be in your calendars list on the left side of your screen in Google Calendar. (If it is missing or you've removed it by mistake, visit the calendar and click the + button at the bottom right to add it back.) This calendar is the place for:

Anyone in GitLab can go into the GitLab Availability calendar and invite themselves to one of these events, or change the details (for example, if you are adding presentation slides). If you are unable to do so, please reach out to People Ops.

Note: To avoid calendar noise, time off / unavailability events should be limited to full-day calendar entries. There is no need to add personal appointments or other short events to the calendar, as timed events should be reserved for company-wide meetings.

GitLab Team Meetings Calendar

The GitLab Team Meetings Calendar is also available to all team members and can be found in your calendars list. You can find the details for other teams' meetings here, so you can attend a different team's meeting and ask questions, learn about what they're working on, and get to know the rest of the GitLab functional groups. These meetings are open to everyone in GitLab. If you are creating a new team meeting, please copy it to the GitLab Team Meetings calendar, and reach out to People Ops with any questions.

Restore Deleted Calendar Items

(This assumes you are using Google's new Calendar).

When you have accidentally deleted something from the Team Meetings or Availability calendar, you can recover it by:



It might be useful to add a Gmail filter that adds a label to any GitLab notification email in which you are specifically mentioned, as opposed to a notification that you received simply because you were subscribed to the issue or merge request.

  1. Search for @your_gitlab_username in Gmail.
  2. Click the down arrow on the right side of the search field.
  3. Click "Create filter with this search".
  4. Check "Apply the label:" and select a label to add, or create a new one, such as "Mentioned".
  5. Check "Also apply filter to matching conversations".
  6. Click "Create filter".


If you use the archive function you normally return to your overview. With auto-advance you can return to the next message. Enable "Auto-advance" in the labs section under settings. The default setting of showing the next older message is OK.

Email signature

Set up an email signature which includes your full name and job title so people can quickly know what you do.

Keyboard shortcuts

Keyboard shortcuts only work if you've turned them on in Gmail Settings.

Steps below:

[Here are some shortcuts you can use] (


Computers with older CPUs (pre-2016/Skylake) may be missing hardware acceleration for VP9. In Chrome, this can cause excessive CPU due to use of the codec. On MacOS switching to Safari or using h264ify (Chrome Web Store) solves this since it will use h264 that is hardware accelerated.

To check the status of acceleration on Chrome, see the "Video Encode" option in about://gpu.

Hangouts on air

Hangouts on Air probably only works with a maximum of 15 people for scheduled calls (same limit as normal Google Hangouts).

Potential problem 1: even when I logged in as GitLab and got the bar below the call, I could not switch it to on-air! I did notice that the time was not properly set (anymore?). I did a test event before and that seemed to work OK. I'll try one more time to see if it works.

Potential problem 2: the video showed up as listed by default

Go to My live events on YouTube and switch to the GitLab account on the top right (you need to be a manager of our YouTube channel).

Go to => life streaming => events and create a new one with the attributes:

The view on watch page URL only allows for people to watch it. Window that pops up when you press the start hangout on air button has the proper URL that you can send to other people and/or add it to the calendar invite, it is structured like: When people join the event they have to accept a warning.

Completed live events will show the video and you can click the image to view it. You can use actions to make it public here.

BTW Trying to set this up via Google+ via Hangouts on Air instead of via YouTube doesn't seem to connect to the right YouTube channel, even if you selected the right account on the top right.


Tunnelblick on macOS

Tunnelblick is a free OpenVPN client for macOS.

Viscosity on macOS & Windows

Viscosity is more advanced than Tunnelblick, but it's not free.


With Viscosity it is possible to only tunnel a selection of the traffic.

For example, to only tunnel traffic to GitLab servers:

  1. Load the *.ovpn file the infrastructure team did provide.
  2. Open the Viscosity preferences
  3. Select the connection you want to configure, and click "Edit"
  4. Go to the Networking tab
  5. For "Default Gateway" configure: net_gateway
  6. For each host you want to tunnel, add an entry to the routing table (click the "+" to add one):
    • Destination: the hostname you want to tunnel (no wildcards supported)
    • Mask/Bits:
    • Gateway: "VPN Gateway"
    • Click "Add"
  7. DNS settings Mode: "Split DNS"
  8. Domains:,,
  9. Click "Save"
Viscosity Networking Viscosity Add Route


Grammarly is a good tool for those who want to feel more comfortable drafting written communication in English (American or British). There is a free and premium version.


Link your GitLab email address to an easily recognizable photo of yourself on Gravatar. It is company policy to use a photo, and not an avatar, a stock photo, or something with sunglasses for any of your GitLab accounts, as we have a lot of GitLabbers and our brains are comfortable with recognizing people; let's use them. allows you to instantly create a free video chat room for up to 8 participants with no login and no installation. It also offers a free reliable mobile video conference app.

One Tab

One Tab (Free) tames tabs into a list which can be sorted and exported.


Quitter (Free) will switch off apps for you after some period of inactivity. Consider using this to hide Slack after a while to reduce your urge to check new messages all the time.


TripMode ($7.99) lets you control which apps can use the internet. Especially useful when you're working on a cellular/metered connection.


ShareX (Free / Windows only) is the ultimate screen capture toolbox for Windows, which includes many different options to record your screen and automate your workflow with automatic uploading, resizing and much more.

Teampaper Snap

Teampaper Snap (Free / Mac only) is the ultimate screen capture tool for Mac to voice your thoughts on anything you can see on a screen.


Clocker (Free / macOS Only) adds a clean and distraction free world clock to your menu bar so you can check on your fellow teammates across different timezones.


Bear (Free) is a clean writing tool for notes and long-form writing. Ulysses $5/month is also a great choice.


Loom (Free) is a handy Chrome plugin tool for video walkthroughs. Nice tool for demo recordings and internal/external documentation.

Google Analytics

Google Analytics (GA) is an essential tool for making data-driven decisions. It receives data from both and websites. Read through the Online Marketing Handbook for more information on GA.

For example, you can look at the GA data to analyze how visited is a certain page, in a period of your choice. You can also look at the GA referrals data to understand where the users are coming from and where they go when they leave a certain page.

To see the data for a specific page:

To find the referrals for a certain page, continue from the steps above.

Check which process occupies a given port

When the GitLab Development Kit cannot start using the ./run command and Unicorn terminates because port 3000 is already in use, you will have to check what process is using it. Running sudo lsof -i -n -P | grep TCP | grep 3000 will yield the offender so this process can be killed. It might be wise to alias this command in your .bash_profile or equivalent for your shell.

Shell aliases

Use command aliases in your shell to speed up your workflow. Take a look at these aliases and others in Sid's dotfiles project. For example, by adding the following to your .bash_profile or equivalent for your shell, you can just type s to checkout the master branch of this website, pull the latest changes, and open the repository in Sublime Text:

alias gco='git checkout'
alias gl='git pull --prune'
alias gca='git commit -a'
alias gp='git push origin HEAD'
alias www='cd ~/Dropbox/Repos/www-gitlab-com/source'
alias s='www;subl .;gco master;gl'

After editing, you can just type gca to commit all of your changes, followed by gp to push them to the remote branch.

Sublime text

Putting the following in Preferences.sublime-settings - User will among other things ensure that if you open the www-gitlab-com website you're not opening the output files by accident:

    "font_size": 18,
    "spell_check": true,
    "translate_tabs_to_spaces": true,
    "trim_trailing_white_space_on_save": true,
    "folder_exclude_patterns": ["public"]


Simplenote is a free, open source note taking app which is cross platform, and syncs across all devices.

Spectacle App

Spectacle is a free, open source windows resizing and arrangement tool for Macs and is amazing for productivity – particularly if you use multiple displays. Once you use this you'll never go back! Consider donating if you love it.


If you install MobileDay (Free) on your phone and give it access to your Google Calendar it can dial into conference calls for you. It is very good at detecting the number and password from the calendar invite.

Keeping You Awake

Keeping You Awake (Free & Open Source) is a macOS utility application that can prevent your Mac from entering sleep mode for a predefined duration or as long as it is activated.

SessionBox (Chrome, Firefox 51+, Opera)

SessionBox is a browser extension that helps you deal with multiple sessions. It binds a particular session to a tab. This is particularly useful for testing with different users in the same browser.

Enable screen lock on your mac menu bar

  1. Open up the Keychain Access application
  2. In the menu bar (next to the apple logo), click on Keychain Access
  3. Click on Preferences
  4. Check the box Show keychain status in menu bar
  5. The lock icon should now show up on your menu bar

You can lock your screen by clicking the lock icon on the menu bar and clicking Lock Screen

Visual help to differentiate between GitLab servers

If you are working on multiple GitLab instances and want to have a visual differentiation, you can change the default Application theme to a different color.

How to change your username at

STEP 1: Request your new username

STEP 2: Create a new account with your new username

STEP 3: Let's have some fun (kidding, this is critical!)

STEP 4: Move your projects (or not)

That's it! Don't forget to update your username on the team page and on the Marketing Handbook, in case you're a Marketing Team member.

How to create gifs

We have a dedicated section for that in the handbook.

Long haul flights

Note: you have to pay for these items yourself.

Count handbook pages

find source/handbook -type f | xargs wc -w

It was 482516 words on 2018-12-20, 1072 pages according to Wordcounter, and that is not counting the images.


If people want to use Webex instead of Zoom consider installing their native client under WebEx Productivity Tools. With the in-browser plugin the screen sharing sometimes doesn't work.


You can install Grammarly to help you feel more confident writing in English within your browser or on your system. Grammarly has a contextual spelling and grammar check. Grammerly will have access to everything you type, they have had a security problem.

Do NOT Use

Flash: Due to security flaws, we strongly recommend not using Adobe Flash. Certainly do not install it on your local machine. But even the Google Chrome plugin that let's you see embedded Flash content in websites can pose a security hazard. If you have not already, go to your Chrome Flash Settings and disable Flash. For further context, note that Google Chrome is removing Flash support soon, and while the plugin is better than a local install of Flash, it still leaves vulnerabilities for zero-day attacks.