Sunday, June 17, 2007

TechMela was Awesome....

I attended the Technology Sessions with 8 Tracks and 150 Sessions in total.

Day 1




Visit the blogs on www.techmela.com

Monday, July 03, 2006

Microsoft Integration Options

Too Many Integration Options
As Microsoft puts out more and more integration products the decision to use what, when and where become more muddled. But fear not because I am here to be your bridge over troubled waters (Wife dragged me to a piano bar last night, so I had to sneak that in).

So lets start by looking at what we have today and what we will have in the near future.

















































Technology


Purpose


Future Technology


ASMX – Web Services


Direct integration between applications.


Usually in a synchronous fashion.



.Net Remoting



Enterprise Services



Microsoft Message Queuing


(MSMQ)


Asynchronous communication, using queues.



Host Integration Services


(HIS)


Integrating Windows applications with IBM systems.



BizTalk


(BTS)


Integrating applications using a broker or hub.



SQL Server Replication


Integrating data in a real time manner.




Queuing for SQL Server.


Available with all SQL 2005 versions.


SQL Service Broker (SSB)



Integrating data from multiple data sources.


SQL Server Integration Services


(SSIS)



A foundation for service oriented applications.


Indigo – Windows Communication Foundation


(WCF)



A foundation for building workflow based applications


Windows Workflow Foundation


(WF)




Each option has its role to play in the integration problem space, yet all of them have a common workspace (VS .Net), which makes solving complex integration scenarios fairly straightforward.

Now that we know what is out there and what is on its way, we can take a more in-depth look at some of these. I will attempt to do a series of blog posts highlighting each of these options, and when it would be the best choice

Wednesday, June 28, 2006

I am engaging on a new project focusing on the processes needed to facilitate communication and collaboration to manage the SOA environment. I believe that the requirements for communication and collaboration should be aligned with the life cycle of a service. I have defined the life cycle steps associated with services in an SOA environment.

- Define the service requirement - Specifying the purpose, functionality, interfaces etc of the services as well as service level agreements.

- Plan the service development - Prioritizing when the service must be developed as well as approving the budget and resources required.

- Design/Selecting service - Specifying in detail how the service will comply with the requirements.

- Build/Acquire service - Developing the service or acquire the service according to the design specification.

- Test service - Making sure the service and actually can perform in an operational environment.

- Manage service portfolio - Monitoring services availability, service states and compliance against the agreed service levels.

- Deploy service - Making the service available so that it can be called on in the operational environment.

- Publish service - Making the service definition and state knowable so that the service can be found and used by consumers.

- Find service - A consumer requesting or identifying a service that will satisfy a requirement.

- Invoke service - Adhering to security requirements, and protocols to call on the service and receive a response from the service called within an operational context.

- Enable service integration - Enable the infrastructure with the capacity to coordinate and enable the execution of services.
- Change service - Extending the functionality of the service to adapt to new user requirements.

- Decommission service - phasing the service out when it will no longer be supported or needed.

Each step of the life cycle will require a contribution from different stakeholders and different decision parameters. Each step can be seen as a use case of the service oriented architecture with its own actors defining Business and IT requirements.Bottom line: To ensure communication and collaboration between Business and IT in the service oriented environment consideration must be taken of the complete life cycle of a service.


Robin Mulkers writes:
I see it like this.Define the service requirement, Find the service/Select the service and manage service portfolios are a single process of SOA change management. This process has 3 actors, the service consumer who comes with his requirements, thepotential service providers who do manage specific systems or resources that are potentially needed by the consumer and the enterprise architect or service librarian who makes sure that the service is compliant with enterprise policies and shares a commonlook and feel (cares about canonical models, naming conventions and granularity for example).Design, Build/Acquire, Change, Test is an optional process that is used when an existing service must be changed or a new service must be created.Deploy, publish, enable service integration, decommission service are operational processesInvoke service is not a process I think.There are also management processes like gathering service usage metrics, change metrics.If your SOA uses intermediaries like security appliances or ESB kind of platforms, then there are processes to manage those platforms as well.And last but not least, defining several processes is one thing. Having those processes working together is another thing which is maybe even more critical for a successful SOA.

Tuesday, June 20, 2006

When a project fails , whose bad is it anyway ?

This is referenece to a Planet TW blog:

Anand Vishwanath: When a project fails , whose bad is it anyway ? ...




When a project fails , whose bad is it anyway ?


A couple of drinks with Thoughtworkers , is like asking for hours of debate over some hot issues. This time it was not only developers, but even some manager “types “. The topic of discussion was that if a project fails, who is most likely to be in the firing line, the project manager or the lead architect.


I think Managers


  • Have the most interaction with the clients (whether useful or not ;-) ).
  • Are answerable to the client why functionality was not delivered in an iteration when the technical team was playing technical cards, refactoring, clearing technical debt etcâ€�
  • Do the project planning/scheduling etcâ€� which has more visibility to the clients.
The technical team on the other hand
  • Has to figure out a way to deal with legacy codebases
  • Work with less skilled client developers
  • Keep clearing technical debt etcâ€�


All while trying to deliver required number of story points in an iteration.

Also not to mention the salary for yours truly Project Manager is far too high compared to a Technical Lead in the team. Wonder why ?

Monday, June 19, 2006

When we do denormalization in our database design

From BDOTNET forum,

The main reason for renormalization is leverage performance and helpful for ad-hoc reporting . In some situation a database design in 3rd normal form may require more table joins to process a query this additional table joins can degrade performance , rather than it can be achieved in 2nd or 1st normal form.

Another reason to denormalize a database is to simplify ad-hoc reporting. Ad-hoc reporting is the unstructured reporting and querying performed by end users. End users are often confused when they have to join a significant number of tables. To avoid the confusion, you can create a special set of tables designed for ad-hoc reporting.

Friday, June 09, 2006

How to become an Architect

Worldwide Institute of Software Architects
http://www.wwisa.org/wwisamain/index.htm

Role of Software Architects
http://www.wwisa.org/wwisamain/role.htm

Books and Tools on Software Architects
http://www.wwisa.org/wwisamain/books.htm

http://designpatternsfor.net/

Tuesday, May 02, 2006

Windows XP shortcuts and Environment Variables

List of the environment variables callable in windows 2000. e.g. Open a cmd prompt and type echo %appdata% which should return the full path to your profile's Application Data directory. If calling from a batch file remember to quote the %variable% e.g.


IF EXIST "%appdata%"\workrave\historystats. (mkdir D:\AllMyFiles\Workrave.) ELSE echo Workrave. missing

Here's the list with percentage included:

ALLUSERSPROFILE
%ALLUSERSPROFILE%
Local returns the location of the All Users Profile.

APPDATA
%APPDATA%
Local returns the location where applications store data by default.

CD
%CD%
Local returns the current directory string.

CMDCMDLINE
%CMDCMDLINE%
Local returns the exact command line used to start the current cmd.exe.

CMDEXTVERSION
%CMDEXTVERSION%
System returns the version number of the current Command Processor Extensions.

COMPUTERNAME
%COMPUTERNAME%
System returns the name of the computer.

COMSPEC
%COMSPEC%
System returns the exact path to the command shell executable.

DATE
%DATE%
System returns the current date. This variable uses the same format as the date /t command. Cmd.exe generates this variable. For more information about the date command, see the Date command.

ERRORLEVEL
%ERRORLEVEL%
System returns the error code of the most recently used command. A non-0 value usually indicates an error.

HOMEDRIVE
%HOMEDRIVE%
System returns which local workstation drive letter is connected to the user's home directory. This variable is set based on the value of the home directory. The user's home directory is specified in Local Users and Groups.

HOMEPATH
%HOMEPATH%
System returns the full path of the user's home directory. This variable is set based on the value of the home directory. The user's home directory is specified in Local Users and Groups.

HOMESHARE
%HOMESHARE%
System returns the network path to the user's shared home directory. This variable is set based on the value of the home directory. The user's home directory is specified in Local Users and Groups.

LOGONSERVER
%LOGONSERVER%
Local returns the name of the domain controller that validated the current logon session.

NUMBER_OF_PROCESSORS
%NUMBER_OF_PROCESSORS%
System specifies the number of processors installed on the computer.

OS
%OS%
System returns the OS name. Windows XP and Windows 2000 display the OS as Windows_NT.

PATH
%PATH%
System specifies the search path for executable files.

PATHEXT
%PATHEXT%
System returns a list of the file extensions that the OS considers to be executable.

PROCESSOR_ARCHITECTURE
%PROCESSOR_ARCHITECTURE%
System returns the processor's chip architecture. Values: x86, IA64.

PROCESSOR_IDENTIFIER
%PROCESSOR_IDENTIFIER%
System returns a description of the processor.

PROCESSOR_LEVEL
%PROCESSOR_LEVEL%
System returns the model number of the computer's processor.

PROCESSOR_REVISION
%PROCESSOR_REVISION%
System returns the revision number of the processor.

Program Files
%PPROGRAMFILES%
returns the location of the default install directory for applications.

PROMPT
%PROMPT%
Local returns the command-prompt settings for the current interpreter. Cmd.exe generates this variable.

RANDOM
%RANDOM%
System returns a random decimal number between 0 and 32767. Cmd.exe generates this variable.

SYSTEMDRIVE
%SYSTEMDRIVE%
System returns the drive containing the Windows root directory (i.e., the system root).

SYSTEMROOT
%SYSTEMROOT%
System returns the location of the Windows root directory.
TEMP

%TEMP%
System and User return the default temporary directories for applications that are available to users who are currently logged on. Some applications require TEMP and others require TMP.

TMP
%TMP%
System and User return the default temporary directories for applications that are available to users who are currently logged on. Some applications require TEMP and others require TMP.

TIME
%TIME%
System returns the current time. This variable uses the same format as the time /t command. Cmd.exe generates this variable. For more information about the time command, see the Time command.

USERDOMAIN
%USERDOMAIN%
Local returns the name of the domain that contains the user's account.

USERNAME
%USERNAME%
Local returns the name of the user currently logged on.

USERPROFILE
%USERPROFILE%
Local returns the location of the profile for the current user.

WINDIR
%WINDIR%
System returns the location of the OS directory

check out this http://www.todocom.net/Products/SetGlobal/Tutorial.aspx

Windows Key Shortcuts

http://www.codinghorror.com/blog/archives/000378.html