Tuesday, November 29, 2011

Siri, a New User Interface?

Apple's newly iPhone 4S has a new UI, Siri. Basically, it is a nature language based virtual assistant application. What it accepts is a question or request. Behind sense, it has linguistic analysis system to figure out the request, and provides an answer or proposed action.

Natural language conversatiotn between human and computer has been in scientific fiction or future system.  Most people or developers still accept traditional ways as a channel communicate with computer, keyboard, mouse, and touch interface as from iOS. By using language as a channel, it has been in imagination until Siri.

Apple says that the current Siri is beta version and it is true.  Based on the experiment of most people, it has limited features. However, it is a fascinate feature.  Based on a question or request, in less than 10 seconds, the input would be transferred to a web service, where the input would be analyzed and an answer or proposed action is returned. The input and out are all in voice base.  The integration with OS makes it possible to provide either voiced respond, visual result, or suggestion, or action.

I think Siri does create a new way to communicate with computer. Traditional inputs like keyboard, mouse and touch interfaces do have their limits.  For example, when you have hundreds of apps in iPhone or iPad, it would be very difficult to find or use them.  Spotlight feature on iOS does provide a convenient way to find them. Just image, if you communicated with computer OS to issue questions, suggestions and commands in natural language, it would create an abstract way to explore OS and control applications.  Apple is the pioneer in this area, but we will see similar innovations following up soon.

Right now, Siri's platform is still in a black box.  I think that by the time of next year WWDC, more detail information and API support will be available. It will be very interesting to see if it is possible to provide application level support for Siri. By that time, we should be able to see wide extension of Siri usages.


Saturday, November 19, 2011

Xcode First Update from Apple Store

This is an update I got from Apple Store: XCODE 4.2.1. This year since I came back from Beijing vacation, I have to get chance to work on my iOS application. I intended to put the project on side since I have another important job I have to put my full energy on it. I have daily contact job which takes my day time, 8 hours. I was planing to work on iOS project if I did not have any contacts.

My current contact will be finished by the end of this year. It is mostly likely extended to another year. I hope that I will find sometime next year back to my iOS project. Even I did not have time to work on iOS codes, I did finished all the WWDC 2001 videos during summer time. I think that it is important to keep up with the technology even not working on any project.

Here is the snapshot of the update:


Friday, November 11, 2011

Add Customization to Web.config

I have not touched ASP.NET project for about one year.  Now I am back to a new ASP.NET project. Even though it is not too hard to pick it up and add my new skills and extensions to the project, I have to constantly refer to the project I worked before.  For sure, I would not like to copy the same structure and design into the new project.  The project is a .NET 2.0 based ASP.NET, but I am planning to update it to .NET 4.0 ASP.NET MVC 3 in the next stage, most likely next month or next year, if my contract extension would pass.

One thing I like to add is customized configuration.  I prefer to define my configuration out side of web.config, because there are so many special nodes designated to ASP.NET project or web site. I know there is a way to add customized nodes there, but I want to re-use my pattern to parse XML doc with my library.

At least I have to add one node in web.config. This is very easy:

  <!-- application specific settings -->
    <add key="MyConfigurationFile" value="config/MyConfiguration.xml" />

The above entry defines an application-wide setting named MyConfigurationFile with the string value config/MyConfiguration.xml, the configuration xml file in the web site folder config. With this setting, I can get the xml file like:

string file = ConfigurationSettings.AppSettings("MyConnfigureationFile");
file = string.Format("{0}{1}",
    AppDomain.CurrentDomain.BaseDirectory, file);



Working on an ASP.NET Project

Last week I started working on an ASP.NET project.  At the start, I was planning to use ASP.NET MVC 3.  I worked on MVC project 5 years ago.  That project was based on initial framework by Microsoft Patterns and Design group. Now this MVC has been changed a lots. It seems much easier to work with.

The first thing was a spike on this new framework. I tried one example from ASP.NET MVC web page.  One thing I don't like is that the project is integrated with Microsoft Entity Framework and SQL Express.  I had to break the connection to the SQL db to make it work. It took me one day to get main web page working.

Then I deployed to  our dev IIS, which is in a box of Windows Server 2008 R2 with .NET 2.0, 3.5 available. Unfortunately, the initial deployment was not working.  The project I created was based on MVC 4 and .NET framework 4.0.

I installed .NET framework 4.0. Still the web page on IIS was not working. I installed ASP.NET MVC package on the box. Still not working.  It looks like the Razor engine was not configured on IIS. I got 404 error, denying access to the content of a path, which is the basic structure of {site}/{controller}/{action}/, with no .aspx. Finally, I got it working by installing WebMatrix.

With all those installation, my MVC example web page was displayed on the IIS. I was very happy to tell my project BA, who is the main force to push this project with new framework. Unfortunately, on the second day, I realized that all the existing web pages stopped working. That's really bad news.

Since my project is in a very tight schedule, I made decision to roll my project back to a .NET 2.0 based ASP.NET web project. This is the one consistent with our existing web pages. I blamed Microsoft for IIS not being able to support .NET 2.0 and plus web pages.

Two days later, I spent several hours on IIS configuration. I saw that all the web sites on the deb box was based on application pool by defaults, which is .NET 4.0.  In the screen of application pool, there are previous ones based on .NET. After I changed the AP for existing web sites to .NET 2.0, all those sites are back to work. It is the updates that causes the AP changed. Still I think the installation should not change those AP settings.

That's quite up and down experience. I have learned good lesson about IIS configurations. IIS does support parallel .NET frameworks by specifying AP. Just imaging IIS as an application, and all the web sites are web pages based on all libraries.  The IIS is a complicated application. With IIS management console, the configuration can be set for web sites, which supports previous ASP.NET projects.

I'll continue to work on this project based on .NET framework 2.0 and ASP.NET. The next phase is to update it to .NET 4.0, hopefully with MVC 3.