Tuesday, July 14, 2009

Fashionably Mysterious

Dear friends I found this article on http://www.personalmba.com an interesting site for learning Biz Management, by Josh Kaufman!

The Dangers of Mystique

Fashionably Mysterious

There's a big difference between liking the idea of being/doing something and liking the actual being/doing.

It's easy to like the idea of being the CEO of a Fortune 50. It's harder to like the hours, the responsibility, and the pressure that comes with the top job.

It's easy to like the idea of being a manager. It's harder to like the demands from C-level execs, surprises from your direct reports, and the necessity of defending your turf in a political environment.

It's easy to like the idea of getting an Ivy-League MBA or law degree. It's harder to like the six-figure debt and the corresponding necessity of getting a 120-hour-a-week job to make the investment "worth it."

It's easy to like the idea of being self-employed. It's harder to like the fact that 100% of your income comes from your own effort, and if you screw up, you're the one that will face the consequences.

It's easy to like the idea of raising millions of dollars of venture capital. It's harder to like the fact that you've given up control over the project you're investing your life in.

It's easy to like the idea of being an author or professional blogger. It's harder to like the solitude, uncertainty, and the long hours of "butt in chair, hands on keyboard" that consistent writing requires.

It's easy to like the idea of being a celebrity. It's harder to like the scrutiny, loss of privacy, and constant fear that people will direct their attention away from you in favor of the "next big thing."

It's easy to like the idea of being a supermodel. It's harder to like strictly controlling your diet, constant workouts, and hour-upon-hour of sitting still for the camera.

It's easy to like the idea of being a Broadway star. It's harder to like the endless auditions, evenings of waiting tables, and recognition that – even after landing a high-profile show – you'll probably be out of work again in a few months.

It's easy to like the idea of being a secret agent or special forces commando. It's harder to like people shooting at you.

Mystique is a powerful force – a little mystery makes most things appear a lot more attractive than they actually are. Fortunately, there's an easy way to counteract the rose-colored glasses of mystique: have a real human conversation with someone who's actually done what you're attracted to. Here's what to ask:

"I really respect what you're doing, but I imagine it has high points and low points. Could you share them with me? Knowing what you know now, is doing this worth it?"

It only takes a few minutes, and you'll be amazed by what you learn, both on the positive or negative side.

No job, project, or position is flawless – every course of action has benefits and drawbacks. Learning what they are in advance gives you a major advantage: it allows you to examine an option without idealizing it, then choose if it's really what you want to do with your time before you start. That kind of knowledge is priceless.

Like this post? Be sure to share it with a friend or colleague!

:-)

Sunday, July 12, 2009

Some Architectural snippets on JAVA, J2EE and Web


When migrating a web-based solution to a J2EE solution, you need to consider the requirements of the original solution as opposed to taking the route of replacing like with like, e.g. replacing ASP with JSP.

It may be the case that a solution using PHP and PERL technologies to handle presentation and business logic (and in some cases transaction management), could be better separated in J2EE with presentation logic being handled by JSP and Servlets and business logic by EJBs. (If transactions are involved in almost all cases, this is enough justification for using a separate application server and Enterprise JavaBeans.)

***

Use AJAX for repeated refreshes in web pages. Gmail uses this! ( note - 5 years Beta, solidly tested ).

Ajax neither reduces browser-compatibility issues nor improves security in anyway. Ajax will not work if Javascript is disabled because Ajax is basically a combination of Java Script and XML.

***

You are architecting a new web based labor claim management application. Currently the users have a Java Swing-based application running on their local PCs, and you want to implement the new web-based solution with a GUI that is similar to their desktop application. Once the users have filled in their hours then you must send the details to central labour system through a Web service.

What of the following technologies would be required for building this application?

UI can be built using JSF and the web service may be invoked through a JAX-WS client.


The Java Message Service (JMS) API is an API for accessing enterprise messaging systems. The Java Message Service makes it easy to write business applications that asynchronously send and receive critical business data and events. It defines a common enterprise messaging API that is designed to be easily and efficiently supported by a wide range of enterprise messaging products. It supports both message queueing and publish-subscribe styles of messaging.

The Java Secure Socket Extension (JSSE) enables secure Internet communications. It provides a framework and an implementation for a Java version of the SSL and TLS protocols and includes functionality for data encryption, server authentication, message integrity, and optional client authentication. Using JSSE, developers can provide for the secure passage of data between a client and a server running any application protocol, such as Hypertext Transfer Protocol (HTTP), Telnet, or FTP, over TCP/IP.

The Java Cryptography Extension (JCE) provides a framework and implementations for encryption, key generation and key agreement, and Message Authentication Code (MAC) algorithms. Support for encryption includes symmetric, asymmetric, block and stream ciphers.

***

You are currently designing your own Desktop Publishing application, as you have not found any existing application that does exactly what you want. As part of the design, you are using a Controller to which you send all GUI requests. Not all objects can process the same commands.

For example, you cannot select the spell check tool when an image has the focus. To stop any possible errors, you would like to filter out some of the messages as they are passed from these objects to the Controller object. What pattern could you use?

Firewall and Filter are not design patterns. In this scenario, what you are essentially trying to do is filter all packets that do not meet a certain set of requirements. This behavior is just like a Proxy server dropping packets from certain IP address etc.

Proxy - (GOF 207): "Provide a surrogate or placeholder for another object to control access to it."

The other patterns:

Adapter - (GOF 139):"Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn't otherwise because of incompatible interfaces."

Observer - (GOF 293):"Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically."

Chain of Responsibility - (GOF 223):"Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it."

***

Both the Abstract Factory and Factory Method are Creational patterns.

Abstract Factory - (GOF 87): "Provide an interface for creating families of related or dependent objects without specifying their concrete classes."

Factory Method - (GOF 107): "Define an interface for creating an object, but let subclasses decide, which class to instantiate. Factory Method lets a class defer instantiation to subclasses."

***

The current application has been built using JSF & a custom persistence framework. You have been approached to expose some of the data as a EJB to another J2EE application. You may need to access multiple business objects to provide the data.

Use Session Facade.

See description of patterns.
Application Service - Application Service centralizes and aggregates behavior to provide a uniform service layer to the business tier services. An Application Service might interact with other services or Business Objects. An Application Service can invoke other Application Services and thus create a layer of services in your application.

Session Facade - Session Facade provides coarse-grained services to the clients by hiding the complexities of the business service interactions. A Session Facade might invoke several Application Service implementations or Business Objects. A Session Facade can also encapsulate a Value List Handler.

The Service to Worker pattern, like the Dispatcher View pattern, describes a common combination of other patterns from the catalog. Both of these macro patterns describe the combination of a controller and dispatcher with views and helpers. While describing this common structure, they emphasize related but different usage of patterns. Both of these patterns differ in division of labour among components(Controller, Dispatcher and View).

In Dispatcher View content retrieval is done by View and in case of Service To worker content retrieval is done by controller.

Business Delegate - Business Delegate reduces coupling between remote tiers and provides an entry point for accessing remote services in the business tier. A Business Delegate might also cache data as necessary to improve performance. A Business Delegate encapsulates a Session Facade and maintains a one-to-one relationship with that Session Facade. An Application Service uses a Business Delegate to invoke a Session Facade.

***


Polymorphism is a characteristic of being able to assign a different behavior or value in a subclass, to something that was declared in a parent class.

For example, a method can be declared in a parent class, but each subclass can have a different implementation of that method.

Inheritance is the ability of objects in Java to inherit properties and methods of other objects.

An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of object and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer."

Encapsulation (also information hiding) consists of separating the external aspects of an object which are accessible to other objects, from the internal implementation details of the object, which are hidden from other objects.

***

Every Java object implicitly extends java.lang.Object class. What is this design concept?

It describes Inheritance. All Java objects extend Object class implicitly and also inherit methods such as toString().

Polymorphism is a characteristic of being able to assign a different behavior or value in a subclass, to something that was declared in a parent class. For example, a method can be declared in a parent class, but each subclass can have a different implementation of that method. Inheritance is the ability of objects in Java to inherit properties and methods of other objects.

An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of object and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer."

Encapsulation (also information hiding) consists of separating the external aspects of an object which are accessible to other objects, from the internal implementation details of the object, which are hidden from other objects.

***

What is the difference between Maintainability and Manageability in Software Engineering?

Maintainability (Cade 8) "is the ability to correct flaws in the existing system without impacting other components of the system" and Manageability (Cade 9) "is the ability to manage the system to ensure the continued health of a system with respect to scalability, reliability, availability, performance and security."

***

It provides a convenient way to bind an XML schema to a representation in Java code. This makes it easy for you to incorporate XML data and processing functions in applications based on Java technology without having to know much about XML itself. Which of the following is the API described above?


JAXB - Java Architecture for XML Binding (JAXB) provides a convenient way to bind an XML schema to a representation in Java code. This makes it easy for you to incorporate XML data and processing functions in applications based on Java technology without having to know much about XML itself.

SAAJ - The SOAP with Attachments API for Java (SAAJ) provides a standard way to send XML documents over the Internet from the Java platform. SAAJ 1.3 EA (with support for SOAP 1.2) is shipped in Java WSDP 2.0.

JAXR - The Java API for XML Registries (JAXR) provides a uniform and standard Java API for accessing different kinds of XML Registries. An XML registry is an enabling infrastructure for building, deploying, and discovering Web services.

JAXP - The Java API for XML Processing (JAXP) enables applications to parse, transform, validate and query XML documents using an API that is independent of a particular XML processor implementation. JAXP provides a pluggability layer to enable vendors to provide their own implementations without introducing dependencies in application code.

***

You have developed an application consisting of Java EE Stateless session beans. Methods of these beans use simple Java types. You would like to convert them to web services. How can you achieve it?

You can use annotations like @WebService and @WebMethod. They are automatically deployed as web services.

. web.xml does not have any such entries.

. resource injection is a mechanism that removes the burden of creating and initializing common resources in a Java runtime environment.

. ejb-jar.xml does not have any such entries.

***

EJB 3.0 offers simplified entity programming model.

Java Entity is a POJO class but not an EJB, so it does not require any Local/Home interfaces. Entities may either use persistent fields or persistent properties.

If the mapping annotations are applied to the entity's instance variables, the entity uses persistent fields.

If the mapping annotations are applied to the entity's getter methods for JavaBeans-style properties, the entity uses persistent properties. You cannot apply mapping annotations to both fields and properties in a single entity.

Simple primary keys use the javax.persistence.Id annotation to denote the primary key property or field. Composite primary keys are denoted using the javax.persistence.EmbeddedId and javax.persistence.Id Class annotations.

In the Java Persistence API, you no longer need to provide a deployment descriptor. JPA supports complex relationships between Entities.

***

A typical JSF application contains
  • A set of JSP pages (although you are not limited to using JSP pages as your presentation technology)
  • A set of backing beans, which are JavaBeans components that define properties and functions for UI components on a page
  • An application configuration resource file, which defines page navigation rules and configures beans and other custom objects, such as custom components. Usually named faces-config.xml
  • A deployment descriptor (a web.xml file)
  • Possibly a set of custom objects created by the application developer. These objects might include custom components, validators, converters, or listeners.
  • A set of custom tags for representing custom objects on the page
  • validations.xml is not part of JSF.
***

Real Time Web based Application can be built using JSP for UI, stateless session beans for business services and EJB3 entities for persistence.

***

The JavaServer Pages Standard Tag Library (JSTL) encapsulates, as simple tags, core functionality common to many JSP applications.

***

You have a requirement that the PIN of the customer used for ATM transactions must be encrypted using a one-way encryption algorithm to prevent data theft.

You should use SHA encryption. http://en.wikipedia.org/wiki/SHA_hash_functions

3DES is a symmetrical encryption algorithm.

Blowfish is a symmetrical encryption algorithm.

RSA is a asymmetrical encryption algorithm.

--
Regards
Vijayashankar

Securing Company systems over Web


The company web server needs to serve pages to remote users and office machines need access to the internet.

Given the above architectural system specification you should secure it by creating a DMZ that contains the company web server.

You should put machines that provide services to Internet clients in the DMZ and the office machines and development servers behind an inner firewall.

You would then configure a proxy server in the DMZ to forward the requests from the office machines to the Internet.

***

What are the solutions available, if planning for interfacing with existing CORBA systems. You can use Java IDL to integrate with these other systems.

The following is taken from: http://java.sun.com/j2se/1.3/docs/guide/idl/index.html

Java IDL adds CORBA (Common Object Request Broker Architecture) capability to the Java platform, providing standards-based interoperability and connectivity.

Java IDL enables distributed Web-enabled Java applications to transparently invoke operations on remote network services using the industry standard IDL (Object Management Group Interface Definition Language) and IIOP (Internet Inter-ORB Protocol) defined by the Object Management Group. Runtime components include Java ORB for distributed computing using IIOP communication.

Java IDL should not be used when servicing requests from CORBA clients and the reference to messaging is a red herring.

How does a predominantly EJB based J2EE application that has to be accessed by CORBA clients? Which connectivity option would you recommend?

RMI-IIOP stands for Remote Method Invocation (using IIOP as the transport.) This is the protocol supported by EJB1.1

**

What if you are Streaming information of the network?


StAX provides a standard, bidirectional pull parser interface for streaming XML processing, offering a simpler programming model than SAX and more efficient memory management than DOM.

StAX enables developers to parse and modify XML streams as events, and to extend XML information models to allow application-specific additions.

Below is an excerpt from Java EE tutorial.

Streaming refers to a programming model in which XML infosets are transmitted and parsed serially at application runtime.Stream-based parsers can start generating output immediately, and infoset elements can be discarded and garbage collected immediately after they are used.Streaming models for XML processing are particularly useful when your application has strict memory limitations, as with a cell phone running J2ME, or when your application needs to simultaneously process several requests, as with an application server. Streaming pull parsing refers to a programming model in which a client application calls methods on an XML parsing library when it needs to interact with an XML infoset; that is, the client only gets (pulls) XML data when it explicitly asks for it. Streaming push parsing refers to a programming model in which an XML parser sends (pushes) XML data to the client as the parser encounters elements in an XML infoset; that is, the parser sends the data whether or not the client is ready to use it at that time.

***

Use a VPN (Virtual Private Network) to connect to company networks. Mostly applications exclusive and sharing of data, should use this. This is better than using Firewalls, over internet.

--
Regards
Vijayashankar

Various Methods of Web Attacks

A Denial-of-Service attack (also DoS attack) is an attack on a computer system or network that causes a loss of service to users. Usually it is realized through consuming all of the bandwidth available to the victim network or by overloading the computational resources of the victim system. It can be prevented by using Service Request Queue technique - limiting the number of concurrent requests one application can get while queuing all excess requests.

A Man-in-the-Middle (MitM) attack is a technique where an attack intercepts another user's session, inspects its contents and tries to modify its data or otherwise use it for malicious purposes. Measures to prevent these attachs are to use encryption of sensitive data and prevent the data being read. Some examples are using SSL, avoiding Frames/IFrames, avoid URL rewriting (SessionId is exposed).

Cross Site Scripting (XSS) is a type of computer security exploit where information from one context, where it is not trusted, can be inserted into another context, where it actually is trusted. From the trusted context, attacks can be launched.

Cross site scripting (also known as XSS) occurs when a web application gathers malicious data from a user. The data is usually gathered in the form of a hyperlink which contains malicious content within it. The user will most likely click on this link from another website, instant message, or simply just reading a web board or email message.

Usually the attacker will encode the malicious portion of the link to the site in HEX (or other encoding methods) so the request is less suspicious looking to the user when clicked on. After the data is collected by the web application, it creates an output page for the user containing the malicious data that was originally sent to it, but in a manner to make it appear as valid content from the website.

Some of the measures to prevent it : encode the data on the generated pages, escape user input (special characters,tags), validate user input(maximum length) using Frameworks like Struts Validator, users disable javascript, avoid using Frames/IFrames.

Phishing is an attempt to criminally and fraudulently acquire sensitive information, such as usernames, passwords and credit card details, by masquerading as a trustworthy entity in an electronic communication. Phishing is a social engineering technique to fool users.

--
Regards
Vijayashankar

Saturday, July 11, 2009

How to hire the right person for Top management?

Fill a room with 100 bricks in some particular order and close it (with an open window)
Then send 2 or 3 candidates in the room and close the door.
Leave them alone and come back after 6 hours and then analyze the situation.
If they are counting the bricks.
Put them in the accounts department.
If they are recounting them.
Put them in auditing.
If they have messed up the whole place with the bricks.
Put them in engineering.
If they are arranging the bricks in some strange order.
Put them in planning.
If they are throwing the bricks at each other.
Put them in operations.
If they are sleeping.
Put them in security.
If they have broken the bricks into pieces.
Put them in information technology.
If they are sitting idle.
Put them in human resources.
If they say they have tried different combination's, yet not a brick has been moved.
Put them in sales.
If they have already left for the day.
Put them in marketing.
If they are staring out of the window.
Put them on strategic planning or owner's office.

And at last........................
If they are talking to each other and not a single brick has been moved.

Congratulate them and put them in top management.


--
Regards
Vijayashankar

Wednesday, July 8, 2009

Be like this boy

Be Positive Like This Boy

A beautiful Madam was having trouble with one of her students in 1st Grade class. Madam asked,'Boy. what is your problem?'

Boy answered, 'I'm too smart for the first-grade. My sister is in the third-grade and I'm smarter than she is! I think I should be in the 4th Grade!'

Madam had enough. She took the Boy to the principal's office. While the Boy waited in the outer office, madam explained to the principal what the situation was. The principal told Madam he would give the boy a test and if he failed to answer any of his
questions he was to go back to the first-grade and behave.She agreed.

the Boy was brought in and the conditions were explained to him and he agreed to take the test.



Principal: 'What is 3 x 3?'
Boy.: '9'.


Principal: 'What is 6 x 6?'
Boy.: '36'.


And so it went with every question the principal thought a 4th grade should know. The principal looks at Madam and tells her, 'I think Boy can go to the 4th grade.'

Madam says to the principal, 'I have some of my own questions.

Can I ask him ?' The principal and Boy both agreed.


Madam asks, 'What does a cow have four of that I have only two of'?

Boy, after a moment 'Legs.'


Madam: 'What is in your pants that you have but I do not have?'

Boy.: 'Pockets.'



Madam: What starts with a C and ends with a T, is hairy, oval,
delicious and contains thin whitish liquid?

Boy.: Coconut


Madam: What goes in hard and pink then comes out soft And sticky?

The principal's eyes open really wide and before he could stop the answer, Boy was taking charge.

Boy.: Bubblegum


Madam: What does a man do standing up, a woman does sitting down and a dog does on three legs?

The principal's eyes open really wide and before he could stop the answer..

Boy.: Shake hands



Madam: You stick your poles inside me. You tie me down to get me up. I get wet before you do.

Boy.: Tent



Madam: A finger goes in me. You fiddle with me when you're bored. The best man always has me first.

The Principal was looking restless, a bit tense and took one large Patiala Vodka peg.

Boy.: Wedding Ring


Madam: I come in many sizes. When I'm not well, I drip. When you blow me, you feel good.

Boy.: Nose



Madam: I have a stiff shaft. My tip penetrates. I come with a quiver.

Boy.: Arrow


Madam: What word starts with a 'F' and ends in 'K' that means lot of heat and excitement?

Boy.: Fire truck



Madam: What word starts with a 'F' and ends in 'K' & if u don't get it, u have to use ur hand.

Boy.: Fork



Madam: What is it that all men have one of it's longer on some men than on others, the pope doesn't use his and a man gives it to his wife after they're married?

Boy.: SURNAME.


Madam: What part of the man has no bone but has muscles, has lots of veins, like pumping, & is responsible for making love ?

Boy.: HEART.



The principal breathed a sigh of relief and said to the teacher,

'Send this Boy to
IIM AHMEDABAD (Indian Institute Of Managment)
I got the last ten questions wrong myself!'

Monday, June 22, 2009

Building a team: Discussion

Building a company team is much more complex and revolves around your business plan. You need revenue projections along with employee costs to proceed. I would recommend you hire an experienced consultant to guide you or put together an advisory team/board of entrepreneurs who have started businesses and made them successful.

***
The concept plan will define your product/service and allow you to flesh out the idea. Key facets of this should at least include: a description of the website's function and a proposal of the value added to its users; a(n at least basic site map); a flowchart describing the process of building the site; and design and usability considerations.

The strategic plan will allow you to identify the business model you are expecting to employ. If done right, it should be straightforward (though sometimes difficult) to construct it in a way that connects the dots. In my opinion, every strategic plan should include: a description of your core principles as an organization (vision/mission/goals/values); an analysis of your internal resources and external market environment (not limited to your presumed customer base); strategic options and a description of your choice as well as an explanation of 'why'; a plan for implementation of the strategy - including needed resources; expectations of performance (operational/market/financial); a description of relevant metrics you can use to gauge your business' performance; and a plan for how to monitor and respond to changes in your operations and/or market.

***
Developing your team of core advisors and mentors is very important, as I'm sure you already know. It sounds like you need some advisors/mentors just for general business purposes - and at least 1 or 2 that specialize on the web side.

Just my opinion, but I'd start by scanning through your business plan to determine core areas needed to get your business going. That will help you determine what KIND of advisors you need. You are particularly looking for people with skills you don't have. As an example, I have an accounting degree, so when I was looking for core advisors, I did NOT look for an accountant, since I would fill that slot, myself. If you can interest a lawyer and someone with an accounting/finance background, that's a real plus. For web models, I'd also say a really energetic, up-to-date marketing person would be a tremendous plus. The marketing person should be very knowledgable about current and up-coming web and new media (like i-Phone, etc.), able to evaluate what is working, all the legal requirements, etc., since all of these will, ultimately, be a part of your big picture.

On the web side, someone very strong in web development from the IS side - and, if you can get two, one who is also strong on web commerce (if this will be an e-commerce site). I have discovered that some folks who are terrific at innovative web design and management aren't as strong on e-commerce, which has a lot of legal and technical areas that are vital.

Once you've figured out what kind of advisors and mentors you need - I'd say no more than 8-10 people with 6-8 people being ideal - you can start strategizing on how to get them!

Depending on where you live, an area university or your alma mater may have a program that matches graduate students in a specific area with projects. A law school may have a free law program similar to that. I live in Nashville, TN, and Vanderbilt University does both of these. It's not just for start ups - some really big companies use these services. If your alma mater has an online business connection, sometimes folks from your school might be interested and willing to help - or identify someone for you.

Another way is to become active in some organizations that people that you need are likely to belong to. I belong to the American Marketing Association for just that reason. Check FaceBook for professional listings. Some pros participate in FaceBook. Even if they aren't available for a low cost, they frequently can match you up with someone good who is - or you may find them by visiting a page frequently and observing their posts. I have met an excellent career coach through LinkedIn, for example.

Networking is a really big key, but it needs to be networking with people who have what you are looking for, not just social events and business-card-swaps. Don't be bashful about "telling your story" over and over again. Come up with a couple of short pitches (one 2 minute one and one 5 minute one) that will explain what you are trying to do. That won't bore the people who will eventually say, "Oh, yeah, I have a friend that would be interested in that" . . . or "does that" and will be willing to give you an e-mail or contact to get in touch with them. And, if they are interested themselves, they will let you know and you can go into more detail. A lot of this is really viral and on-the-spot. The big thing on networking is to have a plan. Plan 1) what you are going to; 2) who you want to talk to; 3) what you plan to say to them; and 4) what you are trying to get (contacts, etc.). You'll get better results that way.

A lot of cities have Small Business centers that provide a LOT of help with this. Check and see if there is one in your area. They are frequently free. And, many Chambers of Commerce have programs that can help, too. Some of the COC programs are free - some cost some money, but not usually very much.

***
Its a very dangerous trap "if I build it they will come". I've fallen into that trap myself in the past and paid in time and money. Validate your business model first.

Does your product address a pain point?
Is your pain point recognized?
Is the pain great enough that people are willing to pay for it? (I can't stress this point high enough)
Will the payment model support the business both in start up and as it grows?

Second prototype and model your product. You should take an iterative approach starting with detailed static mockups, framework functions, etc. and validate, validate, validate with leaders in the industries or markets you want to capture. I've found great value in paying a graphic designer to produce myriad static displays (in fine detail) so that I could "show" the functions and collect feedback early on. An additional benefit is the coding team will have a much better understanding of what the final product should look like and how it should behave. They will also insert a number of technical requirements that would be missed otherwise.

Warning... you need a graphic designer that has worked with a development team before. They need to inject realism in the static product. It would also be helpful to finalize your business requirements. What is the end product supposed to achieve. Which of course dove tails in the business modeling.

An additional point of warning. Off shoring can work very well particularly if you've managed other development projects and have a good understanding of the process, the requirements and acting as a business owner for a project. Off shoring has its negatives including language barriers, cultural misunderstandings, time zone craziness, cost barriers to face-to-face engagements and challenges in aligning business requirements to technical requirements. If you've never done this before and you want to try this approach, get someone to coach you who has experience with this.

***

Also http://www.8kmiles.com is a wonderful concept to pull in a team, virtually.

***

Do not believe in free tools, or pro bono work or free items / widgets. Build up from scratch, you might have sometime and something to show to VC's and Angels.

You can also mail me at vijayashankar dot india @ gmail for many inputs, I can share.... if you can get me some venture / angel funding for my venture http://www.indiarealestventure.com