Monday, August 11, 2014

Windows Phone - I'm not impressed!!!

Last week I went to a Microsoft store and played with a windows 8.1 phone. One word, though it has got impressive hardware specs, it never has a WOW feeling.

The phone uses a different UX pattern. All other operating system provides:

  1. Horizontal navigation (multiple screens), the windows OS provides vertical navigation. 
  2. No task bar, where a user can pin applications. As an example, I cannot create a quick short cut for phone, messaging applications. To make a phone call or to find the messaging applications, I have to search inside the UI application hell. Please don't give recommendations like  - create a folder, keep it on the  top of the screen. I call these recommendations a work around and not actual solutions.
  3. Even if it offers a live tiles, it doesn't provide a one OS feeling (I have a windows PC)
What MSFT can do to improve Windows phone ecosystem:
  1. Provide a unified user experience across all the devices (phone, tablets, XBox, PC)
  2. Provide horizontal navigation (available in PC and Xbox)
  3. Provide a fixed task bar on the metro screen which has a windows icon. On clicking this window icon button will open up the Applications (start up menu) window.
  4. A user can pin apps to the the task bar (like window 8.1 )
  5. Live tile folders (PC, tablet, phone and XBox)

I know, for the Microsoft engineers, the device form factor may be a big concern, if they move from vertical to horizontal layout. But, if you want to increase the customer base, you have to make a choice. Don't throw your choices to the users and make them suffer. 

MSFT CEO gives more focus to cloud services. Cloud may be today, but future is innovation. You guys need to provide a best in class products and services and support model to customers. For that, you have to change.  You need to marry your products with services. See, how apple is making revenue. Products, services and customer satisfaction. 




Tuesday, July 1, 2014

Visual studio 2013 Connected ecosystem

Collaborating systems are the next emerging buzz word in the technology community. From a consumer stand point, it is a MUST to have feature. However, for enterprises who are very strict with their IT policies, sharing "information" across the cloud or via the wire is a red flag.

I was working on a project that is intended to bring VS 2013 to the enterprise. The one annoying feature I found was the VS 2013 connected ecosystem. The VS 2013 connected ecosystem allows a user to sign in with his/her MSFT credentials. This will allow MSFT to control VS licenses and  a user can share VS settings across the wire. From an enterprise stand point, would this feature adds any value?? It creates a lot of issues with information sharing and data management.

Since I worked on Visual studio automation projects, I tried to shut down this feature using some registry hacks. The registry keys were generated on the fly and the values are created under 12.0_config settings. I tried to create some VS packages that will disable the registry values using a package definition file.

Another option I tried was to identify the Guid and the package id for the sign in menu. MSFT is very smart and they created the sign in button as a WPF component.

Since all are hacks, I don't prefer to implement it as an enterprise solution to disable sign-in button. So, I contacted MSFT and the answer was there is no standard way to disable the sign-in button.

Microsoft, when you create products you always hear from user communities. Have you ever tried to hear from enterprise communities?

Tuesday, May 13, 2014

ASP.NET 4.5 Bundling and Minification

Today I was playing around with the B&M feature ASP.NET provides. Since most of the open source libraries mandate to preserve the copy right text, one of my requirements is to preserve the copyright text. When I examined most of the libraries, the comments are placed under important comments /*!-------*/

So, my first approach was to create a custom bundle class, that use the default bundle builder class and a custom bundle transformation class. The custom bundle transform class will use the AJAX Minifier class (Microsoft.Ajax.Utilities.Minifier) to minify file with PreserveImportantComments = true

Everything had worked as expected and then I found that the entire global variables from all JavaScript files included in the bundle are listed at the top of the generated file. So, I decided to go with another approach.

  • Created a custom bundle class that uses a custom bundle builder class.
  • The custom bundle builder class use AJAX Minifier class to minify the files.
  • You can set code setting properties to control the minification process
public class CustomBuilder : IBundleBuilder
{
public string BuildBundleContent(Bundle bundle, BundleContext context, IEnumerable<System.IO.FileInfo> files)
{
var settings = new CodeSettings()
{
// LocalRenaming = Microsoft.Ajax.Utilities.LocalRenaming.KeepAll,
PreserveImportantComments = true,
RemoveUnneededCode = true,
EvalTreatment = EvalTreatment.MakeAllSafe
};

var content = new StringBuilder();
foreach (var fileInfo in files)
{
var minifier = new Microsoft.Ajax.Utilities.Minifier();
content.Append(minifier.MinifyJavaScript(ReadFile(fileInfo), settings));
content.Append(";");
content.Append(Environment.NewLine);
}

return content.ToString();
}

private string ReadFile(FileInfo file)
{
using (var r = file.OpenText())
{
return r.ReadToEnd();
}
}
}


public class CustomScriptBundle : Bundle
{
// Methods
public CustomScriptBundle(string virtualPath)
: this(virtualPath, null)
{
}

public CustomScriptBundle(string virtualPath, string cdnPath)
: base(virtualPath, cdnPath)
{
this.Builder = new CustomScriptBuilder();
}

}



Featured post

How to connect to Mongo Atlas from Robo 3T

If you use a local instance of MongoDB, you might be a great fan of Robo3T. However, if you are using Mongo Atlas, the Atlas web interface p...

Popular Posts