One snowy February Saturday morning. After about a month of telling myself that I did not need the upgrade from the original Surface RT to the new Surface 2, I gave up. Hey, one needs some cheer during the dreary winters, right? Not that I was unhappy with my original Surface; it was still serving me ok after more than a year of rough use. But the new Surface 2 with all its bells & whistles just seemed irresistible.

PS: For folks like me who desperately try to “justify” the near constant tech gadget crave or the precious device upgrade, BestBuy now seems to have a permanent device trade-in policy (details HERE). The original Surface in good condition, for example, would fetch you a decent $75. Otherwise, there is always Craigslist or eBay that might get you a bit more in consolation.

So, out with the old & in with the new shiny toy. Here are 7 things I absolutely dig about the Surface 2:

  • The screen resolution – this thing alone more than justifies the upgrade. Folks with the Surface Pro know this already, but I’m coming from a paltry 1366×768 resolution on the Surface RT. The Surface 2’s full 1080P 1920×1080 resolution is ridiculously high for a screen that small. The result – more real estate for tiles/desktop & everything is super crisp. Running 3 apps side by side is actually practical & useful. Make sure to follow the steps in Scott Hanselman’s post HERE to get the most of your pixels.
  • The Tegra 4 processor shows its mettle. Almost every app or interaction feels much zippier compared to the somewhat sluggish original Surface RT.
  • I have a generation 1 Surface Type & Touch cover each. Glad that these work seamlessly with the Surface 2 – no new accessories needed.
  • The kickstand going back a second step is very welcome, especially during long flights or when on lap. I remember Jeff Blankenburg & I unboxing the original Surface RT & wishing the kickstand went a little further back – well, now you have it!
  • The magnetic power adapter stills thinks twice before snapping in place, but is way better than the finicky one that came with the original Surface.
  • Battery life – I’m getting 10/11 + hours easy with normal multimedia usage. Let’s just say this is more than handy. Unless I need to fire up Visual Studio, I can get some good productive work done on this baby, all the while the games being just a tap away.
  • The extra OneDrive space & Skype World credits don’t hurt at all :) .

So, if you can spare the extra money, stop thinking & get the upgrade. I’m not repenting ..

Adios!

Are you using SalesForce for CRM? Did you know SalesForce also offers an industry-leading enterprise social network called Chatter? Are your users starting to bring Windows devices in the BYOD fold? Would you not like to custom apps on web/desktop/mobile that allows your users to interact with SalesForce applications more easily? If you answered yes to any, read on ..

Now, you probably already heard that SalesForce recently announced SalesForce Toolkits for .NET developers. This comes courtesy of my good friend, the brilliant Wade Wegner. Details about the SalesForce Toolkit announcement can be found HERE, which has links to the Force.Com & Chatter Toolkits for .NET.

When Wade asked me to take a look, my little world of Windows 8 apps was the obvious choice to try things out. So, let’s try connecting to SalesForce Chatter from a Windows Store app, to give the new APIs a spin. Here’s my step by step guide:

SFDashBoard

  • Before our 3rd party app can talk to SalesForce, we need a “Connected App”, sort of like a proxy which allows us to talk to SalesForce APIs on behalf of the user. From the dashboard, click Build->Create->Apps from the left menu; at the bottom, you’ll see Connected Apps, as below .. click New.

CreateNewApps

  • Create a new App, by specifying App name, Callback URL & OAuth permissions. The end result should be something like my SFChatterApp, as below. Let’s make note of the app’s Consumer Key & Secret; we’ll need them in our client app.

AppCreated

  • While you are just done creating your SalesForce Connected App, let’s take care of one more setting, unless you want to be left scratching your head like me later down the line. Click on your app to go to Settings and make sure you relax IP firewall settings, or allow your specific IP ranges to have access, like shown below.

AppSettings

  • That’s it .. we’re all set on the SalesForce side with our connected app. Time to now build our Windows 8 Store app to connect to SalesForce through the connected app we just created. So, back in Visual Studio, we create a new Windows 8 app from default template. Next step, let’s grab the Chatter Toolkit for .NET, which is available as a NuGet package. We could add this visually, as below or using the NuGet Package Manager Console and “Install-Package DeveloperForce.Chatter”.

SFNuGet

  • With the added DLL references, now let’s write some code to hook up our client Windows 8 Store app to the SalesForce Chatter APIs. I’m going to use the Username-Password flow to quickly get an OAuth access token from Chatter; but for anything real-world, you may want to use the WebServer or OAuth flows, so that each user can get his/her own access token. Wade has these flows nicely documented HERE and HERE. Here’s some code in my App.xaml.cs:

using Salesforce.Common;
using Salesforce.Chatter;
using Salesforce.Chatter.Models;

public AuthenticationClient SFAuth = new AuthenticationClient();
public ChatterClient SFChatter;
public Me SFMe;

 public static new App Current
 {
    get { return Application.Current as App; }
 }

private async void DoSalesForceHandshake()
{
    await SFAuth.UsernamePassword("ConsumerKey", "ConsumerSecret", "UserName", "Password");
    SFChatter = new ChatterClient(SFAuth.InstanceUrl, SFAuth.AccessToken, SFAuth.ApiVersion);
    SFMe = await SFChatter.Me(); 
}
  • You’ll notice that I have a few global variables that I want to hydrate & use elsewhere in my app. I invoke the DoSalesForceHandshake() method from my app’s OnLaunched event handler, to do the SaleForce Chatter handshaking upfront. If your AuthenticationClient object is hydrated correctly, you’re all set. Notice how we create the ChatterClient using details from our authentication call to Chatter APIs. Lastly, we grab info about our personal Chatter feed using the Me() method call. This is sounding like fun, isn’t it?
  • What we want to do is try posting a Chatter message from our Windows 8 app onto SalesForce Chatter, through our client handshaking that we just did. Here’s my over-simplified Windows 8 UI in MainPage.xaml for posting a Chatter message:

ChatterWin8

  • Here’s my code on the send button’s click event handler, so we can post to Chatter:

private async void sendChatBtn_Click(object sender, RoutedEventArgs e)
{            
    var messageSegment = new MessageSegment()
    {
       text = chatTextbox.Text,
       type = "Text"
    };

    var body = new FeedItemBody { messageSegments = new List { messageSegment } };
    var feedItemInput = new FeedItemInput()
    {
        attachment = null,
        body = body
    };

    var feedItem = await App.Current.SFChatter.PostFeedItem(feedItemInput, App.Current.SFMe.id);
}
  • Notice how we are identifying the user (through id property of Me object) as we post the FeedItemInput containing the message to Chatter. The result on button click .. sure enough, our user’s message gets posted to Chatter, as shown below:

SFChatter

  • We only scratched the surface of Chatter APIs here .. you can do many more fancy things like liking/commenting on a Chatter feed item etc. And all of this helps you make interactive mobile apps for your users.
  • Now, here’s the best part – you’ll notice that the Chatter toolkit uses the Async-Await C# pattern for asynchronous access, which allows from easy consumption from any UI client you want to build and it also uses PCLs under the covers. So, as long as you are building any modern .NET based applications, the same code/techniques apply .. this extends coverage to Windows 8, Windows Phone, Silverlight, WPF & even Console apps. Fun!

Hope this was helpful.
Adios!

Running Windows 8/8.1 on a high resolution display? May be you have one of the new 4K monitors or the ultra high DPI laptops. Are you sure you are getting the most of your pixels?

I recently put Windows 8.1 on my last remaining laptop, one with resolution much more than 1080P (1920×1080). To my dismay, several desktop applications looked plain blurry! Font text was inconsistent in size between applications and icons/imagery appeared pixelated around edges. However, a lot of the native Windows applications, like IE or File Explorer, looked fine. So what’s the deal? If you are ever stuck with less than crisp displays while running Windows 8/8.1, read on ..

  • First, let’s get the obvious out of the way. Make sure you have the latest Windows uppdates and running the latest drivers for your video/graphics card. Lot of OEM vendors have updated their Windows drivers and there is no excuse not to be running the latest.
  • Once you know it is not a driver issue, it must be something software. Turns out, Windows caters to a huge number of screen sizes and there has to be some compromises made in terms of defaults. Most of the non-geek population isn’t as concerned about screen real estate like we developers. So, Windows defaults to a bit of display scaling if the native resolution is much higher than 1080P. Much like what OSX does for the MacBook Retinas out of the box.
  • If you trust your eyes and want to shut off this automatic scaling for high resolutions, Windows gives you granular as well as blanket options. For me, Chrome browser, for instance, looked really blurry. So, right click on the program (either from the Taskbar/Desktop or the actual EXE in Program Files) and get to the Properties. Then switch to the Compatibility tab.

ChromeProperties

  • See the checkbox for “Disable display scaling on high DPI settings”? That’s the one you want to have checked. The result – smaller fonts, bigger real estate & crisp edges/icons/imagery.
  • Now, you can do this one at a time for applications you select, or one time for every application in a sweep. Head to the Display settings in Control Panel and turn on the custom scaling for all displays with appropriate text size. Once set, automatic scaling will be turned off and all applications display native resolutions. You can always fine tune magnification inside individual applications.

GlobalTextSetting

Result – ultra high resolution DPI nirvana and more stuff on screen with the increased real estate! Your eyes are your responsibility though :) . Hope this helps.

Adios!

2013 has been a busy year. We all have had our ups & downs and worked on products/technologies that we are passionate about. And it is particularly rewarding when others recognize your passion, efforts to grow our craft, technical prowess & community involvement. I am really honored and humbled to be named a Microsoft MVP in Client Development for 2014.

Now, it is customary to share some feelings/experiences along the road & what it all means. This is, at times tricky, since the subject does bring out our sentiments. This in no way, is a check-off list towards your goals; quite simply, my ramblings on the recent past & some common sense.

The pursuit of craftsmanship & not labels ..

  • The meaning — First, what does it mean to be a Microsoft MVP? It is a recognition of one’s passion around a Microsoft product/platform, technical knowledge & willingness to share/stir community excitement around MSFT technologies. MVP is an award system, with no definitive way to the goal .. and that is the point. We all have our passions & there needs to be flexibility to chart one’s own course. For more information, please visit the the MVP support site or the official blog.
  • The meaning, again — So, let’s rephrase. Since we cannot know everything about everything, the MVP award acknowledges one’s technical knowledge in a specific platform/product/domain. Now, this does not mean that all MVPs are technical rockstars; they definitely know their stuff .. but more importantly, are willing to actively share their knowledge. MVP is a a community award, recognizing significant community contributions around a MSFT platform & helping others. There are no shortcut & one has to be in it for the long haul.
  • The Showmanship — Someone recently said “We’re beyond writing software, we just talk about it” .. this a little funny & sometimes true. In our constant zeal to leave a footprint for other developers & make ourselves known in the community, we could sometimes get in the mode of blogging/speaking about every cool piece of code we write. While this is an extreme example, you should see the value of putting yourself out there. Every developer needs to have a blog .. yes, writing can be painstaking; but there has to be something interesting you worked on recently, something you would like to share. It does not hurt to put out your thoughts and content to contribute on a topic, and it slowly establishes you as a knowledge resource.
  • The Volunteer Army — MVPs often are the public face of Microsoft on a certain technology/product/platform. So, you can see why MSFT would be careful about which volunteers represent them. And that is partly the reason behind choosing folks who are vocal about their passion in the developer ecosystem.
  • The Guilt — This is purely my stance; MVP awards come a little guilt. I personally know way too many awesome developers around, many of whom are much smarter than I am. These developers silently do their awesome work in cubicles & are well respected in their respective teams; but may not be well-known in the community because they are not vocal about what they are up to. This is where comes my next urge ..
  • The step-out — If you are a developer, I honestly urge you to come out of the shell & start interacting with the developer community. I can vouch you will find the experience very enriching. For one, it opens our avenues to learn from like-minded people; developers just like you, who are trying improve their craft every day. Second, it helps you market yourself as a professional & establish your expertise, in ways your resume could never do. So, start by going to your nearest User Group or developer community meeting. Write & speak about what you’re passionate about. Take up writing a book or author a Pluralsight course or be active on a developer forum. I can promise that the tiny guilt of being a showman will vanish in the face of how much you are learning from other developers.
  • Are you social? — Well, this is an ironic question for developers, when we IM our buddy across the cube wall, isn’t it? It doesn’t matter what form of social media you use, as long as you interact with the right folks & getting your information from the right sources. This is pivotal in staying up to date as a developer. Twitter has quickly become one of the best ways to keep up on what’s latest in any technology & engage in conversations with your fellow developers. Bottomline, be social in any way you want, but make sure you are engaged & learning from other developers.
  • Learn, Learn, Learn — This goes without saying, right? The nature of our industry demands us to be in an always-learning mode & there are plenty of free materials to go by. So, voraciously consume anything you can get your hands on – MSDN, StackOverflow, Twitter, eBooks, developer blogs etc. If you think you are the smartest person in a room or in your team, it is time to jump out of the windows & run, so we can keep on learning :)
  • Community Investments — Give plenty & you shall receive. Investing in developer community helps us grow as professionals .. network with as many folks as you can & help in whatever you can. Keep the good faith that your efforts are being noticed.
  • The Help — Microsoft has a DPE (Developer Platform Evangelism) program which puts ‘field agents’ closer to developer communities across the world, as well as wonderful MVP Program leads. These are some of the smartest folks you’ll work with .. make sure to get in touch with them in your developer community. I promise – they’ll help.
  • The DON’Ts — Some of this is common sense, but common sense is not that common & we all make mistakes. Let us try to stay away from being rude, vulgar & disrespectful to others – this is plain uncalled for & leaves bad taste amidst a community of sharp brains. Off course, we will have strong opinions about technology; but we can agree to disagree in a respectful manner.
  • The Respect — We can sometimes forget in the Microsoft realm that the world does not spin around us; there are plenty of brilliant developers working on non-Microsoft or Open-Source technologies or projects. And the least we can do is be respectful to all the good work outside our domain of expertise. This shows maturity & professionalism; and gets you respect from the other folks.
  • Believe — Lastly, be confident in your abilities as a developer & genuine in your efforts. MVP or other recognitions may be the goal; but it is the journey that is more important, since it puts your career on a great track. Decide if a label is more important than respect from your peers .. and make peace with it. Be truly passionate about the technology, there is no way to fake this. Believe patiently in folks around you & your good deeds will not go in vain. Best wishes for your journey ..

Truly believe that software craftsmanship is a lifelong journey .. rewards will come along the way.

Cheers for a wonderful 2014!

This has been documented before in MSDN and couple of other blogs; but I struggled for a few hours and went through several resources before figuring out what needed to be done as a solution. Just sharing my way of getting stuff to work ..

The Problem:
You are developing a Windows Phone 8 app using the emulator and want to consume/interact with a service/website on local development machine. The server side mimics the backend service powering your Windows Phone app; this could be in the form of a WCF Web Service or a Web API endpoint or in my case, a SignalR Hub for real-time connectivity. This seemingly simple task of connecting the Windows Phone emulator running the Phone app to the service/website on local machine actually turns out to be a tricky one.

The Cause:
Part of the problem lies in the Windows Phone emulator. In the old Windows Phone 7 days, the emulator used the network connection of the development computer; this meant reaching anything on ‘localhost’ was trivial. The Windows Phone 8 Emulator, however, configures itself as a separate device on the network. As a result, an app running on the Windows Phone 8 Emulator can’t connect to the development computer through ‘localhost’. In essence, when you say ‘localhost’ from the Windows Phone 8 app, you are actually referring to the ‘localhost’ of the Windows Phone 8 emulator Hyper-V Virtual machine, and not that of your development machine which is hosting the backend service. This is true if using the inbuilt Casini web server or IIS Express. You now have your local machine and the Windows Phone emulator as two different machines, refusing to talk to each other!

My Case:
As for where I got stuck – I have a simple Visual Studio solution with three projects.

  1. An MVC 3 Web Application which wraps several SignalR Hubs for real-time communication across web & mobile devices
  2. A Windows Phone 8 app which attempts to talk to the SignalR Hubs
  3. A Windows 8 Store app which does the same

The SignalR backend server uses the latest Microsoft.AspNET.SignalR bits and both the clients have the newest SignalR .NET client library NuGet packages. Granted the SignalR server has a Hub called ‘ChatHub’, here’s the kind of code you would expect to write from a .NET 4.5 client:


IHubProxy SignalRChatHub;
HubConnection chatConnection = new HubConnection("http://localhost:53478/");
SignalRChatHub = chatConnection.CreateHubProxy("ChatHub");

await chatConnection.Start();
if (chatConnection.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected)
{
      await SignalRChatHub.Invoke("SomeMethodOnServer", "ExpectedParameters");
}

Well, the code above will connect a Windows Store app or for that matter any .NET 4.5 app to the SignalR backend server running on your ‘localhost’. The only exception is the Windows Phone emulator and for reasons we talked above. So, what’s the workaround?

The Solution:
Here are the series of steps I took:

  • Domain dis-join your development machine and turn off any VPN tunnel software. These use special IP Security protocols that the WP Emulator does not like.
  • Check the Windows Phone emulator virtual network switches. A simple ‘ipconfig’ will tell you what the HyperV VM is using for connections; it would most likely be like 169.254.nn.nn.
  • Next step is to configure IIS for external access. Normally, ‘localhost’ can only be hit from the same development machine; so you can see why the WP emulator cannot reach your IIS server. Shut down IIS Express, be brave & hand-edit some config. In your ‘C:\Users\\Documents\IISExpress\config’ folder, sits an ‘applicationhost.config’ file which IIS Express reads. Find your backend service application and tweak the config to allow access from a local IP address. Here’s what mine looks like:

    
    <bindings>
        <binding protocol="http" bindingInformation="*:53478:localhost" />
        <binding protocol="http" bindingInformation="169.254.80.80:53478:" />
    </bindings>
    

    You’ll notice that the local IP address binding I chose falls in the range of what the WP emulator VM would be using.

  • Now, open your service application through Visual Studio in Administrator mode; this is important since IIS will throw an access denied error otherwise. Fire up the backend service and make sure it is accessible from both ‘localhost’ and the specified IP address. This should work regardless of whether you have a website, SignalR Hub, WCF service or a Web API endpoint.
  • One more roadblock exists – even though we configured IIS Express to run our applications from an IP address in addition to ‘localhost’, it will still block requests from other devices on the network. To allow this needs a little tweak of Windows Firewall rules. I quote from MSDN to create a firewall exception for HTTP requests to IIS Express:
    1. From the Windows Start screen, search for Windows Firewall. Click to run the program.
    2. On the Windows Firewall screen, click Advanced settings.
    3. On the Windows Firewall with Advanced Security screen, select Inbound Rules. Then click New Rule.
    4. On the Rule Type page of the New Inbound Rule Wizard, select Port. Then click Next.
    5. On the Protocols and Ports page, enter the port number that IIS Express is using in the Specific local ports field. Then click Next.
    6. On the Action page, select Allow the connection. Then click Next.
    7. On the Profile page, select Private and, if applicable, Domain. Do not select Public. Then click Next.
    8. On the Name page, type a name for the rule. Then click Finish.
  • Now, you should be all set. Fire up the WP emulator and navigate to your website in IE through the IP – should be able to access it. If using a WCF Service or Web API endpoint, make sure to Add Reference using the specified IP address that was allowed in IIS Express. As for my SignalR Hub connectivity from Windows Phone emulator, here’s the code that works:

    
    IHubProxy SignalRMapHub;
    HubConnection mapConnection = new HubConnection("http://169.254.80.80:53478");
    SignalRMapHub = mapConnection.CreateHubProxy("MapHub");
    
    public async virtual void MapIt(MapClient phoneToMap)
            {
                // Fire up SignalR Connection & share location.  
                try
                {
                    await mapConnection.Start();
    
                    if (mapConnection.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected)
                    {
                        await SignalRMapHub.Invoke("ShowClientOnMap", phoneToMap);
                    }
                }
                catch (Exception)
                {
                    // Do some error handling.
                }
            }
    

So, there you have it – seamless connectivity to local development machine websites/services from the Windows Phone emulator. Do not forget to switch things to hosted settings once you are satisfied with local testing and ready to push stuff out to production.

Hope this was helpful. Adios!

I was amongst the thousands who spent much of last week at MSFT’s BUILD conference, this time in sunny San Francisco. Here’s what stood out for me:

  • A developer conference of the size of BUILD takes a lot of logistics planning. Microsoft, along with the 3rd party event management company that you see at all MSFT events now, pulled it off successfully. The event, organization, meals, attendee party, buses, registration etc. all seemed to go without any major glitches. Kudos.
  • BUILD keynotes did not disappoint. Executives including Ballmer, Nadella, Guthrie and other keynote speakers seemed to exude in instilling developer enthusiasm in the MSFT ecosystem. Windows 8.1 & several major announcements were made during the keynotes. Some were disappointed with lack of Windows Phone or XBoxOne news; but there are a whole lot of factors & product life cycle stages that contribute towards what’s being shared. I felt MSFT shared what they could and enticed developers with the opportunities that the ecosystem offers now.
  • As for the giveaways, surely the MSFT Surface Pro with Type cover and the new 8″ Acer Iconia W3 should have impressed attendees. Other goodies included 100 GB of SkyDrive storage (although it expires in a year) and an Office 365 license, along with gift cards towards the Windows Phone store. The Surface Pro is a great machine with near perfect balance of portability & productivity. I can also see the lure of the newer breed of 8″ or smaller tablets running Windows 8. The form factor lends itself wonderfully to reading books or consuming media content, but it would be another device to carry around. Sticking happily to my Surface RT for now ..
  • One of my biggest takeaways from any such big conference is the networking with peers; off course BUILD did not disappoint. Last minute hotel reservation meant that I was stuck in a shady San Francisco neighborhood; but that did not matter much given most of the time was spent with some very smart folks. From hanging out with my homies at the Telerik booth to friends like Brian Lagunas, Micheal Collier, Brent Schooley, Iris Classon, Matt Hidinger, Jeff Blankenburg, James Bender, Phil Japikse, Steve Bohlen & others., it was good times indeed. The Xamarin & DeepFriedBytes parties were awesome – thank you!

Sessions & APIs:

Between spending time at the super busy Telerik booth and offline conversations, I tried attending as many BUILD sessions as I could. There were some great ones, and ones were speakers struggled with technicalities; but that is normal at any conference and specially when showing off Preview software. If you were not at BUILD or missed sessions, almost all of them are now online @ http://channel9.msdn.com/Events/Build/2013.

Not surprisingly, lot of sessions focused on new APIs in Windows 8.1 for Store Apps and Azure Mobile Services integration. Amongst the new APIs or features, ones that really piqued my interest were the new native HTTP Client with caching/filtering/OAuth support, Pre-fetch data support for Windows 8.1 apps, POS support with Barcode/magnetic strip credit card reader, people/contacts integration, 3D printing support, Mobile Service integration wizards etc. Here are some of my top sessions picks; highly recommend watching, if you need to catch up:

One of best parts of BUILD is the opportunity to hang out with engineers who actually build the APIs we developers use. I was in several closed door sessions with Windows 8 engineers talking through what’s working and what’s not. And getting to pick the brains of the likes of Tim Heuer, Damian Edwards, Shawn Oster etc. – priceless.

Windows 8.1:

Off course BUILD kicked off the Windows 8.1 Preview and the update was made available for immediate download. The actual polished update would come later in the year through the Windows Store and it looks rather promising. You can get the preview now @ http://preview.windows.com.

Now, Windows 8.1 Preview is plenty solid and you do not risk your PC crashing all over the place. However, it is still very much a Preview and lacks polish, along with being jittery on several fronts. So, evaluate the risks before putting this on your dev machine. As far as I understand, if running Windows RT like on a Surface RT device, you cannot go back to Windows 8, but eventually can move forward once 8.1 becomes ready for GA. If running Windows 8 Pro, you are more likely to have to begin with a clean slate once Windows 8.1 gets ready to ship. So again, weigh your options as to where you want to install Windows 8.1; you pay a little price, but it’s worth it to have a taste of the new features and definitely as a developer if you need to consume the new APIs.

As for me, I put on Windows 8.1 Preview on my Surface RT the very first evening and not repenting it. But please make sure to create a recovery USB stick if you feel you might need to go back to how your Surface was with Windows 8 RT. Here’s the good & bad:

  • It’s the little things, but I love having the Desktop wallpaper as a background on my Start screen. Yes, the Start button is back on the desktop and it overlays the tiles on top of your desktop background, leading to a slightly less jarring difference between the desktop & touch world.
  • Win81_Screenshot4

  • If you had not noticed this yet, Windows 8.1 Preview ships with a preview version of Outlook 2013. Granted the Windows Mail app is being heavily redesigned, Outlook will serve your needs of having enterprise & other emails in one application in the desktop world; makes the Surface RT more friendly for work stuff.
  • Win81_Screenshot7

  • Now, you must have heard about the windowing support for the new Windows 8.1 apps. The fact that you can be on the Mail app and have several IE windows open up side by side as you tap on links is pretty cool, specially on high DPI/resolution monitors. The magic number is 500px for window width; the Windows engineers told me that they had labored a lot to come to this number.  So, this means that the old Windows 8 apps being in Full, Filled & Snapped modes is gone; instead apps can go from 500 px till as wide as needed and the developer gets to control the experience if desired. On lower resolution screens like that of the Surface RT, you will most likely see two/three windows side by side; but it is handy.
  • One after-effect of the window re-sizing is prioritization. Envision this: you have two apps running side by side in Windows 8 in a 80-20 split. The app having the wider screen real estate kinda has priority; so as you swipe from left and bring in another app, it slides into the 80% area. Now, with the new windowing support, there is no clear priority between windows and as a result, new apps trying to get to focus kind of hover on top of existing apps, waiting for the user to snap it in place. Kind of hit or miss in my opinion, but what else could they have done?
  • Win81_Screenshot6

  • One of the best noted Windows 8.1 features is the All-Apps list. Swipe up from the Start screen and voila, you have the list of All Apps. Newly installed apps do no longer clutter your start screen; instead they silently show up in this list. There is a handy sorting mechanism in All Apps list; set it to show the newly installed apps first and you will always know where to find apps in the order in which you installed.
  • Win81_Screenshot5

  • Other cool features of Windows 8.1 include the deferred Reading List available through the Share charm, Bing integration, hands-free mode inside apps, IE 11 with tabs at the bottom and baby/super large tile sizes. The last really contributes towards better organization of your Start screen as per your priorities.
  • Win81_Screenshot1

  • Now for the somewhat ugly after-effects. Windows 8.1 Preview has shipped with a really bad virtualization bug that affects XAML apps which use ListView/GridView etc; scrolling is really choppy and the whole screen stutters. You can see this in any Windows 8 XAML app that has not been upgraded yet, for example the Twitter app. I was told that the engineers have already fixed this and it should become available in the next iteration.
  • Here’s the other little awkward thing. Windows 8 apps used to support Snapped mode with 320px width; now suddenly the preferred width is 500px. So what happens in between? Yep, letter boxing. Until a Windows 8 app has been upgraded to 8.1, the gap between 320 & 500 px will simply be filled with black space. This almost looks as bad as iPhone apps running inside an iPad and I wish they would simply restrict Windows 8 snapped apps from stretching to 500 px. But it is what it is and hopefully major apps will all be upgraded to 8.1 before it hits GA.
  • Win81_Screenshot2
    Win81_Screenshot3

Overall, a great BUILD experience. Awesome times & good food with friends. Lots to learn & re-energize our brains for the next few months. Really looking forward to Windows 8.1 & starting to build Store apps right away. Cheers!