Wilson Mar bio photo

Wilson Mar

Hello. Hire me!

Email me Calendar Skype call 310 320-7878

LinkedIn Twitter Gitter Google+ Youtube

Github Stackoverflow Pinterest

Notifications

How the computer gets you to do what you should be doing now


Overview

The objective of this page is to describe how to setup a way for you to receive and manage the deluge of notifications coming in from various sources.

I want you to feel confident that you’ve mastered this skill. That’s why this takes a hands-on approach where you type in commands and we explain the responses and possible troubleshooting. This is a “deep dive” because all details are presented.

Like a good music DJ, I’ve carefully arranged the presentation of concepts into a sequence for easy learning, so you don’t have to spend as much time as me making sense of the flood of material around this subject.

Sentences that begin with PROTIP are a high point of this website to point out wisdom and advice from experience. NOTE point out observations that many miss. Search for them if you only want “TL;DR” (Too Long Didn’t Read) highlights.

Stuck? Contact me and I or one of my friends will help you.

Event Notifications

Most people can only handle so much distraction before they feel overwhelmed and thus become less effective.

Several researchers have concluded that “Multi-tasking is making you stupid”. People who think they can multi-task are actually less effective than they think.

Being sent notifications too frequently inures one to paying attention, which reduces the value of notifications.

To avoid “notification fatique”, one needs to be judicious about how each condition is communicated, what communication channel to use, to whom, etc.

The strategy

  1. Rank the importance of the subject of alerts. Some responses may not be appropriate for all. For example, automated email filters send some emails into a spam folder that one may never read. The condition of core modules or components on which others depend, revenue-generating processes, and high-value customers and vendors are often treated with higher regard than others.

  2. Identify the workflow (or pipeline) of tasks so that the next step is more obvious.

  3. Identify what condition, event, or status relevant to each task. An example is the table of conditions below.

  4. Identify the primary person or department who should respond to each combination of the above (importance or condition). Call centers have a front-line team that receives calls and emails from the public. They route calls to managers for callers asking for one.

They may be completely bypassed by organizations which pay for a license so they have use a secret contact information to go directly to the experts.

  1. Determine what response actions should be taken for each combination of the above. Examples are in the table below.

  2. Identify the medium of communication. For example, for immediate

  3. Identify the secondary and tertiary responders to contact, and when they are contacted in case primary responders do not respond in time.

The above are the dimensions to consider when analyzing how to respond faster and better.

The strategy would need to be adjusted depending on how much attention each responder can provide at any given moment.

Condition - Response table

Here is an example of mapping conditions to responses for the default level of importance:

Condition Response by whom
Build Start Watch if critical -
Aborted Investigate Developer
Not Built Delegate Developer
Failure Diagnose Lead Developer
Success Celebrate Archive
Unstable Analyze patterns Ops Engineer
Back to Normal Do follow-on tasks Next person
Repeated Failure Troubleshoot Tech lead
Test Summary Retrospective Review Team, Manager

The mode of communication would ideally be adjusted on the preference of each individual recipient.

Condition Noisy SMS Slack email archive
Build Start - - - - all
Aborted - - - - all
Not Built - - all - -
Failure - all - - -
Success - - - - all
Unstable 1 2 3 4 -
Back to Normal - - - - all
Repeated Failure - 1 2 all -
Test Summary - - - - all

An audible or visuble noise that’s difficult to ignore apart from computers and mobile devices should be part of the “arsenal” of communication devices for critical situations (like an air-raid siren).

The numbers in the chart above are for the importance level, with 1 being the highest.

Noisy Interrupt Scream

PROTIP: Sometimes, it is necessary to make a visible, auditory, or other physical human sense signal. This is not just to get the attention of someone with a disability. When people are watching a loud movie or have headphones on, how does someone interrupt for an important message?

  • https://developer.artik.cloud/

How about configuring different sounds for different programs making noise to tell them apart?

Maybe different animals?

  • Skype: Lions
  • Slack: Donkeys
  • Gitter.im: Monkeys
  • Hipchat: Geese
  • etc.

Build Start

PROTIP: It may not be necessary to receive a “Build Start” event announcement since notification of failure will be sent out. What should one do while the machine runs? Thus the wisdom of paying attention only to exceptions.

Aborted

If an Abort message occurs because of a manually initiated event, then it would be redundant to send a message to the initatior.

If an Abort message occurs shortly after manual initiation, the initiator is likely on the computer screen. So it can be sent to Slack.

Archive

Notifications are sent to archive to make history available for spotting trends over time as the basis for predictions.

PROTIP: PagerDuty is a company that claims it can provide a fine-grained management platform for notifications.

Hipchat

https://github.com/jlewallen/jenkins-hipchat-plugin

Slack on Jenkins

There are several other instant messaging services available: Hipchat, Microsoft Skype, Snapchat, Facebook WhatsApp, Yahoo Messenger, etc.

Let’s start with Slack, which is the darling in 2016.

  1. Get a Slack account at https://slack.com

    Once signed in:

  2. Create a new channel for experimenation the first time you do this.

  3. Go to the Jenkins integration page at
    https://my.slack.com/services/new/jenkins-ci

    If you’ve signed in, you’ll see the last channel you visited online.

  4. Click the “Choose a channel” drop-down and
    select “Privately to … (you)” while you’re developing.

  5. Click “Add Jenkins Integration” green button for instructions to follow.

    Setup in Jenkins

  6. Be in Jenkins > Manage Plugins > Available.

  7. Search for “Slack Notification Plugin” at
    https://wiki.jenkins-ci.org/display/JENKINS/Slack+Plugin

  8. Check the Install button for the plugin.

  9. Search for “Global Slack Notifier” at
    https://wiki.jenkins-ci.org/display/JENKINS/Slack+Plugin

  10. Click “Install without restart”.

    After install:

    Configure

  11. Click on Manage Jenkins > Configure System.

  12. Find the “Global Slack Notifier” Settings section

  13. Copy and paste these values:

    Team Domain: intelligentworld
    Integration Token: ETdv3TU4IDPGLnwZT5KZc66Z

  14. Repeat the above Configure steps for each project.

  15. In the Slack Notifications section, choose the events you’d like to be notified about, referencing the Conditions table you customized for your needs.

  16. Click “Save Settings”.


  1. Install this plugin on your Jenkins server.

  2. Configure it in your Jenkins job and add it as a Post-build action.

  3. Create an HPI file to install in Jenkins in target/slack.hpi.

    mvn package