Sunday, November 10, 2013

The Moto X Custom Order Experience

I just ordered a Moto X Android phone for myself, and thought I'd share the experience.The Moto X has a unique custom order experience which is somewhat reminiscent of custom-ordering a new car from a factory: you get to choose every last detail. The Moto X is made in Fort Worth, Texas, and if you're in the U.S. you get your new phone about 5 days after placing your custom order.

Making Arrangements With Your Carrier
You can start your experience online, but if upgrading from a different phone you'll likely begin with a visit to your carrier. In my case, I was having some technical problems with my Nokia Lumina 920 phone and decided it was time to upgrade, so I stopped in at my local AT&T store. After inspecting an actual Moto X to ensure I would be comfortable with the weight and form factor, I decided to go for it.
I was initially told it would be $200 to upgrade to the 16GB Moto X or $300 for the 32GB Moto X, but after some checking the salesperson informed me that due to some specials that were running I could get the 32GB Moto X for under $100. Sweet.
Once you've made arrangements with your carrier, you'll get a voucher card like the one shown below. You can then design your customized phone online and complete your order from home.

Carrier Voucher Card

Online Designer
You design your phone at http://motorola.com/designit, and the design experience is noteworthy for several reasons. First of all, you're able to customize a great deal about your phone, including back color, front color, button color, the display name of your phone, even your wallpaper. Secondly, the experience is done well: it feels immersive and is just plain fun.

Online Designer Start Screen

Phone Back Color
The back of your phone is the part with the greatest selection of colors. The online designer groups the choices under Cool colors (Navy, Turquoise, Olive, Mint, Royal Blue, Spearmint, Neutral colors (Woven Black, Woven White, Cement, Black, Chalk) , and Warm colors (Cherry, Lemon Lime, Violet, Crimson, Blush, Raspberry, Cabernet). As you select this and other options for your phone, you see your custom phone expertly depicted. Moreover, you can rotate and zoom in on the image.

Turquoise Back Color

  
Raspberry Back Color

 
 Royal Blue Back Color

 I ultimately selected a Royal Blue back color for my phone.

Front Color
Compared to the wealth of colors available for the back, the front phone color selection is a tad limited: the only color choices are Black and White.

Black Front Color


White Front Color

 I selected a white front for my phone.
 
Accent Color
You also get to choose the "accent color". This is the color of your side buttons and the ring around your camera. There are 7 choices: Metallic Blue, Metallic Silver, Metallic Yellow, Metallic Red, Metallic Purple, Metallic Black, and Metallic Orange.
 
Blue Accent Color
 
I went with a metallic blue accent color for my phone.
 
Memory
You can select 16GB or 32GB of memory. Depending on what you've earned in terms of upgrades with your carrier, and applying current promotions, your preferred model will likely be attractively priced.
 
Selecting Memory
 
Power On Name or Greeting
Your customization is not limited to physical manufacturing elements: you can also specify some software configuration aspects of your phone. Of course, you can set these up or change them anytime once you have your phone, so these selections are not nearly as binding--but it's still nice that you can tailor even these aspects at order time.
 
Power On is a name or greeting text that will appear when you turn your phone on.
 
Power On set to My Name
 
I set my Power On selection to my name.
 
Wallpaper
Another selection you get to make is your wallpaper. There are about 20 or so wallpaper choices.
 
Wallpaper - Earth
 
Wallpaper - Piano
 
I selected the Piano wallpaper for my phone, but will most likely replace it with a personal photo once I receive the phone.
 
Google Account
You can choose to link your phone to your Google Account, if you wish. If you do, your phone will be aware of your name and username when you first power it on. You'll need to enter your password, however.
 
Linking to Your Google Account
 
Accessories
You also have the choice of choosing accessories during the design/order processing, some of which can also be customized. JAX headphones with mic, for example, are available in 16 different colors.
 
Accessories
 
 JAX Headphones Accessory Color Selection
 
I decided to add JAX headphones/mic in royal blue for an additional $39.99.
 
Carrier Selection
Near the end of the process you'll select your carrier. If you've made previous carrier arrangements, as I had, you can enter your PIN at this point from your voucher card.
 
Selecting Carrier
 
Checkout
At this point you'll make payment arrangements (not shown) and complete your order.
 
Completing Checkout
 
 
Thanks for Your Order
 
You'll receive options at this point to transfer your data and to share your phone customization.
 
Data Transfer
The data transfer option offers to migrate your phone's data over to your new Moto X. This turns out to only be available for users migrating from an iPhone or Android phone. I couldn't take advantage of this since I was upgrading from a Windows Phone.
 
Data Transfer Option - only available for Android and iPhone
 
Tell The World
If you're willing to tell the world about your new customized phone, either through Facebook or Google Plus, you'll earn $10 credit in the Google Play Store. This is a smart way to get new customers involved in evangelizing the brand.
 
Tell the World About Your Phone for Google Play Credit
 
Order Confirmation Email
You'll get an email confirming your order, which gives you a short time window for changes or cancellation (1 hour).
 
Order Confirmation Email
 
The Custom Order Experience: In Summary
Someday all phones will have a similar customization experience, I suspect. Although it remains to be seen what I think of the actual Moto X phone once I get to use it, the level of customization available--and the experience of designing your customized phone--has definite appeal. I think Google and Motorola are on to something here.

Follow-up: Now That I Have the Device...
First off, I want to say the online design and ordering experience set a 5-day expectation. In fact, I received my custom device only 3 days after placing my order. I ordered on a Sunday evening and had the device in-hand Wednesday afternoon.

The online activation process with AT&T only took a few minutes, though they seemed to expect me to crack open my device and confirm serial number and SIM card number--which wasn't obvious how to do with a fresh phone in my hand. I was content to confirm those numbers off the box label. Even though I was upgrading an existing phone and keeping my same phone number, there was no need to transfer my SIM card: the upgrade phone comes with a new SIM card and the online activation process anticipates this. There was a stern warning given during the activation process that it was important not to turn the device on until activation was complete and 15 minutes had gone by... but in fact I turned the device on accidentally several times inadvertently in handling it. None of that caused any trouble, though.

So far, I really like my Moto X. It's fast and speedy and has nice display. And this is coming from someone who also has an HTC One, considered by many to be the leader of the pack. In comparison, the Moto X is in a smaller and lighter package but has the same screen dimensions (though fewer pixels). You can read a side-by-side comparison and performance test here.

Saturday, October 12, 2013

Review: Nest Thermostat Self-Installation and First Impressions

Yesterday I installed a Nest Thermostat in my home, all by myself. You can, too. Here's what's involved.

About the Nest Thermostat

If you're not familiar with the Nest, it's a Steve Jobs-style reinvention of your home thermostat. Scott Hanselman has written a very thorough review of the device. It will definitely make you the coolest homeowner on the block: it has an attractive appearance, a cool user interface, can be remotely controlled from your phone or a web browser, has the smarts to learn your preferences and habits, and can save you money. It looks like this--more on what it's like to use at the end.


Is Nest Compatible with Your Home?
One question you might have is, will Nest work with your heating and cooling equipment? The Nest thermostat, in its second generation, claims compatibility with "95% of home systems with low-voltage systems". Still, that's small consolation if you're in that remaining 5%. Fortunately, you don't have to take a gamble. Nest's online compatibility checker will answer this question for you. All you have to do is pop off your existing thermostat, click the wires you see, and you'll get your answer. For me, this looked as follows:

My Thermostat's Wiring

Nest Online Compatibility Checker

Good to Go!

To Self-Install or Use a Professional?
After researching the Nest a bit, and viewing the information and videos on the Nest web site, as well as various on-line reviews, I was hooked and ready to buy. But should I install it myself, or use a professional? I'm not exactly known as a handyman: my wife is usually the one who tackles plumbing and home-improvement and painting projects at home, and the few ones I've attempted haven't usually turned out well. Accordingly, I'm much more likely to pay someone to work on my home than do it myself.

First, I was pleased to learn that if you want to do a professional installation, Nest has you covered with a network of trained and approved certified installers. A search by zip code revealed that of the many nearby options, one installer was only a mile and a half from my home.

On the other hand, everyone I talked to (including some colleagues at work) said it was really, really easy. That all the tools you would need were included. After watching the self-installation video, I decided to summon my courage and try to install it myself.

So off I went during lunch yesterday to my nearest Best Buy, and $250 later I had my very own Nest. All that was left was to install it...

The Moment of Truth

Installation
As I said at the beginning of this article, Nest has been highly influenced by the way Apple does things, and that includes every aspect of designing the user experience, including packaging and installation. The instruction guide lists 12 steps to install:

1. Switch off power.
2. Remove cover.
3. Check your system.
4. Remove any jumper wires.
5. Label wires.
6. Disconnect wires and remove base.
7. Mark where screws will go.
8. Attach base.
9. Connect wires.
10. Attach display.
11. Switch power back on.
12. Setup and Nest Account.

Was it as easy as claimed? Read through for a blow-by-blow account, or go to the end to cut to the chase.

1. Switch Off Power


The instructions say to go to your breaker box and turn off power to your heating and cooling systems. In my case, there was a slight problem because they weren't explicitly labeled. So, I turned off the master switch instead.

2. Remove Cover


In this step you pop off the top of your thermostat (most thermostats pop off easily). This step I'd already done, in order to use the online compatibility checker, so no problems here.

A colleague had advised taking a picture of your wiring with your phone before changing anything, and I found that to be good advice.

3. Check Your System


In this step, you verify that you don't have a high-voltage system. If you do, you can't continue. I didn't, so on I went to Step 4.

4. Remove Any Jumper Wires


In this step, you remove any jumper wires, because Nest doesn't need them. I did in fact have a jumper wire, and removed it.

5. Label Wires


In this step, you take labels provided in the installation kit and attach them to your wires. This is to ensure you hook them up to the right place on the Nest device. I did this to the 5 wires my thermostat had (W-White, Y-Yellow, G-Green, Rh-Red, and C-Blue).

6.  Disconnect Wires and Remove Base


In this step, you loosen and remove your wires (labeled in the previous step). You also remove the screws holding your thermostat against the wall.

It's at that this point you start to feel committed. And here's where I ran into my first wrinkle: in addition to two standard screws, there was also a hex screw holding the thermostat in place. No mention of that in the instructions, and no tool included that fits. I rummaged through my tools, and luckily found a hex screwdriver in the right size. If  I hadn't, my old thermostat might still be on the wall right now...

7. Mark Where Screws Will Go


In this step, you mark with a pencil where your screws will go (there are two of them). The Nest has a built-in level to avoid a crooked installation.

It's at this point that you have to consider whether you might need to cover up holes from your old thermostat. If you do, you can opt to spackle and paint (which I wasn't prepared to do), or use the handy trim plate included with the Nest. That's the way I I opted to go.


8. Attach Base


In this step, you simply screw in the base (along with the trim plate, if you've decided to use that). Although Nest includes a clever screwdriver for you to use, this step took me some time. Eventually, I switched to a larger Phillips screwdriver I had at home, which gave me better leverage.

9. Connect Wires


In this step, you connect those wires you previously labeled to the Nest. The Nest makes this easy, with touch connectors.


Nevertheless, I had some trouble here: one of my five wires was not very long and did not want to cooperate. I had to get some pliars to get the job done, and it took a while to get right. That pesky green wire labeled G really gave me a run for my money. Once all the wires were connected, I ensured they were flush flat against the wall as directed.

10. Attach Display


This step was easy: Just connect the main part of the Nest to the base, aligning a pin connector.

11. Switch Power Back On


In this step, it's back out to the breaker box to turn power back on. Then back in, to set up the Nest.

12. Setup and Nest Account


It was heartwarming to see the Nest power on, and do cute things on the display. Before long, I was finding my home Wi-Fi network and entering my password. I sat through a very long wait while the Nest downloaded a software update, restarted itself, and then proceeded to download another update.

The longest part of the setup

After that, we swiftly proceeded through the rest of the setup. The way Nest has set up interaction with the device is very innovative--after all, all you can do to communicate with it is rotate it or click it or walk up to it. It's amazingly well done.


I had a heart-stopping moment when the Nest displayed the wires it detected. I had connected five, and it was only showing four of them! Remember that pesky green wire labeled G? Not shown as detected! It was at this point that I wondering if it had been a mistake to self-install. After all, I needed this thing to work!


Not wanting the house to burn down or something like that, I removed the front of the Nest, turned off the power breaker, removed and re-connected the green wire, and put everything back and tried again. Well, it still wasn't showing the green wire as detected. I decided to let it proceed, and... well, everything works. It heats, it cools. I'm still not sure why the green wire (which I've learned controls the fan) didn't show as detected, but there don't seem to be any problems.

Life With the Nest
It's only been 24 hours since I installed the Nest, so it's a little premature to give it a full review... except to say that so far, we love this thing! How did we get by without it?

The display background is blue when cooling, red when heating, black when inactive. The display turns off after a few minutes, but comes back on when you walk up to it--only one of many nice little touches that gives the Nest personality. In no time it will have you thinking of it like a pet or a member of the family!


It's amazing how versatile the display is. It can show you a lot. It can do a lot.

It's truly neat to be able to control the temperature with a phone app (available for iOS and Android phones and tablets) and not have to get up. It also raises the specter of temperature wars, but that was a possibility way before the Nest appeared on the scene as you likely already know. But now you can subtly make adjustments without getting up and being seen. There's also the possibility of practical jokes now: a family member can be away, but still exercise control over the thermostat! If this turns out to actually be a problem, there is a lock feature.

You can control the Nest remotely from your iOS or Android phone/tablet, or from a web browser. Here's what the iPhone app looks like.

Nest iPhone App

Turn your phone sideways, and you can get to a lot more, including settings and schedule.


Nest iPhone App (Landscape orientation)

So far, we're really liking the Nest Thermostat. Once we've had it for a full week, it will have learned something about our preferences and habits and we'll start to see how it learns by observing.

Let me say, if you consider yourself a self-respecting geek, you want one of these. While I can't say the installation was 100% trouble-free, it was nearly so. The attention to detail Nest has put into the process and the product is something I really appreciate. Their claim of having re-invented the thermostat is a true one, and I look forward to other products from the company. They already have another product on the market, smoke and CO detectors.

Friday, September 27, 2013

Getting Started with Mobility, Part 10: A Back-end in the Cloud with Windows Azure Mobile Services

In this series of posts, we're looking at how to get started as a mobile developer. In Parts 1-9, we examined a variety of mobile platforms and client app development approaches (native, hybrid, web). We've seen a lot so far, but that's only the front-end; typically, a mobile app also needs a back-end. We'll now start looking at various approaches to providing a back-end for your mobile app. Here in Part 10 we'll look at Microsoft's cloud-based Mobile Backend As A Service (MBAAS) offering, Windows Azure Mobile Services.


About Mobile Back-end as a Service (MBaaS) Offerings
To create a back-end for your mobile app(s), you're typically going to care about the following:
  • A service layer, where you can put server-side logic
  • Persistent data storage
  • Authentication
  • Push notifications
You could create a back-end for the above using many different platforms and technologies, and you could do so in a traditional data center or in a public cloud. You'd need to write a set of web services, create a database or data store of some kind, provide a security mechanism, and so on.

What's interesting is that today you can make a "build or buy" decision about your mobile back-end: several vendors and open source groups have decided to offer all of the above as a ready-to-use, out-of-box service. Microsoft's Windows Azure Mobile Services is an example of this. Of course, it doesn't do all of your work for you--you're still going to be responsible for supplying a data model and server-side logic. Nevertheless, MBaaS gives you a huge head start. MBaaS is especially valuable if you want to focus your time on your mobile app, not the supporting elements.


Windows Azure Mobile Services
Windows Azure Mobile Services "provides a scalable cloud backend for building Windows Store, Windows Phone, Apple iOS, Android, and HTML/JavaScript applications. Store data in the cloud, authenticate users, and send push notifications to your application within minutes." Specifically, that means you get the following:
  • Authentication (to Facebook, Twitter, Microsoft, or Google accounts)
  • Scripting for server-side logic
  • Push notifications
  • Logging
  • Data storage
  • Diagnostics
  • Scalability
The service will also generate for you starter mobile clients for iOS, Android, Windows Phone, Windows 8, or HTML5. You can use these apps as your starting point, or as references for seeing how to hook up your own apps to connect to the service.


Pricing
So what does all this back-end goodness cost? At the time of this writing, there are Free, Standard ($25/month), and Premium ($199/month) tiers of pricing. You can read the pricing details here.


Training
We reference training resources throughout this post. A good place to start, though, is here:

Get Started with Mobile Services
Android    iOS    Windows Phone    Windows 8    HTML5


Provisioning a Mobile Service
The first thing you'll notice about WAMS is the care that's been given to the developer experience, especially your first-time experience. Once you have a Windows Azure account, you'll go to azure.com, sign-in to the management portal, and navigate to the Mobile Services tab. From there, you're only a handful of clicks away from rapid provisioning of a mobile back-end.

1 Kick-off Provisioning
Click New > Mobile Service > Create to begin provisioning a mobile service.

Provisioning a Mobile Service

2 Define a Unique Name and Select a Database
On the first provisioning screen, you'll choose an endpoint name for your service, and either create a database or attach to one you're previously created in the cloud. The service offers a free 20MB SQL database. You'll also indicate which data center to allocate the service in (there are 8 worldwide, 4 in the U.S.)

Provisioning a Mobile Service - Screen 1


Provisioning a Mobile Service - Screen 2

3 Wait for Provisioning to Complete
Click the Checkmark button, and provisioning will commence. It's fast! In less than a minute your service will have been created.

Newly-provisioned Mobile Service Listed in Portal

4 Use the New Mobile Service Wizard
Click on your service to set it up. You'll be greeted with a wizard that walks you through. This is especially helpful if this is your first time using Windows Azure Mobile Services. On the first screen, you'll indicate which mobile platform you are targeting: Windows Store (Windows 8), Windows Phone 8, iOS, Android, or HTML5 (don't worry, you're not restricted to a single mobile platform and can come back and change this setting as often you wish).

Setup Wizard, Screen 1

5 Generate a Mobile App that Uses your Service
Next, you can download an automatically generated app for the platform you've selected, pre-wired up to talk to the service you just provisioned. To do so, click the Create a New App link. This will walk you through 1) installing the SDK you need for your mobile project, 2) creating a database table, and 3) downloading and running your app. The app and database will initially be for a ToDo database, but you can amend the database and app to your liking once you're done with the wizard.

Generating a Mobile Client App for Android
 
In the next section, we'll review how to build and run the app that you generated, and how to view what's happening on the back end.
 

Building and Running a Generated Mobile App
Let's walk through building and running the To Do app the portal auto-generates for you. The mobile client download is a zip file, which you should save locally, Unblock, and extract to a local folder. Next, you can open the project and run it--it's that simple to get started.

Running the App
When you run the app, you'll see a simple ToDo app--one that is live, and uses your back-end in the cloud for data storage. Run the app and kick the tires by adding some tasks. Enter a task by entering it's name and clicking Add. Delete an item by touching its checkbox.

To Do app running on Android phone

Viewing the Data
Now, back in the Windows Azure portal we can inspect the data that has been stored in the database in the cloud. Click on the Data link at the top of the Windows Azure portal for your mobile service, and you'll see what's in the ToDo table. It should match what you just entered using the mobile app.

Database Data in the Cloud


Dynamic Data
One of the great features of Windows Azure Mobile Services is its ability to dynamically adjust its data model. This allows you to change your mobile app's data structure in code, and the back-end database will automatically add new columns if it needs to--all by itself.

Get Started with Data in Mobile Services
Android    iOS    Windows Phone    Windows 8    HTML5


Dynamic data is a great feature, but some people won't want it enabled, perhaps once you're all ready for production use. You can enable or disable the feature in the Configure page of the portal.

Server-side Logic
Windows Azure Mobile Services happens to use node.js, which means server-side logic is something you write in JavaScript.

Mobile Services Server Script Reference

You can have scripts associated with your database table(s), where operations like Insert, Update, Delete, or Read execute script code. You set up these up on the Data page of the portal for your mobile service.

Database Action Scripts
 
Here's an example of a Read script that restricts processing to only return results owned by the current authenticated user:
 
function read(query, user, request) {    
    query.where({        
        owner: user.userId
     });    
    request.execute();
}
 

You can also set up scheduled scripts, which run on a schedule. On the Schedule page of the portal, click Create a Scheduled Job to define a scheduled job.

Creating a Scheduled Job

Once you've define a scheduled job, you can access it in the portal to enter script code and enable or disable the job.

Setting a Job's Script Code

Authentication
You can authenticate against Microsoft accounts, Facebook, Twitter, or Google. This involves registering your app for authentication and configuring Mobile Services; restricting database table permissions to authenticated users; and adding authentication to the app.

Get Started with Authentication
Android    iOS    Windows Phone    Windows 8    HTML5


Push Notifications
Push notifications support is provided for each mobile platform. Tutorials acquaint you with the registration and code steps needed to implement push notifications for  each platform,

Get Started with Push Notifications
Android    iOS    Windows Phone    Windows 8    HTML5


Summary
Windows Azure Mobile Services provides a fast and easy mobile back-end in the cloud. It offers the essential capabilities you need in a back end and supports the common mobile platforms. If you're comfortable expressing your server-side logic in node.js JavaScript, this is a compelling MBaaS to consider.