Farhan's Two Cents on Collaboration, Integration & Enterprise Tech.

Farhan Khan

  Home  |   Contact  |   Syndication    |   Login
  29 Posts | 0 Stories | 35 Comments | 50 Trackbacks

News

Archives

EAI Folks

EAI Standards

EAI Tools

iPhone

Relativity

UnCategorized

Tuesday, December 18, 2007 #

MS has recently released a Business User training portal which can be installed on SPS and offers course-like environment where every user can track the completion of chapters/sections that focus upon various portal tasks. Im glad that MS has finally catered to something that should have been catered to long ago.

I have had the personal opportunity to install, play & present it at a client engagement and I must confess that the simple idea of having your own course is fabulous. The IT has no worries of scheduling, ensuring attendance, tracking progress of the portal training, thereby saving much of already hard-to-get time of business users and also making IT budget for the year :)

Any Business User (with access to portal) can simply logon to the training site which may be a site within the enterprise portal or even another server (should IT be concerned about the space usage and/or the intent of training being different from live portal) and do training at her own time. The course offers a variety of materials: interactive, video, presentation. Below you will find a sample 'table of contents' from a live training site.

 
You can download... 
standalone training @ http://www.microsoft.com/downloads/details.aspx?FamilyId=7BB3A2A3-6A9F-49F4-84E8-FF3FB71046DF&displaylang=en
 
server edition @ http://www.microsoft.com/downloads/details.aspx?FamilyId=673DC932-626A-4E59-9DCA-16D685600A51&displaylang=en

Monday, December 17, 2007 #

My opinion so far about every Google initiative is that they do it better than most and almost always accompanied with a sizeable business strategy to backup the product.

Latest in their offerings is their version of wikipedia: Knol is different because it credits and pays the authors and by the same token makes them accountable too thereby offering at least a bit more realiability than free-form authoring ~Smile~. I am very interested in seeing how the accountability comes into play.

Accuracy of information in rare but conspicuous cases proved to be a pain point with Wikipedia however the 'model-shift' towards accountability in Knol and its acceptability would be interesting and only remains to be seen once it comes live. Such a model could have its own pros and cons because from the looks of it the Google plans to balance the ownership factor with the ratings applied and this implies a lot of user feedback, again something that can only be successful with time and adequate user participation.

For more information about Knol, please click here.


Wednesday, December 12, 2007 #

After iPhone, few other names have been making frequent rounds of the internet recently. Since I am an early adopter of iPhone and majorly interested in gPhone and any other variants I thought I might as well jump in and clarify some terms and/or miconceptions at play here.

iPhone as you may already be aware is an actual phone running a stripped down version of the famous Mac OS X. The iPhone has gone through many firmware upgrade ever since its introduction a while ago. In North America, Apple has teamed up with AT&T and 'locked' the phone down for AT&T use only but that has not prevented the enthusiastic technologists to find ways to unlock the iPhone. Such technologists have been playing a catchup game, because Apple has been issuing upgrades at regular intervals for enhancements and to foil unlocking efforts. Currently iPhone is running OS v1.1.2 which by the way has already been successfully unlocked to be used without the AT&T agreement anywhere in the world.

gPhone aka Google Phone is a slightly misleading term. In Nov 2007 Google announced that they are looking to build an mobile phone platform code named Android (not a phone per se). The platform is going to be founded upon Linux OS, please refer to the link for an overview of the Android as a platform. Google has once again been true to its legacy and the most appealing aspect of the new platform is the 'free' ability to build and add applications to the platform since the code and API for the platform would be shared under the Apache license.

Lastly Skype is also in the process of launching its own version of the phone the highlight of which is not the gadget but the plans associated with it. There are no immediate plans to bring it to North America. If you are still curious click here.

 


Tuesday, December 11, 2007 #

If you have deployed or are in the middle of a MOSS deployment, SP1 should be of major interest to you. It addresses many of the product issues that your team may have realized during the implementation/configuration of the platform.

Personally I have experienced two issues which would be resolved by SP1:

  • Editing of documents crashes with multiple versions of Office installed
  • Send to Link in the context menu of the document mutilates the link in the email body

For more information, please refer to the MS Sharepoint Blog

Service Packs have been released moments ago and you can now download WSS SP1 here  & MOSS SP1 here.


Monday, December 10, 2007 #

Its a runtime to...

What its NOT....

  • A silver bullet
  • Animations in applets

What the future is like for Silver Light remains to be seen; instead of repeating the discussion, I will point to a very interesting discussion on the future proespects of the runtime by Jeremy.


Thursday, December 06, 2007 #

Since I am currently leading an enterprise portal rollout, I wanted to share a few thoughts on whats there in such effort that does not meet the eye.

Political factors aside, strictly on the technical end there are a few creases that need to be ironed out early in the project and some of those are

  • Identifying the Portal stakeholders (could be different from project stakeholders)
  • Targeting the audience that defines the portal strategy and involving them
  • Requirement Gathering from the enterprise and prioritizing since you will be most probably deluged with the results
  • Define templates (MOSS) that fit the need of the enterprise; its recommended to have appropriate number of templates instead of having one kitchen-sink template
  • Planning the training since the audience mostly carries an exceedingly varied mix of technical skills so the training has to be exhaustive and with screenshots
  • Planning the first day of portal since there could be many groups within the enterprise and 'leaders' should be the ones to run with it and introduce it to their own departments/divisions
  • Define proper handoff procedures esp. for the phase of Portal sharing with the audience and agree with client IT on well defined responsibility for support

Every project remains unique however the above approach caters to most portal projects and while technology factors may change, little do they affect the overall course of such efforts.


Wednesday, November 28, 2007 #

First lets dive into the definition of a governance plan infact more importantly what will it do for your enterprise. MOSS/Sharepoint is a collaboration platform and when the process of collaboration begins after deployment many processes will be required to maintain the integrity of data and structure within the enterprise portal.

Examples are

  • Team Structure & Responsibilities: Business Owners, IT Admin, IT Support
  • Operational policies: System Admin, Portal Admin, Extranet Maintenace(optional)
  • ....

Quoting from the Document: "The SharePoint Governance Plan is a guidebook outlining the administration, maintenance, and support of X Corporation’s SharePoint environments. It identifies lines of ownership for both business and technical teams, defining who is responsible for what areas of the system. Furthermore it establishes rules for appropriate usage of the SharePoint environments"

Please refer to the link below which provides you with a comprehensive template to create your own Governance plan for your enterprise.

http://technet.microsoft.com/en-us/office/sharepointserver/bb507202.aspx

You will find many other useful resources on the technet site.


Friday, December 08, 2006 #

It certainly has been a long time and I was hoping to make a full year's absence but then here I am again. Since its been a long time there have been many interesting aspects of technology and life in general that I have experienced.

On MS end, Vista, MOSS, BizTalk 2006, .Net 3.0 have been some of the technologies Ive had the chance to play with. Nevertheless I will try to update the Blog more often and take lesser long casual breaks :)


Thursday, February 02, 2006 #

You can download it here.

Thursday, August 18, 2005 #

Since I am a big fan of hotkeys, I thought it would be a nice idea to put a near-comprehensive list together (through research aka googling) ~Smile~

Win = Start Menu, Win + Pause = System Properties,

Win + D = Show Desktop,  Win + M = Minimize all windows,  Win + E = Launch Win Explorer (@ My Computer), 

Win + R = Run Command,  Win + Shift + M = Maximize all windows,  Win + L (XP) = Lock OS, 

Alt + Tab = Shift between Windows, Alt + Shift + Tab = Shift between Windows (Reverse Order), Alt + Spacebar + N = Minimize current window,

Alt + F4 = Close Current Window, Alt + Spacebar + X = Maximize, Alt + Spacebar + R = Restore,

Ctrl+X = Cut, Ctrl+C = Copy, Ctrl+V = Paste, Ctrl+A = Select ALL, Ctrl+P = Print, Ctrl+ Shift + F10 = Shows Context Menu (Mouse Right Click Effect),

Ctrl+Esc = Start Menu, Ctrl + Shift + Esc  = Show Task Manager, 

Application Specific (generally): Ctrl + S = Save, Ctrl + F = Find

@ Desktop/Win Explorer: F2 = Rename File,  F3/Win + S = Launch Search

Quick Hint: Those who hate typing long folder names/paths can simply drag and drop the whole entry from Windows Explorer Address Bar to Command prompt. (click on the left most end to pick)

Win Key is usually a key which has either the word 'Win' inscribed on it or carries the Windows amblem on it. Such keys are usually present on Microsoft specifc keyboards so if you are from Non-MS side of world and have a 'non-MS' keyboard then it may be difficult to find that key cuz' it may not even exist on the keyboard. In summary the presence of the Win key it really depends on the kind of keyboard that you have.


Wednesday, November 30, 2005 #

Career means different things to each of us and so does success, some attribute it to increasing monetary gains while others may ascribe it to personal satisfaction and then again the personal satisfaction may have different meanings to each of us and it can go on and on...

I am not here to argue about perceptions since that kind of analysis ie beyond my expertise, the motivation to write these few lines is to underline the importance of Business/Vertical/Industry Knowledge for success or even for survival, so to speak. Over the past few years, my humble observations have indicated that business acumen of an individual has become a primary factor for his success in any stream. Some 5-10 years ago, things used to be much different whereby the knowledge of technology alone would suffice to procure you a job or success in a job but things have radically changed over the course of time. Now an individual's comprehension of the business or the industry he aspires to serve, is a deciding factor whether he would be a good fit for the organization or not. Organizations already look for people who have the basic technological expertise as well as the business understanding and more than that the ability to foresee how the technology can serve the business based on their understanding of the business.

So far I have pointed out the changing trends, and say if we call it a 'problem' there just has to be a solution :) In my humble opinion, technological expertise will continue to remain important yet the business acumen will take precendence on the front stage and although technology will never be less than vital yet its fate will primarily be driven by the business and therefore a substantial part of any technologist's career should encompass the business and its path as well.

You may find the above statement more applicable to consultancy world, yet as I look at it I even see the products in future to be dependent upon business; may be I am stating the obvious yet the point I am trying to make is that even as pure technologists evolve in their careers they must meet with the challenge of understanding the business better than they already do.

What substantiates my observation above is the off-shore model rapidly taking over North America. I see a lot of technology implementation being pushed out of North America to Asia etc and what remains is the technology analysis. I am not too sure if its a good thing or not yet to survive in this increasingly competitive market we must load ourselves with the business understanding weapons.


The weekend was pretty hectic as I tried to install Longhorn Beta 1 but the effort proved futile on my VPC. The machine kept rebooting after the initial product key/info screens and although once it got as far as two hours of installation but then rebooted only to complain of Boot.ini.

The Vista was a breeze though as it installed on the first try (though I experienced a little friction through Reboots). For some reason mapping the ISO image of the Vista CTP directly to the VPC machine configuration under Virtual Server 2005 had problems. So I had to load the Daemon tools and mount the image on host system and then connect the VPC CD/DVD to the host mounted image of Vista.

I must say that this time around MS folks have done a pretty good job with the Vista installation sequence since minimal user input is required for the the compelte OS installation.


Tuesday, November 08, 2005 #

The example here builds a sample workflow which is event driven. The test harness will emulate a Document arrival notification and send notification to the workflow. Upon receipt of the event the workflow shall come out of its latent state and become active. The workflow will then check if the passed in data is for urgent processing (based on Priority parameter passed) and process it accordingly. The code has been kept very simple with fictitious processing times e.g. making thread sleep longer for normal processing etc.

The emphasis is on how to invoke the workflow, pass parameters and utilize some basic activities within the WF development environment.

First off, the development environment includes the following:

  • Windows Server 2003 with SP1
  • Visual Studio Final Release
  • Windows Workflow Foundation - Visual Studio Extensions [published in Nov’05]

 

  1. Select New Project >Sequential Workflow Console Application (Under C#>Workflow)
  2. Since an Event Driven workflow is desired, we have to first of all define an interface and events that the event sinks can listen to. Below is the code for a simple notification service and events for the event sink to hook upto. You can find description of the assemblies, attributes, keywords defined in the code below @ http://winfx.msdn.microsoft.com/.

using System;

using System.Workflow.ComponentModel;

using System.Workflow.Runtime;

using System.Workflow.Runtime.Messaging;

 

[DataExchangeService]

public interface INotificationService

{

    event EventHandler<NotificationEventArgs> NotificationAArrived;

    event EventHandler<NotificationEventArgs> NotificationBArrived;

}

 

[Serializable]

public class NotificationEventArgs : WorkflowMessageEventArgs

{

    private string notificationId;

 

    public NotificationEventArgs(Guid instanceId, string notifId)

        : base(instanceId)

    {

        notificationId = notifId;

    }

 

    public string NotificationId

    {

        get { return notificationId; }

        set { notificationId = value; }

    }

}

 

public class NotificationService : INotificationService

{

    public NotificationService()

    {    }

 

    public void RaiseNotificationAArrivedEvent(string notifId, Guid instanceId)

    {

        if (NotificationAArrived != null)

            NotificationAArrived(null, new NotificationEventArgs(instanceId, notifId));

    }

 

    public void RaiseNotificationBArrivedEvent(string notifId, Guid instanceId)

    {

        if (NotificationBArrived != null)

            NotificationBArrived(null, new NotificationEventArgs(instanceId, notifId));

    }

 

    public event EventHandler<NotificationEventArgs> NotificationAArrived;

    public event EventHandler<NotificationEventArgs> NotificationBArrived;

}

 

  1. Let us add some parameters to the workflow that have to be passed to the workflow before any processing can begin. By clicking on Workflow background and then looking at the properties (Parameters) will lead you to the Parameters dialog. Define three parameters Priority (In), Data (In) & Status (Out), all of type System.String.

  1. There is one more step involved in order to access these parameters in the workflow. They need to be declared as public properties in the <workflow>.designer.cs  file. By doing so these properties shall be accessible in configuration windows of different activities where applicable e.g IfElse Activity etc.

public string Priority

{

      get { return (string) Parameters["Priority"].Value; }

      set { Parameters["Priority"].Value = value; }

}

 

public string Data

{

      get { return (string) Parameters["Data"].Value; }

      set { Parameters["Data"].Value = value; }

}

 

public string Status

{

      get { return (string) Parameters["Status"].Value; }

      set { Parameters["Status"].Value = value; }

}


 

  1. Next lets introduce a decision making step by adding an If-Else activity. In the properties of the activity, define condition of type ‘System.Workflow.Activities.Rules.RuleConditionReference’. Since we exposed the parameters as public properties in the last step we can access them in the scoped member drop down in the condition expression dialog. You can add a condition which checks the Priority parameter for equality against string ‘High’.

  1. Next step is to add some processing inside the If logic. Add a simple code activity and some simple code by double clicking it. (you can invoke any methods given that the assembly is referenced properly)

private void code1_ExecuteCode(object sender, EventArgs e)

{

   //this.Status = SampleUtils.DoSomeWork(10);

     this.Status += "(Priority Processing)";

}

 

  1. Invocation of the workflow comprises of numerous steps. The code itself is pretty descriptive (I used a Windows Form application to invoke the workflow). 

static AutoResetEvent waitHandle = new AutoResetEvent(false);

IASequentialSample.NotificationService notifService = null;

WorkflowRuntime runtime = null;

StringBuilder sb = null;

 

private void button1_Click(object sender, EventArgs e)

{

    StartWorkflowRuntime();

 

    Guid instanceID = Guid.NewGuid();

 

    Assembly asm = Assembly.Load("IASequentialSample");

    Type workflowType = asm.GetType("IASequentialSample.Workflow1");

           

    Dictionary<string, object> parameters = new Dictionary<string, object>();

    parameters.Add("Priority", textBox1.Text);

    parameters.Add("Data", "Some Data");

 

    WorkflowInstance ins  = runtime.StartWorkflow(workflowType, parameters);

 

    notifService.RaiseNotificationAArrivedEvent("someId", ins.InstanceId);

 

    waitHandle.WaitOne();

    runtime.StopRuntime();

 

    textBox1.Text = sb.ToString();

}

 

private void StartWorkflowRuntime()

{

    runtime = new WorkflowRuntime();

 

    sb = new StringBuilder();

 

    // Register event handlers for the WorkflowRuntime object

    runtime.WorkflowTerminated += new

                   EventHandler<WorkflowTerminatedEventArgs>(WorkflowRuntime_WorkflowTerminated);

    runtime.WorkflowCompleted += new

                   EventHandler<WorkflowCompletedEventArgs>(WorkflowRuntime_WorkflowCompleted);

 

    // Add a new instance of the Notification Service to the runtime

    notifService = new IASequentialSample.NotificationService();

    runtime.AddService(notifService);

 

    // Start the workflow runtime

    runtime.StartRuntime();        

}

 

public void WorkflowRuntime_WorkflowTerminated(object sender, WorkflowTerminatedEventArgs e)

{    sb.Append("Workflow Runtime terminated");  }

 

public void WorkflowRuntime_WorkflowCompleted(object sender, WorkflowCompletedEventArgs e)

{

    sb.Append("Workflow Runtime Completed; Status Returned = " + e.OutputParameters["Status"]);

    waitHandle.Set();

}

 

The workflows that are not event driven are even simpler to run by simply starting and stopping the workflow through the WorkflowRuntime.

You may try out other activities or code your own however above account will do the basic plumbing for you to get an event driven workflow running.


If you are interested in a developing a State machine workflow there are already many references/tutorials out on the web.

In particular, I found the following very helpful while understanding the concepts:

http://blogs.msdn.com/federaldev/archive/2005/10/27/485691.aspx (Hello world)

 

http://channel9.msdn.com/Showpost.aspx?postid=122931

 

http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,7ec8a0d3-7c96-405f-aa60-edb23ce06d3b.aspx


Saturday, November 05, 2005 #

Finally a WF that will not give you any 'Package Load' error on VS.NET 2005 Release version launch. I have just downloaded and installed it on my VM.

I will be posting more about my experiments with WF later on, for now you can download here and play with it yourself .

It seems that the first installation was not all that smooth and things had to be reinstalled to get everything working. Although there were not 'Package Load' Failures, this time the development environment would become unstable on the launch of certian workflow console applications. Having said that a complete re-install of WF did the trick for me and I have been successfully able to develop, run and test workflows over the weekend.


Monday, October 31, 2005 #

So Google has already launched Google Base which is said to be an eMarket like eBay (screenshots are already available on the web posted by those fortunate enough to log in for once); apparently Google seems to follow SSO (single sign-on) :-) and therefore your Gmail account should be able to log you in. MS also seems to follow the google foot prints and they have their showcase up @ http://sandbox.msn.com. Start.com application seems to be the most interesting product from the showcase typically boasting web-parts feeding off RSSs. Certainly worth a glance......