Posts in category microsoft - page 3

Three weeks with Windows Phone 7 – a Mac users perspective

It’s been a few weeks since I took up Microsoft’s employee offer of a free Windows Phone 7 (when you renew a 2 year contract) and combined it with AT&T’s offer of buy-one-get-one-free for my wife.

So how have things been going?

Physical

Compared to the iPhone 3G the Focus is much more comfortable.

The larger screen size means a wider and taller phone but with less surround it’s not unwieldy – far from it. In fact the phone sits far more comfortably in my hand than the iPhone did. This is partly because it’s a better match for the size of my hand, partly because it’s a little lighter but mostly I think because the bevel is a lot more subtle and less steep and awkward than the iPhone’s shiny-pebble inspired design.

On the flip side it does look and feel a little cheaper and less solid but a small part of that is because the back of the phone flips off like many other allowing you access to the battery, sim and memory expansion slot. The dedicated back and home buttons below the screen help keep the display clear of chrome and give the apps the space they need.

The major disappointment for me here is the screen. While it is very bright and has great contrast if, like me, you hold it rather close to your face you can see a dithering pattern caused by the unusual LED sub-pixel arrangement called PenTile on every color except green. I’ve learned to hold it a little father away as the text rendering is very nice otherwise but compared to a friends iPhone 4 the screen is a letdown.

User interface

Until you’ve used the Zune-inspired interface (part of an overall design strategy called Metro) it’s a little hard to put it into words. Static screenshots certainly don’t do it justice as it’s all about movement and flow in a way other devices aren’t.

Starting from a tiled home page that gives you a peek into your mail, messages, people and games through a gorgeous combination of animation, text and imagery that keeps the page feeling fresh and alive – a spirit that is carried through the rest of the device – not just with the built-in screens and features but also into many third-party apps (more on that soon).

In a way it feels like a window onto a bigger world behind it instead of a subset of that world crammed onto a small screen. It’s like the difference between a mobile web browser that scales in and out on a whole page versus a mobile-optimized page that lacks detail and finesse.

As many will know my wife and I are primarily based on Apple technology but even after a week with the Focus my wife announced (with a slightly sad face) that her iPhone 3GS felt old – even with iOS 4.1 on it. I have to admit the same feeling. Sure the iPhone is cure but the icon-and-list approach with the odd red circle to indicate some activity now lacks engagement.

Part of Microsoft’s advertising campaign has been the get-in-get-out approach and the home page and email works really well here. So much so that it’s broken my 3 year ritual almost instantly in that I now check my email on my phone each morning when I get up instead of using the laptop to do the same. If I can find a good Google Reader app then the laptop might not open until I get to work.

I had an initial worry when I first turned it on as there were a bunch of AT&T applications and tiles installed however it let me remove all the ones I don’t want or use (e.g. U-Verse) Score +1 for consumers over providers :)

Mac integration

I’m in a minority among friends as I actually like iTunes. It sorts, it plays, it lets me get audio-books, podcasts and legal music quick and fast. I’ve also used it to rip a fair number of my own tracks from CD and bolstered my collection with tracks from Amazon MP3 sometimes (like their $3.99 Tron: Legacy deal). Sure I wish it allowed plug-ins for different music formats – I have a soft spot for chip-music – but apart from that it’s been quite pain free.

iTunes however only likes to play with iPods, iPads and iPhones. Other companies have hooked their devices in unofficially in the past and Apple have been sure to quickly break it.

Thankfully Microsoft haven’t let the Mac fans out in the cold and provide the Windows Phone 7 Connector for Mac.

The software does an okay job at sending music and videos from your iTunes library over to your USB connected phone although obviously DRM-protected content isn’t going to work.

What was disappointing however is even “Purchased music” from iTunes won’t actually play on the Windows Phone even though it syncs. I’m assuming this is a bug as there isn’t any DRM here (that is marked “Protected music”) and the file format is Dolby’s own AAC not Apple’s so I don’t see why it shouldn’t work.

It also won’t sync your Mac’s Address Book and Calendar’s directly however there is a way to do this quite easily indirectly – see below.

Contacts

Enter your Facebook name and password and it will fill your contacts from Facebook with each getting their own ‘what’s new’ etc. Like most people this isn’t exactly what I want but I took the opportunity to prune 100 people I never speak to – an option also exists to only supplement existing contacts on the phone with their Facebook pictures and feeds.

It also helpfully pulled in my Gmail contacts and in the cases where I have a contact card in Gmail for somebody on Facebook did a good job of joining them up. Some it seems were automatic possibly based on email addresses and full names. Others had recommendation when I went to join that were always correct and in a handful of cases I just had to tell it which ones to join up manually because they had changed their name on Facebook.

In some cases I merged three cards for a single person – their semi-public Facebook profile and photo, their private telephone numbers from Gmail and their semi-public Windows Live details for messenger and Xbox.

Finally I added my Outlook/Exchange account – all worked flawlessly and for each account you get to choose whether to bring in contacts and calendars and in most cases mail (but not for Facebook).

The result of all this is that my phone is now the best contact list I have on any device. It combines them beautifully in a way no other device I’ve owned has and not once in the three weeks since I set it up has it got confused, lost details or had sync problems.

Very sweet… unless of course your primary contact information is your Mac’s Address Book as any Mac-owning iPhone owners will be.

Getting Address Book contacts onto Windows Phone

Please forgive the SEO-tuned heading but I didn’t find any useful information online and want to share this simple technique with others :)

You’ll need a Gmail account to make this work (it also works with Google Apps for Domains too), simply:

  1. Copy important details from your Gmail contacts manually into Address Book as needed
  2. Wipe out your Gmail contacts (or backup with Export first if you want but don’t re-import)
  3. Open the Address Book application and head into Preferences
  4. Choose the option to sync “On My Mac” with Google and hit configure to enter your Gmail details
  5. Delete the Gmail profile from your Windows Phone 7 and then re-add it (otherwise it won’t sync phone numbers)

This means you’ll have your Mac contacts at your fingertip in Gmail so make sure your Gmail account has a secure password and follow their steps to ensure your account is well protected.

Reception & call quality

I was nervous about getting back into bed with AT&T for another two years. I need coverage at work and home as I don’t have a dedicated phone at either location and many times AT&T had left me with only a single bar to get by.

I am somewhat confused that I get 3-4 bars on the Samsung Focus in both locations and I’ve yet to have the chopping up or disconnecting of calls that I attributed to AT&T when using my iPhone 3G. Stranger still is that when I have had 1 bar (one place in my apartment) I am actually still able to make calls without it cutting out or dropping. My iPhone taught me never to try with 1 bar…

Visual voicemail is gone as I guess that was an Apple exclusive but I’ve only had a handful of voicemail messages over the last 2 years so I doubt i’ll miss it.

Camera

The camera seems pretty good and has some HDR and anti-shake options as standard as well as limited bunch of image effects. It also does video but I haven’t tried that yet.

Marketplace

You sign into this with your Xbox LIVE credentials and once you’re there it’s not a far off experience from the iTunes store except that it has a lot less apps. While it’s good you don’t have to wade through so much junk to find good stuff there are some omissions too like Hulu and for many people they’ll be missing Angry Birds and their favorite games and apps. I also haven’t found a good Windows Phone-like navigation app although the built-in Bing app is no worse than the Google Maps app on the iPhone that occasionally gave me nonsensical (drive into the ocean) or wrong directions (Seattle hotel being off by 2 blocks).

On the plus side some favorite sites have their own apps and they have fully embraced the metro user interface to provide a great experience – these include IMDB, eBay, Facebook, Twitter.

The bad side here is that the marketplace you’ll be presented with is the one your Xbox LIVE account is associated with and once you’ve set-up your phone YOU CAN’T CHANGE IT!

For me this means I can’t get Netflix on my device as my Xbox account is set to USA. Previously Xbox didn’t let you change your country but recently introduced a facility to let you migrate your account to one of several new countries they now support. I’m hopeful they’ll let more general country changes next year as I’m not giving up my 8800 gamer score and cool gamertag (damieng) without a fight.

Summary

There are a whole bunch of extra things I haven’t covered here including the Bing maps, Office docs, Xbox LIVE, Zune and the various apps. I’ll either update this article or post another :)

I haven’t switched my iPhone on in three weeks. There are a few apps I do miss but they’re also on my iPad.

[)amien

Six great new features at Xbox.com

It’s been quite a while since xbox.com had a major update and today sees the launch of the new version with a clean new look and a whole host of new features that our teams here at LIVE engagement have been working on.

There are a whole great new set of features, my favorites are below… note that some of these are not available in non-LIVE locales.

Showing the xbox.com Avatar Editor in action

1. Avatars

Avatars are no longer just for the console but are escaping out onto the web and Windows Phone 7. With the new Avatar Editor you can create your own avatar or modify your existing one with a new easy-to-use interface from your browser.

The new Avatar Marketplace lets you search and find cool items for your avatar to wear and try them on right-there in the search pages. Head on in either by game or by lifestyle (brands) (click the little grid icon to see sub-brands such as your own university’s sports team!).

Because these guys are 3D animated they require Silverlight to be installed on your machine (the streaming videos on xbox.com also require it)

2. Marketplace search & results

A brand new search function means we get much better results than before, fuzzy matching and some dynamic filtering options that appear on the left-hand side letting you dig down into family friendly games (e.g. by game ratings).

Another cool use is to search for your favorite band and see what tracks and packs they have available. Then head to the game filter on the left to see only the ones that work with your game (e.g. Rock Band, Guitar Hero, Dance Central etc!)

When you visit the product detail page it now shows the images and streaming video inline (goodbye popups) as well as game add-ons showing which games they work with – useful for those music track packs!

3. Hand-picked promotions

Our content teams can now put together collections of themed hand-picked games, add-ons etc. that you can you filter, sort and explore from such as the new Kinect games (gone) or family-friendly fun (gone).

Gold and family gold members should keep an eye out for Gold exclusive offers or pricing!

4. Streamlined account creation

It’s now easier-than-ever to sign up for a free Xbox live account. Less questions, less steps and we’ll give you a randomly-generated gamertag you can change for free later when you’ve had chance to decide on the perfect name for your game-playing alter-ego. (We’ve seen some fun auto-generated ones during the development cycle including FirmJunk,

Comparing games on Xbox.com

5. Compare games with your friends

Okay, you could compare games before but the new UI is better and there’s a cool hidden feature that lets you compare against multiple people at the same time.

To do this head into My Xbox’s Game Center and choose a friend to compare with. Now, notice the url at the top of the page? Put a comma after it and another gamertag to see three… or another comma and a gamertag to see all four (the maximum) side-by-side.

6. Family center

New with this update is the Gold Family Pack (discontinued) which lets you get four gold subscriptions for $99 a year and lots of cool family features including play time reports, gifting points, allowances etc.

There are a whole host of extra features to be seen at xbox.com including mobile-to-web gaming, improved messaging, simplified UI etc. so go check them out!

[)amien

LINQ to SQL changes in .NET 4.0

People have been asking via Twitter and the LINQ to SQL forums so here’s a list I put together on a number of the changes made for 4.0.

25 Aug 2009 – Updated with additional changes, some of which are new in beta 2.

Change list

Performance

  • Query plans are reused more often by specifically defining text parameter lengths (when connecting to SQL 2005 or later)
  • Identity cache lookups for primary key with single result now includes query.Where(predicate).Single/SingleOrDefault/First/FirstOrDefault
  • Reduced query execution overhead when DataLoadOptions specified (cache lookup considers DataLoadOptions value equivalency)

Usability

  • ITable<T> interface for additional mocking possibilities
  • Contains with enums automatically casts to int or string depending on column type
  • Associations can now specify non-primary-key columns on the other end of the association for updates
  • Support list initialization syntax for queries
  • LinqDataSource now supports inherited entities
  • LinqDataSource support for ASP.NET query extenders added

Query stability

  • Contains now detects self-referencing IQueryable and doesn’t cause a stack overflow
  • Skip(0) no longer prevents eager loading
  • GetCommand operates within SQL Compact transactions
  • Exposing Link<T> on a property/field is detected and reported correctly
  • Compiled queries now correctly detect a change in mapping source and throw
  • String.StartsWith, EndsWith and Contains now correctly handle ~ in the search string (regular & compiled queries)
  • Now detects multiple active result sets (MARS) better
  • Associations are properly created between entities when using eager loading with Table-Valued Functions (TVFs)
  • Queries that contain sub-queries with scalar projections now work better

Update stability

  • SubmitChanges no longer silently consumes transaction rollback exceptions
  • SubmitChanges deals with timestamps in a change conflict scenario properly
  • IsDbGenerated now honors renamed properties that don’t match underlying column name
  • Server-generated columns and SQL replication/triggers now work instead of throwing SQL exception
  • Improved binding support with the MVC model binder

General stability

  • Binary types equate correctly after de-serialization
  • EntitySet.ListChanged fired when adding items to an unloaded entity set
  • Dispose our connections upon context disposal (ones passed in are untouched)

Database control

  • DeleteDatabase no longer fails with case-sensitive database servers

SQLMetal

  • Foreign key property setter now checks all affected associations not just the first
  • Improved error handling when primary key type not supported
  • Now skips stored procedures containing table-valued parameters instead of aborting process
  • Can now be used against connections that use AttachDbFilename syntax
  • No longer crashes when unexpected data types are encountered

LINQ to SQL class designer

  • Now handles a single anonymously named column in SQL result set
  • Improved error message for associations to nullable unique columns
  • No longer fails when using clauses are added to the partial user class
  • VarChar(1) now correctly maps to string and not char
  • Decimal precision and scale are now emitted correctly in the DbType attributes for stored procedures & computed columns
  • Foreign key changes will be picked up when bringing tables back into the designer without a restart
  • Can edit the return value type of unidentified stored procedure types
  • Stored procedure generated classes do not localize the word Result in the class name
  • Opening a DBML file no longer causes it to be checked out of source control
  • Changing a FK for a table and re-dragging it to the designer surface will show new FK’s

Code generation (SQL Metal + LINQ to SQL class designer)

  • Stored procedures using original values now compiles when the entity and context namespaces differ
  • Virtual internal now generates correct syntax
  • Mapping attributes are now fully qualified to prevent conflicts with user types
  • KnownTypeAttributes are now emitted for DataContractSerializer with inheritance
  • Delay-loaded foreign keys now have the correct, compilable, code generated
  • Using stored procedures with concurrency no longer gets confused if entities in different namespace to context
  • ForeignKeyReferenceAlreadyHasValueException is now thrown if any association is loaded not just the first

Potentially breaking changes

We worked very hard to avoid breaking changes but of course any potential bug fix is a breaking change if your application was depending on the wrong behavior. The ones I specifically want to call out are:

Skip(0) is no longer a no-op

The special-casing of 0 for Skip to be a no-op was causing some subtle issues such as eager loading to fail and we took the decision to stop special casing this. This means if you had syntax that was invalid for a Skip greater than 0 it will now also be invalid for skip with a 0. This makes more sense and means your app would break on the first page now instead of subtlety breaking on the second page. Fail fast :)

ForeignKeyReferenceAlreadyHasValue exception

If you are getting this exception where you weren’t previously it means you have an underlying foreign key with multiple associations based on it and you are trying to change the underlying foreign key even though we have associations loaded.Best thing to do here is to set the associations themselves and if you can’t do that make sure they aren’t loaded when you want to set the foreign key to avoid inconsistencies.

[)amien

LINQ to SQL next steps

There has been a flurry of posts and comments in the last 24 hours over the future of LINQ to SQL so I thought it would be interesting to provide some information on what the LINQ to SQL team have been up to and what we’re working on for .NET Framework 4.0.

A little background

LINQ was a new feature in .NET 3.5 that provides a store-agnostic query language syntax using a provider model.

As part of that initiative the C# team delivered LINQ to SQL – a LINQ provider to SQL Server with additional update and access management via DataContext and mapping tools such as the designer and SQL Metal. The result is a great lightweight solution that is easy to get started with and a good data access solution where your database and objects are closely aligned.

Meanwhile Data Programmability worked on an initiative to provide abstraction between conceptual and physical models of databases to allow applications to operate independently of the database vendor and underlying physical schema. LINQ support was also added in the form of LINQ to Entities and it shipped with it’s management tools in .NET 3.5 SP1.

Which now means we have two object-relational mapping options that overlap in some areas but with very different backgrounds.

The story so far

Some time before I started in May LINQ to SQL was handed over to Data Programmability.

One of the first things you notice is that the overlap between the two object-relational mapping solutions Microsoft causes confusion and hesitation.

Do I want something lightweight and easy or do I need the extra abstraction with a richer feature set?
If I want to start with LINQ to SQL today but know that the database won’t stay under my control how would I move to Entity Framework?

These are the questions that many developers face and our team spent a lot of time looking at the differences between the two stacks, how they behave and which features were missing if you wanted to migrate from LINQ to SQL to Entity Framework v1. We put together code samples, some helpers and documentation which are now being serialized on the ADO.NET blog and left us with a better understanding of the disparity – some of which the EF team have already addressed in v2.

Where next

The decision has been made that Entity Framework is the recommended solution for LINQ to relational scenarios but we are committed to looking after our users and are approaching this in two ways.

Firstly we are going to make sure LINQ to SQL continues to operate as it should. This doesn’t just mean making sure what we had works in .NET 4.0 but also fixing a number of issues that have arisen as people pick it up for more advanced projects and put it into production environments.

Secondly we will evolve LINQ to Entities to encompass the features and ease of use that people have come to expect from LINQ to SQL. In .NET 4.0 this already includes additional LINQ operators and better persistence-ignorance.

This isn’t to say LINQ to SQL won’t ever get new features. The communities around LINQ to SQL are a continuous source of ideas and we need to consider how they fit the minimalistic lightweight approach LINQ to SQL is already valued for. Where these suggestions fit with this strategy we will be working hard to get them into the product. Some enhancements like the T4 templates can be released independently but run-time elements need to stick to the .NET Framework schedule.

In conclusion

DON’T PANIC

(in large, friendly letters)

LINQ to SQL will continue to work and EF will better address the needs of LINQ to SQL users with each new release.

[)amien