Monday, August 24, 2009

Breathe

If you feel stressed out and overwhelmed, breathe. It will calm you and release the tensions.

If you are worried about something coming up, or caught up in something that already happened, breathe. It will bring you back to the present.

If you are discouraged and have forgotten your purpose in life, breathe. It will remind you about how precious life is, and that each breath in this life is a gift you need to appreciate. Make the most of this gift.

If you have too many tasks to do, or are scattered during your workday, breathe. It will help bring you into focus, to concentrate on the most important task you need to be focusing on right now.

If you are spending time with someone you love, breathe. It will allow you to be present with that person, rather than thinking about work or other things you need to do.

If you are exercising, breathe. It will help you enjoy the exercise, and therefore stick with it for longer.

If you are moving too fast, breathe. It will remind you to slow down, and enjoy life more.

So breathe. And enjoy each moment of this life. They’re too fleeting and few to waste.

By Leo Babauta through Julie911

Wednesday, August 19, 2009

Hope, Confidence and Optimism - Julie911

Hope: A feeling of expectation and desire for a certain thing to happen.

Confidence: A feeling of self-assurance arising from one’s appreciation of one’s own abilities or qualities.

Optimism: Hopefulness and confidence about the future or the successful outcome of something.

 

Tuesday, August 18, 2009

a alternative loop-up table

In the above case, we had a special column for Key. Instead we could also have a code for the course like this:

 

Student Table

 

 

Id

Name

Course

1

Abc

Comp

2

Xyz

Art

 

Course table

 

Id

Name

Comp

Computers

Art

Arts

 

This way the code is more readable. The downside is its pretty difficult to change the i.d. If in the future its required to change the id of “computers” course from “comp” to “it”, then that is not a easy deal.

Lookup tables

Student Table

 

 

Id

Name

Course

1

Abc

100

2

Xyz

101

 

Course table

 

Id

Name

100

Computers

101

Arts

 

In the above case the Course table is a lookup table. You look up with the course id and get the course name

Friday, August 14, 2009

Unit tests are faster

Write unit tests and your functionality gets done faster and most reliable.

Thursday, August 13, 2009

Clear history of firefox before seeing changes made to css files

Firefox caches css files. So if you change a css file, it may still be using the old css file and your changes will not be seen. So clear the cache to see the changes take effect.

Wednesday, August 12, 2009

Oracle putting its acquired companies to work

It uses JD Edward’s EnterpriseOne as a single point of management for its applications, BEA system’s web logic (integrated with Oracle’s home grown variant) as OFM (Oracle Fusion Middleware) along with its all famous DBMS to offer a full stack of software (added with OFA [Oracle Fusion Application] which are pre-packed applications that leverage on OFM and the DBMS.

Tuesday, August 11, 2009

Sleep well. A full night of sleep will help put you in a better mood. It will also give you energy to enjoy your activities.
Take a day off. If you have something planned for tomorrow that you are not looking forward to, try to cancel or postpone it. When avoiding your regular is impossible, plan ahead for a weekend or a day off by making your “tomorrow” a few days later than the next day.
Do something that you love. Spend some time with a favored activity, even if it is something that you have not done for a while.
Invite a friend or loved one to visit you. Have lunch with them, or watch a movie you both enjoy. Having a friend or loved one around can lift your spirits and make you feel good.
Eat healthy foods. Eating right will make your body feel better. That’s not to say that you can’t have your favourite foods, but make sure to incorporate fruits and veggies into your diet.
Think positively. Wake up and realize what an awesome day it is and how awesome you are!
Listen to a fast upbeat song, such as Jump or Tarzan Boy. It will put you in a good mood.
Seize the moment. Time is fleeting and there is nothing worse than a missed opportunity. Go for it!
Do something everyday that scares you! It helps you grow as a person, and makes you feel great afterwards! But don’t do something dangerous.

Saturday, August 08, 2009

Nice lines by ryan adams

These very moments as they pass
It’s like you’re just dreaming of busting someone else
Hands they hold a candle to the pages
These days they go so fast
These days are ours

Follow the lights that line the streets
connecting telephones
Follow the lights from house to house
And they will lead you home
They will lead you home
Cause there was never anywhere to go
There was never anywhere to go
But home

If every second year is true
Our love is strong enough to guide the way we walk through
Hands inside of hands
Hearts inside of hearts
Like eyes closed
Side by side and through

Follow the lights that line the streets
connecting telephones
Follow the lights from house to house
And they will lead you home
They will lead you home
Cause there was never anywhere to go
There was never anywhere to go
But home

If everything we are is true
Our memories are attics in those houses on the hill
Our love is there above us holding everything so still
And we are always here
Yes we are always here

So follow the lights that line the streets
connecting telephones
Follow the lights from house to house
And they will lead you home
They will lead you home
Cause there was never anywhere to go
There was never anywhere to go
There was never anywhere to go
But home, home

I just know I don't want to be mad anymore. I am just tired of being mad. - October road

Smart, funny and beautiful inside and out - October road

Friday, August 07, 2009

Listen to the sound of your breath, then relax it

  1. Listen to your life with your eyes closed
  2. Listen to your words before you speak them
  3. Listen to what you want - more of - in life
  4. Listen to the sound of your breath, then relax it
  5. Listen to your intuition. It’s always trying to grab your attention
  6. Listen to what your body needs, right now. Put your thumbs in your ears, cover your eyes with your fingers and then listen
  7. Listen thankfully to the sounds of nature
  8. Listen for the wisdom in your problems
  9. Listen more, talk less
  10. Listen to your thoughts in slow motion. Are they bringing you closer to your dreams or taking you further away?
  11. Listen to your life without the sound of technology and machines (no phone, TV, ipod etc)
  12. Listen to silence
  13. Listen to your favourite music
  14. Listen, really listen to your children, family and friends
  15. Listen to how many sounds are actually happening around you right now
  16. Listen to the calming sounds of the ocean by cupping your hands over your ears and turning your awareness inwards
  17. Listen to the sound of your favourite food cooking
  18. Listen to your heart - What is it saying?
  19. Listen to the sound of your feet when walking
  20. Listen to the appreciation of your body after eating something healthy

- thehealthylivinglounge.com

Wednesday, August 05, 2009

Conciousness during the persuit of a big goal

Aiming high is good. Big goals are good. But when it comes to pursuit, small goals (that match your skill and challenge) must occupy your consciousness. Small goals have smaller sacrifices (like spending your time studying instead of watch your favorite TV show). Smaller sacrifices are within one’s skill/ability. Successful small sacrifices, gives one the confidence that the goal is achievable.

It is within one’s ability to be mindful of one’s smaller goal and be focused on putting effort towards the goal by seeing small efforts giving small results. These small results put together will one day look like the big goal that one set out to achieve.

Heaven and hell here in earth

Heaven and hell is not something that one experiences after death. It is something that is undergone or experienced here in earth. God doesn’t sit in heaven and decide if you are going to heaven or hell after you die. He sites in your conscience and delivers heaven or hell based on virtues and non-virtues that occupy your consciousness.

 

Virtues like honesty, love, forgiveness allow you to experience heaven manifesting as peace in each moment on earth. Non-virtues like cheating, egotism, anger take you into hell experienced as a heavy feeling or guilt.

 

-me

oodles - lots of

Oodles of joy – lots of joy

ISO Sensitivity in digital cameras

ISO Sensitivity controls the amount of light that gets captured for photos taken. This is the same as the exposure rate in analog/film based cameras. In analog cameras the amount of light captured in the film is controlled by the duration of time the shutter is open for one click (exposure rate). In digital cameras, this is controlled by setting the ISO Sensitivity level of the cells that capture the incoming light upon click.

During bright light conditions, a lower ISO sensitivity is preferred and a higher sensitivity in dark conditions.

Tuesday, August 04, 2009

Finding the version of current svn working directory

Svnversion .

One brut way to find the cause of a regression change

Lets say we have N number of committed changes. A new defect surfaces. One brut way to find the cause of the defect is to revert the code to the point where the most dubious code change and see if the defect still arises. If it does, the most dubious code change or one of its successive commits are the culprits. If not, the most dubious code change is not the culprit.

Friday, July 31, 2009

It is the fool who fails to return to the place of his last happiness

"It is the fool who fails to return to the place of his last happiness." - Don't know the author

Wednesday, July 22, 2009

Multilayer validation strategy

The validation logic of an application can be spread across the application. Some logic against the UI, some against Business layer, some against service layer and some against DAO layer.

Sunday, July 19, 2009

One difference between chapter 7 vs. 11 bankruptsy

Chapter 7 - Going into liquidation
Chapter 11 - Trying to re-habilitate

Wednesday, July 15, 2009

Simple APIs responsibilities on arguments

public Student createStudent(Student student, Couse course)

 

Lets say the responsibility of this API is to save the student and return the saved version back (the saved version will have the key).

 

Some implications of this API is that

  1. If there is a failure, student and course objects should be left un-touched. If there were changes made before the createStudent() failed, all those changes should not be visible to the client of this API. This can be done by taking a copy of the student and course and letting createStudent() operate on that copy. That way if there is a failure, then the original student and course object remain intact.
  2. If the operation succeeds, the client of this APIs would usually require that all changes made by createStudent() be reflected in student and course. To achieve this, after all createStudent operations complete successfully, overwrite the copy that was made at that start of the call back into student and course.

Saturday, July 04, 2009

Do what you can do

Forget about your lists and do what you can because that’s all you can do. Phone up the people you miss and tell them you love them. Hug those close to you as hard as you can. Because you are always only a drunk driver’s stupidity, a nervous shopkeeper’s mistake, a doctor’s best attempts and an old age away from forever. - Julie

My hapiness and self worth

Don`t rely on someone else for your happiness and self worth. Only you can be responsible for that. If you can`t love and respect yourself - no one else will be able to make that happen. Accept who you are - completely; the good and the bad - and make changes as YOU see fit - not because you think someone else wants you to be different.

- Stacey Charter

Time it takes to get something done

Don’t let the fear of the time it will take to accomplish something stand in the way of your doing it. The time will pass anyway; we might just as well put that passing time to the best possible use
- Earl Nightingale

HQL notes

Case IN-sensitive

except names of classes and their properties
- Doubt: "This manual uses lowercase HQL keywords. Some users find queries with uppercase keywords more readable, but this convention is unsuitable for queries embedded in Java code." - why is this so? 

the from clause

minimum query is from Student - selects all instances of Student class. By default auto-import is true. So class names do not have to be qualified with the package name. If auto-import is turned off (false) then this query must be written as from com.xyz.Student 

To refer to Student in other parts of the query, an alias must be assigned to Student. from Student as student assigns student as an alias for Student. The "as" is optional. So the previous alias association can be written as from Student student. Its a good practice to start alias names in lower case as this is in-line with java coding standards for naming variable names.
- from Student as student, Department as department gives a cartesian product of all students and all departments. 

Joins
SQL Joins
Source. Joins used to fetch rows from 2 or more tables based on the relationship between columns in both the tables. Primary key is a column (or a group of columns - composite key) with unique values that identify each row. 

  1. inner join - returns a row when there is a match in both the tables
  2. left outer join - returns all rows from the left table even if there are no matches on the right table
  3. right outer join - returns all rows from the right table even if there are no matches on the left table
  4. full join - returns rows when there is a match in one of the tables

examples:

Employee table:
emp_noemp_namedept_no
1xyz1
2abc2
3ghi4

Department table:
dept_nodept_name
1IT
2Sales
3Accounts

inner join:
select emp.emp_no, emp.emp_name, dept.dept_name from employee as emp inner join department as dept on emp.dept_no = dept.dept_no;
emp_noemp_namedept_name
1xyzIT
2abcSales

left outer join
select emp.emp_no, emp.emp_name, dept.dept_name from employee as emp left join department as dept on emp.dept_no = dept.dept_no;

emp_noemp_namedept_name
1xyzIT
2abcSales
3ghi

right outer join
select emp.emp_no, emp.emp_name, dept.dept_name from employee as emp right join department as dept on emp.dept_no = dept.dept_no;

emp_noemp_namedept_name
1xyzIT
2abcSales


Accounts

full join
select emp.emp_no, emp.emp_name, dept.dept_name from employee as emp full join department as dept on emp.dept_no = dept.dept_no;

emp_noemp_namedept_name
1xyzIT
2abcSales
3ghi


Accounts

HQL Joins

Same types of joins as SQL
1. inner join e.g. from Employee as emp inner join | join emp.department as dept
2. left outer join e.g. from Employee as emp left outer join | left join emp.department as dept
3. right outer join e.g. from Employee as emp right outer join | right join emp.department as dept
4. full join



Tuesday, June 23, 2009

Cities hosting I.T Companies in the U.S

-          Atlanta

-          Seattle

-          Chicago

-          San Francisco

-          Bay Area

-          Detroit

-          Massachusetts

Sunday, June 21, 2009

Command Design Pattern

When one object has to issue a request to another object without know anything about the object that is receiving the request or the operation that is being requested.

Following is a class diagram of various entities:



invoker - the object that needs to make the request without knowing receiever
Command - the interface that specifies the APIs that Command implementations must realize/implement.
CommandImpl - A implementation of Command that contains logic to realize command. Usually delegates to a receiver.
Receiver - Object that contains the actual business logic to realize the request. This usually has no web or struts context.

For example the struts framework must invoke application logic without knowing which application object is receiving the request or what operation is being performed by the application object. To achieve this, struts exposes Action interface. Application action classes must implement the struts action interface. The responsibility of the struts action implementation is to realize the business functionality. To do so, the action implementation usually invoke a application object (a pure business object that has no dependency on struts or has not web context). This application object, in the context of Command Design Pattern, is referred to as a receiver.

The struts ActionServlet handles the in-bound request and invokes RequestProcessor.process method. This method as part of the many things it does, has a reference to an Action implementation (specified in struts-config.xml) and invokes Action.execute(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) without knowing which action implementation it is invoking or the operation it is performing..

The Action interface is a good example of Command component in Command design pattern.



Struts classes: Source

Saturday, June 20, 2009

Drools basics

Source

What is a Rules Engine?

If you've ever taken a series of conditional statements, tried to evaluate the combinations, and found yourself writing deep nested logic to solve a problem, these are just the sorts of entanglements that a rule engine can help you unrave.

Complex business rules when expressed as rules are easier to understand.

What is a business rule?

Its a business-oriented statement that encompasses a business decision. Often implemented by a if-then statement.

e.g.

Given a car and a driver, if all of the following conditions are met:
The car is red
The car is in a sport class
The driver is male
The driver is between the ages of 16-25

The consequence is a 20% insurance premium increase.

These business rules are not new: they are the business logic that is the core of many business software applications. If you're a developer, you've seen these rules time and again expressed as a subset of requirements. They're statements like "give a twenty-percent discount on orders over three items on Mondays" or "we don't insure sixteen-year-old males on supersport motorcycles."

The difference is in how the rules are implemented in the code. Traditionally these rules are written as if-else statements in application code. In drools, these rules are specified in Business rules form.

A rules engine takes these rules and executes them. Apart from that the engine also facilitates creation, deployment, storage, versioning and other administrative functions on rules.

Given a set of rules, the rules engine needs to determine whether a given rule should be selected for execution or not. Once selected for execution, the engine needs to determine the order in the selected rules must be executed in.

The rules engine uses a matching algorithm to determine which rules to execute. Drools uses a matching algorithm called Rete. Rete constructs a tree of business rules. Each node is a rule. Each leaf in the rules tree is a rule consequence (e.g. increase premium by 20%). A Fact (an applicant of age 21 applied for insurance for a green sedan [a 4 door car]) enters the top of the fact tree. Based on whether or not the fact satisfies a rule in a node, the fact navigates through the tree until it hits a leaf or a rule consequence. Treat, Leaps, Rete II and Rete III are improvisations of Rete.

Rules engines make sense when there is a certain level of complexity in the rules. If the rules are trivial or if every rule has to be run on every fact, then the overhead of using the rules engine may not be necessary. If the rules are complex, then the overhead makes sense.

Different rule engines expect rules to be specified in different ways. In java drools rules can be specified in xml files or java annotations or java POJOs that are wired with spring.

an example drools 3.0 .drl file:
package com.insurance.auto
import com.insurance.auto.Driver
import com.insurance.auto.Car
import com.insurance.auto.Policy
import com.insurance.auto.Style
import com.insurance.auto.Color
import com.insurance.auto.Percentage;
rule "High Risk"
when
Driver( male=true, age >= 16, age <= 25 )
Car ( style == Style.SPORT, color==Color.RED )
$p: Policy ()
then
$p.increasePremium( new Percentage( 20 ) );

Flavors:
The rule server can be embedded or can run as a server. If the application using the rules is already in a distributed env. (like EJB, web services, corba etc..) then hosting the rules in a server is better otherwise embedded mode is good.

Tuesday, June 16, 2009

Logging call stack

There may be situations where in you only want to log the call stack (to find out how a method got invoked). An easy way to do this is to throw a new java.lang.Exception(“”). Catch it and log it in the log file. This way you can have the call stack for a method invocation without having the bebug.

 

        try

        {

            throw new java.lang.Exception("Dummy exception to display call stack");

        } catch (java.lang.Exception e)

        {

            log.debug("stack trace", e); // This will print the exception on to the log file

        }

Wednesday, June 10, 2009

Using commons bean library to get all properties of a bean

    public String[] getFieldValues( DataObject bean )

    {

        List<String> fieldValues = new ArrayList<String>();

        try

        {

            // TBD: handle null key

            fieldValues.add(PropertyUtils

                .getSimpleProperty(bean, "key")

                .toString());

 

            PropertyDescriptor[] properties =

                PropertyUtils.getPropertyDescriptors(bean);

            for (PropertyDescriptor property : properties)

            {

                String propertyName = property.getName();

                Object propertyValue =

                    PropertyUtils.getSimpleProperty(bean, propertyName);

                if (null != propertyValue

                    && !propertyValue.toString().isEmpty())

                {

                    fieldValues.add(propertyValue.toString());

                }

            }

        }

        catch (Exception ite)

        {

            // TBD: handle this

        }

        return fieldValues.toArray(new String[0]);

    }

 

Friday, June 05, 2009

Thursday, June 04, 2009

What is GWT (Google Web Toolkit)

You write in java and GWT compiles to javascript. Different dialects for each browser generated.

 

Used to write rich client applications like think client applications. GWT is a client side. Had remote procedure calls to made server side calls. On server side ur on ur own.

 

JSF and other web framework support GWT. So GWT can be used to make ajax requests and handle them with server side frameworks like JSF or struts to handle the request on the server side.

 

Put the pedal to the metal (use a tech. to achieve traction). :-)

 

 

 

New Features in Java 1.5

  1. Generics: Collection<Student> students;
  2. Enhanced looping: for (Student currentStudent : students)
  3. Autoboxing and unboxing: Integer x = 4 // boxing; Integet y = 5 //boxing; System.out.println(x+y); //unboxing
  4. Enums: instead of static final constants e.g. enum colors {WHITE, GREEN, BLUE}
  5. Variable number of arguments:

·         Use sparingly and try not to overload variable argument methods as it becomes difficult to figure out which method will get invoked. They are invoked when no other method signature matches the call.

·         Zero or more arguments can be passed for variable arguments

·         Variable arguments can only be used as the final set of argument in a method

e.g.

…..func1(String one, String… args) // correct

…..func1(String… args, String one) // not correct

 

Old:

public class Test2

{

        public static void main(String[] args)

        {

                System.out.println(contact(",",new String[]{"one", "two", "three"}));

        }

 

        private static String contact(String seperator, String[] tokens)

        {

                StringBuilder s = new StringBuilder();

                for (String currentValue : tokens)

                {

                        s.append(currentValue);

                        s.append(seperator);

                }

                return s.toString();

        }

}

New:

public class Test3

{

        public static void main(String[] args)

        {

                System.out.println(contact(",","one", "two", "three"));

        }

 

        private static String contact(String seperator, String... tokens)

        {

                StringBuilder s = new StringBuilder();

                for (String currentValue : tokens)

                {

                        s.append(currentValue);

                        s.append(seperator);

                }

                return s.toString();

        }

}

 

Wednesday, June 03, 2009

Number types in Java


Boxing: If you use a primitive type where a Object is expected, then the compiler will auto-box it into a wrapper class. Similarly if a wrapper object is used where a primitive is expected, the compiler will auto-unbox it.

Integer x = 10; // 10 boxed into wrapper class instance x
Integer y = 20; // 20 boxed into wrapper class instance y
System.out.println(x+y); // x and y unboxed to primitives so that they can be added by passing them to the + operator

Advantages of using a Object-wrapper-of-a-primitive over using a primitive
1. Argument to methods that expect a Object such as the collection interfaces
2. To use constants defined in these wrapper classes such as min_value and max_value
3. To convert primitives to wrapper classes using methods exposed in wrapper classes

Methods exposed by sub-classes of Number
xxxValue() e.g. byteValue() returns the wrapped primitive value
static Byte | Short | Integer | Long | Float | Double valueOf (byte, short, int, long, float, double) -> primitive to wrapped type
static Byte | Short | Integer | Long | Float | Double valueOf (String) -> String to Wrapped type
int compareTo(Byte | Short | Integer | Long | Float | Double) - to compare Number instances
boolean equals(Object)
static String toString(int i), String toString() to convert primitive to String

Tuesday, June 02, 2009

Source of previous post on Business Objects

A business object

A business object is a software representation of a real life entity. The entity could be a person, process, event or place. Examples of business objects are employees, products, invoices and payments. Business objects contain business data and model business behavior/process.

 

Business objects are different from data object which only hold data and do not have any behavior.

 

There are 2 ways or 2 strategies to achieve business objects:

EJB Strategy: Uses Entity Beans to model business data (with or without Container Managed Persistence) and Session beans to model Business process.

Pojo Strategy: Use simple Pojo (Plain Old Java Objects) along with light weight persistence mechanism such as hibernate/JDO (Java Data Object) or JDBC.

Hibrid: Uses POJOs behind the scenes using EJBs. Implement session façade in session beans and use POJOs to persist data.

 

Design patterns - Session Facade

Design patterns - Session Facade (source)

Business processes involve complex manipulation of business processes. Business classes participate in several business processes. If the responsibility of orchestrating (making the calls on business objects [may be session and entity beans] necessary to achieve a business process) the business process is placed with the clients of business objects, then clients become difficult to write and business objects themselves become tightly coupled. 

The session facade defines a higher level component that abstracts the complex interactions between lower level business components. Session facade in implemented in a session enterprise bean. It provides a single interface for clients to achieve a full business process or a part of it. It also decouples lower lever business components from one another.

Facade in french means face. Hence the facade component exposes a single face for a business process.

Giving access to each small interface on the lower level business components increases network traffic and latency. 


Example: Approval of large purchase orders may be a complex business process involving several business objects. In this case a OPCAdminFacade (Order Processing Center) facade ay be introduced that exposes APIs to achieve order processing. In this case the UI code will interface with only the OPCAdminFacade and not with each of the business objects.

public interface OPCAdminFacade extends EJBObject {

public OrdersTO getOrdersByStatus(String status)
throws RemoteException, OPCAdminFacadeException;

public Map getChartInfo(String request,
Date start,
Date end,
String requestedCategory)
throws RemoteException, OPCAdminFacadeException;
}

OPCAdminFacade would be implemented in OPCAdminFacadeEJB.


The getOrdersByStatus would interface with ProcessManagerLocal and ManagerLocal to get a list of PurchaseOrderLocal entity beans. It then creates a List of transfer objects (OrderDetailsTO [transfer object]) and returns them to the client.

Web Services Notes (Source)

Web Services Notes (Source)

For 2 business applications to communicate with each other (distributed computing env.) they need. 
1. A means for find and register a service
2. A transport mechanism to access a service
3. A way to define what the input and out parameters are

RMI existed before web services. There was not a well established protocol or overlapping protocols (UDDI and ebXML) in RMI to achieve each of the above. The advantage with web services is significantly higher levels of abstraction. They are language transparent (web services written in c and java can interface with each other), Container transparent (Services hosted on heterogenous environment/servers can interface with each other) and implementation abstraction (one service fewer assumptions about the implementation of the other service thus coupling between the 2 services is reduced). 



Service provider hosts several services some of which are web services.
Service repository hosts meta information about services and are lookup by service clients
3 in diagram above indicates the address at which the service is available, the signature of the service and others
4 & 5 is client binding to the web service and their consumption of service exposed in the web service

Web services are better than RPC 
1. Web services uses XML for data interchange so there is no developer written code to marshell or unmarshell data
2. XML data is interchanged using HTTP or SMTP which are well defined standards
3. The underlying service is specified using WSDL (hosted by service provider)
4. Web services can be searched for using UDDI


WSDL (Web Services Description Language)
- (pronoinced wisdel) (a form of IDL - Interface definition language) 
- Specifies a interface in XML and defines the XML schema and thus provides the vocabulary for defining interfaces like <types> and <message>. 
- Semantics of services like synchronous request/reply synchronous reply only and asynchronous communicate
- end point and transport  of the service using <service> element i.e. who provides the service
- encoding using <binding> i.e. how to access the service