Sep 30, 2009

Computer hardware giants at risk due to Cloud computing.

IBM Cloud ComputingImage by Ivan Walsh via Flickr

With the SaaS and Cloud getting prominence, hardware IT giants scrambling for survival strategies.

With Cloud computing gaining popularity(adoption is still a question) and companies planning to get rid of hardware and software infrastructure, maintenance and labor costs, there is a huge risk of pure-hardware vendors such as Dell, Xerox, Gateway losing their fortunes.

With move to Cloud computing, the present customers of these hardware vendors won't have a need to maintain infrastructure, hardware and labor costs, as it will all be taken care of by the Cloud or Data Center management company chosen by the customer. This could give a huge savings and easy of maintenance, scalability and reliability of their hardware infrastructure.

What this means for hardware vendors is that, their revenue from selling hardware to companies becomes a smaller portion of their revenue. The only source of revenue would then be the consumer notebooks and desktops. Selling hardware directly to data centers would be a hard sell with lesser margins due to volumes.

The good news is the consolidation has already started happening. Dell buying the Perot Systems(outsourcing software services vendor), Xerox buying ACS(again an outsourcing software services vendor) are early signs of the trend. You can expect to see more in the near future, as the hardware vendors don't have much choice!

Reblog this post [with Zemanta]

Sep 27, 2009

Inherit User Control in Silverlight

Inheriting a user control is very common across winforms and web controls. Doing the same in Silverlight requires certain addtional steps and tweaks.

Our goal here is to create a variant of the DatePicker control that comes as part of Silverlight toolkit. Let's call it DatePicker2. I am going to create a modified version of datepicker that would display a watermark text and also disable user from typing into the text box.

Step 1:
Create a silverlight class library project

Step 2:
Add a new Silverlight user control to the project. The control XAML code will look like this:
< Usercontrol
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300"
>
< Grid x:Name="LayoutRoot" Background="White">
< /Grid>
< /Usercontrol>
Step 3:
Add a namespace declaration for the DatePicker control. Let's call it "myctl".
Rename the Usercontrol to "myCtl:DatePicker" to inherit the control.
The modified XAML code will look like this:
< myCtl:DatePicker x:Class="MyControls.DatePicker2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:myCtl="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
Width="400" Height="300"
>
< Grid x:Name="LayoutRoot" Background="White">
< /Grid>
< /myCtl:DatePicker>
Step 4:
Switch to view the code.
Add an override for OnApplyTemplate method of the base UserControl from which DatePicker is already inherited. Add the code to display watermark text and disable the text box. With the changes, the code will look this:
namespace MyControls
{
public partial class DatePicker2 : DatePicker
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
DatePickerTextBox box = base.GetTemplateChild("TextBox") as DatePickerTextBox;
box.Watermark = "to enter a date click this icon -->";
box.IsEnabled = false;
}
}
}
Step 5:
Make sure to add the "System.Windows.Controls" assembly from Silverlight toolkit.
Lastly, do the following steps on the news added DatePicker2 XAML file.

1. Right-click the file in “Solution Explorer”.

2. Change the “Build Action” to “Resource”.

3. Save the project and rebuild.

Step 6:
Add the DatePicker2 control to a test XAML page and test it out!

Reblog this post [with Zemanta]

Sep 23, 2009

IQueryable Count method takes longer to execute.

For those new to Entity Framework and facing the performance issues, you are in the right place.

In my case, i have a database with around 300 tables and growing. This results in the entity framework taking a lot of time(around 2-3 mins) to execute the first query over the EF. The reason for this is the generation of views by the EF when executing the queries for the first time after rebuilding the code.

There are couple of solutions to overcome those.
- Pre-generation of views during the code build process [Check the link]
- Lazy loading of EF [Check the link]
- Other performance points to look at [Check the link]

Pre-generation of views helps the most as it clears the major impact on the performance.

Hope this helps!
Reblog this post [with Zemanta]

Sep 15, 2009

PHR - Is it for you?

A medical record folder being pulled from the ...Image via Wikipedia

With the talk of healthcare stimulus, the healthcare IT is in a spotlight with everyone from healthcare IT companies, healthcare IT associations and obviously the fed making a strong case for adoption of PHR which is an abbreviation of Personal Health Record.
Personal Health Records refers to a digitized version of an individual's health history. The health information remains the same, but stored, presented and shared in ways not possible with a paper version of health history.
In traditional or non-electronic health records, the patient's health history such as doctor visits, symptoms, medications, surgeries, allergies, chronic illness, blood group etc are written or printed on a sheets of paper and stacked in the doctor's office shelves or cupboards. This has been the traditional and de factor way of storing your health history.
Is there anything wrong or fundamentally flawed in this approach? Certainly not. It has served the purpose of storing and referring your health information, whenever needed.
So, why do we need an electronic version of your health history? The answer is simple. It's the equivalent of your credit card. It has all the advantages of a credit card over carrying cash.
With credit/debit card,
You don't have to carry cash.
Your spending is tracked for you to view anytime.
Your spending reports helps you plan your expenses ahead.
Your financial ability is shared with people you would like to share. In this case, the stores where you make purchase can access your card balance before the purchase.
You don't have to wait in the queue to know your account balance or withdraw money. Just use the ATM machine.. day and night, whenever you like.
PHR has the same advantages as above. They are
Your health information is stored online and available to you 24 hours.
You own your health information. They are not locked up anymore in doctor's offices.
Your choose to share the health information with anyone you would like to share [Doctors, Nurse, Hygienist, Mom, Dad, Son, Daughter etc.]
Your health information now has intelligence to tell you more about your health and alert you on required actions such as your impending immunization, next doctor visit, your Body Mass Index etc.

Well.. just like credit cards come with their own problems, PHRs bring in concerns too..
Let's have a quick glance at those:
Your health information stored online is as safe as your credit card. If your credit card can be hacked or stolen, then your PHR can be too. This is a risk.. beyond your control!
You need to have minimal computer literacy to manage your own record. But, again one of your trusted well wishers can manage it for you.
Just like every other system in the world has its own advantages and disadvantages, PHRs have their own.
But, PHRs are anticipated to be ubiquitous given the benefits it brings to the human community and the healthcare system!

Reblog this post [with Zemanta]

Trace SQL statements in LINQ to SQL

For those curious about knowing the underlying SQL statements when executing a LINQ to SQL query, there is a way to trace to the debugger output in your Visual Studio.

Read the post in the following url that has a sample implementation.
http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11
Reblog this post [with Zemanta]

Sep 14, 2009

SQL Server FILESTREAM - Is it for you?

SQL Server 2008 introduced a new feature called FILESTREAM, which in simple terms is an attribute for varbinary(max) data type. It allows the unstructured data such as BLOBs beyond a certain size to be stored on the file system instead of DB. This brings in new choices for storing BLOB data.

FILESTREAM in a few words:
- Stores BLOBs in the file system, but through the database thereby providing transactional consistency
- BLOB size is limited only by the available file storage space [Previously, BLOB size limited to 2gb]
- The underlying file system storage mapping can be to SAN or network paths.
- The BLOBs stored in file system can be accessed through DB, directly accessing file folds on OS, or by streaming the files through a network share.

FILESTREAM in more detail:
- The data belonging a DB instance enabled with FILESTREAM stores data on the file system in what is called a Data Container. The data container has the files created using cryptic names (based on guid) and maintained by the SQL Server, as the BLOB data undergoes change. Since the data container is also accessible through the file system, any incorrect tweaking of the container could lead to data corruption and render the container useless. This is a risk to monitor all the time and take preventive actions to avoid.
- We could create multiple data containers and map them to the SQL Server as filegroups thereby providing load balancing with multiple data storage sinks.

Some of the key questions from a broader deployment, maintainability, integrity perspective:
  1. How to handle data recovery in case of data container corruption?
  2. Can we just backup the DB without the file system data? [assuming data is in SAN, which need not be moved]
  3. I would like to back up or restore the DB and just remap the filegroup path information [that maps to SAN]. Is this possible?
Read the reference articles for more info.

References:
- http://msdn.microsoft.com/en-us/library/cc949109.aspx
- “How to: Set Up FILESTREAM on a Failover Cluster” ( http://msdn.microsoft.com/en-us/library/cc645886.aspx).
- http://research.microsoft.com/apps/pubs/default.aspx?id=64525
Reblog this post [with Zemanta]

Sep 5, 2009

HealthVault application architecture - Quick notes

Microsoft HealthVaultImage via Wikipedia

HealthVault application architecture primary revolves around the following:
- Where is data stored?
- When is data accessed?
- How is user authenticated?

Where is data stored?
#1 Stored only in HealthVault
#2 Most of the data stored in HealthVault and remaining in application data store
#3 Data duplicated in HealthVault and application data store

Among above, #1 and #2 doesn't require synchronization between HealthVault and Application data store. #3 does require synchronization between them, which makes the system either simple or complex.

When is data accessed?
- The application requires permission from user everytime accessing the data from HealthVault
- The application requires permission only once from user and can access HealthVault data anytime from then without requiring permission from the user

How is user authenticated?
- Require the user to authenticate every time the application is accessing HealthVault data
- Require authentication once and store the relevant information for authentication-free subsequent access

Conclusion:
Requiring permission from user everytime to access their health record would be an impediment to doctors or any health care staff for adopting EMRs. Also, this wouldn't work in times of medical emergency. On the other hand, given a free hand to EMR would make the system more user friendly by performing underlying authentication in a transparent manner. But, users should be cautious about such access requests.

For those interested in processes, CodePlex has a HealthVault solutions development framework here.
Reblog this post [with Zemanta]

About HealthVault

With healthcare stimulus in spotlight, healthcare industry has seen a buzz of activities with players ranging from software giants[Microsoft, Google, IBM etc], already established healthcare software companies[GE, Cerner, Eclipsys etc] to surging small players [eClinicalWorks etc] entering the fray for electronic health records and the ecosystem such as HIE, Electronic Records Bank etc.

With the brief intro above left behind, we will find more about HealthVault and it's impact on the healthIT ecosystem. Primarily, HealthVault can be considered as a health records bank where personal health records(PHR) are stored online and can be shared with others.

Usage of HealthVault depends on your need and purpose to access the health data on the HealthVault. It can be:
- [You are a patient] I am here to store my PHR online and i want to share it with my doctors and family members.
- [You are a doctor] I am here to view the health data of my patient and update their health record.
- [You are a software engineer] I am here to write a healthIT software(EMR, HIE) that interfaces with HealthVault data either to read or update or do both.
- [You are a healthIT manager or executive] I am here to understand how i can employ/benefit using HealthVault in my hospital/state healthIT systems.

If you are a patient or a doctor, you should read about PHR and EMR to know the benefits and visit HealthVault site for signup and usage. Primarily HealthVault allows entering health information as text, uploading past health data in CCR/CCD formats to name a few.

If you are a software engineer or healthIT manager or executive, then you are in the right place to know more about HealthVault. Check my labels cloud for more posts on HealthVault.
Reblog this post [with Zemanta]