Tuesday, January 30, 2007

Attended Windows Vista and Office 2007 launch

Today I attended Windows Vista and Office 2007 launch in Washington D.C.
The event took place in Washington Hilton hotel.
I was really impressed with some of the new features in Windows Vista like the new dazzling interface, flip 3d windows, fast search, gadgets, parental controls etc.
The menus in Office 2007 are replaced by what Microsoft calls ribbons. There are many new features but they are not compelling enough to convince me to switch from Office 2003.
Finally as an incentive to attending the conference each of us received an Office 2007 copy and a T-shirt.

Microsoft has put up a new website (DinnerNow.net) that leverages several new Microsoft technologies like IIS7, ASP.NET Ajax Extensions, Linq, Windows Communication Foundation, Windows Workflow Foundation, Windows Presentation Foundation, Windows Powershell, and the .NET Compact Framework. You can also download the whole source code for the site starting Jan 31st, 2007 to look at how all these technologies work together.

Digg It! Add to del.icio.us Stumble This

Monday, January 29, 2007

Error "The project type is not supported by this installation." while creating ASP.NET AJAX enabled Web Application

Last night I downloaded and installed ASP.NET 2.0 AJAX Extensions 1.0 on my home computer. When AJAX extensions are installed, ASP.NET AJAX Enabled Web Application project template is also installed.
I tried creating a new project by selecting ASP.NET AJAX Enabled Web Application and I got an error some thing like below.

The project file 'C:\Inetpub\wwwroot\.....\AJAXTest.vbproj' cannot be opened.
The project type is not supported by this installation.

Upon Googling a bit, I found that we need to install Visual Studio 2005 Web Application project.and VS 2005 hot fix to support Visual Studio 2005 Web Application project. The hot fix should be installed first.
Please follow the link to learn more.
http://msdn2.microsoft.com/en-us/asp.net/aa336618.aspx

Digg It! Add to del.icio.us Stumble This

Sunday, January 28, 2007

Rare Videos of Warren Buffet

I was browsing throught Google Videos today and came across some videos on Warren Buffet.
The videos talk about Warren Buffet's life, his investment philosophy, his friend ship with Charlie Munger and Bill Gates and his philanthropy. I have read a book on Warren Buffet but haven't seen him talk till now. The videos are made by Charlie Rose in an interactive way and are very engaging even if you do not know anything about Warren Buffet. I have learned a lot from these videos.

This video talks about Buffet's childhood, his family and marriage .
http://video.google.com/videoplay?docid=6701318343299922276

This video talk about how Buffet made his billions
http://video.google.com/videoplay?docid=-6208910876057109785&q=label%3A%22warren+buffett%22

This video talks about his friendship with Bill Gates and his charity gift to Bill &Melinda Gates foundation.
http://video.google.com/videoplay?docid=-4846290947664386236&q=label%3A%22warren+buffett%22

Digg It! Add to del.icio.us Stumble This

Wednesday, January 24, 2007

A very useful Habit Tracking Application.

I ran across Joe's Goal Tracking Application on Delicious and I fell in love with it.It is one of those AJAX applications out there that is really useful and easy to use. It helps you keep track of your goals and even gives u reports on your progress. I recommend you give it a try. Here is a screen shot of my goals. You can find the app at http://joesgoals.com





Digg It! Add to del.icio.us Stumble This

Monday, January 22, 2007

Cheat Sheets for client side JavaScript Extensions for Microsoft AJAX Library

You can download cool cheat sheets for ASP.NET client side javascript extensions here
http://aspnetresources.com/blog/ms_ajax_cheat_sheets_batch1.aspx

Digg It! Add to del.icio.us Stumble This

Friday, January 19, 2007

WSE2 Tracing SOAP messages

Microsoft Web Services Enhancements (WSE 2.0) allows you to trace incoming and out going SOAP message. Monitor the trace files and purge the files before they become too big. If the files get too big, WSE 2.0 throws all kind of communication errors.

My webservice is behind a firewall and is hosted in a windows service on a particular port (xxxx). The client (outside the firewall) communicates with the windows service over TCP.

One fine day, the communication between the client and service broke. I found the following stack trace in my log file. From the stack trace, my initial thought was the service might be down and verfied the service to be running. Next, I connected my local system to the service and verfied that the communicate is fine. Since the service is running properly, I verified with the sys admin that the port (xxxx) on the router is mapped correctly to the server hosting the webservice.

After banging my head and Googling for hours I could not come up with a definite reason on why the client could not communicate with the service. When I tried to open the trace files on the client, I realised them to be too big and right then I had that AHA moment. I went ahead and disabled WSE SOAP message tracing and you got it right, the app is back on its feet smiling.

Error Message:Write Failure: Socket is not connectedStack Trace:Server stack trace: at Microsoft.Web.Services2.Messaging.SoapTcpNetworkStream.BeginWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback callback, Object state) at Microsoft.Web.Services2.Messaging.SoapTcpNetworkStream.Write(Byte[] buffer, Int32 offset, Int32 count) at Microsoft.Web.Services2.Dime.DimeRecord.WriteHeader(Boolean endOfRecord, Int64 contentLength) at Microsoft.Web.Services2.Dime.DimeRecord.WriteChunkedPayload(Boolean endOfRecord, Boolean endOfMessage, Byte[] bytes, Int32 offset, Int32 count) at Microsoft.Web.Services2.Dime.DimeRecord.WriteChunkedPayload(Boolean endOfRecord, Boolean endOfMessage) at Microsoft.Web.Services2.Dime.DimeRecord.Close(Boolean endOfMessage) at Microsoft.Web.Services2.Dime.DimeWriter.Close() at Microsoft.Web.Services2.Messaging.SoapDimeFormatter.Microsoft.Web.Services2.Messaging.ISoapFormatter.Serialize(SoapEnvelope envelope, Stream stream) at Microsoft.Web.Services2.Messaging.SoapTcpConnection.SerializeMessage(SoapEnvelope envelope) at Microsoft.Web.Services2.Messaging.SoapTcpOutputChannel.Send(SoapEnvelope message) at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(MethodBase mb, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)
Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(Message reqMsg, Boolean bProxyCase) at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed, MessageData& msgData) at Microsoft.Web.Services2.Messaging.SendDelegate.EndInvoke(IAsyncResult result) at Microsoft.Web.Services2.Messaging.SoapOutputChannel.EndSend(IAsyncResult result) at Microsoft.Web.Services2.Messaging.SoapSender.EndSend(IAsyncResult result) at Microsoft.Web.Services2.Messaging.SoapClientAsyncResult.OnSendComplete(IAsyncResult result)

Digg It! Add to del.icio.us Stumble This

Wednesday, January 17, 2007

Successfully installed and implemented Google Mini

Google Mini is Google's integrated hardware and software solution to index your organization's digital assets. You can learn more about Google Mini here http://www.google.com/enterprise/mini/.

Earlier our client, was using Microsoft's Index Server to index their digital assets. This index server was shared by several websites and is slowing things a bit. The server, I guess reached its capacity and could not crawl and index any new files added. We were looking at alternative solutions and stumbled upon the Mini.

Google Mini is a powerful search appliance in a blue box of the size of a large Pizza Hut pizza box. It is very easy to set it up and configure. The whole things takes around an hour or so to have the basic search solution up and running. All you have to do, is to tell the Mini what URL paths it has to index and bang, the Mini is on its feet crawling the site.

Things get a little tough and confusing when you start to change the look and feel of the results. To change the look and feel of the search results, we got to modify the style sheet (XSLT) that Google Appliance uses. In that we can configure our own header, menu and footer to integrate the search solution within the corporate website. This might take a while but trust me it is easy if you know how to tweak the XSLT. We can have more than one look and feel( front end) for our search results. Google Mini also lets us define our own collections to have pointed searches. A collection is a set of URL paths.

You can find the solution we implementd here http://search.dcoz.dc.gov/.

Overall, we are extremely satisfied with the end result. The search is very fast and the Return on Investment is huge.

If you have any questions on Google Mini, please leave a comment and I'll be glad to help you out.

Digg It! Add to del.icio.us Stumble This

Saturday, January 13, 2007

Using CASE, WHEN in SQL Server 2000

CASE expression in SQL Server is very useful and can save you hours of time.

In my project, I had to update a column in a table with several thousands of rows. My task is to remove a prefix (ANC) from the data in the column.
For example, the data in the column looks like below. I want to remove ANC and the following hyphen or space from all the rows in that column.
ANC-1E01
ANC2B02
ANC 3C01
3C01
2E
Null

My intial thought was to update the table manually, but with the sheer amount of rows in the table that approach seemed humungous.

Second thought was to write a cursor to loop through the table and update each row. But I thought there should be a better approach.

On brainstorming a bit, the CASE expression in SQL Server came to my rescue. It offered me a simple and elegant solution.

Here is how I updated my table.


UPDATE WARDDetails
SET Ward=
CASE
WHEN charIndex('ANC-',Ward)>0 --If the data is like ANC-XXX remove 'ANC-'
THEN SUBSTRING(Ward,charIndex('ANC-',Ward)+4,len(Ward))
WHEN charIndex('ANC ',Ward)>0 --If the data is like ANC XXX remove 'ANC '
THEN SUBSTRING(Ward,charIndex('ANC- ',Ward)+4,len(Ward))
WHEN charIndex('ANC ',Ward)>0 --If the data is like ANCXXX remove 'ANC'
THEN SUBSTRING(Ward,charIndex('ANC',Ward)+4,len(Ward))
ELSE Ward --If none of the above, dont update

END

Digg It! Add to del.icio.us Stumble This