Tuesday, January 28, 2014

CES2014: ORIGIN PC Announces Amazing Customizable PC Case

ORIGIN PC is known for their awesome high-performance PCs. Today, ORIGIN PC has announced two amazing new case designs that will serve as the backbone of their MILLENIUM (mid-tower) and GENESIS (full-tower) PCs. What makes these new cases newsworthy is the combination of striking industrial design, customizability, and extensibility. I had the opportunity to see these new PCs just before CES 2014 started when CEO Kevin Wasielewski gave me a private tour of this new lineup of ORIGIN PCs. I left wanting one!

ORIGIN-ORANGE-LOGO-1200
Bold and clean lines define the look of the new MILLENIUM and GENESIS PCs from ORIGIN (Click/Tap to enlarge)

ORIGIN PC has taken a different approach with the design of this new PC case system. The only difference between the MILLENIUM and GENESIS PCs is the expansion base which can accommodate additional radiators for liquid cooling, or extra drives (up to 12 3.5” drives or 24 2.5” drives). It’s easiest to see the difference when you look at the MILLENIUM and GENESIS cases side-by-side:

ORIGIN-GENESIS-MILLENIUM-SxS-large-1200
MILLENIUM mid-tower case (left) next to GENESIS full-tower case (right) - (Click/Tap to enlarge)

If you own a MILLENIUM PC, you can always upgrade your PC to become a GENESIS by ordering the full-tower expansion kit. Here’s what the expansion base looks like setup for cooling:

ORIGIN-PC-GENESIS-bases-1200
Expansion base setup for dual cooling radiators - (Click/Tap to enlarge)

And here’s what the expansion base looks like setup for storage:

ORIGIN-lower-storage-1200
Expansion base can be setup to hold up to 24 2.5” drives - (Click/Tap to enlarge)

Here is a summary the unique and notable features included in the MILLENIUM and GENESIS cases:

  • Variable Mounting system enables motherboard to be oriented four different ways so that you can optimize the placement and visibility of your PC’s internal components
  • 4-Way NVIDIA SLI support in any orientation (using Variable Mounting)
  • Dual-Hinge front door enables left-to-right or right-to-left opening directions
  • 5 hot-swappable hard drive bays with optional locking mechanism
  • Full-tower expansion kit enables MILLENIUM case to be converted to GENESIS case
  • Smart Fan Controller allows you to easily toggle between full manual control of fans and motherboard fan control
  • Remote controlled LED lighting system

To learn more about the new MILLENIUM and GENESIS desktop PC cases, please visit www.originpc.com.

Find me on twitter! @GavinGear



via The Windows Blog http://ift.tt/U0CK3V

HP announces powerful new Z1G2 all-in-one workstation

Today at CES HP showcased the second generation of the world’s first all-in-one workstation. This device builds on the success of the first-generation HP Z1, to include a 27-inch diagonal touchscreen display, lots of power, and a myriad of other features that make this device a real workhorse capable of running the most graphic-intensive and demanding programs.

Let’s first dive into this exciting new form factor. From the pictures, below you can see the compact and slim design. The Z1 G2 features a stunning 27-inch diagonal touchscreen display that is ideal for interacting with 3D models, maps, or other interactive programs. You will be able to take full advantage of Windows 8.1 features and functionality.

The Z1 G2 also has the awesome ability to recline to a position that is most comfortable for you, or to lay flat parallel to your table or desk for servicing. HP has really done some great work in the ergonomics and device flexibility space. If you don’t believe me, check out the HP ENVY Recline.

image   image 

If more power is what you crave, then power you shall get with the Z1 G2. Powered by an Intel 4th generation Xenon and Core processors, this all-in-one is ready for whatever program you can throw at it (and of course, many more than one at a time). It also pack a NVIDIA Mobile Quadro GPU for excellent graphics performance.

The need for big power, is often correlated to producing big files, but rest assured knowing that you will be able to connect to a flash drive and transfer them up to four times faster than USB 3.0 with the Thunderbolt 2.0 ports located on the side of the Z1 G2.

HP has done a magnificent job with the Z1 G2 and I am personally super excited to get to check one out for myself. If you are interested too, visit HP’s website for more information and expect to see the Z1 G2 shipping in the US later this month.



via The Windows Blog http://ift.tt/U0CK3V

New Poster: Windows Server 2012 R2 Private Cloud Storage and Virtualization

Another fantastic poster is out.  This one is focused on the storage technology in Windows Server 2012 R2 that you will want to use for private cloud environments:

clip_image001

You can download it here: http://ift.tt/1dV6yJt

And it has also been included in the Server Posterpedia application: http://ift.tt/UGwGbG 

Cheers,
Ben



via Ben Armstrong http://ift.tt/123ZnsQ

Managing Windows Server 2012 Hyper-V from Windows 8.1

In the past we have always required that you use Hyper-V Manager on the same version of Windows as the version of Windows that you are using to run Hyper-V (i.e. Use Windows 7 to manage Windows Server 2008 R2, use Windows 8 to manage Windows Server 2012).  But we have made a change with Windows 8.1.

You can use Hyper-V manager on Windows 8.1 (or on Windows Server 2012 R2) to manage either Windows Server 2012 R2 or Windows Server 2012.  In fact, you can connect to both at the same time if you want to.

What happens is that when you connect to a new instance of Hyper-V, we check to see what the version is that we are connecting to.  If it is Windows 8 / Windows Server 2012 we will load the UI for that version of Hyper-V.  If it is Windows 8.1 / Windows Server 2012 R2 we will load the UI for that version of Hyper-V.

Here you can see an instance of Hyper-V manager where I have connected to a number of servers:

image

Above; I have selected “MELPOMENE” – which is a Windows Server 2012 R2 instance of Hyper-V.  You can tell that this is case because we are using the term “checkpoints”.  Below; I have selected “POLYHYMNIA” – which is a Windows Server 2012 instance of Hyper-V.  Here you can see that we are using the term “snapshots”.

image

This all happens automatically, with no configuration needed.

One issue that you should be aware of is that there are now two versions of VMCONNECT.EXE.  Hyper-V Manager will always launch the correct instance for the server you are connected to – but, if you start VM Connect directly you should know that "C:\Windows\System32\vmconnect.exe” is the Windows 8.1 / Windows Server 2012 R2 version of VM Connect.  While “C:\Program Files\Hyper-V\6.2\vmconnect6.2.exe” is the Windows 8 / Windows Server 2012 version of VM Connect.

Cheers,
Ben



via Ben Armstrong http://ift.tt/123ZnsQ

Local VM Management on Hyper-V Server with FreeRDP

A couple of weeks ago I blogged about the Veeam RDP virtual appliance for Remote Management of Hyper-V Server.  Since then I have been inundated with questions, opinions and information about different solutions for managing a Hyper-V server.  I have been spending some time looking at the various options – and one of my favorites has been FreeRDP.

To give some more context – if you are using the free version of Hyper-V Server (you can download it from here: http://ift.tt/JdRv00) you can use the Hyper-V management tools remotely from a full installation of Windows.  But if you login locally to the server all you have is PowerShell.

Now, you can do almost everything through PowerShell.  Almost.  The one thing you cannot do is interact with a virtual machine directly.  Luckily – FreeRDP is a simple project that, amongst other things, supports connecting to Hyper-V virtual machines.

To test this out – I created a new Hyper-V Server – and attempted to create and configure the server without using any remote management tools.  After doing the initial server configuration – I used PowerShell to create a virtual switch:

get-netadapter | new-vmswitch -name "Virtual Switch" -AllowManagementOS $true

(Note, my server only had a single network adapter – so I cheated and made this command simple).

Then I created and started a virtual machine:

New-VM -Name "Test 1" -MemoryStartupBytes 1GB -Generation 1 -BootDevice LegacyNetworkAdapter -Path "C:\VMs\Test 1" -SwitchName "Virtual Switch" -NewVHDPath "C:\VMs\Test 1\VHD.vhdx" -NewVHDSizeBytes 40GB

Start-VM "Test 1"

Now we come to the part where I usually need to use a remote management solution.  I downloaded a Windows version of FreeRDP from here: http://ift.tt/1csja98 and copied it to C:\FreeRDP on my Hyper-V Server.  To use FreeRDP to connect to a virtual machine – you need to know the virtual machine ID number.  To get this I ran:

Get-VM "Test 1" | Select ID

Which gave me a virtual machine ID of a0a23c9b-11ec-4740-82c5-2e0cf55674f4 (you will get a different one for your virtual machines). Then I  ran:

C:\FreeRDP\wfreerdp.exe /v:localhost:2179 /vmconnect:a0a23c9b-11ec-4740-82c5-2e0cf55674f4

Which worked!

However, I wanted a more elegant solution than this.  So I decided to write a script Cmdlet that would allow me to just provide the virtual machine name that I wanted to connect to:

  function Start-VMConnect   
     {  
     
     [CmdletBinding()]  
     param  
        (  
        # CMDLet takes a single parameter of VMNames.   
        # Can be single or plural, can come from the pipeline.  
     
        [Parameter(Mandatory=$True,ValueFromPipeline=$True)]$VMnames  
        )  
     
     begin   
        {  
        # Path to the binary for FreeRDP  
     
        $FreeRDPPath = "C:\FreeRDP\wfreerdp.exe"  
        }  
     
     process   
        {  
        foreach ($VMname in $VMnames)   
           {  
           if ($pscmdlet.ShouldProcess($VMname))   
              {  
              # Get the ID of the virtual machine  
              # If a VM object has been provided - grab the ID directly  
              # Otherwise, try and get the VM object and get the ID from there  
     
              if ($VMname.GetType().name -eq "VirtualMachine")  
                 {$VMID = $VMname.ID}  
              else  
                 {$VMID = (get-vm $VMname | Select -first 1).ID}  
     
              # Start FreeRDP  
              start-process $FreeRDPPath -ArgumentList "/v:localhost:2179 /vmconnect:$($VMID)"  
              }  
           }  
        }  
     
     end {}  
     }  

This Cmdlet (Start-VMConnect) takes either a virtual machine name or a virtual machine object and then connects to it with FreeRDP.  As this is actually a script Cmdlet – you need to use Import-Module to load it:

image

Once it is loaded you can just use Start-VMConnect and connect to the virtual machine:

image

Very cool!  I liked this option most of everything I tried – as it was the smallest / lightest weight solution that solved all the problems that I had.

Thanks to Alessandro Pilotti, from Cloudbase Solutions, who gave me the pointers to this solution.

Cheers,
Ben

P.S. Here is a copy of my script Cmdlet:



via Ben Armstrong http://ift.tt/123ZnsQ

Sunday, December 22, 2013

Working with files across the local PC and SkyDrive

Tablet devices, now omnipresent, have enabled new levels of mobility and content creation on the go. Today, consumers want more from their tablets: the ability to access files from any device, and the affordance to do so without running out of disk space on these low-storage devices. As a result, many consumers and developers have turned to cloud storage services to store files and deliver a continuous experience across devices.

With Windows 8.1, SkyDrive is built at the core of Windows, which gives both consumers and developers unprecedented flexibility for achieving these goals. Consumers can easily save and open files on SkyDrive directly from their apps, by using the file picker or adding content to their libraries. Libraries seamlessly aggregate files from the local PC and SkyDrive, which gives apps a common entry point to access all of the user’s content.

This post highlights key guidelines and best practices for apps to make the best use of SkyDrive files they interact with. A SkyDrive-aware app reacts to network connectivity changes and highlights files that are unavailable as it displays the contents of a library. It’s also optimized to be fast, even when it accesses files on the cloud, by taking advantage of file information cached locally. For instance, it leverages cached and streamed thumbnails that avoid large downloads when displaying pictures.

In this post, I’ll show how you can update your app to be SkyDrive-aware quickly, without adding complexity to your existing code. More specifically I’ll walk you through:

  1. Basics of interacting with the user’s files in Windows 8.1.
  2. Overview of SkyDrive integration into the OS and the WinRT data model.
  3. Making sure your app works great both online and offline.
  4. Using thumbnails when displaying images for best performance.

A few reminders

If you’ve read the post I wrote on Creating beautiful views for local files or made apps for Windows 8, you might already be familiar with the methods and guidelines for accessing your users’ files with WinRT APIs. As a brief reminder, there are two main paths to acquire these files within your app: capabilities and the file picker.

  • Library capabilities are used for apps whose core competency is file collections (for instance a photo gallery or music playback app).
  • The file picker (and to some extent the file activation extension) is used for point-in-time interactions with the user’s content.
    • Starting a file flow, like editing an existing file.
    • Exporting content created by your app into the user’s file space.
      • The file save picker can be used for a one-off save.
      • The folder picker can be used to streamline this process if exporting is a common action and you want to preserve access to a specific folder to programmatically export multiple files over time.

The Xbox Music app uses the Music Library capability

Figure 1: The Xbox Music app uses the Music Library capability

The Reader app uses the file picker to open or save files

Figure 2: The Reader app uses the file picker to open or save files

In Windows 8.1, apps that have a Library capability can extend the scope of content they have access to by using the StorageLibrary management APIs. These brokered APIs enable the same functionality as the Library properties dialog in the File Explorer, where users can add and remove folders from their libraries.

Library properties dialog where users can add and remove folders from their libraries

Figure 3: Library properties dialog

This new functionality enables users to point their media collection apps to the folders that contain their photos and music directly within the context of the app. A great example of how to use these APIs is shown in the Music app.

The Music app provides an entry point for users to add more music to their collection

Figure 4: The Music app provides an entry point for users to add more music to their collection

Clicking the "Add" button invokes the library location picker

Figure 5: Clicking the "Add" button invokes the library location picker

This experience is very simple to create using the RequestAddFolderAsync API. This API invokes a location picker in which the user can select a folder to add to the library. The location picker directly surfaces any errors, so your app only needs to handle cancellation. This can all be done with a few lines of JavaScript:

  // Displays the location picker to request the user select a folder to be
// added to the Music library.
function addFolder() {
Windows.Storage.StorageLibrary.getLibraryAsync(Windows.Storage.KnownLibraryId.music).then(function (library) {
return library.requestAddFolderAsync();
}).done(function (folderAdded) {
if (folderAdded !== null) {
// a folder was added to the Music library
} else {
// the operation was canceled
}
});
}

You can also do this in C#:
  private async void AddFolder() 
{
StorageLibrary picturesLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Music);
StorageFolder folderAdded = await musicLibrary.RequestAddFolderAsync();
if (folderAdded != null)
{
// a folder was added to the Music library
}
else
{
// the operation was canceled
}
}
It’s also possible for your app to use files without interacting with the user’s own files and folders – for instance, if your app itself creates files to keep track of content created by the user within the app. These could be standard images, audio files or custom formats for project-like management (using XML for instance). For any such content that exists mostly in the context of your app and wouldn’t be useful to other apps, use the ApplicationData folders instead.

An example of this pattern is the Sound Recorder app. Because a user’s recordings make the most sense in context of the app that recorded them, the app keeps the files within the app data location. This provides a better experience than saving files to the Music library, which exposes them in apps like Xbox Music, where they wouldn’t be expected. However, users might want to share these files with teammates or edit these files in an audio editing app, which are more point-in-time interactions. For these scenarios, use the export mechanisms described above.

The Sound Recorder app keeps all recordings in ApplicationData

Figure 6: The Sound Recorder app keeps all recordings in ApplicationData.

File access and SkyDrive

A major addition to Windows 8.1 is the deep integration of SkyDrive directly in the OS. Users can now store files on SkyDrive just like in any file system folder, and manage their files regardless of network connectivity. The system takes care of syncing the files in the background and keeps the experience completely transparent to users.

SkyDrive is present throughout the system:

  • The SkyDrive app lets users browse and manage files both online and offline.
  • SkyDrive is now a built-in file picker scope so users can import SkyDrive files in your apps and export them back to SkyDrive.
  • File Explorer lets users interact with SkyDrive like any other folder.

    Managing files in the SkyDrive app

Figure 7: Managing files in the SkyDrive app.

SkyDrive in the file picker

Figure 8: SkyDrive in the file picker.

SkyDrive in File Explorer

Figure 9: SkyDrive in File Explorer.

As a developer, think of SkyDrive files as “just files” – they use the same StorageFile interface as every other file on the system and can be manipulated in much the same way. Under the hood, however, there can be some differences between local files and SkyDrive files. In Windows 8.1, we introduced the concept of smart files. A smart file is a file that appears on the system like a regular file but only contains metadata and thumbnails, not full file contents. The contents for the file are located on SkyDrive and can be downloaded as needed. Smart files help reduce the amount of storage needed to display files from SkyDrive on your device.

This might sound familiar if you’ve used the Windows 8 file picker contract. In this contract, users can open the file picker from App A and select a file from App B. App A receives a StorageFile, but under the cover, this file might be a stream-backed file whose contents are downloaded on the fly from the location where the actual file is stored. Smart files on SkyDrive function in a similar way, where their contents are downloaded transparently when a file is opened. What this means is that you won’t have different code paths for local files and SkyDrive files. However, some file operations such as editing metadata or copying might take a bit longer to perform because they require a download to occur rather than simply accessing bits on disk.

Tip: Desktop apps can also access smart files, as long as they use the APIs that support them. Smart files can be identified by the LocallyIncomplete attribute, which reflects that content is not all available locally. Desktop apps can detect this attribute and should use the IStream interface to manipulate these files. Because many Win32 apps use other APIs that don’t abstract the concept of smart file and risk encountering failures when using these files, the system marks them with the “system hidden” attribute to avoid accidental access.

How and how much to use SkyDrive is a choice that is left to the user’s discretion: in Windows 8.1, access to files on SkyDrive is brokered so that users are always in control. For this reason, there is no purely programmatic way to access to a user’s SkyDrive folder. Rather, your app will most often encounter SkyDrive files because the user selected a file from SkyDrive in the file picker to use in your app, or because a folder from SkyDrive was added to a library that your app can access.

Great experiences online and offline

We’ve seen that in most cases a file on SkyDrive behaves the same as a local file. There are some exceptions to that rule when the user has no internet connectivity. Specifically, when the user is offline, smart files cannot be downloaded on demand, and will exhibit limited functionality. An app that is SkyDrive-aware is able to recognize these scenarios and provide clear feedback to the user in its UI, and retain as much functionality as possible while offline.

The SkyDrive app differentiates offline items but lets users move or delete them

Figure 10: The SkyDrive app differentiates offline items but lets users move or delete them.

The WinRT API provides all the tools for apps to create experiences that are as seamless as possible regardless of network connectivity. A key rule of thumb when dealing with SkyDrive is that you should only have to code one time for all kinds of files, rather than have to differentiate local files and files on SkyDrive. A typical example is file availability: all files on the system expose the IsAvailable property, which lets you know if the file contents can be accessed at the point where the file is retrieved.

Values of the IsAvailable property for different scenarios

Table 1: Values of the IsAvailable property for different scenarios.

The metered connection setting is taken into account by the API

Figure 11: The metered connection setting is taken into account by the API.

Some operations, like those listed next, can be performed for all files regardless of network connectivity. In this case, you don’t have to check the IsAvailable property before performing them:

Other operations fail if the file isn’t available. Before allowing any of these operations to be performed in your app, check the value of IsAvailable, and disable the command for any file that isn’t available. Users get a better experience if your app anticipates issues and provides early indications of that state, and prevents any action that would result in an error. Operations that require a file to be available include:

  • Opening file contents.
  • Editing a file.
  • Copying a file or moving it outside of SkyDrive.

The IsAvailable property does all the legwork of checking if a file is cached locally, if the user is connected and if the network is metered or not, so that you don’t have to worry about any of these factors when you write your code. While this is very convenient, it doesn’t mean that you should stop handling errors! IsAvailable is optimized to always be fast to retrieve rather than always up to date, which means that it’s not a 100% guarantee that a file will be available when you try to access it (for instance, if the user goes offline shortly after you check the property). For this scenario, the ERROR_NO_NETWORK error was added to the WinRT API so your app can tell if a file operation failed for a reason related to connectivity.

You can use IsAvailable as a cue to visually differentiate items that aren’t available in your UI. Use ghosting (such as the 40% opacity filter shown in the SkyDrive app screenshot above) and typography (like a “Currently unavailable” string on the file) to make items stand out. Additionally, any actions that can’t be performed on the file while offline should be shown disabled in the app bar or context menu.

When using file queries, any changes to the IsAvailable property fires the contentschanged event, which gives you an opportunity to refresh your UI with the up-to-date state of each item. Here’s how to do this in JavaScript:

  picker.pickSingleFolderAsync().done(function (folder) {
if (folder) {
// Query the folder.
var query = folder.createFileQuery();
// Make sure to refresh the view when the contentschanged event is fired
var listener = function () {
displayItems(query);
};
query.addEventListener("contentschanged", listener);
// Make sure to unregister the listener when the user is no longer viewing this page
WinJS.Navigation.addEventListener("navigated", function () {
query.removeEventListener("contentschanged", listener);
});
// Display the initial view
displayItems(query);
}
});

function displayItems(query) {
query.getFilesAsync().done(function (files) {
// Display file list with availability.
files.forEach(function (file) {
// Create an entry in the list for the item.
var list = document.getElementById("itemsList");
var listItemElement = document.createElement("li");
listItemElement.textContent = file.name + " (";

// Show if the item is available (SkyDrive items are available when
// online or when they are marked for "always available offline").
if (!file.isAvailable) {
listItemElement.textContent += "not ";
}
listItemElement.textContent += "available)";

list.appendChild(listItemElement);
});
});
}
A similar implementation in C#:
  StorageFile folder = await filePicker.PickSingleFileAsync();
if (folder != null)
{
// Query the folder.
auto query = folder.CreateFileQuery();

// Make sure to refresh the view when the contentschanged event is fired
var eventHandler = new TypedEventHandler<IStorageQueryResultBase, object>( (IStorageQueryResultBase sender, object args) =>
{
Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
displayItems();
});
});
query.ContentsChanged += eventHandler;

// Make sure to unregister the listener when the user is no longer viewing this page
thisPage.OnNavigatedFrom += () =>
{
query.ContentsChanged -= eventHandler;
}

// Display the initial view
displayItems();
}

private async void displayItems()
{
IReadOnlyList<StorageFile> files = await query.GetFilesAsync();
// Display file list with availability
foreach (StorageFile file in files)
{
string text = "File name: " + file.Name + " (";

// Show if the item is available (SkyDrive items are available when
// online or when they are marked for "always available offline")
if (!file.IsAvailable)
{
text += "not ";
}

text += "available)";

print(text);
}
}
Tip: When using a ListView with data binding to a file query, use IsAvailable in your item renderer or template to customize the appearance of offline items. You can see an example of this with the HiloJS app on CodePlex.

There are a few additional things you can do to provide the best experience in your app, regardless of where the files you handle are located:

  • When opening a file, show indeterminate progress in your UI until the operation completes.
    • This indicates that your app is still responsive, even if the file needs to be downloaded over a slow network.
  • Allow users to cancel file operations.
    • Cancellation is useful for operations like opening or copying a file on SkyDrive, in case network connectivity is slow and users change their minds. The WinRT async APIs for file access all support cancellation.

Finally, while we’ve seen earlier that it’s not generally necessary for your app to differentiate SkyDrive files and local files, there may be cases where it’s relevant for your app to differentiate files based on their origin. For instance, you might want to show a user’s cloud items separately from their local items to show that they roam, whereas local items don’t. In this case, you can use the ID of the new Provider property to identify the source of a file or folder. In Windows 8.1, this ID can take one of four values:

  • computer (files on the local PC or connected hardware like USB drives)
  • SkyDrive (files on SkyDrive)
  • network (files on the local network)
  • app (for files picked via the file picker contract)

Tip: A StorageProvider has a fixed ID and a localized DisplayName. Make sure to use the ID for programmatic operations like comparison (ordinal-based and case-insensitive) or filtering, and the DisplayName for UI. In general, also avoid hard-coding IDs because new IDs might become available in the future.

This is how to use this API in JavaScript:

  picker.pickSingleFolderAsync().done(function (folder) {
if (folder) {
// Query the folder.
var query = folder.createFileQuery();
query.getFilesAsync().done(function (files) {
// Display file list with provider.
files.forEach(function (file) {
// Create an entry in the list for the item.
var list = document.getElementById("itemsList");
var listItemElement = document.createElement("li");
listItemElement.textContent = file.name;

// Show the item's provider.
listItemElement.textContent += ": On " + file.provider.displayName;
});
});
}
});
And in C#:
  StorageFolder folder = await picker.PickSingleFolderAsync(); 
if (folder != null)
{
// Query the folder.
auto query = folder.CreateFileQuery();
IReadOnlyList<StorageFile> fileList = await query.GetFilesAsync();

// Display file list with storage provider and availability.
foreach (StorageFile file in fileList)
{
// Create an entry in the list for the item.
string line = file.Name;

// Show the item's provider (This PC, SkyDrive, Network, or Application Content).
line += ": On " + file.Provider.DisplayName;

OutputPanel.Children.Add(CreateLineItemTextBlock(line));
}
}

A new way to display images

Displaying images from the user’s content is a common way for an app to personalize an experience and provide a richer UI. In most cases, apps simply acquire a file and set it as the source of an image element on their canvas. However, this approach can prove inefficient if you only want to display the image, and your app doesn’t modify the file at all. While editing requires all the file’s data to be available, displaying usually only requires a smaller version of the image to represent on screen.

Many cameras now take photos that are much higher resolution than PC displays, so your app could pay the cost of loading several MB of data unnecessarily. These effects are compounded when accessing files over a network, and can have further negative impact on users if the network is metered. Finally, using this approach with smart files could introduce a new level of complexity in your code around when a file can or cannot be displayed.

To simplify this flow, apps should use thumbnails to display images instead of relying on the full file. Windows maintains an extensive cache of file thumbnails at multiple sizes, and has special thumbnails for smart files, including medium thumbnails that are always available and large thumbnails streamed from the cloud. This means that using a thumbnail to represent an image is a sure way to get the best and fastest available image representation of a file regardless of network connectivity.

In Windows 8.1, the maximum thumbnail size supported by the system locally and from the cloud was increased to 1600px, which is enough for a full-screen preview on many form factors. Additionally, a new API was created to return scaled images at any size, so you can use it as a one-stop-shop regardless of the size you want to display. The API leverages all available thumbnails, and falls back to the actual image if thumbnails cannot satisfy the requested size (or the largest thumbnail found if the file is not available). The returned StorageItemThumbnail object allows you to easily determine if any of these fallbacks were used.

Here’s how you can use this API in JavaScript:

  file.getScaledImageAsThumbnailAsync(thumbnailMode, requestedSize, thumbnailOptions).done(function (thumbnail) {
if (thumbnail) {
// An image was returned.
if (thumbnail.returnedSmallerCachedSize) {
// The system was unable to obtain an image at the requested
// size, and returned the largest available thumbnail.
}
// You can easily insert it in an img element.
var image = document.getElementById("myImage");
var url = URL.createObjectUrl(thumbnail, { oneTimeOnly: true });
image.src = url;
}
}, function (error) {
// There was an error returning the thumbnail
});

Similarly in C#:

  using (StorageItemThumbnail thumbnail = await file.GetScaledImageAsThumbnailAsync(thumbnailMode, size, thumbnailOptions)) 
{
if (thumbnail != null)
{
// An image was returned.
if (thumbnail.ReturnedSmallerCachedSize) {
// The system was unable to obtain an image at the requested
// size, and returned the largest available thumbnail.
}
// You can easily insert it in an image element.
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(thumbnail);
image.Source = bitmapImage;
}
}
With this API, you now only have to access the original file for editing, which makes sure that your app is as fast as possible and behaves well both online and offline.

Wrapping up

You’ve seen in this post how deeply SkyDrive is integrated in Windows 8.1, and how it blends with the Windows 8 file access model for Windows Store apps. A few new properties make it really easy for your app to become SkyDrive-aware by discovering file availability and origin. Using thumbnails as a proxy for images can also make your app more resilient to changes in connectivity, and enable you to display images faster. Most apps accessing user files can be updated with just a few lines of code, without creating new code paths for files on SkyDrive.

--Marc Wautier, Program Manager, Windows User Experience



via The Windows Blog http://blogs.windows.com/b/

Gospel Topics for Personal and Family Study

The Church is upgrading the Gospel Topics section of LDS.org (topics.lds.org) to provide an enriched experience for personal and family gospel study. In addition to a new landing page, the site has upgraded search capabilities, which now include distinct sites like the Joseph Smith Papers. Individual topic pages are also being upgraded one-by-one as part of a long-term effort […]

via LDS Media Talk http://ldsmediatalk.com

3 Tips to Simplify & Savor the Holiday Season

Here are 3 tips to simplify and savor the holiday season.

via LDS Media Talk http://ldsmediatalk.com

2-year-old LDS Boy is Basketball Star

An LDS boy, 2-year-old “Trick-Shot-Titus,” has become a basketball sensation. Back in February, his dad posted this video on YouTube, and it has been watched nearly 13 million times. When the video went viral, and Titus showed his skills on the Today Show and the Deseret News published this story: “Mormon 2-year-old basketball star becomes famous for […]

via LDS Media Talk http://ldsmediatalk.com

Saturday, November 30, 2013

Creating a Virtual Machine with Hyper-V in Windows 8

Ever wish you had a dedicated machine you could use for testing software or had the ability to run dedicated tasks such as maybe a backup server or media server?  Then creating a Virtual Machine with Hyper-V might be worth a look.  There are many reasons you may want to run VM’s but one of the most […]

The post Creating a Virtual Machine with Hyper-V in Windows 8 appeared first on The Doc's World.



via The Doc's World http://thedocsworld.net

Friday, November 29, 2013

Faulty connectors push Retron 5 game console into early 2014 launch

Everyone who wants to snag Hyperkin's Retron 5 this holiday season may want to look elsewhere for now, because the retro gaming console won't arrive in time for Santa's visit. Unfortunately, Hyperkin scrubbed the (already delayed) December 10th launch date after discovering faulty cartridge connectors in units already packed for shipping. The Retron 5, which we took for a spin at E3 this year, magically combines compatibility with several ancient gaming system cartridges, including those for the NES, SNES, Sega Genesis (plus Master System with a converter) and Game Boy Advance. While we bet this news breaks a lot of retro gamers' hearts, we hope they don't throw out those vintage games just yet. Sure, it'll take time to ensure all units are in working order, but the firm aims to ship out the first consoles within the first quarter of 2014.

Filed under:

Comments

Hyperkin

via Engadget RSS Feed http://www.engadget.com

Engadget's Black Friday 2013 roundup

Black Friday

Don't think that the Black Friday shopping rush this year is all about the PlayStation 4 and Xbox One. We've rounded up a smorgasbord of Thanksgiving week deals that should appeal to tech-savvy shoppers of all stripes, whether they're looking for entry-level smartphones or giant 4K TVs. Hop past the break and you'll find bargains that could please the gadget lovers in your life -- and just might spare you from battling the crowds at the mall.

[Image credit: AP]

Filed under: , , , , , , , , ,

Comments



via Engadget RSS Feed http://www.engadget.com

CyanogenMod Installer pulled from Google Play, lives on via sideloading

The CyanogenMod team made switching from your phone's original Android setup to its own flavor of the OS much easier with paired mobile and desktop installer apps, but now there's one extra step. In a blog post, CyanogenMod states the Google Play Support team contacted it and claims the installer app is in violation of their TOS. This, despite CyanogenMod's insistence that the app's only purpose is to enable ADB on the device, then guide users through connecting it to the desktop app. Despite "hundreds of thousands" of installs for its alternative Android experience, the mobile app is still usable via sideloading, and its installation guide walks users through the necessary steps. Going forward, the CyanogenMod team is submitting its app to Samsung and Amazon's alternative app stores, but interested Android users can download it right now.

Filed under: , , ,

Comments

CyanogenMod Blog

via Engadget RSS Feed http://www.engadget.com

Wacom Cintiq Companion Hybrid review: a pen display that doubles as an Android tablet

Wacom Cintiq Companion Hybrid review: a pen display that doubles as an Android tablet

After months of rumblings about a standalone slate, Wacom finally unveiled not one, but two tablets back in September. On paper, the Cintiq Companion may be the more compelling mobile workstation, just because it runs Windows, but first, we're taking a long, hard look at the Cintiq Companion Hybrid. Whereas the other runs Windows, this one is powered by Android and packs a top-of-the-line Tegra 4 chip to help you get work done on the go. Of course, when tethered to a laptop or desktop machine back in the studio, the unit also serves as a traditional pen display like the Cintiq 13HD -- but with multitouch gestures.

Creative types are already familiar with Wacom's prices, but the real question is whether the ability to use it as a mobile device is worth an even higher premium. With a stablemate that's capable of running a full version of Photoshop, is the Hybrid worth the added investment over the similarly sized 13HD pen tablet? Or are you better off paying more for the Cintiq Companion with Windows instead? %Gallery-slideshow122586%

Filed under:

Comments



via Engadget RSS Feed http://www.engadget.com

Paper airplanes finally get the smartphone remote control they deserve

Thank you, PowerUp. Apparently the last time we had the opportunity to write about paper airplanes was back in 2011, when a Seattle doctor built a tiny one using a da Vinci surgical robot. This time out, it's a Kickstarter project that brings smartphone control to the notoriously staid word of paper airplanes. The gadget's setup is pretty simple, all said. At the front is a Bluetooth module and battery, while the back contains the propeller and rudder. Build a paper airplane, attach the PowerUp up and boom, you've got RC aircraft you can control with your smartphone. Creator Shai Goitein has taken the project to Kickstarter in an attempt to score $50,000 in funding. A pledge of $30 will get one of these little fliers in your hands, come May of next year. That's plenty of time to practice your folding skills.

Filed under:

Comments

Source: Kickstarter



via Engadget RSS Feed http://www.engadget.com

Vizio rounds out its soundbar line with a 54-inch model, teases a new 55-inch TV

Vizio rounds out its soundbar line with a 54-inch model, teases a new 55-inch TV

Vizio already has soundbars designed for smaller TVs (and medium-sized ones too), and now it's back with a flagship model built for bigger screens. This new 54-inch model, available today, brings 103-decibel sound, complete with three channels and a 4-inch deep bass module. Like the smaller models, it also features Bluetooth streaming, and uses DTS audio processing to level out the volume so that you're not jolted off the couch when shows cut to a loud commercial break. It's available today for $300 on Vizio's website, though if you wait a few weeks, you should see it popping up in retail stores, likely with some lower prices in tow.

Additionally, the company is teasing a 55-inch entry-level E-series TV with full-array LED backlighting and local dimming technology, which should allow for both deeper blacks as well as easier viewing in darkened rooms. As it happens, this technology isn't new and in fact, Vizio already sells some entry-level models with full-array backlighting and local dimming. In this case, though, Vizio is touting more dimming zones, as well as newer, more effective version of the dimming technology. Unfortunately, though, the company isn't doing demos right now, so we can't really speak to the difference in quality. What's more, Vizio also hasn't mentioned pricing or availability. So, we'll have to leave this as a tease for now, but we'll follow up when we eventually learn more.%Gallery-slideshow123186%

Filed under: ,

Comments



via Engadget RSS Feed http://www.engadget.com

Rocki turns your old sound system into WiFi-enabled speakers

The Rocki concept has been floating around for a bit, but now the company's ready for the hardware startup rite of passage that is the Kickstarter campaign. The idea's a pretty straightforward one: a module that plugs into the back of an existing sound system via audio jack or RCA, essentially turning it into a wireless speaker system. The little hexagonal Play device streams music over your home network via 802.11b/g/n, which has some notable fidelity and range advantages over Bluetooth. Assuming you've already got some speakers lying around, it's also a fair bit cheaper than investing in a new Bluetooth or WiFi versions. The company is developing an Android app for the Rocki, letting you stream your music to multiple devices (assuming, of course, that you've got multiple Play modules throughout your home), with iOS and HTML5 versions on the horizon. Get in early, and you can snag one for a $45 pledge.

Filed under: ,

Comments

Source: Kickstarter



via Engadget RSS Feed http://www.engadget.com

3D Systems Sense review: a 3D scanner for the masses (almost)

3D Systems Sense review: a 3D scanner for the masses (almost)

If we've crossed paths in the past week, there's a pretty good chance I've scanned you. This extends well beyond the human race, into the realms of animal, vegetable, plush toy and fruit bowl. Some subjects were too small to be scanned, some too fidgety and, in the case of my attempted 3D selfie, not nearly flexible enough. Such issues were mere roadblocks in my strange one-man journey to 3D-scan the world. I may have a problem. I admit it. For starters, I'm not completely sure what I plan on doing with all these scans, but while such questions are entirely logical, they've yet to curb my enthusiasm for the device. Sense is one of those propositions that seems too good to be true: a user-friendly, (relatively) portable 3D scanner capable of capturing objects up to 10 feet by 10 feet, and at a fraction of the price of the competition.

If the product is indeed what 3D Systems claims, it could fill a major hole in the consumer 3D-printing market. In recent years, 3D-printing companies have largely focused on the printers themselves, which have gotten cheaper and easier to use. At the same time, the race to dominate the category has often caused companies to ignore the question of how those without extensive CAD experience can create 3D files in the first place. MakerBot unveiled its solution back at SXSW: the $1,400 Digitizer, a rotating, desktop scanning bed capable of capturing objects up to eight inches by eight inches. 3D Systems' Sense takes a wholly different approach: This is a $400 handheld scanner that can digitize an entire human being.%Gallery-slideshow123207%

Filed under:

Comments



via Engadget RSS Feed http://www.engadget.com

Ars Technica System Guide: November 2013

After a major GPU release (thanks AMD!) and price war, time to update our DIY guide.
    








via Ars Technica http://arstechnica.com

Dealmaster Black Friday blowout continues, with updated deals!

It's Friday, Friday, gonna have deals on Friday!
    








via Ars Technica http://arstechnica.com