#DF14 BASECAMP: WHAT YOU CAN EXPECT (PART 2)

Coffee. Cocktails. A free Fitbit while supplies last. And interesting conversation with some of the coolest people you’ll meet at Dreamforce.

Can’t wait? Neither can we.

Starting Monday, just “Walk a Block” to our Basecamp (one block from Moscone West). Remember, all you need to do is walk down Howard Street and then turn left onto 5th Street. Our loft will be on your left, and there will be someone to greet you at the door.

Come upstairs for drinks, snacks and more. Whether you like to get down to business or you just want to put your feet up, we’ve got you covered. In fact, here’s a closer look at what’s happening in our loft space over the next few days …

MONDAY, OCTOBER 13

  • Customer journey demos: 9:00 am – noon
    Come learn more about the real customer journey from our experts – beyond common myths and misperceptions. And see how we mapped your own personal journey to #DF, complete with lots of cool insights.
  • 1:1 meetings: Noon – 3:30 pm   (Sign up online.)
  • Social: 4:00 – 6:00 pm

TUESDAY, OCTOBER 14

  • 1:1 meetings: 9:00 am – 10:30 am   (Sign up online.)
  • Healthcare demos: 10:30 am – 1:00 pm
    Looking for ways to transform patient engagement? Discover how to reduce time and expenses, engage new and existing patients and improve outcomes – all while seamlessly integrating your systems with the newest mobile and wearable tech.
  • Social: 4:00 – 6:00 pm

WEDNESDAY, OCTOBER 15

  • 1:1 meetings: 9:00 am – 1:30 pm   (Sign up online.)
  • Manufacturing demos: 1:30 pm – 3:30 pm
    Got indirect sales channels? Get direct results. Connect with your customers using industry-specific journeys, segment-specific messaging, marketing automation, partner communities, integrated campaign planning and outcome-driven insights – all built on the latest marketing technologies, web analytics, tag management and CRM.
  • Social: 4:00 – 6:00 pm

Oh, and not to mention we’ll be wrapping up Thursday with a free Bloody Mary bar from 9:00 am – 11:00 am. It’s the perfect way to wrap up Dreamforce 2014 before heading back to the airport.

So stop by and say hello. We’d love to get to know you!

Posted in Technology | Tagged , , , , , , , , , | Leave a comment

#DF14 BASECAMP: WHAT YOU CAN EXPECT (PART 1)

If you’ve been to Dreamforce before, trust me – you know the feeling. The never-ending lines for coffee. A bazillion people waiting to get into keynotes. And an overwhelming amount of information coming at you from every angle.

The good news: this year Sundog has you covered at our Basecamp, where you can put your feet up, relax and recharge with coffee, cocktails and more.

Sounds good, right? Best of all, it’s so easy to get there. It is only one block from Moscone South. Just walk down Howard Street past Moscone West, and turn left onto 5th Street. Our loft will be on the left, and there will be someone to greet you at the door. If you’re wondering if you’re going in the right direction, just look for the Sundog collars on the sidewalk.

Map

 

Now let’s talk about what you can expect once you find us! It’s a cool, casual loft featuring comfy couches, gorgeous windows, meeting spaces and more. (Oh, and I mentioned the bar will be stocked, right? Right.)

High Loft

 

Main Loft

 

Demo Area

 

So now you know how to find us! In Part 2, Jen will give you a rundown of everything we’ll have going on during Dreamforce. We hope to see you there!

Posted in Technology | Tagged , , , | Leave a comment

KEEPING UP WITH THE TRENDS AT DREAMFORCE

Whether you are attending Dreamforce or not, social media allows us to connect with others at the event. Watch keynotes, product announcements and more from your computer or connect with those around you.  I’ll share you some of the top ways you can stay connected with Dreamforce this year. I’ll also give you an inside look at how we plan to manage all of the social conversations and engage as a brand.

Top Seven Ways to Follow and Engage

1. Follow hashtags to keep up with the latest information in real time. #DF14, #DFWalkABlock, and any specific hashtags for the breakout sessions
2. On Twitter, you will find Dreamforce providing updates of the event: @dreamforce
3. On Instagram you will find photos from the conference: @dreamforce
4. If you like to engage on Facebook, follow the page for conference updates, photos and big announcements.
5. YouTube will be your home base for conference videos post production.
6. Read session and keynote recaps on the Dreamforce Blog.
7. As always head to the Dreamforce website to learn more about the conference.

This year, I am happy to announce Sundog will be hosting its very own Social Media Command Center at our Basecamp. The Sundog Social Media Command Center will be home base for all things social media, monitoring and engaging throughout the conference. We’ll have an onsite community manager and social team creating content for our social platforms while monitoring conference interaction and engagement. The key focus on the command center is to showcase how we leverage the Exact Target Marketing Cloud to connect, build relationships and streamline our digital marketing efforts. We use tools like Social Studio, Radian6, Buddy Media and Social.com.

Here is an overview of Salesforce and Exact Target Command Center last year at their connections conference.

To learn more about where the social media command center is located, follow this link.

We are looking forward to the conference and hope to see you online!

 

Posted in Technology | Tagged | Leave a comment

ANOTHER DREAMFORCE GIVEAWAY?!

Yes, today I am all about the Dreamforce giveaways.  This post is no exception!  Have you been wondering about what the Streaming API is?  How about how to use the Streaming API?  Maybe you know what it is and how to use it but have been curious on how to implement realtime tracking in Visualforce pages via the Streaming API?  If you answered yes to either of these questions, look no further!!

 

realtime-tracking

 

By now you have probably guessed that I am talking about my session I will be presenting on at Dreamforce.  Here is the session teaser:

Realtime Tracking with the Streaming API
A great feature of the Salesforce1 Platform is the Streaming API. This API opens up
numerous possibilities for innovative user interaction and data notifications. Join us as we outline a few of the key areas for consideration and demonstrate getting you off the ground and running with the Streaming API, with a bonus of Google Maps integration via the Salesforce geolocation fields.

If you would like to see the session, I will be presenting on Wednesday the 8th at 5:15 PM at Moscone Center West, room 2011.  The giveaway of this post is the slides and code for the presentation and demo just in case you wanted to do some research before hand or can’t make it to the presentation.

Slides

Demo Code

Hopefully I’ll see you there!!

Posted in Technology | Tagged , , , , , , | Leave a comment

THE CULT OF A BRAND, AND WHY COMMON SENSE MIGHT NOT MATTER

Since Apple released the iPhone 6 and 6 Plus, there has been a lot of commentary from other phone manufacturers that Apple is simply copying their larger phones, their capabilities, and, essentially, their technology.

In many ways they are right. Apple is late to the game when it comes to making a bigger phone. They also don’t always have the most advanced technologies, and other companies may very well have cooler features and better ideas before Apple does.

But at the end of the day, none of it seems to matter. It doesn’t stop people from lining up to buy the newest gadget. It doesn’t stop people from worshiping Apple’s designs (or their founders). It doesn’t stop the masses of fan boys and fan girls who will buy products just because they are Apple.

What does that tell us? Sometimes, it doesn’t matter if you are always the best. Of course, that’s not to say that Apple doesn’t have good products. They certainly do. They release some of the most innovative products on the market. But, at the end of the day, another phone (or tablet or laptop) could get the job done as well, potentially in a better way, and probably for less money. Common sense should tell consumers that maybe Apple isn’t always the best choice. But because other companies haven’t built up the emotional feeling that Apple has, because Apple has created nothing short of a cult around their brand, other companies just come up lacking.

Now, what action should you take based on that? Be innovative and offer real quality, but don’t discount how important it is for people to feel something about your brand. Your brand should mean something deeper to people that just a “thing” they can buy, it has to be a thing they have reason to love.

Posted in Technology | Tagged , | Leave a comment

COOL TECH AT THE SUNDOG LOFT

Dreamforce is less than two weeks away.  Here at Sundog we are preparing by putting the final touches on some awesome tech.  We are very excited to be showcasing a number of different things from wearables to connected devices and how these devices can help provide a complete view of your customer when integrated with our various products.

Another great piece of tech that I am especially excited for are iBeacons.  Essentially little Bluetooth transmitters that open up a number of possibilities for customer engagement and interaction.  I have been putting together some cool demos with these so keep your eyes open!

 

Estimote

 

I am very excited about the possibilities of these little devices.  These devices also tie in nicely with the new Journey Building in Salesforce.  Not only are we going to be able to provide our customers with a great experience, we will be able to do so faster than previously possible.

So if you are going to Dreamforce this year, check out the Sundog loft.  For more information and also how you can receive your free Fitbit, please visit our Dreamforce page.  I look forward to seeing you there!

 

Posted in Technology | Tagged , , , , , | Leave a comment

THE CRUTCHFIELD APPROACH TO EFFECTIVE CONTENT

As a consumer and as a content strategist, I’ve always looked to Crutchfield as an example of quality content.

Their product listings, like this Denon home theater receiver, don’t seem all that different at first glance. But when you dig deeper, you quickly notice the details that stand out: Bylined takes on the product. Detailed reviews. Extensive educational content including buying guides, setup guides, glossaries and FAQs.

The content is obviously created with audience-focused thinking, it’s carefully crafted, and it really shapes the brand.

The content quality doesn’t end with the product listings. Over in our story, you won’t find the usual blah-blah About Us section, or stale leadership profiles:

Sales our first year were terrible, and Bill didn’t know exactly what the problem was. So he mailed a questionnaire to several hundred customers, asking what was wrong with the catalog and the business. They replied that they didn’t know much about car stereos and were intimidated by the thought of installing one. 

Bill decided to fill the Crutchfield catalog with information, so readers would be comfortable with car stereo. Emphasizing complete information and exceptional customer service were what it took to get this company off and running, and these values continue to define our company culture today.

It’s an effective storytelling approach combined with plain language and refreshing corporate honesty. The headlines and subheads also stand out:

40 years of helping you choose and use great gear
How Bill learned to listen to you

Rather than focusing on their growth and accomplishments, Crutchfield focuses on how customers shaped the Crutchfield story. It’s a small-but-significant example that demonstrates how all of your content – even your company story – can benefit from a stronger “you” focus.

Posted in Technology | Tagged , | Leave a comment

NOTIFICATIONS WITH THE SALESFORCE IOS SDK IN IOS 8

Anytime there is an OS update for mobile devices, no matter the platform, I always like to pull up apps I have written before or are currently working on to check to see if there are any hiccups.  iOS 8 was no different.  I noticed that my notifications were not working with one of my apps that is built off of the Salesforce iOS SDK.

It turns out the way that iOS 8 handles notifications is a bit different than previous versions.  iOS 8 uses UIUserNotificationType instead of UIRemoteNotificationType which has to do with the way the permissions are setup.  When I did some looking I found out that the code to handle this was not yet incorporated into the Salesforce SDK.  Easy enough to fix so I added the code needed and did a pull request.  The changes are now merged into the SDK and should be compiled into the dependencies with the next release.

If you need this to work sooner than that, you can go get the code at Github.  The biggest change was in this method:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- (void)registerForRemoteNotifications
{
#if TARGET_IPHONE_SIMULATOR // remote notifications are not supported in the simulator
    [selflog:SFLogLevelInfo msg:@"Skipping push notification registration with Apple because push isn't supported on the simulator"];
#else
    // register with Apple for remote notifications
    [selflog:SFLogLevelInfo msg:@"Registering with Apple for remote push notifications"];
    #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
        if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
            [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:kUserNotificationTypes categories:nil]];
            [[UIApplication sharedApplication] registerForRemoteNotifications];
        }else {
            [[UIApplication sharedApplication] registerForRemoteNotificationTypes:kRemoteNotificationTypes];
        }
    #else
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:kRemoteNotificationTypes];
    #endif
    
#endif
}

And if you need the fix before the code is compiled into the dependencies, you can simply create a new class and call it something like MyPushNotificationManager.  Grab the code for SFPushNotificationManager.h and .m from Github and paste it in your newly created files changing the class names to match the new one you created.  After this, it is just a matter of referencing MyPushNotificationManager anywhere where you would referenceSFPushNotificationManager.

This is what I am using and it works like a charm.  Let me know if you have any troubles.  Also, this is just a temporary fix till the binaries are updated.  Happy coding!!

Posted in Technology | Tagged , , , , , | Leave a comment

CONNECTING TO THE GOOGLE GEOLOCATION API WITH SALESFORCE

Recently I wrote a blog about how to use the MapQuest API to get the latitude and longitude for a zip code.  Another company that provides this same type of service is Google.  Google provides a Geocoding API that provides a lot of functionality.  The limits on the free version of the API are 1) 2500 requests per 24 hour period 2) 10 requests per second and 3) The results must be shown on a Google Map.  When you buy a license your limits go up to 100,000 requests a day.

So in this blog post I want to show you how to make a simple API call for the latitude and longitude of a zip code and then how to show those coordinates on a Google map.

In order to call the Google APIs you have to setup your Google account and then go into console to setup the services that you want to use.  To enable the Geocoding API you would log into your account and then go to this link: https://console.developers.google.com/project?authuser=0.  Once you have setup your Geocoding API you will be ready to get your API Keyfrom the console.  When an API Key is used then the requests get counted against that key.  If no key is used then the IP address of the server is used and since there are many users on Salesforce, the limits against the Salesforce servers would run out pretty fast.

Here is the basic code for calling the Google Geocoding API.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public void PopulateLatituteLongitude(){
        string apiKey ='ThisIsMyAPIKey';  //This is the key for server applications.  Put this in a custom setting
                string zipValue ='58103';
        url +='components=postal_code:' + zipValue;
        
        url +='&key=' + apiKey;
        Http h = new Http();
        HttpRequest req = new HttpRequest();
        req.setHeader('Content-type', 'application/x-www-form-urlencoded');
        req.setHeader('Content-length', '0');  //I am not sure if this is required or not
        req.setEndpoint(url);
        req.setMethod('POST');
                String responseBody ='';
                HttpResponse res = h.send(req);
        responseBody = res.getBody();
        
                /*Response body will include this…
            <geometry>
               <location>
                <lat>46.8647086</lat>
                <lng>-96.8262901</lng>
               </location>
                         </geometry>
               */
                string geometryString ='';
        string locationString ='';
        geometryString = SearchController.getValueFromXMLString(responseBody,'geometry');
        locationString = SearchController.getValueFromXMLString(geometryString,'location');
        latitudeValue = SearchController.getValueFromXMLString(locationString,'lat');
        longitudeValue = SearchController.getValueFromXMLString(locationString,'lng');
                 
    }
private staticString getValueFromXMLString(String xmlString,String keyField) {
        String valueFound ='';
        if(xmlString.contains('<' + keyField + '>') && xmlString.contains('<!--' + keyField + '-->')){
            try{
                valueFound = xmlString.substring(xmlString.indexOf('<' + keyField + '>') + keyField.length() + 2, xmlString.indexOf('<!--' + keyField + '-->')); 
            }catch (exception e){
                system.debug('Error in getValueFromXMLString.  Details: ' + e.getMessage() + ' keyfield: ' + keyfield);
            }           
        }
        return valueFound;
    }

Here are some details on the code above…
1) Notice the ‘components=postal code:’ piece.  There are many different types of data that can be passed to the components parameter.  Here we are passing just a zip code, but a full address can be passed also.
2) The API Key is simply sent as a query string parameter as &key=
3) Once the response comes back from the POST call some XML manipulation must be done.  Use the getValueFromXMLString method to pull out the ‘geometry’ section.  Then within that section the specific ‘location’ section can be pulled out.  Then finally within that ‘location’ section the ‘lat’ and ‘lng’ sections can be pulled out to get the final latitude and longitude values.

Now to show the latitude and longitude on a Google Map the following code can be added to the Visualforce page.
1) Here is the table that holds a DIV where the map will go….

1
2
3
4
5
6
7
8
9
<table width="100%">
  <tbody>
   <tr>
     <td width="100%">
        <div id="map_canvas"></div>
     </td>
   </tr>
  </tbody>
</table>    

2) Then this goes in the

section at the top of the page…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<head>
    <style
Posted in Technology | Tagged , , , | Comments Off

CONNECTING TO THE MAPQUEST API

Salesforce introduced a new GeoLocation field within the past few releases that allows you to store a latitude and longitude value in the same field.  The first trick to using these fields is how to reference them.  Normally when you reference a custom field you append the ‘__c’ after it.  But with this new GeoLocation you append either ‘__latitude__s’ or ‘__longitude__s’ after it.  That is easy enough to deal with.

What really makes this new field powerful though is how it can be used in SOSL and SOQL queries.  Here is how the syntax looks…

1
DISTANCE(myGeoLocationField__c, GEOLOCATION(37.775,-122.418),"mi") < 10

The ‘myGeoLocationField__c’ in the above syntax is the GeoLocation field on your custom or standard object.  The latitude and longitude values are in the GEOLOCATION method.  The “mi” value shows that miles will be used in the computation.  You can also use “km” in place of “mi” if that is needed.  But the magic in this is that you can simply place your distance after the < or > signs.  All of that computation then happens for you in the where clause of the SOQL or SOSL statement.

That is all great!  But how do we get the GeoLocation field updated?  I have worked with aStrikeIron tool that can populate these fields in batch.  I have also worked with the Google API, which provides a GeoLocation web service, and I hope to write a blog post about that service soon.

But in this blog post I want to write about the basics of calling the MapQuest API from Apex to get a GeoLocation back.

Here is some code to make that call…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
endpoint +='key=' + appKey;
//endpoint +='&callback=renderOptions'; //This will wrap the JSON if it is desired
endpoint +='&inFormat=kvp';
endpoint +='&outFormat=json';
endpoint +='&location=58103';
Http h = new Http();
        
// Instantiate a new HTTP request, specify the method (GET) as well as the endpoint and body
HttpRequest req = new HttpRequest();
req.setEndpoint(url);
req.setMethod('POST');
req.setBody(soapRequest);
            
// Send the request, and return a response
HttpResponse res = h.send(req);
return res.getBody();

The MapQuest API simply needs to have an App Key included as a query string parameter.  Then notice in the location parameter that I simply passed a zip code.  It is pretty cool that I just pass a zip code and then I can get back a latitude and longitude value.  Latitude and longitude values can of course vary widely within a zip code, but sometimes that is all you have.  You of course can pass a full address in to get a much more exact latitude and longitude value.

Once you get the ‘Body’ back from the API response then you can parse it and pull out the latitude and longitude that you need.

Salesforce makes it easy to do these integrations.  Please let us know if Sundog can help you with your next integration.

 

Posted in Technology | Tagged , , , | Leave a comment