Posts in category microsoft - page 2

Acer Aspire S7 review – two months in

Given my new focus on Windows 8 apps and the loss of my MacBook Pro I was in the market for a Windows 8 laptop.

My requirements were that it had a touchscreen display with at least 1080p resolution, fast (i5 or better with an SSD) and very slim. You’d be surprised at how such simple requirements leave you with such a small selection right now.

I settled on the Acer Aspire S7 although I had a couple of reservations as it supports a maximum of 4GB of RAM and a glossy display. Here’s my thoughts so far after two months of almost-daily use:

Buying experience

I picked up the machine from my local Microsoft Store in the mall. The process was quick and painless and I was in and out in under 10 minutes even though the store was rather busy. I did have to decline a free Windows 8 tutorial but otherwise it was plain sailing.

Un-boxing

The product was well packed and nicely presented very much like an Apple product. The similarities ended there however as unlike Apple the box included a bunch of items Apple would charge extra for. These were:

  1. Leather-like slip-cover
  2. Small Acer-branded Bluetooth mouse
  3. USB to Ethernet adapter
  4. Mini-HDMI to VGA adapter

The adapters are very useful, the mouse of no use to me (I only use Logitech G5/G500’s) and the slip-cover I thought would be useful but is a bit unwieldy and it started to break after light use.

Anyone complaining that the machine doesn’t have Ethernet or VGA physically built into the device (I’m looking at you ZDNet) would do well to remember that both those connectors are thicker than this machine and there are plenty of thick klunky machines to choose from if having it built-in is important to you.

There is a good video on YouTube that shows somebody else actually going through the unboxing process.

Display

The tiny 13.3″ display sports almost the same resolution as my 24″ Dell at 1600 x 1080 and at this size and resolution the screen is great. Small text is not unreadable  at the regular DPI and larger text feels smooth and refined.

The touch aspect of this screen is incredible and I’m able to reliably move 8 objects concurrently on the game we wrote called Sticker Tales. The display actually supports ten concurrent touch points but at 13.3″ trying to find space for ten fingers to move is tricky unless you have tiny fingers.

That’s not to say everything about the display is good. As usual the gloss finish is incredibly annoying and within a week it has three indentations presumably from being pressed against small specs when closed against the keyboard although I’ve not seen the actual cause. Thankfully you can only spot them when the screen is mostly dark and the display is very bright and colorful.

Unlike some of the current touch-capable machines the screen on this one doesn’t completely flip over. It can however go completely flat… that might erm, be useful… to someone?

Keyboard

The keyboard is a mixed bunch. The basic layout and feel of the keyboard is good and it follows an almost-flush (2mm raised) chiclet style keyboard with back-lighting. Okay, that’s the good news.

The bad news is that there are no function keys so it’s Fn+numbers for those. The back-light comes on every time you bring the machine out of sleep and you have to tap Fn+U several times to get rid of it. There are a bunch of Fn special keys across Q through O the worst of which is Fn+T which is easily hit and turns off the track-pad with no notification. You’ll be incredibly confused the first couple of times you do this when you meant to press CtrlT to open a new tab.

Another annoyance for developers and power users is that the home/page up and end/page down are flush with the left and right arrows. Get used to typos. Symbols and the caps/enter keys are also a bit unusual too. Overall the keyboard feels more style over usability.

Track-pad

The track-pad is probably good enough for most people. Frankly my mind is so hard-wired from the hard-button on my pre-unibody MacBook Pro that I’ve been struggling with button-less track-pads ever since. Thankfully the included software lets you disable some of the more annoying gestures like zoom if you’re having issues retraining your digits.

Weight and size

I have to admit the weight is awesome and despite my reservations after 4 years on a 17″ laptop the size is great. I really wouldn’t want to go any smaller though and when I get my own personal machine (this Aspire is a work one) later this year it will likely be a 15″ primarily because of the keyboard space limitations on a 13.3″ and the fact I don’t want…

Graphics

Like all sub-15″ ultrabooks you’re stuck with the Intel HD 4000 graphics that are actually embedded inside the Ivy Bridge Intel Core i5/i7 CPU. Yes, even Apple’s 13″ MacBook’s suffer this limitation too.

If you want better graphics performance in an Ultrabook you’re probably going to have to wait until June when Intel’s new replacement for Ivy Bridge comes out and the graphics get ramped again.

Conclusion

This is a great machine for overall regular and light usage but I can’t recommend it to developers.

The lack of function keys mixed with the 4GB RAM limit are going to be painful for users of virtual machines or IDEs. If Acer had sense they would up the RAM on the i7 version to 8GB to further differentiate the two.

[)amien

Using your Xbox Kinect as a webcam for Skype on Windows

Thanks should go to ScottOrange on the MSDN forums however it’s along thread that has lots of pieces to pick out and try.

Still getting odd noise, corruption and other issues in Skype. Wouldn’t recommend using a Kinect as a webcam on Windows right now.

What worked for me (eventually):

  1. Download the Kinect SDK from Microsoft
  2. Install the Visual Studio 2010 Runtime if you don’t already have it
  3. Go to the KinectCPP site and download KINECTSQM.DLL and MSRKINECTNUI.DLL
  4. Create a folder for your Kinect camera drivers to live and copy those two files there
  5. Go to Wildbill’s Github repo and download the three files there into the same folder
  6. Open a Command Prompt as Administrator and CD into the folder
  7. Type install and press return

You should get a success message. If you don’t then you probably missed steps 2 or 3 – if all else fails open KinectCam.ax in Dependency Walker and see which DLL it claims it can’t find. (the IESHIM one missing is fine)

Restart Skype and see if it shows up in the list of cameras. If it doesn’t.

  1. Quit Skype entirely
  2. Go to %appdata%\Skype\shared_dynco in Windows Explorer
  3. Delete dc.db
  4. Restart Skype

[)amien

My one-year check-in with my Windows Phone 7

It’s been almost a year since I bit the Windows Phone 7 bullet and put my iPhone 3G away. As a long-time Mac fan (our house is nothing but Macs) I wasn’t sure I’d last…

Contact & calendar management

Contact and calendar management is truly awesome as I wrote about previously. With the latest mango release Twitter and LinkedIn get brought into this unified system and messages that start with a text message can switch in and out of Facebook and Live Messenger as available.

What has this meant? Over the last year I’ve barely had to maintain contacts. Whenever I need to get hold of someone the information is there. If I want to see what they’re doing, it’s there. You can pin people to your start menu so having it automatically pick up a photo from a service is another bonus.

My Windows Phone is better for this than any other system I’ve used including my desktops.

Gorgeous user interface

The metro user interface is beautiful to use. It’s clear, fluid and fast and makes using the phone a breeze. You can see why Microsoft are adopting a similar user interface for their upcoming Xbox dashboard and seeing how far they can push the concept in Windows 8.

Such a bright fast user interface works best on the AMOLED displays such as that on the Focus – the LCD refresh rates on the HD7 for example seem to struggle with scrolling resulting in a shimmering on the screen.

Tasty Mango

  • Maps now includes both turn-by-turn directions (although you have to tap the screen after each one) and a useful Scout function that shows you nearby places to eat and visit.
  • Multitasking is a breeze, just double-tap the back button and visually pick the image showing the app you want to switch to. Not all apps support this yet but it’s getting better.
  • Voice has been underplayed – it’s like a mini Siri that can do a few things by voice activation such as calling people, finding places with Bing, opening applications and sending text messages. Just hold the Windows key to activate and speak :)
  • Power saver is a life-saver and something that Apple should be copying given recent iOS battery issues. It turns off wireless, email checking etc. either when you know battery is going or automatically when low and gets you through the tough spots.
  • Background music means not only can you play music in background with the built-in Zune stuff but even third party apps like Spotify can too! The controls and track names will appear on the lock screen and slide in anywhere you adjust the volume.

Hardware choice

I currently own a Samsung Focus on AT&T and regularly get to use both a HTC HD7 on T-Mobile and a HTC 7 Trophy on Verizon for testing.

Having a choice of hardware is great – you can pick the screen size (from 3.5″ to 4.7″), type, speed (1GHz to 1.5GHz) and specifications including slide-out keyboards, microSD expansion slots, a waterproof model and up to a 13.2 megapixel camera.

The negative side of having choice is that all the devices I’ve used have a combination of matte and shiny plastics none of which have the same quality feeling as the iPhone 4’s aluminum and glass. The LCD displays and the Super AMOLED with it’s PenTile display also don’t look as gorgeous as the iPhone retina display and has a sort of dithered effect with some solid colors when viewed closely.

Here’s hoping the Nokia Lumia 800 raises the bar.

Most favorite apps available

The thing that really made the iPhone were apps. The good news is the best ones are also on Windows Phone 7 too often making better use of the display through the metro style they adopt.

  • Amazon Kindle
  • Evernote
  • Facebook
  • Flixster
  • foursquare
  • IMDB
  • Netflix
  • Spotify
  • Twitter
  • YouTube

There are of course many extra great applications and games available in the marketplace and games usually count towards your Xbox LIVE gamerscore :)

Some notable omissions still exist including Pandora (can play on the site though) and Skype (only a matter of time given Microsoft’s acquisition).

Some cool extras

Hidden features

  • Calendar can skip between months and years in month mode – just tap the month for a selector
  • Calculator can turn into a scientific one when rotated left and a programmer one when rotated right

You can also check and tweak all sorts of settings via the diagnostic options.

Microsoft’s extra free apps

Microsoft put together a bunch of slick small free apps that perfectly complement the metro style look and feel. They include:

  • World Clock – Lets you setup a number of clocks around the world. Useful if you often converse with people in other time zones.
  • Tranlsator – Text translation tool that also pronounces translations between English, French, German, Italian and Spanish.
  • Weather – Simple and convenient weather application that supports multiple locations.
  • Unit Converter – Translate between various lengths, areas, volume, capacity etc.
  • Stocks – Keep track of your stocks and the indexes.
  • Shopping List – Simple shopping list management.

The bad bits

While most of the WP7 experience is great there are some rough edges that even Mango hasn’t yet sorted out.

Overly sensitive buttons

It’s actually great having a back button and prevents wasting screen on a back button like iOS does. The problem however is that both the back and search buttons are overly sensitive. It’s difficult to hold the phone in one hand and use it without your thumb hitting the pesky back button. It’s unfortunately something even the Xbox 360 slim picked up with the eject mechanism which is suitably annoying when putting away a controller.

Microsoft should add code to limit button presses to a distinct no-touch, touch for 0.4s, no-touch process.

Volume control

For some reason the phone has only one volume control that is shared by both applications and the ring-tone so if you’re the sort of person who like your phone low and your music loud you’re going to be constantly shifting back-and-forth and in my case that results in either embarrassing rings when it should be silent and silent rings when it should be working.

The volume control needs to be context sensitive. When in an app or the background music player is active adjust the audio volume otherwise adjust ringer volume.

Equalizer settings

There’s no sound equalizer settings so if you don’t like the sound coming from your speakers or headphones you’re stuck with it.

Build in a system-wide equalizer that at least affects the background music player.

[)amien

Behind the scenes at xbox.com – RSS enabling web marketplace

A number of people were requesting additional RSS feeds for the xbox.com web marketplace. (We had just one that included all new arrivals)

Looking across our site as the various lists of products we display today the significant views are:

  • Browse games by department
  • Search results
  • Promotions (e.g. Deal of the week)
  • Game detail (shows downloads available beneath it)
  • Avatar item browse

These views also have sorting options and a set of filters available for things like product type, game genre, content rating etc.

So we had a couple of options:

  1. Write controller actions that expose the results of specific queries as RSS
  2. Introduce a mechanism whereby any of our product result pages can render as RSS including any user-defined filtering

Our web marketplace is written in ASP.NET MVC (like most of xbox.com) so while option 1 sounds simpler MVC really helps us make option 2 more attractive by way of a useful feature called ActionFilters that let us jump in and reshape the way existing actions behave.

ActionFilters

ActionFilters can be applied to either to an individual action method on a controller or to the controller class itself which applies it to all the actions on that controller. They provide hooks into the processing pipeline where you can jump in and perform additional processing.

The most interesting events are:

  • OnActionExecuting
  • OnActionExecuted
  • OnResultExecuting
  • OnResultExecuted

We’re going to hook in to the OnActionExecuted step – this is because we always want to run after the code in the controller action has executed but before the ActionResult has done it’s work – i.e. before page or RSS rendering.

Writing our ActionFilter

The first thing we want to do is identify that a request wants the RSS version. One way is to read the accepts header and switch when it requests mime/type but this can be a little trickier to test,  another is to append a query parameter on the url which is very easy to test.

Once we’ve identified the incoming request should be for RSS we need to identify the data we want to turn into RSS and re-purpose it.

All the views we identified at the start of this post share a common rendering mechanism and each view model sub-classes from one of our base models. For simplicity though we’ll imagine an interface that just exposes an IEnumerable property.

public class RssEnabledAttribute : ActionFilterAttribute {
  public override void OnActionExecuted(ActionExecutedContext filterContext) {
    var viewModel = filterContext.Controller.ViewData.Model as IProductResultViewModel;
    if (viewModel == null)
        return;

    var rssFeedTitle = FeedHelper.MakeTitle(viewModel.Results);
    filterContext.Controller.ViewData.Add("RssFeedTitle", rssFeedTitle);

    var format = filterContext.RequestContext.HttpContext.Request.QueryString["format"];
    if (format == "rss" && rssFeedTitle != null) {
      var urlHelper = new UrlHelper(filterContext.RequestContext);
      var url = QueryStringUtility.RemoveQueryStringParameter(filterContext.RequestContext.HttpContext.Request.Url.ToString(), "format");
      var feedItems = FeedHelper.GetSyndicationItems(viewModel.Results, urlHelper);
      filterContext.Result = FeedHelper.CreateProductFeed(rssFeedTitle, viewModel.Description, new Uri(url), feedItems);
    }

    base.OnActionExecuted(filterContext);
  }
}

This class relies on our FeedHelper class to achieve three things it needs:

  1. MakeTitle takes the request details – i.e. which page, type of products, filtering and sorting is selected and makes a title by re-using our breadcrumbs
  2. GetSyndicationItems takes the IEnumerable and turns it into IEnumerable by way of a foreach projecting Product into SyndicationItem with some basic HTML formatting, combining the product image and setting the correct category (with a yield thrown in for good measure)
  3. CreateProductFeed then creates a Syndication feed with the appropriate Copyright and Language set and chooses the formatter – in our case RSS 2.0 but could easily be Atom 1.0, e.g.
public static SyndicationFeedResult CreateProductFeed(string title, string description, Uri link, IEnumerable<SyndicationItem> syndicationItems)
{
    var feed = new SyndicationFeed(title, description, link, syndicationItems) {
        Copyright = new TextSyndicationContent(String.Format(Resources.FeedCopyrightFormat, DateTime.Now.Year)),
        Language = CultureInfo.CurrentUICulture.Name
    };

    return new FeedResult(new Rss20FeedFormatter(feed, false));
}

The FeedResult class is a simple one that takes the built-in .NET SyndicationFeed class and wires it up to MVC by implementing an ActionResult that writes the XML of the SyndicationFeedFormatter into the response as well as setting the application/rss+xml content type and encoding.

Advertising the feed in the head

Now that we have the ability to serve up RSS we need to let browsers know it exists.

The ActionFilter we wrote above needs to know the title of the RSS feed regardless of whether it is rendering the RSS (which needs a title) or rendering the page (which will need to advertise the RSS title) so it always calculates it and then puts it into the ViewData dictionary with the key RssFeedTitle.

Now finally our site’s master page can check for the existence of that key/value pair and advertise it out with a simple link tag:

var rssFeedTitle = ViewData["RssFeedTitle"] as string;
if (!String.IsNullOrEmpty(rssFeedTitle)) { %>
<link rel="alternate" type="application/rss+xml" title="<%:rssFeedTitle%>" href="<%:Url.ForThisAsRssFeed%>" />
<% }

This code requires just one more thing – a very small UrlHelper which will append “format=rss” to the query string (taking into account whether there existing query parameters or not).

The result of this is we can now just add [RssEnabled] in front of any controller or action to turn on RSS feeds for that portion of our marketplace! :)

[)amien