I work a lot with the cruise ship industry, and one of the more interesting challenges we run into is that often there are user-facing systems that have to work without an Internet connection. I’ve designed applications that are supposed to work in a mine, or on a plane, and then later sync with the cloud, but building something that might not have a web connection for three days through the fjords  is a little different.

We’ve been looking into sending local notifications without any Internet access at all – from a server installed locally on the ship, to an app on a crew member or guest’s personal device. The basic idea is that an app, installed on the phone or tablet, can send a “local push notification” or “background push notification” to the operating system. Even if the app is not in the foreground, or the phone is asleep, the notification should wake the device up, and present the user with a message. This is exactly the same as a standard push notification (think Facebook or calendar notifications), but instead of using Apple’s push server, you are using an app itself to send the message. The problem is how do you trigger the app to do something in the background? The app has to wake up in the background, contact the local server, check for messages, download any available message or content, and then alert the user if it found anything.

There are a couple of ways to trigger a background application to do something for you. The two we looked into for our purposes were “Location Updates” and “Background Fetch”

Our limitation here is obviously the cellular modem will be turned off (Airplane mode) because there either is no cell tower around, or you don’t want your passengers paying international data roaming fees. There are other ways to trigger a background app action, but they mainly involve things like plugging in headphones, managing VoIP calls, and mainly Internet-requiring services. You can read more about the available options here: http://apple.co/29288f1

Option 1. The background fetch function appears to be the best option for this kind of app. This is something we’ve used in the past, but never had to worry about sans-Internet issues. The way background fetch works is the operating system puts your app into a queue of other apps asking for background services. The queue is processed based on which apps have the best efficiency. Apple does not really go into details, but it appears that the less data and the less battery your application uses in the background, the more frequently your app will be given background privileges (http://apple.co/291iAkd).

However, the problem here was we didn’t know exactly how efficient the application will be before we build it and start tuning it. So we built a prototype. While plugged in to a charger, it was able to receive messages every 10-12 minutes. Unplugged it was able to check the server only ever 20 minutes.

Option 2 (Augmentation). So in order to augment the inconsistent/unknown response time of the background fetch, we looked at the location updates. Location Updates are a way of triggering a background function when the device detects “a significant location change”. The idea is that if the phone detects movement that is “significant” (whatever that means) it will trigger your app. This is not exactly well documented but through some research and some experimentation it appears that “significant” means 1000 meters. This would be perfect for us, because seeing as while on a cruise you are probably moving 10 meters a second, we could have the app update every minute and a half. That would be an additional update cycle to cut down on the 10-minute maximum update cycle. The problem is that this measurement is tracked using the cellular antenna, and not the GPS! After a fair amount of banging our head on the desk, we gave up on Option 2.

As far as I know, planes and cruise ships are going to be relegated to the notification abyss for the time being. Without reliable Internet access, devices can’t get timely push notifications. The limitations on local push notifications while in airplane mode might be ok for notifying crew about training drills and passengers about dinner times, but it would not be reliable enough for emergency notifications.

Previous ArticleNext Article
I help cruise lines turn their technical ideas into reality. I'm experienced in all stages of innovation and technology management. I've also been programing since I was 8 years old, and have somehow retained the ability to have normal human interactions. Occasionally I speak about how Industrial Psychology and Neurophysiology can be interrogated with IT and systems management, because I spend a lot of time thinking about the subject, as strange as that may seem.

Leave a Reply

A Simple Communication Framework

The single biggest problem in communication is the illusion that it has taken place.

George Bernard Shaw

Why a Framework?

The single most important thing that we do at work is communicating with other people. It’s generally how we are able to come up with ideas and execute them in ways that a single person could not.

It does seem that this whole “talking to each other” thing can get complicated. “Miscommunication” seems to be the number one excuse for something getting messed up in a knowledge worker environment. There are a whole host of reasons why this is the case. But one of the easiest ways to combat the lack of retention, the lack of comprehension, or simple miscommunications is to start with the way that we express ourselves.

At Sourcetoad, we use an adapted communications framework that has made life a lot easier for everyone involved. We have set up some basic rules for communication that are easy to remember, and we use keywords so that people receiving the information can context switch into the receiving framework mode. In other words, when people incite the framework, everyone changes their mental stance and prepares to communicate.

An Adapted Simple Model

This framework has been adapted from an amalgamation of numerous other frameworks. It takes a lot from military communication tactics (where being understood can be the difference between life and death) and a number of other popular communication frameworks. This is just the simplest way that we’ve been able to express it. It has been hacked together from too many sources to cite, but it is still simple enough to work well for us.

The Framework

Our framework has only four key pieces:

  • Intent
  • Context
  • A sketch of the desired outcome
  • A sketch of a strategy to get to that outcome

These four items can be placed in various orders, but typically they start with intent and end with a strategy.

Intent

Stating your intent, or at least clearly knowing what your intent is, is the most powerful part of this framework. Understanding your own intent in everything is extremely powerful, but that’s another blog post. Conversations that do not have a well-understood intent are just “chats.” They’re not the type of communication that will solve any problem.

Stating your intent at the beginning of a conversation does two very important things:

  1. It switches the receiver’s brain into “communications framework mode.” It allows the other person to understand that you are about to use the framework.
  2. Stating your intent allows the person to whom you are speaking with to know why you are talking. If I don’t know what you want right at the beginning, we’re probably not going to have a fruitful conversation.

Context

Context is the backstory or history that your receiver may need to fully understand the conversation. Telling the person you’re talking to about the players involved, what previous conversations touched on, or what the stakes are can be extremely useful.

The three main questions you should ask yourself when giving context are:

  • What are we talking about?
  • What do you need to know about this?
  • Have I told you everything you need to know?

When saying this bit out loud, you can use the following trigger phrases to make sure your receiver knows you are using the framework:

  • “For a little background…”
  • “For context…”

Sketch Desired Outcome (End State)

After you’ve laid out your intentions and the context the receiver needs, it’s time to actually tell them what you want. This involves explaining your vision of the outcomes, or the “end state.”

An outcome or end state might be as complicated as: “I think what I want is for the company to open a new line of business, complete with staff and warehousing. I also think we’re going to need to custom build an entire logistics software system over the next few years.”

Or it could be as simple as: “What I would like is that at the end of this conversation, we set up a time to have a formal meeting about it with the team.”

You need to be flexible here because even though you might know what type of outcome you are looking for, you need to leave room for the solution to include new ideas from your audience. That’s why we call it a “sketch.”

When saying this bit out loud, you can use the following trigger phrases to make sure the receiver can envision what you want to happen:

  • “What I see happening…”
  • “My desired outcome is…”

Sketch a Strategy

You know what you want (intent), the receiver knows what you want (end state), and they have the backstory (context) to understand what you’re talking about — we can now move on to action.

In this phase, we outline a possible method of getting to that end state I mentioned earlier. This is up for discussion, of course. The person you’re speaking with is not required to follow your sketch. Rather, this phase invites them to build a strategy with you to accomplish the desired outcome.

The person you’re speaking with might have a much better idea of how to get there than you do, especially since they now understand your intentions and what the end goal is. So keep an open mind, and enjoy the brainstorming.

When describing the strategy you envision, Use triggers like:

  • “A rough strategy we could take is…”
  • “A path I see is…”
  • “I’d suggest x as the next steps. What do you think?”

Example 1

Intention: I want a dashboard to show the ten most important KPIs for our internal product. I want the team to manage the build-out and timing to balance client needs. I’m prepared to invest about 100 hours for the MVP.

Context: Hi Joe, some quick context: I would like for the team to build a dashboard that provides a brief overview of the system – I want this to show the variety of features for sales calls and to be useful for current clients.

Outcome: My desired end state is I get a demo-able dashboard on our test instance within the next four months. It should have 70% of the functionality shown in the mockups.

Strategy: I think the rough path to getting there is for you and Jane to meet and work out which features are doable in the next four months while balancing client requests. Then you can create tickets for the segments and decide how flexible the dashboard could be. Let’s get together for a review and approval meeting when that’s done. After that, we can start handing out the tickets to the team.

Example 2

Intention: I want to get James to switch the DNS servers for a client.

Context: Hey James, for some context, Martin asked me to help him with their new mail server. They’re going to be setting this up on their side with Office365. I’m not sure what is required 100%, though.

Outcome: I would like to send Martin an email with the steps he needs to take to prepare for the switchover and the dates when we plan on doing it. If we have any questions for him, I’d like to include those in the email by the end of the day tomorrow.

Strategy: My strategy here is that I will follow your advice and guidance to the letter because I’m not the expert.

Recap

If you are talking to someone at work, they might not actually be paying attention. Having a communications framework with key phrases and trigger words can make a huge impact on changing the mindset of the sender and the receiver. When both parties know that information is going to be transmitted in a certain way, retention and accuracy rates are way higher.

At Sourcetoad, we use the trigger words and key phrases below to help change our thinking, speaking, and listening modes:

  • Intent
    • “My intention is…”
    • “What I’m looking to do is…”
    • “What I want is…”
  • Context
    • “For some context…”
    • “A little background…”
  • Sketch of my desired outcome
    • “The outcome I’m looking for is…”
    • “When this is all done, I’d like to see…”
  • Sketch of a strategy to get there
    • “I think a rough path to get here is…”
    • “The strategy I imagine is…”

That’s it! It’s a very simple yet powerful tool to help improve communication. You can alter this plan or invent your own, but the key is that both parties know the rules. The idea that people can switch between a conversation and “communication” is life-changing – but it requires training on both sides.