Wednesday, October 24, 2007

Microsoft Silverlight

Over a period of time, web applications/technologies evolved through various phases like CGI, Perl, Java, ASP, ASP.NET, ASP.NET AJAX and now Silverlight. Silverlight is nothing but a web presentation technology which is created to run on separate platforms. So far a great barrier to web applications was user experience. Because of technical constraints, the same user experience of thick client cannot be delivered to web users. It allows us to create rich and interactive experiences which can run on different browsers, different devices and different desktop operating systems as well.

So, what is the foundation of Silverlight technology? The main foundation is XAML i.e. eXtensible Application Markup Language. It is basically XML, which is text-based, providing a firewall-friendly, easy-to-inspect description of the rich contents. Other technologies like Flash, ActiveX or Applets send binary stream to the browser. This is diffcult to audit from security perspective as well as difficult to update. To know more about the architecture of the Silverlight, let us look at the building blocks of it as given below:
Light-weight browser plug-in:
It has Windows and Macintosh modules designed to enhance Internet Explorer, Firefox and Safari browsers.

Native Presentation runtime:
Software based browser enhancements allowing rendering of XAML based media in addition to the browser based native rendering of HTML. XAML can be used inline, in a file or in a package.

Media Pipeline:
Video and audio are handled as media elements in the XAML.

XAML Parser
Parser is used to parse the XAML before rendering it.

Programming layer
Silverlight XAML is exposed as DOM model to Javascript. It also supports managed code programming model using the subset of CLR

Should you want more information on this, you can refer to the following URL:
http://silverlight.net/

Cheers,
Amol

Tuesday, October 23, 2007

Google mobile operating system??

There have been rumors floating around in the market that Google would come up with the mobile operating system and Google phone as well. Google is now believed to be working on a Linux-based operating system for use on all makes of mobile phone, pitched not against Apple, but rather existing mobile OSs such as Symbian or Microsoft's Windows Mobile.

Whether it will be Google phone or Google mobile operating systems, one thing is clear that Windows mobile developers need to keep an eye on this front too.

Cheers,
Amol

Emitting PDFs using Aspose.PDF

Most of the projects have requirements to get reports in Word, Excel, PDF etc. While there are various ways to achieve these objectives, sometimes for quick development it makes sense to use third party component to do the same. I have used one such third party component called as Officewriter from SoftArtisan. And I must say that I was really impressed by this product and its features. It basically emits office documents from the server without actually installing MS office on the server. This is a cool feature for the web based applications. However there is also requirement to generate lot of PDF files these days. I am aware that there are lots of free/open source libraries available on the net to do the same. There are some cool third party components too available. One of them is given below.

Aspose.Pdf is a .Net component for writing Pdf documents without using Adobe Acrobat. It supports converting HTML, Word documents to PDF. It is possible to create PDF using API or XML templates or XSL-FO. The latest version also supports XML Meta data along with form fields, images etc. This component is written in managed code only and till now supports .NET version up to 2.0. If you want have a look at the features available then following is the URL:
http://www.aspose.com/Wiki/default.aspx/Aspose.Pdf/ProductOverview.html

Cheers,
Amol

Monday, October 22, 2007

One more sharp language from Microsoft – F#

I have read about F# initiative taken by Microsoft Research lab few years back. I happened to visit the F# initiative again today and hence this blog.

So, what is F#? Is it one more .NET based language with some more cool features? Or is it altogether different programming language?

Well to start with F# is nothing but typed functional programming language for the .NET Framwork. So, next obvious question is what do you mean by functional programming? Well, here is the definition from Wikipedia:

“Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast with the imperative programming style that emphasizes changes in state”

Most of us may have studied functional programming language in our academics. And that language is called as Lisp. Now, you can relate to the above mentioned definition.

However, F# is not simply a functional language: it is a multi-paradigm language that attempts to capture the best of both functional and object-oriented programming in the context of .NET. Furthermore, even when used as purely functional language F# is remarkable for the sheer power of the libraries and tools available through .NET. F# was designed to be first class citizen on the .NET giving smooth interoperability with other .NET languages. It means that F# can call C#. It also has access to .NET framework APIs, Widnows Presentation Foundation, Windows Communication Foundation, DirectX etc. F# and Ocaml (one more general-purpose programming developed by France National Institute) share a similar core language.

Following are some of the features of the F# language:
•Support for the functional programming features including tuples, lists, options, function values, local function definitions, pattern matching and sequence expressions.
•The powerful type inference mechanisms.
•Support for advanced functional programming constructs such as active patterns and computation expressions.
•F# embraces object-oriented programming and includes support for type-inferred, succinct descriptions of object types.
•Allows types and values in an F# program to be accessed from other .NET languages in a predictable and friendly way.
•Support for a form of meta-programming, inspired by LINQ. This allows data queries to be expressed and type-checked in F# code and then dynamically compiled and translated to target languages such as SQL using the LinqToSql framework.
•Supports .NET generics.
•Supports advanced language and runtime features such as Unicode strings, dynamic linking, preemptive multithreading, and SMP support.

The key application areas for F# on the .NET platform are:
•Mathematically oriented programming
•Scientific and Engineering tasks
•Hardware verification, software verification, optimization, machine learning and compilation etc.

You can find more information on the Microsoft Research home.

Latest update is that Research team is planning to integrate F# with upcoming version of Visual Studio.

So, what it means to programmers? Some one has correctly said, “programmers would chose the best language to write each piece of a coding task, just as a carpenter uses a hammer for one task and a saw for another”.

Cheers,
Amol

Thursday, October 18, 2007

Microsoft Vista Service Pack 1

Finally, beta white paper on Widows Vista Service Pack 1 has been released. But the release of RTM would be in the first quarter of 2008. So, what kind of updates will be there in Vista SP1? These updates can be broadly categorized as given below:
1. Quality improvement in terms of security, reliability and performance
2. Improvements to the administration experience including BitLocker Drive Encryption.
3. Support for emerging hardware and standards

In short, SP1 will deliver improvements and enhancements to existing features, but it does not deliver any new OS features as such. For example: It will improve the performance of desktop shell but it does not provide new search user interface.

So, let’s wait patiently until SP1 is released. My guess is that SP1 would come hand in hand with Windows Server 2008 in the next year. MSDN subscribers and partners might get the preview of SP1 later this year.

Cheers,
Amol

Accessing a COM component from the stored procedure

Have you ever thought about accessing a COM component from the SQL Server stored procedure? Well, I have thought about few years back only and since then this is my favorite question while interviewing people.

You may be also aware that .NET CLR can be now also hosted from the SQL Server 2005. Still some times you may require accessing a COM component quickly from the stored procedure especially if you are using SQL Server 2000.

Next question is how to do this? Microsoft SQL Server has lot of system stored procedures. Some of the stored procedures mentioned below can be used to create instance of an OLE component. Once you get the handle, you can also execute exposed methods to get the result. In case of errors, you can also find out the error details.

In short, following are the steps to do this:

• Initialize the DLL from SQL Server using the sp_OACreate method call.
• Call into the various methods or properties of the DLL using sp_OAMethod, sp_OAGetProperty and sp_OASetProperty calls.
• You can get all errors using the sp_OAGetErrorInfo stored procedure.
• Destroy the automation object using sp_OADestroy.

I know what you must be thinking now. Yes, you are right you can create a wrapper over .NET assembly and use it in the stored procedure.

Cheers,
Amol

Banking applications

How does it feel to write applications for a renowned world wide bank? How does if feel when every single line of code is worth of thousand of euros/pounds/ dollars?

Well, I have recently started writing banking applications. The complexity of the domain and the applications sometimes amuses me. The expectations from these applications are tremendous. You have to think about lot of things like: security, performance, user friendliness, scalability, reliability and so on. However it is fun to be part of this.

Cheers,
Amol

24X7 IT support from offshore

Out of the curiosity, I wanted to know what are the activities/phases involved in the maintenance/support project say 24 X 7 projects especially from offshore. Most of the big boys in IT industry serve lot of maintenance contracts. So, it is really good for us to know about that side of IT world. I will mainly focus on the support delivered by the offshore team.

Once RFP is made and customer and IT Company agreed to be in contract, first stage is Due Diligence.

Due Diligence:
In this stage, basically onsite people try to understand the applications which need to be supported. They will have lot of sessions with the customer in order to prepare due diligence documents. It is expected that lot of information is captured in these documents. The information includes lot of things like: technology used for the applications, number of FTEs required, current number of FTEs handling applications, data regarding history tickets raised so far for the applications etc.

Knowledge Transfer:
Once the team is identified, second phase of the contract gets kick started. Knowledge transfer phase typically involve lot of conference calls, live meetings, webex etc. In this phase, customers/SMEs will typically run the offshore team through the applications, application code (depending on what kind tier support is mentioned in the contract like tier-1/2/3/4) End of this phase will make sure that offshore guys are aware of the applications, technologies involved in the contract.

Shadow Support:
Once the Shadow support is started, offshore team solves some percentage of the actual tickets with the help of onsite people and the customer team. Typically, this percentage is between 10-20. The main objective of this phase is to make offshore team aware of the processes and the ways followed to actually solve the tickets with the help of onsite people.

Primary Support:
In this phase, offshore team solves all the tickets without taking much help from the SMEs/customer contact person. Offshore team will come up with the solutions of the tickets and then takes confirmation from the SME to solve it. One important thing to remember here is SME/customer contact person is still available onsite if any help/information/pointers are required by the offshore team to solve the tickets.

Steady State:
This is the final stage, where all the applications mentioned in the contract are completely supported by the offshore team. SMEs need not be required to be present henceforth.

There are so many different models exercised by IT vendors. Some of them will have few people onsite as well to support tier-1 and offshore team will support tier2, 3 and 4. Also, SLAs need to be clearly defined and should be followed strictly. There is whole lot of escalation matrix as well. For project managers, best part would be effort estimations for the support projects. They will have to rely on historical tickets data and in case where historical ticket data is not available then assumptions needs to be done. There are various parameters as well for such assumptions.

I also want to add that I am in the development field only and I have neither switched to support nor I plan to do so in near future. :)

Cheers,
Amol