The Dew Review – Intel Next Generation Ultrabook™ with Windows 8: A Final Look

You can read my first two reviews of the Next Gen Ultrabook from Intel here:

  1. The Dew Review – Intel Next Generation Ultrabook™ with Windows 8: Initial Impressions
  2. The Dew Review – Intel Next Generation Ultrabook™ with Windows 8: Playing with Sensors

Intro

This is my third and final review of the Intel Ultrabook. I am happy to say it is not the end of my use of the machine. It has become my primary device for development and all other regular use outside of work. My wife and kids also love using it.

Family Time

I have three daughters. The six-year-old, Luci, likes to practice words and numbers on Mr. Anker Tests. It’s got a variety of Flash-based activities for pre-K and grade school kids. Luci really likes that she can use either the touchpad or the screen to interact with the site. Whenever she sees Windows apps on a non-touch-enabled device, she tends to reach for the screen first. This was not something that happened after using an iPod Touch, iPad or Kindle Fire. I think it’s seeing the same Windows UI that triggers it.

More Windows 8 Development

I have continued to look at the sensor APIs available in WinRT since my last review. I have created a couple other simple proof-of-concept type apps that just reference all the sensors and display and log the output. One of them is similar to my first C#/XAML SensorFun app, but I wrote it in HTML/JavaScript to see how things are different in that type of app. I found that outside of syntax, it’s pretty much the same. That app is called SensorFunJS, and here is a snippet of the JavaScript code.

(function () {
    "use strict";

    WinJS.Binding.optimizeBindingReferences = true;

    var orientationSensor;
    var app = WinJS.Application;

    function id(elementId) {
        return document.getElementById(elementId);
    }

    function onOrientationChanged(e) {
        switch (e.orientation) {
            case Windows.Devices.Sensors.SimpleOrientation.notRotated:
                id('orientationElement').innerHTML = "Not Rotated";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.rotated90DegreesCounterclockwise:
                id('orientationElement').innerHTML = "Rotated 90 degrees";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.rotated180DegreesCounterclockwise:
                id('orientationElement').innerHTML = "Rotated 180 degrees";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.rotated270DegreesCounterclockwise:
                id('orientationElement').innerHTML = "Rotated 270 degrees";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.faceup:
                id('orientationElement').innerHTML = "Face Up";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.facedown:
                id('orientationElement').innerHTML = "Face Down";
                break;
            default:
                id('orientationElement').innerHTML = "Unknown orientation: " + e.orientation;
                break;
        }
    }

    app.onactivated = function (activationArgs) {
        if (activationArgs.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
            
            orientationSensor = Windows.Devices.Sensors.SimpleOrientationSensor.getDefault();
            orientationSensor.addEventListener("orientationchanged", onOrientationChanged);
            
            WinJS.UI.processAll();
        }
    };
    
    app.start();
})();

Next, I found an article on Code Project with a Windows 8 WinForm app referencing the WinRT libraries and using the Sensor API. This same C# code could be used behind a WPF desktop application on WIndows 8. I plan on taking the ideas in this project to create my own library that can be shared across Windows 8 desktop applications. Here’s a sample of the code from Yvan’s article.

private void SensorListener()
{
    // Monitor accelerometer events.
    if (_accelerometer != null)
    {
        _accelerometer.ReportInterval = 0; // default
        _accelerometer.ReadingChanged += AccelerometerOnReadingChanged;
        _accelerometer.Shaken += (s, a) => _shaken++;
        Log("Shake activity will be monitored.");
    }

    // Monitor compass events.
     if(_compass != null)
    {
        _compass.ReportInterval = 0; // default
        _compass.ReadingChanged += CompassOnReadingChanged;
    }

    // Monitor gyro events.
    if(_gyrometer != null)
    {
        _gyrometer.ReportInterval = 0; // default
        _gyrometer.ReadingChanged += GyrometerOnReadingChanged;
    }

    // Monitor light sensor events.
    if (_light != null)
    {
        _light.ReportInterval = 0; // default
        _light.ReadingChanged += LightOnReadingChanged;
    }

    // Monitor position sensor events.
    if (_geolocator != null)
    {
        _geolocator.ReportInterval = 1000;
        _geolocator.MovementThreshold = 1;
        _geolocator.DesiredAccuracy = PositionAccuracy.High;
        _geolocator.StatusChanged += GeolocatorOnStatusChanged;
        _geolocator.PositionChanged += GeolocatorOnPositionChanged;
    }

     // Monitor NFC proximity events.
     if (_proximity != null)
    {
        _proximity.DeviceArrived += ProximityDeviceArrived;
        _proximity.DeviceDeparted += ProximityDeviceDeparted;
    }
            
    // The sensor loop.
    while (true)
    {
        if (_stopping)
            return;
        Thread.Sleep(0); // Defer to other threads that need cycles.
    }
}

As you can see, the code is no different than that of a WinRT app.

Intel has a really good article titled “Using Windows 8 WinRT API from desktop applications.” I highly recommend checking that out if you are developing desktop applications for Windows 8. There are a lot of great (and simple to use) APIs in WinRT. Having the ability to leverage them in our desktop apps is really exciting.

Sensors in the Real World

As far as the usefulness of sensors in real world applications, I think the biggest opportunity lies in game development. There could also be some simulator and health care related applications for some of these apps as well.

I am in the early stages of creating an app called Steady Hands Challenge. You can read my overview of the app on Code Project. Basically, you hold the Ultrabook on the palms of your hands, and the app will use charts on the screen to instruct the user which way to tilt the Ultrabook. The closer you keep the actual X/Y/Z lines to the target lines, the higher your score. Any shaking detected by the accelerometer will result in a penalty. Although I originally envisioned this WPF app as a sort of game, I could see how something similar could be used to gamify physical therapy. As long as your not worried about patients dropping your Ultrabook.  Smile

A Final Wrap Up

As I have repeatedly stated, I really have enjoyed developing on this machine. I truly believe that Ultrabooks with Windows 8 are the perfect developer machine today. They provide the power and speed needed to run multiple instances of Visual Studio or any other IDE. The touch screen and sensors also eliminate the need to have a separate tablet for testing your apps. I can write apps that use complex gestures and test with a simple F5. This saves time, money and headaches.

My name is Alvin Ashcraft, and I approve this Ultrabook.

 

Disclosure of Material Connection: I received one or more of the products or services mentioned above for free in the hope that I would mention it on my blog. Regardless, I only recommend products or services I use personally and believe my readers will enjoy. I am disclosing this in accordance with the Federal Trade Commission’s 16 CFR, Part 255: “Guides Concerning the Use of Endorsements and Testimonials in Advertising.”

 

The Dew Review – Intel Next Generation Ultrabook™ with Windows 8: Playing with Sensors

My ‘Initial Impressions’ review of the Next Generation Intel Ultrabook is available here:

The Dew Review – Intel Next Generation Ultrabook™ with Windows 8: Initial Impressions

Now that I have had a couple of weeks to install some Windows Store apps, various development tools, and generally put the Ultrabook through its paces, I want to provide an update.

General Use

As I said in the last review, this is preview hardware from Intel. This model will never hit retails shelves and was built so developers like myself could take advantage of the sensor and touch technology that will soon be available in most tablets and Ultrabooks.

That said, this is still a machine I could use for my every day development. It’s faster than the other development PCs I use, and has been very stable. That is a testament to both Intel’s hardware and Windows 8. I won’t turn this into a Windows 8 review, but I disagree with anyone who wants to call it Microsoft’s next Vista.

I have not found any games that make good use of all the sensors in this Ultrabook. I am hoping there will be some released before writing my final review. The GPS works great with Maps app included in Windows 8. I’m sure it won’t be long before Garmin, Google and Nokia all have their own map apps in the Windows Store.

Development

As I said, developing on Intel’s Ultrabook is a dream. As I do with most notebooks, I connected my external mouse and keyboard to enhance the experience. I am not a big fan of using mobile keyboards and touchpads for extended development sessions. Windows 8 works great with the Microsoft Touch Mouse I bought last year.

So far I have used Visual Studio 2010, Visual Studio 2012, Microsoft WebMatrix, Expression Blend and JetBrains WebStorm on the Ultrabook. They all run smoothly with no hangs or stutters. I have been using ReSharper in VS2010 and Telerik JustCode in VS2012 because I know that a plugin-free Visual Studio instance does not provide a real-world test of performance.

Sensor Fun

I created a Windows Store app with C# and XAML to explore the sensor API available to WinRT developers in Visual Studio 2012. It is a simple app called Sensor Fun.

Sensor Fun

The Windows contains eight TextBoxes. One for each sensor’s events that I capture.

  • Accelerometer
  • Accelerometer Shaken
  • Compass
  • Gyrometer
  • Inclinometer
  • Light Sensor
  • Orientation
  • Simple Orientation

When a sensor event fires, the data captured is appended to the text in the corresponding TextBox. It also writes all the results out to a log file in Isolated Storage. Here is a code sample from one of the event handlers.

private void accelerometer_ReadingChanged(Accelerometer sender,
                                          AccelerometerReadingChangedEventArgs args)
{
    coreDispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        string text = String.Format("{0} / {1} / {2} - {3}rn", 
                                    args.Reading.AccelerationX, 
                                    args.Reading.AccelerationY, 
                                    args.Reading.AccelerationZ, 
                                    args.Reading.Timestamp);
        Utilities.Logger.LogData(text);
        AccelerometerText += text;
    });
}

Each sensor has a ReadingChanged event that returns the current data in a Reading object. You can find the details of each sensor’s Reading data on MSDN.

I found the API very intuitive and it works great with all of the advanced sensors on this Ultrabook. Now I just need that million-download idea to build my next app.  Smile

If you want to download the source code for Sensor Fun, you can get it here.

The Next Review

In a couple of months, I will return with my final thoughts and recommendations. During that time, I hope to try out a few more apps and games that make use of the sensor capabilities of the Ultrabook. I will also continue to investigate the options they provide developers, perhaps through sensor API available to C++ developers.

If you have any ideas or thoughts about what you would like to see in my final review, please leave a comment.

Thanks!

 

Disclosure of Material Connection: I received one or more of the products or services mentioned above for free in the hope that I would mention it on my blog. Regardless, I only recommend products or services I use personally and believe my readers will enjoy. I am disclosing this in accordance with the Federal Trade Commission’s 16 CFR, Part 255: “Guides Concerning the Use of Endorsements and Testimonials in Advertising.”

 

The Dew Review – Intel Next Generation Ultrabook™ with Windows 8: Initial Impressions

Intel Ultrabooks have been around for a little while now. They are thin, light, powerful and (until now) run Windows 7. With the official Windows 8 launch coming in less than 60 days, Intel is readying the next generation of Ultrabooks. These devices will feature similar form factors and power as their predecessors. However, they will have new hardware inside to take advantage of the capabilities of Windows 8.

Last week I received an Ultrabook from Intel. I will be running it through its paces from a developer’s perspective over the next several months. As I have more time to spend with the Ultrabook, I will be publishing additional reviews with my more information around how Windows 8 developers can use this type of device to develop Windows 8 Modern UI style apps. This particular device will not be made available for purchase. It is a proof of concept from Intel. The only manufacturer branding on it is Intel’s, as you can see from this shot of the lid.

WP_000397

Hardware and Form Factor

As one would expect from an Ultrabook, this computer is thin, light and fast. On the outside it’s got a mini HDMI port, a pair of USB 3.0 ports, an HD webcam and a 13.3” multi-touch display. Inside, it’s rockin’ an Intel Core i7  CPU running at 2.00 GHZ, 4 GB of DDR3L RAM, a 180 GB SSD hard drive, and the following specifications (to name just a few):

  • 802.11 b/g/n WiFi
  • Bluetooth
  • NFC
  • Multi-Touch Pad
  • Sensors galore (see below)

WP_000401WP_000400

Windows 8, Sensors & Advanced Features

The machine came with the Windows 8 Release Preview (64 bit) pre-installed. Now that Windows 8 is released to manufacturing (RTM) and available to MSDN subscribers, I am hoping to install the final bits for future reviews. However, I have to wait for confirmation from Intel to ensure the included drivers are all compatible with RTM.

Most new tablets and Ultrabooks running Windows 8 are going to have a slew of sensors. Here are the sensors and other advanced features included in this proof of concept device:

  • Accelerometer
  • Magnetometer
  • Gyro
  • Ambient Light Sensor
  • GPS
  • NFC
  • Multi-Touch (display and touchpad)

start screen dev tools

In future reviews, I will write some sample apps to take advantage of this advanced hardware.

Getting Started

I have been using Windows 8 on other machines and virtual machines, however none of them have touch screens. I have to say that using Windows 8 on a clam shell form factor with touch feels very natural to me. The physical keyboard is great for desktop apps, obviously. When using modern Windows 8 style apps, I found myself instinctively using the touch screen in combination with the keyboard and touchpad.

The hardware is very fast and smooth in every app I have used so far. Here are a few things I have installed to evaluate the machine.

Windows Store Apps

  • Evernote
  • Fresh Paint
  • Slacker
  • Rowi
  • Fruit Ninja
  • Box
  • OneNote MX

Desktop Apps

  • Visual Studio 2012 RC
  • SQL Server 2012 Developer Edition
  • JetBrains WebStorm
  • Eclipse (for Android development)
  • Paint.NET
  • Git for Windows

Coming Up

In about two weeks, after I have had some time to develop on the Intel Ultrabook, I will write a more in-depth review. If the first few days are any indication, I think I will love building apps on this computer. I cannot wait to dive in!

 

Disclosure of Material Connection: I received one or more of the products or services mentioned above for free in the hope that I would mention it on my blog. Regardless, I only recommend products or services I use personally and believe my readers will enjoy. I am disclosing this in accordance with the Federal Trade Commission’s 16 CFR, Part 255: “Guides Concerning the Use of Endorsements and Testimonials in Advertising.”