Monday, October 8, 2018

Apple Denies "Spy Chip" Story

You may have already been following this, but Apple has now denied the Bloomberg spy chip story a couple of times. Here's my original post, Has Your Electronic Hardware Been Hacked?, and the original Bloomberg post, The Big Hack: How China Used a Tiny Chip to Infiltrate U.S. Companies. Techcrunch has a prior story with links to more of the denials.

While I'm in no position to know whether the story is valid or not, it can be an interesting exercise thinking about why the various respective parties might have an interest in denying the story. Similarly, it's probably worth spending a bit of time thinking about why, if it isn't true, the story was published and what might be behind it.

All of that being said, thematically, concerns about technology back doors being placed into electronic devices -- and the implications of these vectors -- will continue to be an ongoing theme.

Caveat Emptor.

------- Update:  ----------

You may find this to be pushing into the "conspiracy" end of the spectrum, but here's an interesting look into some of the nuances of the language of rebuttals from the Emptywheel blog. There's also a good breakout of the story into a timeline with links to some of the stories at the time they emerged (I found the Apple, SuperMicro firmware thread to be particularly interesting.

Rattled: China’s Hardware Hack 

There are more posts breaking down the language in some of the denials, but this one has the timeline.

Saturday, October 6, 2018

Why I switched from a new iPhone Xs back to an iPhone SE

The one thing that I was hoping for in the Apple iPhone announcement back in early September was an updated iPhone SE. While I'd seen enough on the Apple rumors sites to be concerned that, if the rumored updates to the iPhone SE were true, I'd probably be unhappy with that device. As it was, the rumors sites were talking about a glass-backed iPhone SE with no audio port and no home button -- but I tried to remain optimistic. I'd even considered, in the days prior to the iPhone Xs announcement, purchasing a 128GB iPhone SE just so that I'd have a new one without 2 years of wear and tear on it.

Don't get me wrong, my iPhone SE is still a great phone that still only shows minor scrapes and scratches despite two years of life without a case.

At the same time, you couldn't help but notice the better image quality from her iPhone 8. It didn't help that there were three little spots that I kept seeing in my photos, imperfections that I came to realize was probably the result of damage to the camera lens.

With the iPhone Xs announcement, I'd hoped that Apple would, at least, continue to sell the iPhone SE - dated as it is/was. Seeing it EOLed was probably the worst aspect of that announcement.

So, grudgingly, when orders opened up for the new iPhone Xs back in September, I ordered one. It sounds like a simple decision, a simple action, but it was something more. At the time, I rationalized my decision a couple of ways.

First, I told myself that I'm adept enough with electronics that I could overcome the failures of the design in the iPhone Xs. After all, I thought, how bad could it be? I was sure that, while it might be mildly frustrating at times, I would be able to use the device and would benefit from the new camera. What was surprising was how wrong that prediction turned out to be.

From a size standpoint, I thought the iPhone Xs would end up being about the same size as the iPhone 8. Having used an iPhone 6s Plus for a year, I knew that that phone was just way too big, but I was under the impression that the iPhone X brought something close to a "Plus" size screen into the smaller non-plus sized body. While I knew that it would be larger, I wasn't prepared for how large the iPhone Xs turned out to be.

This week, after almost three weeks of using the iPhone Xs, I switched my phone back to my iPhone SE.

As I used the iPhone Xs, a number of issues because clear. First, while the whole notion of Face ID seemed like an idiotic authentication interface to me, in practice, it proved worse. While I'd initially been impressed with it's ability to recognize me and unlock the device -- almost like it authenticated without effort -- as I used it day-in-and-day-out, I began to notice that it seemed like it failed more often than it succeeded. Running the out-of-the-box software configuration, Face ID fails when you're wearing sunglasses. In other words, when you're using the device outside, you have to stop what you're doing, lift up your sunglasses and force the device to authenticate. It's worth noting that the fingerprint sensor on my iPhone SE worked equally well inside and outside, without regard to whether you were wearing sunglasses.

Face ID also often failed to work if I tried to access my iPhone while it was sitting on my desk in front of me, at a table in a restaurant or a number of other locations that I tried to casually access my iPhone from.

So, imagine yourself at lunch with a colleague and you hear your phone chime indicating that you'd received a text. With iOS 12, the default information displayed on the lock screen is that your received a message from a specified contact. In order to view that on the iPhone Xs, you have to pick up your phone and look at it, something that can be disruptive and be perceived as rude. In contrast, with the fingerprint ID, you can simply touch your iPhone, look down, and you can see whether the text is important or not.

I can't tell you how many times I repeatedly went through scenarios similar to this, particularly since, for many text messages, all you really need to do is determine whether the message is important or not. And worse, because the iPhone Xs locks quickly, you can find yourself having to repeat the whole exercise multiple times in during a single window of receiving multiple texts. It's not just bad, it's terrible.

Additionally, I thought that the lack of a headphone jack might simply be an inconvenience that I would get used to. In practice, I found that this also wasn't true. I should note that, prior to my iPhone Xs, I used my iPhone for all of my telephone communications. It's also worth noting that, while I have Apple Airpods and I use them as a Bluetooth headset when driving or some other activities, when I need to make calls where I want to ensure the audio quality of the call, I use the Apple earbuds that came with the phone. Often, sitting at my desk, I would have my iPhone SE plugged in and charging while using the earbuds for a call.

With the iPhone Xs, initially I brought the lightning based earbuds along, but I soon found myself trying to decide whether to charge the iPhone or to plug in the headset and make a call. Over nearly three weeks of use, I found myself hesitant to make phone calls. Eventually, I put my Lighting earbuds into my backpack and only took them out once or twice. Essentially, whether it was just psychological or practical, I realized that my iPhone Xs was barely functioning as a phone.

Another aspect that anticipated how much of a problem it would be was the lack of a home button. I wish I could tell you how many times I used a "Sweep Up" gesture on the device with no results. It doesn't just fail once or twice, I would estimate the failure rate at greater than 20%. You might argue that the case is a contributing factor, but I don't think that's actually the case. This failure to function has a significant impact on how well the device functions day to day. For example, if you have a problematic app and you want to "double-tap" the home button in order to bring up the multi-task screen and kill the app, you may find yourself trying for 20-30 seconds before getting the interface to change. That's just one example. It happened more frequently than I would have imagined, ane particularly frustrating if you're trying to do something like kill an app.

----

So, after a particularly frustrating round of receiving texts on my iPhone Xs and wrestling with the device functionality just to access them, I decided that I was done with it -- that I was going to switch back to my iPhone SE. I figured that I could simply carry the iPhone Xs around, using it for it's camera functionality and, since it was sometimes convenient to have the larger display, use it as a wifi-based device when I needed the larger display. If I need network access, I could simply use my iPhone SE to create a hotspot for the Xs.

I wish I could share with you the immense sense of joy that I felt once I switched back. Holding the smaller device in my hand brought me an unexpected sense of elation.

At this point, I've been back on my iPhone SE for a couple of days and I'm much happier. The iPhone Xs is sort of like having a pocket-sized iPad. At this point, give me old, obsolete Apple over the new Apple. Whether you want to blame it on Tim Cook, elements in the org further down, or something else, the company is just not doing design and functionality the way that they used to.

Thursday, October 4, 2018

Has Your Electronic Hardware Been Hacked?

This is something that you should read. The Big Hack: How China Used a Tiny Chip to Infiltrate U.S. Companies is a story from Bloomberg Businessweek about SuperMicro server motherboards being hacked by the Chinese military, adding a hardware device to the board enabling access to the server. The hardware device was designed to look like an innocuous component, and the compromised servers may have gone to companies like Apple and Amazon, into their AWS cloud.

If you're looking for more analysis, here's a Techcrunch post on the article.

Needless to say, these are worth your time to read.

Monday, September 24, 2018

I got an iPhone Xs. I hate it.

So I've written a number of posts on Twitter talking about the recent Apple product announcements and how the company has quit designing phones that match my needs. I was particularly disappointed with the recent announcements when they EOLed the iPhone SE. For the past two years, I've been using a 64GB iPhone SE, the best iPhone I could get when the iPhone 7 came out and Apple abandoned the headphone jack.

For the past two years, I've used the iPhone SE. While the smaller display can be frustrating at times, I think that most of my frustration with the display was that Apple has designed the software for much larger screens. Even while they claim the UI is responsive and can adapt to screen size changes, it turned out that changing that setting in iOS 11 and making the type and interface larger caused significant performance issues on iPhone SE. Apple Support helped me diagnose that back in March of this year.

After two years using my iPhone SE, it's still a great phone, but it's been wrestling with a few small issues. What we noticed the most was the significant difference in the camera performance between the iPhone SE and my wife's iPhone 8. In addition to the photos on the iPhone SE not having anywhere near the clarity of those shot on the iPhone 8, my iPhone SE has picked up a few blemishes on the camera lens that shows up as spots on photos. Normally, I might not care -- at least, I wouldn't care enough to downgrade and loose my headphone jack -- but as noted in a previous post, we have a two-year old son that we like to take lots of picture of. When you have to wait to get someone else's phone to take a picture (or it goes to sleep and you need to re-authenticate), it sucks. This is what drove me into an iPhone Xs purchase.

My new iPhone Xs arrived on Friday, and I've used it over the weekend. As noted in the title, I hate it.

Before I tell you about all of the ways that I hate it, in keeping with one of my college writing classes, I'll start by saying something nice about it. Something I like. The camera. It's great. While it's possible to manipulate your images in Photoshop to match the portrait mode effects, the iPhone Xs captures these kinds images simply and easily. It really works well. The shots are beautiful.

Other things that I've found to be nice about the iPhone Xs -- Face ID works better than I expected. Often, if the iPhone is looking at you, Face ID will unlock the device. That being said, if I'm wearing sunglasses (like when I'm using the iPhone outside at the farmer's market), it won't work unless I lift up my sunglasses. It also doesn't like it when the device is laying on the table, looking up at me. This seems even more problematic when I'm wearing glasses. In short, for all of the times when it knows me, there are many annoying times when it doesn't. In general, my fingerprint worked better (it only failed when my hands were wet or when the sensor got dirty).

Now, let's get to the things about the iPhone Xs that suck.

It's really big. It's been a while since I had the iPhone 6s Plus, but the iPhone Xs feels big like that. And this is the smaller device. Imagine how big the Max must feel. In short, the iPhone Xs has the same problem that I had with the iPhone 6s Plus -- it's too damned big.

For comparison, here are the two versions when I hold them in my hand.
Holding the iPhone SE - front facing
Holding the iPhone Xs - front facing

Holding the iPhone SE - side view
Holding the iPhone Xs - side view

While it may not seem like much of a difference from the images, you can kind of see how much more open my hand is holding the iPhone XS. In real world interaction, this translates into less grip on the phone and, from my previous experience, a greater likelihood of drops. It also makes it extremely difficult to use the device with one hand. In contrast, with my SE, I can spin the device around in my hand without really loosing my grip on it.

You know what's even better than an iPhone that's so big, it's difficult to hold onto? Making the iPhone enclosure almost entirely of glass. Take a look at a couple photos of my iPhone SE.






I've been using this device for two years without a case. As you can see, it has sustained a few drops. What I've highlighted with these two photos are two corners of the iPhone where you can see that the phone took a pretty significant impact. In the top corner photo, it hit the asphalt so hard that it took a big cut out of the metal. Rather than leaving a sharp edge, I used a nail file to smooth the metal, something that required me to sand it down below the surface metal to the red material below.

Would an iPhone XS survive these kinds of impacts? In a case, perhaps, but a bare iPhone Xs? I'd bet not.

I don't think that I'm particularly hard on my devices. I would consider this normal wear and tear. But it does give you a sense of the design priorities driving Apple's iPhones these days.

So, let's move on to more things that suck.

All things charging suck. Pick a topic - wireless charging? I don't have it, haven't imagined I'd need it, nor would I have ever traded my metal enclosure for it -- or the headaches associated with another glass-backed iPhone. There was a reason why the iPhone 5 was a huge improvement over the iPhone 4.

But beyond the glass, why should I have to go out and spend another $50+ for a wireless charging mat when the only thing I can charge with it is this stupid iPhone - particularly when I can just as easily guarantee that the device is being charged when I plug it in.

Then there's the BS "fast charging" feature. Note that this only works IF, you spend another $60 with Apple to buy their more powerful charging brick and another $30 for their USB-C to Lightning cable, neither of which are useful to me or anything other than fast charging the stupid phone.

But don't get me wrong, after I experienced half a day of battery drain on Saturday, I considered fast charging. It's probably worth some analysis and comparison, but if I didn't know any better, I'd almost think that Apple slowed the regular charging speed on the iPhone Xs -- even using the iPad charger, it charges painfully slow and the battery usage seems high.

What else sucks about the iPhone Xs?

No home button really sucks. Yeah, they've figured out a way to make the interface run without a home button, but it doesn't work well. Essentially, sliding up from the bottom edge of the screen is supposed to equal a home button. Sometimes it works, sometimes it doesn't. There are times I've had to make 3 or 4 swipes up just to get the interface to do what it's suppose to.

Perhaps the bump created by the bottom edge of the case makes your finger skip, but would you even consider carrying this expensive piece of glass without a case?

The other thing that comes into play with the iPhone Xs is, since there isn't a home button, it wants to wake up whenever you touch the phone or it moves. This leads to lots of false wake-ups. At the same time, whenever it wakes up, it also starts to look for your face -- I suspect that this may contribute to why it seems like the battery drains as fast as it does. Maybe it's just me (or maybe it's the default auto-lock setting on this device), but it also seems like it goes to sleep faster than it did previously. Maybe that's a feature to highlight how well their Face ID works.

It goes without saying that the lack of a headphone jack also sucks. First, there was the "I need to carry two pairs of headphones with me to work today, one for this stupid iPhone Xs, and one for everything else." Then, when I got to work, I plugged my iPhone in to recharge from listening to streaming audio on the way in during the commute. I briefly thought about listening while I recharged the iPhone, something I could have done in the past, but quickly remember that I can't do that on this stupid iPhone.

Bottom line -- yeah, it sucks. It sucks, but the camera is great.

At this point, I've considered switching back to my iPhone SE as my primary phone, disabling the cellular on the iPhone Xs and just using it as a camera. It's a difficult decision, but it seems like the kind of decision that Apple is forcing us to make these days. In the same way, caught between choosing a new Macbook Pro or a refurbished pre-USB-C version late last year, we opted to buy Apple products that were, essentially, three years old. It really says something about the state of Apple, doesn't it.

Monday, August 6, 2018

Why Don't Hotel Loyalty Programs Offer Family Accounts?

My wife and I both travel for business. With travel policies being what they are, different companies often have different preferences in terms of airlines and hotels. As a result, she frequently flies American Airlines while I flew United for many years (I stopped flying United after being repeatedly stuck in their crappy base level of service despite having status). As you can imagine, this often raises question marks about what airline to fly on and what hotel to stay at when we travel as a family.

To a certain extent, it's easy to correlate travel loyalty programs to individuals because the airline's business is measured by seats. One butt equals one seat equals one account. Over many years of travel, I never really questioned this idea. At the same time when it comes to travel loyalty programs, over the years, I've primarily been focused on airlines. Hotels and hotel loyalty programs have always been more of an afterthought. One key reason for this is that, while it's not too difficult to use a primary airline for your travel (assuming that they go to most of the locations that you go), your hotel options aren't going to be as clear-cut. For example, if you attend a lot of business conferences, you'll probably find them hosted at different hotel chains. If you travel somewhere like Las Vegas for an event and you stay in a casino hotel, it probably won't be in any of your hotel loyalty programs. And if you're traveling internationally or, at the other end of the spectrum, to rural locations, your hotel options may be limited. So, for me, hotel loyalty programs were always more about hoping the hotel would treat you a little better than a generic guest.

Some Airlines Offer Family Accounts
Last year, I happened to find myself booking a flight on British Airways (you might remember some of my British Airways pricing posts). At that time, I signed up for the British Airways loyalty program. In reading through their account info, I discovered that they let you sign up your entire family and accumulate miles in a pooled account. It turns out that several international airlines offer these kinds of loyalty programs. I also since learned that JetBlue has a family loyalty program, an unusual offering among domestic carriers and yet another reason to like them as an airline.

Recently, while discussing some aspects of our business travel, my wife and I began wondering if the hotels we often stay at offered family loyalty programs.

Here's the thing, when we travel together, we each can benefit from our individual airline mileage accounts. However, when we get to the hotel, only one of us can benefit. Sharing a room means that one of us loses. This year, for example, we've spent six days in Marriott properties, but my wife gets no credit for that time. In that same way, when she travels, there is no incentive for her to book a Marriott property since she won't have been credited for any of the stays that we've had as a family. In fact, you could argue that it's better for her to book stays in another hotel chain such that, when we travel as a family, we have multiple options for status-upgraded stays.

Perhaps the hotel programs look at things from the standpoint of trying to "avoid" giving out benefits to "people who haven't earned it". Perhaps they're looking at it from the perspective of "spouses don't travel for business very much" or "what's the point of incentivizing the wife we already have the business of the husband?" At the same time, if I'm a traveler with hotel chain loyalty status, what's my perception when my spouse stays at your hotel chain and receives a "lesser" experience?

In short, this lack of offering a family loyalty account at the hotel chains is a real customer relations failure on their part. This really seems like something designed in the framework of "the husband travels and works, the wife stays at home." When you break it down in that context, it seems pretty bad.

Monday, July 30, 2018

The Intersection Between Branding, Internal Marketing and Employee Communications

Recently, I learned about a company that had hired an outside consulting business to work with it's management and employees in an effort to improve communications and the inter-working relationships in the organization. These outside consultant things always remind me of that part of the movie Office Space where they bring in "the Bobs" and the employees are asked about what they do.

For many that go through this, it's hard to escape an unspoken level of silliness and absurdity -- it's like the company trying to apply a topical medicine (like Neosporin) to fix a deeper, more involved sickness, like depression or pneumonia.

But there's another part of this equation that gets hidden, swept over by the decorum of not being to vocal or outspoken in the face of management when they hold the purse strings of your livelihood (or the other aspects of the culture that drove the idea of the consultant group in the first place). In essence, this is brand alignment problem.

Brand Alignment in the Context of Employees
You can find a lot of definitions and explanations of brand alignment with a quick Google search. In essence though, brand alignment is all about being what you say you are. For example, if your message is that your products are high quality goods, but in reality, your products are poorly manufactured and often break, you have a brand alignment problem. It's an inconsistency between message and factual reality.

The most fundamental aspect of this brand alignment equation that you have to understand is, there is no escaping reality, no escaping the truth that lives outside of the message. You can scream and shout, pay for massive advertising, social, viral, guerilla, -- choose your marketing buzzword, it doesn't matter -- if your products are poor quality, the reality of your brand identity will not be "quality products". In short, a key component of brand alignment is about what you do, not what you say.

Another important aspect of brand alignment is the idea that employees are essential to expressing the company's brand, that in their interaction with customers and the rest of the world, employees are the ambassadors and evangelists for your brand. In that respect, you'll find a number of brand alignment posts that talk about how important it is for companies to provide brand training to their employees.

But here's the thing about training. You can teach employees your company's brand message, but if the relationship with the business isn't aligned to that message, the words are hollow. To quote three questions from this Ignyte Brands post on brand alignment:
Do my employees feel appreciated? Are they invested in the success of the brand? And, most importantly, do they feel like an integral part of the brand story?
This essential element of brand alignment may be one of the most underappreciated, misunderstood aspects of branding and brand identity. Not just that, but it probably provides some key insight into whether a business is performing at it's full potential. Consider, apathetic employees may "meet expectations" and execute their duties within the framework of the required tasks, but uninspiring environments are not going to motivate them to go above and beyond. And, if the business' relationship with employees is simply "competitive salary, competitive benefits", don't kid yourself into thinking that this is operating as an effective motivation engine for brand enthusiasm.

The underlying framework of "competitive salary, competitive benefits" is an HR organization that has basically done their version of competitive research and distilled it down to a set of features that they can match without much risk. That's not product design. If I tell you that making a "Me Too" physical product won't win you any business, most people understand that. But when you put that framework around HR, compensation, hiring and retention, suddenly you'll find a lot of people claiming that business doesn't work that way.

In some respects, you can blame HR and the people that run that department for this. Human Resources is not marketing, and they're not used to looking at things through that lens. I can't tell you how many times I've had to work with HR people and, in discussing even something as straightforward as writing descriptive promotional text about the company, found them unable to to produce something more than a copy/paste version of some other company description they found. They're unable to differentiate the company or even put together a basic framework of a story about what makes the opportunity interesting and why you'd want to work there. If your HR person can't sell your company to prospective candidates, how can you expect to have success in hiring and retention?


You've Got A Lot of Nerve To Say You Are My Friend...
Human Resources is Not Your Friend
If you search this term, not only will you find numerous articles written on various aspects of this, you'll also find horror stories of people who sought help from their HR department, only to discover that the HR group was either no help, or worse.

If human resources can't position the company, if they can't produce a compelling framework for why you'll want to work there and if, in the day-to-day work environment, they are not your friend -- how can you expect them to contribute to building a culture of evangelists in your company? Cute newsletters? Internal events? Imagine trying to sell prospective hires on the unique excitement they'll experience because your company also has a summer picnic. Or hosts a pizza lunch for everyone, occasionally. Rah rah rah!

Can you see start to see the framework of issues that are potentially eroding employee enthusiasm for a company -- the elements that are contributing that brand alignment problem?

Another tool that's sometimes referenced in marketing is the Net Promoter Score. For the HR people that might be reading this, here's a link that helps explain Net Promoter Score and how it's calculated. To summarize, rating your feelings about a company on a scale from 0-10, how does the company stack up? Within that calculation, it's important to understand that 0-6 are "detractors", 7-8 are "passives" and 9-10 are "promoters". If the best you can muster from your employees is, what might seem like an average 5 or 6, those people are actually detractors. How's that "competitive salary, competitive benefits" doing for you now?

One thing that I've often heard from HR departments here in the valley is that, "we'll we can't compete with Google. We can't have our own cafeteria, laundry, etc." But the problem is, they're looking specifically at these benefits like features you might offer -- or try to match -- instead of looking at the their constituent base and identifying what would be useful and compelling for them. This is why some of the culture and compensation documents that have come out of Netflix are so interesting.

But even with individual benefits and compensation, you've created a communication framework with your employees. For example, while I've worked with organizations that negotiate a basic package of health insurance coverage and pass some percentage of those costs onto the employee. I've also worked with companies that covered 100% of health insurance costs because, as they said, these are our employees and we want to take care of them. Which message resonates better with staff? Which is more likely to be something that people might evangelize about?

What Message does your Salary and Compensation Package Communicate?
Although salary and compensation are not typically viewed in a messaging context, compensation represents a direct message of employee value by the company to the employee. That being said, many businesses expect that, by implementing a "competitive" salary framework, they have matched a feature and taken that off the table. But what about companies with salaries on the low side? Here's a quick hint, when you're interview process delivers "final stage" candidates and you're making offers -- if some percentage of them choose not to accept, you probably have a compensation problem. Going through a series of interviews is not an uninvolved process on the part of your hiring candidate, so (put in a sales and marketing context), having people drop out of the pipeline at that point should raise a flag. What's more, it should also raise flags about the people who accept -- do they feel under-compensated, but didn't negotiate well or signed on with some sense of desperation?

All that being said, you'll find studies about compensation and salary that offer a few caveats. First, while some people are particularly focused on salary, not everyone is. Additionally, I've seen another salary study that basically said, if people are paid enough, they don't really worry about salary. Rather, the key driver for them tends to be about meaningful work. In that way, I think the key thing to take away with respect to salary is that, while there is no magic bullet for communicating positively through salary and compensation, there are many potential negative messages and wrong turns that a business can make.

Negative, under-compensation messages aren't limited to hiring though. Consider the annual performance review. If the percentage increase a company awards an employee is less than the cost of inflation, the "increase" is still conveying a negative message. Remember the story of Paul Ryan tweeting about the $1.50 per week increase the secretary at a high school got from the Republican tax plan -- enough to pay her Costco membership for the year? When he read that, he was seeing "increase", but what the secretary (and the rest of the world) was writing about was the insignificance of the amount. In Net Promoter terms, she was a detractor -- moved to the point of being vocal about her dissatisfaction.

How Do You Make Employees Promoters?
First, consider the start-up. Start-ups jobs often include company equity -- stock options. In that way, most people working for start-ups are, in essence, partial owners of the company. Often, they will accept a lower salary number with the hope that their efforts will vest in a longer term, larger pay-off. To accept that position, they must buy into the idea of the company, into the potential for it's success.

Another aspect of the start-up that may be even more significant in terms of aligning employees with the company and the brand is the framework by which corporate goals are defined. For start-ups, goals are often simple, tangible, and with a clear purpose. For example, during one business review meeting at one start-up I worked at, they told us, "right now, if everything holds steady, we have enough money to keep operating through to the end of the year." Beyond the long term goal of trying to make the company successful, this set a simple framework -- find customers, grow the business, or we're out of runway.

Contrast this with the goals defined by established businesses like, "last year our business made $200 million, this year we need to make $250 million." There's no why. For the average employee, there's no clearly defined requirement to do anything different than the previous year, no driver to act. Imagine the employee that made an extra effort to help the company hit the $200 million goal -- does $250 provide any meaningful framework for matching or exceeding the efforts that they just made?

For public companies, stock purchase programs and option awards can help provide employees a sense of ownership in the company. This can help mitigate some of the emptiness of arbitrary corporate financial goals. In it's simplest sense, owning stock in the company means that, if the company is worth more, your portfolio is worth more. You own a piece of that and your efforts are an investment in making it worth more.

In this aspect, there's a correlation between the size of the company and the ease of aligning employees with organizational messages. Smaller is easier. It's a lot easier to connect and align employees with corporate goals in smaller organizations. As organizations grow, people become more removed, more alienated, more disconnected from the influence, impact, and reward loop.

It should go without saying that simply adding start-up aspects to an established company isn't a solution. A great example of this is how many established companies these days undertake initiatives to eliminate offices or cube walls. I once worked in for a business that offered stock options and entertained questions of when they were thinking about an IPO -- this was post dot.com bust. Having gone through an IPO with an earlier company, I knew that this company would never go public, but that didn't stop their management from using the whole stock-option framework to grift employees -- they even sold options to outgoing employees. If you're running a grift on employees, you're probably going to have some brand alignment problems. That being said, the employees that didn't have enough understanding to be skeptical, they were certainly excited by the "stock options".

Ultimately, the way to meaningfully connect with employees and make them Promoters is not to simply copy-paste cultural aspects and incentives onto an environment and expect people to perform. Rather, it's something that requires design thinking, something that understands the unique challenges that your business faces and building an environment that's conducive to making business operations easier and better. It's about understanding what the business machine, your business, is trying to do and optimizing everything for that. It's also about making that machine inclusive. Rather than treating employees as cogs or dumb components, think of them as smart components with sensors and intelligence. Or better yet, think of them as people, people who, if they believe in a goal, will make an extra effort to help achieve that goal.

That makes the framework pretty simple. You need to define believable, meaningful goals, and you need to build an environment where people believe you're taking their interests into consideration.

Monday, July 23, 2018

Salesforce.com Brand Identity in Conflict over Relationship with US Customs & Border Protection

If you've seen any Salesforce company presentation over the years, you'll most certainly have seen them promote their corporate culture of philanthropy, community and equality. Not only do they frequently promote aspects of these values at Salesforce events (from their work with non-profits to their community service efforts), CEO Marc Benioff got a lot of visibility in recent years directing the company's stance on gender equality and gay rights in a fight against some repressive state laws. But now Salesforce's idealistic brand identity is coming into conflict over it's relationship with US Customs and Border Protection.

This story from Gizmodo, Salesforce Faces Boycott Threat as RAICES Rejects $250,000 Donation Over CBP Contract, has a great overview of the controversy.

This will be an interesting one to watch and see how it plays out.



Friday, June 29, 2018

Almost 2, Our Son, aka @comcast 's Littlest Data Hog

I'd like to introduce you to our son. He's almost two.

Within the walls of Comcast, he's probably also known as The Littlest Data Hog. He loves to watch YouTube and Netflix. His never-ending desire to watch videos of cars and trucks probably contributed to Comcast extorting added fees from us with their stupid data usage cap. They say you should really limit your kid's screen time. We try. Sometimes being a parent is hard.

I don't write much about our son because he doesn't really have much interest in marketing. In fact, the ads that interrupt his YouTube videos are probably one of his greatest frustrations. But one thing that we've learned is that it's hard to empathize with the people that "can't figure out how to use the iPad". Our son has been able to navigate the interface, get to YouTube and choose videos for nearly a year.

Before he was born, we imagined taking him with us frequently when we travel, particularly since bringing a child under two is free on most airlines. Because my wife and I have to travel a lot, we imagined that our son would be one of those expert traveler-kids that you sometimes see in the airport. Often, they have their own little suitcase and they seem to be very practiced at going through airport security. Once he was born, we gained a better understanding of how much care he required, how important a predictable routine can be for kids. Considering all of the things that we needed to bring just to go out to a restaurant, going on a business trip with an infant seemed like something best avoided.

This past May, we finally took our son on a trip, flying back to Florida for a conference and an opportunity for him to meet his grandfather. Overall, our son did well and we did okay. We were a little worried about how he'd deal with the different locations and environment. But, apart from an increased sense of making sure that he knew where Dad and Mom were -- and not letting us get out of sight -- he did okay. He made himself at home in each of the hotel rooms we stayed in. He found places to sit, places to hide, places he liked to play.

I'm writing this now because, over the past week or so, I've been haunted by the image of the little Honduran girl crying while the border patrol searches her mom. You know the image, it's the one that Time Magazine used on their cover, the one referenced in this article, The crying Honduran girl on the cover of Time was not separated from her mother. She's 2-years old. The look, that look of distress, is all too familiar to me. Sometimes you can see that same sad face, that same posture, on minor things -- like turning off YouTube or that the battery is all gone. But even if it's not unusual to reach that state, it's not the kid's default state and it's not the state that you want them to be in. An upset infant is an alarm for parental action.

If you don't have kids, aspects of raising kids can be difficult to imagine. Like our lofty dreams of a jet-setting baby, reality didn't quite match our theoretical imagination. And so, for those that may not understand, let me share a few things about our son at age almost two. He can't say his name. He knows Mama and Dada by our names, Mama and Dada. He says these names a lot.

He doesn't know his last name. He doesn't know his birthday. In fact, he can't really provide any identifying information about himself. This is part of why, if my wife and I go to the store with our son and one of us runs off to a different area of the store, our son frequently spends most of his time crying out for the missing parent. Without us, he feels lost.

There are immigrant children being separated from their parents. From the descriptions in the news, this includes children as young as my son, and younger. The image of that little Honduran girl serves as reminder of just how lost those kids are without their parents. When you experience a child's primal need for their parents, feel them cling to you for safety and protection in new, strange environments, you can begin to understand how truly cruel this separation is.

While politics, the news, and the state of the country are often on my mind these days, I try to avoid writing about politics here. Wading into politically sensitive topics has the potential to alienate and infuriate a segment of your audience or your customer base. These days, reactions can escalate far beyond what might have been imaginable in years past. That being said, every day, when I see my son, I can't help thinking about those families that are separated. I can't stop thinking about those little boys and girls who, probably more than anything else, just want to be with their mom or dad.

This is not who we are. Not as a country. Not as a people. Our government should not be separating families.  

I chose the above image because I thought his posture is evocative of the crying Honduran girl in the photo. But there is a difference. At this moment, our son was happy, holding a wooden airplane puzzle piece "up in the sky". He seems to remember his trip to Florida fondly.

When I think about our considerations and concerns prior to our trip, I'm reminded that traveling like this isn't something you don't do without deep consideration. And when I reflect on the challenges we faced -- and contrast that with the challenges that these immigrant families deal with on their journey to our border -- it begins to put asylum seeker into a contextual frame. This was not a trip that they chose to make because they wanted to, this was a trip that they had to make. After all of that, to be separated from your family? It's horrific.

This separation policy must stop.

Tuesday, June 26, 2018

How Dreamforce Drives a Wedge Between Our Business and Salesforce

If you follow my Twitter feed, you've probably already seen the framework of this story. In essence, I've been telling variations on the same story for a couple of years. On the one hand, we've been working to expand our adoption and use of Salesforce within our org. On the other hand, we try and register multiple people for Dreamforce in an effort to inspire people and create evangelists and power users, but the process that they use to handle registration and housing makes that impossible. In the end, the only real result is frustration with Salesforce and few, if any, of our staff going to Dreamforce.

Once again, that's the story for us this year. While attempting to work with our Salesforce account team to try and make arrangements for a group attendance this year, Dreamforce registration opened up and, before we even had a chance to confirm a discount code, our hotel options were gone.

No Hotels = No Dreamforce
Since a significant portion of the people we'd want to bring are not local, the lack of hotel options means our people won't be coming. It doesn't matter if they could still register for the conference; if there are no hotels, there's no place for them to stay.

This issue is amplified by the way that Salesforce announces the opening of Dreamforce registration. Essentially, you can sign up to receive an email alert when registration opens. For the past few years, that has been on a random day at 6:00am Pacific time, typically in close proximity to a three-day holiday weekend. In short, the timing seems to be targeted to a time when fewer people are in the office. In other words, they hope to reduce the rush by targeting a time when a percentage of people will be caught up in "you-snooze-you-lose" filter.

Did I mention their classic customer support answer, "that's a bummer man"?

Or, in case you want to raise the issue with your account team, you'll get the timeless canned response, "I don't control the San Francisco housing market. Have you considered AirBnB?" I think that this is written on some internal messaging FAQ sheet that Salesforce distributes.

Keep in mind that this year, prior to registration being announce, I was attempting to work with our Salesforce account team to try and arrange multiple people attending the conference. During that time, they told me they had no idea when Dreamforce registration would open up, but they expected it to open soon.

In the past six months, we've been considering a broader expansion of seat licenses. We've also been looking at the Salesforce Analytics package. We also hired a new executive in charge of IT, someone who you might say is a key influencer in terms of software decisions. Working with our account team, what kind of provisions were we able to make to get that person to Dreamforce. None.

Dreamforce Promotions Serve as a Constant Reminder
There's nothing worse that having something constantly rubbing an open wound. And yet, Salesforce is constantly bombarding you with reminders about Dreamforce. I just grabbed this image from the Salesforce login screen.

That's right, it's been weeks since we've already determined that there are no hotels, no way to go -- but Salesforce is still promoting this conference. I've also received emails saying, "only a few days left to save $200 on the conference." This was also weeks after I'd already determined that there weren't any hotels.

These promotions don't just piss me off, they piss me off enough to be vocal about it. Instead of tempting me to go to the conference, what this constant promotion does is remind me about how -- for all of it's promotion of "helping us to succeed" -- Salesforce doesn't appear to be very tuned in to what we, as customers, think would help us be successful.

What these promotions remind me of, is how Salesforce leaves me, standing alone, trying to gain adoption for their software. It reminds me of the hassles of trying to commute to the event, the frustration of crowds that are too large, the pointlessness of learning tips and tricks, deploying them, and seeing NO change in user behavior.

As someone who's been the Salesforce admin and used it on a daily basis, if I'm frustrated and unenthusiastic, or worse -- pissed off to the point where I'm not willing to spend the company's money to attend -- then I think you've got some problems with your user conference. What's more, without enthusiasm and evangelism, any adoption KPIs that you have are likely to suffer (assuming that anyone is actually watching). Carrying that slippery slope even further, with diminishing internal champions and constant skepticism about usage and utility, come contract renewal and the perpetual (of late) 7% price increase, I think Salesforce may be looking at a 7% increase on a significantly smaller number of seats. But, even as an admin, that's not really my problem. 

What is the Purpose of Dreamforce?
Let's put our design thinking hat on again. If, as a customer, so many aspects of Dreamforce are frustrating me, I'm sure I'm not alone. If that's the case, what is the purpose of Dreamforce?

Once upon a time, the event functioned as a user conference. Dreamforce was a helpful way for people to learn tips and tricks and explore best practices with other software users. It also provided a vehicle for the company to promote new software features. But somewhere along the way, things changed. Several years ago, it seemed like there was a shift in focus for a percentage of the crowd. I liken it the crowd that followed the Grateful Dead -- the crowd changed following the "In the Dark" album in 1987, but things really began to crest in 1994/95. Essentially, there was a portion of the crowd that came to party or hang out outside of the event and an interest in the music almost seemed secondary (at best). In many ways, Dreamforce seems like it's taken a similar path. A couple of years ago, one of the young women in the office said her friends had contacted her, told her that a group of them should head up to San Francisco for Dreamforce -- lot's of parties. FWIW, she didn't even use the software.

The parties. Is this the purpose of Dreamforce? Last year, I stayed in a hotel in the city, but I didn't go to a single party. I've been to these events in the past and often I try to go just as a research point for my own marketing programs. But battling crowds for bad free food and some drinks on somebody else's dime -- not worth it. Even the event a couple of years ago where they gave us a 10 year customer award, meh.

The simplest way that I can summarize is -- most of these parties have no utility. There are few networking opportunities, few times when you actually engage with Salesforce people who can speak about your account -- or much of anything related to your business or industry. If I have to go to a work-related party (as opposed to an event with my friends), I'd better get something work-related out of it. Again, no utility. But even the late night after parties are too crowded.

File this under Yet-Another-Reason-Not-To-Go-To-Dreamforce-Alone -- if you have a colleague there, you can have discussions about work and software while you're there.

Ultimately, I don't think I have a good answer to what the purpose of Dreamforce is. But I don't think Salesforce does either. Over the years, I think it's been lost, muddled with so many objectives that it's kind of a mess. We, the customers, have been lost. Perhaps they've forgotten about the band and the music (I'm not talking about the Gala) -- they're just there for the party.

Tuesday, June 19, 2018

Apple Airport Network Configuration Problems Caused by Vocabulary

Let me start by saying once again that Apple's decision to abandon their Airport product line isn't just a stupid product choice, it's another exclamation point on the company saying, "we don't care about the Mac or any other part of our computing business, we're a phone company now!"

Like many, I have a long history of using Apple's Airport devices for my wireless networking. In my old apartment, I used to use multiple Airport Express devices to enable music streaming on separate audio systems that I had throughout the place (with optical digital audio connections to my receiver - nice). At the time, I had ethernet cables run to to each room and I also used the Airport Express devices to extend my wireless network throughout the apartment.

Over the years, Apple made some significant changes to the Airport Utility that ships with Mac OS X. It went from a utility where you had the option of configuring the system manually or going through a configuration wizard to one that features a cool graphic representation of your network, but directs you through the configuration wizard -- and, by default, sets the network up incorrectly. After searching through tons of "Airport Network Problems Extend a Network" on Google (and trying many solutions), I finally solved the problem and I wanted to share my solution with you.

First, a little more back story. When I moved into our current house, we set the Airport Extreme base station in a room on one side of the house. Unfortunately, with walls and such, by the time you got to the entertainment center in the living room, devices would complain about problems with wireless network strength. Several years ago, I used an Airport Express to extend the network as a wireless bridge that then provided an ethernet network for devices in the entertainment center. It sort of worked, but it had issues. Later, I tried using an Airport device to wirelessly extend the network from the entertainment center and hopefully boost the wifi to the other side of the house, This configuration really sucked and eventually, I just disconnected the airport devices at the entertainment center.

Last week, we finally wired the house with ethernet, so I decided to use older Airport Extreme device to extend my network -- especially since it now had an ethernet connection back to the main Airport Extreme. Unfortunately, not only did that configuration not work, it made the entire network slow and, essentially crash. Nothing worked. The only solution seemed to be disconnecting the second Airport Extreme.

Initially, my best guess at why it wasn't working was a difference in generations between the two Airport Extreme devices, one being the tower style and one being the older, flat, pizza-box style. As a solution to this, we decided to head over to the Apple store and pick up one of the remaining Time Capsules that they still had in stock. I brought it home, went through the basic configuration wizard in the Airport utility, and my extended network problems were back again.

In reading through potential solutions on line, I tried a number of different ones -- from IPv6 link sharing to assigning the remote Airport a static IP address, noting seemed to work. Eventually, the "DHCP Reservations" setting in "Network" helped by identify the issue. Here's what I did first: identify the MAC address of the ethernet connection on the Airport Extreme. The Airport Extreme actually has three MAC addresses, one for ethernet and two for wireless. By reserving a specific IP address for the ethernet, I was able to determine that every time I ran through the Airport Utility setup wizard, the Airport Extreme was being set up to connect to the network through it's wireless interface. Each time I restarted it and set it up, it would have a different DHCP address, not the one that I'd set up for the Airport Extreme ethernet port.

After more research, I finally discovered the solution in an online post about the difference between an extended network and a roaming network. What's important to understand here is that Apple's "Extended Network" terminology is not the Extended Network that you're looking for. When they say "Extend a Network," what they mean is "add another wireless client and have that also work to try and stretch the range of the your wireless network."

The problem with this is that it doesn't work well. It adds overhead to your wifi network and, for some reason, seems to cause some other issues that can slow your network to a crawl. In short, it doesn't really work. The difference between this configuration and modern "Mesh" wireless networks is that the Mesh networks add a second wireless connection that's just used by the wireless access points to talk to one another. It probably wouldn't have been much trouble for Apple to add something like this to Airport -- if they weren't so busy being a phone company. If you don't have the option of connecting an ethernet cable between your wireless access points, your best bet is to get one of these modern mesh wireless networks. From my research, the challenge is that, many of these don't have great support for Macs (pretty much the same reason that, way back when, Apple introduced the Airport line), so be sure to do your research before you buy.

How to Extend Your Wireless Network Using Airport Extreme and Ethernet
So, in some ways, this page is helpful for understanding your wireless network using Apple's Airport devices. It has a lot of clear diagrams, but the interface descriptions from the Airport Utility are outdated, and in the current version of the software, you won't see these options. I read this multiple times and, while the diagrams for what I wanted to do were clear, what happened in the software was not clear.
  1. When setting up your wireless network with multiple Airport devices and connecting them through ethernet (a wired connection), you want to set up your wireless network up as "a Roaming Network". Here's what's important to remember about this: even though this set up will extend your wireless network, it doesn't use Apple's "Extend your Network" settings in Airport Utility.
  2. Set up (or make sure you have set up) your main router or Airport base station. This device will be act as a router and distribute IP addresses. This is the device that, in terms of your network, is talking to your broadband modem. Note that it's also helpful for your computer to be plugged into ethernet while you're doing your set-up.
  3. To set up the base station to extend your network with ethernet (set up a roaming network), you can start by plugging the new Airport base station into an ethernet cable (into the WAN port), then plugging in the power. If you launch Airport Utility (or have it running), within a minute or so, you should see the new device appear under the "Other WIFI devices" button.
  4. If you go through the initial wizard to set up the Airport device, you may be lucky and it may offer to extend your network through the wired connection, but it may not. If you see a screen after you enter the name of the device that says extending your network over ethernet, congratulations, you won the set-up wizard lottery. The script may be setting your network up correctly. If not, don't worry, I'm going to explain how to fix it.
  5. If it set up incorrectly, you can just make the configuration changes in the interface or, if you feel the need, you can use the reset the Airport to default settings then click into the "options" button on the first screen in the set-up wizard.

    What you want to do is "Create A Wireless Network".


    This may seem counter-intuitive, but this is the critical step in setting up a "Roaming Network" to extend your wireless network. This option is in the options portion of the set-up wizard, but if you're working with an Airport that the wizard set up wrong, you can find it in the "Wireless" screen of the base station configuration piece. If you're there, it probably says "Extend a wireless network". This is the wrong setting that's causing you problems.
  6. When you "Create a wireless network", you need everything to match your existing network, so use the same network name, wireless password and wireless security setting.
  7. Next, you in the "Network" screen, you need to make sure that connection sharing is off (bridge mode). If it says "DHCP and Nat", you have the wrong setting enabled.


  8. With these to key settings made, you can save and update the Airport device and, once it reboots, it should be connected, creating a wireless network, and using it's ethernet connection to bridge the network. In your Airport Utility, you should see the second Airport unit connected by a solid line (if you see a dotted line connecting the devices, that means that it's a wireless connection). In my earlier example, I could also tell because once the Airport base station rebooted with these settings, it had the IP address that I had previously reserved for it (based on the ethernet MAC address) in the other base station set up.

It's possible that all of this is spelled out clearly somewhere in the Apple documentation, but I struggled to find it. If you're wrestling with Network issues, good luck.

Monday, June 18, 2018

How the Mac has become Apple's Red-headed Stepchild

I came across this blog post, On The Sad State of Macintosh Hardware, highlighted in this post on Macrumors. While the Macrumors post is built on the other, the original post is far more powerful. Coming from a Mac OS software developer -- they struggle to purchase hardware to develop for the platform. Also noteworthy, is the comment that they can't even run the newest version of the Mac OS, Mojave, introduced at the most recent WWDC.

Here's a quote from the original post that I found particular pointed:
Rather than attempting to wow the world with “innovative” new designs like the failed Mac Pro, Apple could and should simply provide updates and speed bumps to the entire lineup on a much more frequent basis. The much smaller Apple of the mid-2000s managed this with ease. Their current failure to keep the Mac lineup fresh, even as they approach a trillion dollar market cap, is both baffling and frightening to anyone who depends on the platform for their livelihood.
Why can't Apple keep the current Mac lineup fresh like the much smaller version of Apple did over 10 years ago? The answer is pretty simple for those of us long-term Mac users.

Apple has become a phone company.

Apple doesn't care about the Mac product line. If you're a loyal Mac user, you're Mac is gone. 


Monday, May 21, 2018

Uber and Facebook Apology Advertising

Recently, I couldn't help but notice a strange similarity between a couple of broadcast ads that seem to be in frequent rotation lately.

The first one I think I saw was for Uber, featuring their new CEO. The Uber ad, "Moving Forward", talks about how they are changing and fixing things (I think that the one on YoutTube that I've linked to is one of a series). Then, there's the Facebook commercial, "Facebook here together". 

Facebook's message, bundled with images of happy people, is along the lines of "recently, there was a bunch of scary news about how the Facebook platform was used to grab all of this knowledge about you, but we're changing, improving our privacy policies, so it's safe to go back on our platform.

Essentially, both of these are heavy rotation commercials for the apology tours that both companies have been making. But you have to wonder, what's the goal of these ads? If you deleted your Uber app, will seeing the CEO saying he's making things better give the service a try again? While Facebook has made some real ads, have they made really substantive changes to their platform? If you'd quit using the app, would this commercial make you go back?

And if this type of ad is not for the people who left, who is it for?

Is it for the shareholders? Do we think that an ad like this is going to move the share price of the stock?

I think it's more about trying to build the foundation for a PR messaging point. Essentially, we're not just on the apology tour, we're SPENDING MONEY to say we're sorry and move forward. This is an effort to help support some changes that are, in some ways, minor changes that don't really impact the core issues that took them into apology-land. In essence, these are an effort to inflate the "fixes" in an effort to minimize the original harm.

Anyway, no grand take-away from this one. As I watched these ads, I couldn't help but reflect on whether I could recall other companies doing similar apology ads. I was trying to imagine what an IBM apology ad might look like. The closest thing I could initially think of what Domino's did with this where they call out quality complaints and promote their attempts to change. I actually liked this campaign -- I feel like there's a broad perception that Domino's pizza quality isn't high -- but I haven't purchased a pizza from them since... probably college. 

Then I remembered this "we're sorry" ad from BP after the massive Deepwater Horizon spill. Oops, I accidentally linked this to the Southpark episode where they were parodying the BP ad. Yeah, I think that's an example of how this kind of ad really fails.

Friday, May 4, 2018

Macworld on the end of the Apple Airport

I've been thinking a lot about Apple's decision to kill the Airport Wireless router line. Yesterday I went searching for this post that I remember someone writing after Steve Jobs passed away. The post relayed a story from one of the people in a meeting with Jobs at a time when they were talking about adopting wireless networking -- and the vision that Jobs had to look beyond the cost of the technology at the time and drive the vision of WiFi on all of their systems. It was such a great story that it still sticks with me today.

In the search for that story, I came across this article from Macworld, Requiem for the AirPort base station: A testament to everything Apple was and isn’t anymore. The subhead for the post is, "Apple just doesn't think this way anymore." While it wasn't the story that I was originally looking for, it does capture a great deal of what's been going through my mind following the EOL decision on the Apple Airport. These days, we're supposed to believe that thinking differently means a different color enclosure on iPhone design or an edge-to-edge display where unusable active screen space is, well, useful.
Over the years, AirPort evolved into a full wireless solution that worked with any and all devices, but the ease-of-use Apple revolutionized with the original AirPort never went away. From the remarkable Airport Express to the ingenious Time Capsule, Apple’s wireless products were always designed with the consumer in mind. It took a complicated system and made it easy, a mantra that Apple has gotten further and further away from as it has grown.
In many ways, Apple's Airport was just a router, but like so many other Apple innovations, it was filled with potential that the current Apple business has simply abandoned. Take the whole wireless "mesh" devices. Long before you had these systems, you had Apple Airport Express wireless devices that could either extend your existing network or function as a compact wireless router for up to 10 devices. From the wifi extension perspective, these devices also included a USB connector so that you could connect a printer and an audio port so that you could connect music devices for a multi-room, wireless audio system. While it had a few issues here and there, it was an incredible system on the whole.

And that whole piece was built around Airplay, another awesome Apple feature -- until it wasn't. Eventually, Airplay got so bad, we just quit trying to use it. Theoretically, there are rumors of Airplay2, but I expect that to go the way of Apple TV and Siri, interesting ideas that the current Apple has transformed into technology flops.

But, back to the Apple Airport -- here's another reason why I loved the Airport Express, it was great for traveling. While WiFi network availability has grown, in some places (like Japan), not all hotels have WiFi access. Additionally, some places that you travel to might impose limits on the number of devices you could use. In these environments, the Airport Express was great. You could simply plug it in, and you'd suddenly have your trusted WiFi network available throughout your hotel room. Plus, any of those handy needs-to-be-on-the-same-wifi-network features also worked.

But modern Apple isn't about this kind of functionality any longer. Sure, the cost to run the WiFi router group is probably a fraction of a percent of the hardware revenue of the iPhone business. Sure, there are more Apple buildings and more Apple employees around than there ever were. But today's Apple wants to repeat one aspect of Steve Jobs' approach -- eliminate and focus -- they just want to focus the money. Baby. Out. Baby. Out. Baby. Out. And now we have a nice tub full of dirty water than we can focus on.

As I've written before. I didn't abandon Apple so much as they abandoned me.

Wednesday, April 18, 2018

The Data is Restored: Thanks to Salesforce Customer Support and Our Internal Team

If you've been following the events surrounding the unexpected loss of my Salesforce data detailed in this post, How Passage Technology's Storage Helper Torched My Relationship with Salesforce, or if you've been following my updates on Twitter, you may be interested in the latest update -- as of yesterday, we believe we've restored all of our accidentally deleted data.

In that regard, I wanted to express my thanks to the Salesforce customer support team for assisting with the re-upload of several years of data from our Sandbox instance. As I mentioned in the update to my previous post, after being re-referred to the Salesforce customer support team by their Twitter support, the customer support agent that contacted me was extremely helpful. Not only did he listen and talk with me about all of the issues associated with the data loss, he then took the initiative to re-upload the data. That was no small task as the associated Excel files amounted to almost 250MB worth of data. First, he had to add a custom field for the Sandbox ID of the Invoice header, then upload the Sandbox data, then use a VLookup function to remap the Invoice Line "child records" before uploading them. It actually took him several days to complete all of this. I'm extremely grateful for the support.

With his help, we only needed to re-run our integration script for data going back to last September, (something that took us a couple of days to complete, just to give you a sense of the scope of the data).

Finally, it's worth noting that last week I sent an email to Marc Benioff to express my thanks for the customer support agent that had made such an extraordinary effort. Much to my surprise, I received an email back from Benioff, expressing concern over my experience and the issues that I raised, and forwarding those concerns on to their customer support team. After that, I received a follow-up call by one of their senior VPs. I suspect that, if we had been deeper in the weeds than we were, they would have done what they could to help us get back on our feet.

All that being said, Leo, the front-line customer support guy who wound up catching my issue following the Twitter referral, really exceeded my expectations for customer support, and it's an important reminder about just how important that front line customer support channel is. While it's reassuring to know that my concerns matter enough to Marc Benioff to generate a reply, if it hadn't been for Leo's efforts, I doubt that the whole matter would have taken a path to an executive response.

That's not to say that Salesforce's front line customer service succeeded right out of the gate. Clearly, getting a responsive experience required some persistence on my part.

In that, I think, I can find a take-away from all of this. If you're wrestling with a significant issue like this and you're dealing with Salesforce customer service, don't give up. Like many companies, Salesforce has default practices that are designed to address 80% of the issues that come up. And, like many companies, they probably have a percentage of their staff that wants to stay within the confines of their defined processes. But I think you can take one thing away that response that I got from Marc Benioff -- they really want to be the company that they promise to be. 

Having been to (and through) a number of Dreamforce events, there's a feel-good aspect of the Salesforce brand. There's the philanthropy, the 1-1-1 business model, their principled corporate voice -- there's a lot to respect about when and how Salesforce stands up. Perhaps that's why, when you're faced with certain technical challenges, operational restrictions, or dealing with aspects of the company's business processes that seem too revenue-centric, the company that you face can seem very different than the company you imagine.

But at it's core, I think Salesforce wants to be a better company; that it is a better company than most. I can't say that I won't get pissed off about something that they do tomorrow, but in the face of adversity, they did alright by me -- even if it took a bit to get there.

Thursday, April 12, 2018

What I Learned About Apple from My Twitter Customer Support Experience

In late March, I found myself in the grips of terrible frustration with my iPhone SE. As I've noted many times in the past, there are so many issues and bugs with iOS 11, it's really unbelievable. Here are the two tweets that triggered Apple Support to reach out to me.
I'm not sure whether it was the mention of "lagging UI animations" or the "#batteryReplacement" hashtag that prompted them to reach out, but shortly thereafter, I was working with Apple Support through Twitter's Direct Message in an effort to diagnose and fix my iPhone.

The first thing that we started to address was the lagging iPhone behavior. After running their basic diagnostic tool and getting results back that seemed to indicate that the iPhone was running properly, they had me restore the iPhone as though it were a new device. When this seemed to eliminate the issue, they had me restore my device from iTunes. Sure enough, a number of the lagging animation behaviors returned. Over the course of that exercise, one of the things that I realized is that when I restored as new, the font sizes were much smaller, so I tried reducing the font size (I had been running at something like the +2 font size setting, making it easier to read emails and texts on the device). Reducing the font size seemed to solve some of the lagging animation behavior.

At this point, Apple Support wanted to see if they could improve performance further and suggested that I turn on the General > Accessibility > Reduce Motion setting, something I said that I'd had turned on since they introduced the stupid motion feature. And that was the last time I heard from Apple Support.

A couple of days later, I tried to pose another question to them about how, when I touch the top left corner of the screen on the iPhone in something like the Messages app, instead of taking me back to the list of messages from other people, it scrolls to the top of the current message list, like clicking the home key. That query was also met with crickets.

My Apple Support Takeaway
Looking back, it seems clear that my tweets that related to Apple's very public trouble surrounding the battery issue were the driver for Apple to engage with me. Over the past year or several, I've been vocal in my frustration with many aspects of Apple's products, but this is the first time that Apple Support has reached out to me over Twitter. Clearly this has become an extremely sensitive topic for them and they seem to be focusing their efforts at making sure that more battery-related PR issues don't blow up on them.

That being said, it's also another example of how iOS 11 seems like a product that only functions correctly within a certain narrow set of parameters. While I'm sure that iOS 11 probably works more like it's supposed to on an iPhone 8 or iPhone X, it makes you wonder whether you'd see the same issues with font sizes on those larger-screen devices.

When you consider how much the company has grown since the iPhone took off, it's kind of funny that they can produce software that seems inferior to the earlier versions of the software and the iPhone. For me, I'd much prefer an iPhone that worked correctly than an "animoji" feature that I'll never use.

Tuesday, April 10, 2018

UPDATED: FAIL: How Passage Technology's Storage Helper Torched My Relationship with Salesforce

UPDATE: So, after sending this link over the @asksalesforce support team, they re-referred it back to Salesforce customer support. I received another call from a Salesforce customer support person who took some more time to listen to the issue (apparently, he couldn't view the blog post because of security controls on their systems).

As he listened to parts of my story, he was surprised by a couple of points. First, he was surprised that I wasn't able to use Data Loader to download the deleted records on Friday, while they were still in the table. When I explained that they were gone now, he was surprised but noted that the sweeper utility may have just come through our org. According to him, I wouldn't have been able to simply restore the records by toggling the IsDeleted flag (but being able to download them while they were still in the table would have been useful - where were you on Friday?).

When I mentioned the "invalid cross reference id" error, he noted that the issue there was trying to re-import the data with an ID - that the system had to assign an ID. I told him that this would make it impossible to re-link the "Invoice Line" child records, but he said that it could be done with a bit of work in Excel. He then asked me to send those sandbox files that I needed to re-upload and offered to solve the import issue for me.

In all, I'm feeling a bit better about all this than I was yesterday at 6:30, but we'll see how it all unfolds. I'll keep you updated.

----- Origitnal Post ------

If you've been watching my Twitter feed, you've already seen parts of this story, but you may find more coherence (and a few more details) in this version.

A couple of years ago, following a mention at Dreamforce, I purchased a suite of software extensions for Salesforce from Passage Technology. As a Salesforce Admin, what drew me in was a product that they offered, Rollup Helper, that made it possible to build data roll-ups of a variety of data even across custom objects. To translate this into simpler language, a roll up field enables you to do something like total the value of all opportunities on an account. Salesforce has always had roll-up fields but the functionality was limited to records that had parent-child relationships (with the roll-up on the parent). Rollup Helper enables you to create roll-ups on records, even if there isn't a parent child relationship.

The pricing for Rollup Helper was about $2K for a one-year license, but they also offered two other software utilities, Lookup Helper and Storage Helper. If you bought them as a bundle, the other two software tools (each about $800), were included at a discount. Storage Helper seemed like it held some promise. Essentially, what it enables you to do is set up a filter condition and automate the deletion of records. Since the base data storage allocation for Salesforce.com is 1GB, depending upon your record usage, this could represent a savings for you versus paying for added storage.

For the most part, our data all fit easily within Salesforce data storage limits, with the exception of Orders and Invoices that were brought in through our Oracle back-end system integration. While the header record volume wasn't large, each of those records also included multiple lines and, as this data accumulated over the years, we hit our data limits. Initially, I manually deleted old records, but eventually wound up buying more storage space. In this environment, a software utility that we could configure to erase records that were over five years old seemed like a handy utility.

Some "In Hindsight" Data Points I Should Have Weighed More Heavily
I had mixed results with Passage Technology software, and I probably should have given more consideration to that when I ran Storage Helper on Friday. I actually created custom fields and set up Storage Helper back in October of 2016, but with our added storage, I didn't really need to run it, so the software sat, unused in my org for a couple of years. Meanwhile, I made a couple of separate attempts to use Lookup Helper, none of which were successful despite connecting with Passage Technology customer support both times.

I should have known...

In many ways, Storage Helper should be pretty simple software. The premise - set up a set of conditions to filter a search, then delete the results of the search. The thing that should make it cool is that you can set it to run on an automated script, so it will just work for you. Initially, I'd built a filter for both Orders and Invoices that looked at the year in the date record, then deleted things greater than 6 years old. Part of the reason why I'd waited to run the script was, after talking to some of my colleagues, I'd thought about possibly trying to calculate the age down to the month.

Anyway, background aside, I was getting ready to do an evaluation of Salesforce.com's Wave Analytics module. As part of the set-up for that, Salesforce also provided a trial license to a full Sandbox. But since we were going to evaluate the analytics, it seemed like it might be a good idea to remove some of the old order and invoice data, both to streamline the data migration and to simplify charting functionality. And so I ran Storage Helper on Invoices.

This was my first mistake.

Before I ran the software for the first time, I did previewed the data that would be deleted, something that's included in the software and recommended by the wizard. A quick sample of the data preview showed records from 2010 - so that looked good. It also triggered an error alert because the data set that it was getting to run on was greater that 50,000 records. I okayed that - figuring that it would require multiple runs of the software to get the job done.

After running the software, the interface offers a little dashboard that says, "Storage Helper saved you this much money and freed up this much data storage space". I was curious if it was deleting the child "Invoice Line" records and how much space that accounted for, so I went over to the Salesforce System Monitor and looked at the storage usage. Unfortunately, when stuff is in your recycle bin, it's still included in your storage count on System Monitor. I'd previewed the data (if you've ever looked at data in your recycle bin, there isn't a lot of helpful record detail info there - practically speaking, the only way to really know the details of a record is to undelete it), so I decided to go ahead and delete it. Now the system monitor showed a change and, for a moment, I was happy.

Back to Storage Helper, and I previewed the data again. Again, records from 2011, so I ran the script again. I should say that the script seemed to lag while it ran, but that's not unusual with some of these Salesforce processes. Because of the lag (thinking back, I think it lagged the first time it ran as well), I wasn't really sure whether it was working or not. Again, I deleted the records in the recycle bin. With the lag, I might even have pushed the "Run" button multiple times. Somewhere in there though, it finished it's second or third run, and I was curious how much data was left in these old records.

So I ran preview again. This time, I noticed an Invoice Owner who joined the company more recently. I was surprised -- how could this guy have owned a record from >6 years ago. I clicked through the preview to the record and, sure enough, the record was from last year. Last year? Then I looked at the Storage Helper script and the filter that I'd built -- it was gone. There was no filter.

I quickly went over to the recycle bin and "undeleted" all of the records in there. I also emailed the Storage Helper product manager from Passage Tech. This was before lunch. He emailed me about 10 minutes later to say that he was no longer the product manager for that product -- and forwarded my email to the current product manager and their customer support team. Meanwhile, I started to assess the damage.

A little after noon, I sent an follow up email to Passage Tech with these screenshots, the first being a Pivot Table report of Invoices from Live, the second being an extraction from my Sandbox that was refreshed last September:


That's an 84,948 record difference between live and seven month old data.

It goes without saying that, after that first contact with Passage Technology, I didn't hear back from them until Monday morning when I got an email from their customer support.

Salesforce Steps Up To Take Things From Bad to Worse
After not hearing anything back from Passage Technology (guessing that they were on East Coast Time and had probably gone home), I reached out to my Salesforce AE. Was there any way that Salesforce could help?

She suggested creating a case. Once there was a case, she said, they could escalate the case. And so I wrestled with the stupid subject tree to find a case and submit it. By 4:00pm, I finally had a case number. I forwarded the case number to her and she escalated it. Salesforce customer support reacted quickly, but the guy who called me talked with me as we both went to the recycle bin and looked to see if the records were there (they weren't - I'd already 'undeleted' what records were there when I realized what Storage Helper had done). Since there were no records there, he told me that Salesforce did offer a paid data recovery option, but I'd need to speak with my AE for pricing on that option. He also suggested that I consider the Idea Exchange (seriously).

So I emailed my AE again. She let me know that the data recovery thing started at $10K. Other than that, she reached out to some other Salesforce colleagues for suggestions. Queue the crickets.

Seeing that this wasn't going well, I attempted to restore some of the missing data by "Upserting" my old data from Sandbox. If you aren't familiar with the term, upserting essentially updates a record if it finds one, otherwise it inserts it. Unfortunately, this didn't work because all of the deleted records were still in the database table, they just had a field called "IsDeleted" flagged with true. Realizing this, I tried to fix it by updating all of the "IsDeleted" to false. Unfortunately, that didn't work because Salesforce won't let you modify the "IsDeleted" field.

So I searched for ways to update the IsDeleted field. I found a couple of suggestions. One suggestion was the Developer Workbench, an online tool that provides you access to a bunch of the underlying aspects of Salesforce. Using this tool, I was able to verify that the records were there. I could even look at the records individually. Thinking that this would be helpful for knowing exactly which records had been deleted, I tried to Bulk Export a .csv file of the deleted records. Unfortunately, bulk exports of this type of data weren't supported. I tried to work with specific records to change the IsDeleted flag, but that wouldn't work either. I even tried to generate a list of the deleted records so that I could copy and paste them into a spreadsheet, but that wouldn't work.

From an older post that I found online, I saw where somebody had written that some third-party data loader tools might enable you to modify IsDeleted. I tried rerunning an older version of LexiLoader that I had. It said that I needed an older version of Java to run it - so I installed that. Even then, while LexiLoader would run, it couldn't log in. By 6:30 on Friday, I'd exhausted all of the options that I could find. In another exchange with my AE, she said she was out of ideas and that we'd have to wait for technical support - on Monday.

At that point, I posted this on Twitter with what I expected to happen:
There are a couple of things worth noting at this point:
  1. What I expected to happen is that at some point that night, Salesforce's system would process (and erase) the data that was flagged with IsDeleted. This would mean that data that was easily accessible and a situation that was potentially correctable with the right tools and/or permissions would soon be out of reach.
  2. Once this data was deleted, depending upon how the Salesforce system works, it's possible that they might recycle the ID numbers of the records that were deleted. I don't know about this aspect of how Salesforce works and, if they do, how quickly those ID values are recycled. However, if an ID value was recycled, that would essentially mean that you couldn't just "re-upload" the data. And worse, any data that depended on being linked to that ID (like my Invoice Line child records) couldn't be re-uploaded.
  3. Once this data was wiped from the data table, it would be significantly more difficult to determine which records had been erased and which ones had not, making a recovery and reset even more difficult.
Monday Arrives
As you can guess, I didn't hear anything back from Salesforce or Passage Technology until Monday morning. After I granted Passage Tech customer support login access, they came back with a grand toreador...
Unfortunately, we have no history to determine as to whether the filter existed, or was setup correctly to begin with since the job has not been successfully run in the past.
See, it's not their fault.

Meanwhile, I hadn't heard back from my Salesforce AE Monday morning, so I emailed her. I emailed her a second time after I used the Developer's Workbench tool and did indeed verify that all of the deleted records were now gone. My AE responded after 11:00am, noting that she'd been in a customer meeting. By lunchtime, she emailed me again with more scoping questions. I didn't hear back again until later in the day when I emailed a second follow up. What did seem clear from her afternoon email was that, for any data restoration being done, it would probably be on us to do it.

So yesterday evening I made a second attempt to upsert the older header records from my Sandbox instance using Data Loader. Errors again, only this time a different error message, "invalid cross reference id". It goes without saying that, it's not just a handful of records either.

At this point, it seems like the whole thing is just F@#ked!
Because of the inter-relationship of records, I don't think there's a tool (short of our integration orchestration), that can upload the data and the related. While we have the source data - we didn't loose that, it looks like there is no easy way to reload it back into Salesforce. And, essentially, all of the data is worthless because you can't easily tell what data is missing.

It goes without saying that I'm so pissed off at this point that it's even difficult for me to go back through and write about it. I'm trying really hard to keep to keep my vocabulary restrained and professional. What more can I say about Passage Technology and their software -- I think that they can expect that I won't be renewing our license for their software, but I don't expect much from them since we're really talking about, at most, a $3K per year customer.

But Salesforce? What can I say. We often talk about Salesforce.com being an unsupported platform -- when the rubber met the road, their customer support FAILED. They followed up the case on Friday night with ANOTHER email about the Idea Exchange. And, at 6:30pm on Friday when, if they had a resource that could extract or modify the IsDeleted field on two tables in our org, we could have recovered from this entire mess. Instead, they were done for the week. TGIF. Pick up the pieces next week.

At this point, I don't know how the rest of this will work out, but I do know one thing -- I don't expect to have good words about Salesforce.com going forward.