Friday, October 29, 2010

Principles of Design

The four essential elements for creating captivating websites

The four principles of design are balance, rhythm, emphasis and unity. Each one of them is essential for bringing together the different visual elements that are necessary to achieving a strong design, which, in turn, is imperative for a website to succeed on any level. What follows is an examination of each principle, with insights about how to incorporate them into your own Web design for optimal results.

Balance — Different colors, shapes and sizes can create different degrees of what is called “visual interest” on a Web page. It is important that pages are designed to hold a user’s interest without overwhelming them or causing distraction away from the elements most important to conversion goals. As such, distribution of this interest needs to be controlled and balanced by considering each element in a layout and its “visual weight” — determined by its size, shade and thickness of lines.

Symmetrical balance is achieved by placing elements in the design evenly. If you place a large, heavy element on the right side, you will have a matching heavy element on the left. Centering is the easiest way to get a symmetrically balanced page. But be careful, as it can be difficult to create a centered design that doesn’t look flat. For symmetrically balanced design, it is better to create the balance with different elements — an image on the left and a large block of text to the right of it, for example.

Asymmetrical balance is an arrangement of unlike objects of equal weight on each side of the page. Color, value, size, shape and texture can be used as balancing elements. However, asymmetrically balanced pages can be more challenging to design, as elements are not matched across the centerline of the design.

For example, you might have a large element placed very close to the centerline of the design. To balance it asymmetrically, you could place a small element farther away from the centerline. If you think of your design as being on a teeter-totter or seesaw, a lighter element can balance a heavier one by being further away from the center of gravity. You can also use color or texture to balance an asymmetrical design.

Sometimes the purpose of the website itself makes an off-balance design the right choice. Designs that are off-balance suggest motion and action. They make people uncomfortable or uneasy. If the content of your design is also intended to be uncomfortable or make people think, a discordantly balanced design can work well.

Rhythm — Rhythm in design is also known as repetition — a pattern created by repeating elements that are varied, allowing your designs to develop an internal consistency that makes it easier for your customers to understand. Once the brain recognizes the pattern in the rhythm it can relax and understand the whole design.

Repetition (repeating similar elements in a consistent manner) and variation (a change in the form, size or position of the elements) are the keys to visual rhythm. Placing elements in a layout at regular intervals creates a smooth, even rhythm and calm, relaxing mood. Sudden changes in the size and spacing of elements creates a fast, lively rhythm and an exciting mood.

Gestalt is a general description for concepts that make unity and variety possible in design. The mind has the ability to see unified “wholes” from the sum of complex visual parts. Some principles of gestalt are proximity, similarity, continuance, closure, uniform connectedness and 1+1=3 effects.

Emphasis — Emphasis (or dominance) in design provides the focal point for the piece, enabling the most important design element to stand out. To draw the reader to the important part of the piece, every layout needs a focal point.

Generally, a focal point is created when one element is different from the rest. However, to maximize emphasis, it is necessary to avoid too many focal points, so as not to dilute the dominant effect. When all elements are given equal emphasis, it can make the piece appear busy, at best, or even boring and unappealing.

Emphasis can be achieved in the following ways:

• Using semantic markup to provide some emphasis, even without styles.
• Changing the size of fonts or images to emphasize or de-emphasize them in the design.
• Using bold, black type for headings and subheads and much lighter text for all other content. Placing a large picture next to a small bit of text.
• Using contrasting colors. For example, using a series of evenly spaced, square photographs next to an outlined photograph with an unusual shape.
• Placing an important piece of text on a curve or an angle while keeping all of the other type in straight columns.
• Using colored type or an unusual font for the most important information.

Unity — Unity (or proximity) helps all the elements look like they belong together. Readers need visual cues to let them know an article is one unit — the text, headline, photographs, graphic images and captions all go together. Elements that are positioned close to one another are related while elements that are farther apart are less so.

Unity can be accomplished through the following methods:

• Being consistent with the type font, sizes and styles for headings, subheads, captions, headers and footers throughout the website.
• Positioning elements so that those close to one another are related, while elements that are farther apart have less of a relationship.
• Using only one or two type styles and various size or weight for contrast throughout the site.
• Repeating a color, shape or texture in different areas throughout.
• Choosing visuals that share a similar color, theme or shape.

Web users rely heavily on visual clues when making decisions about a website — whether to click and explore, consider a purchase or sign up for a service. This is even more pronounced for first-time visitors when the decision to stay on-site or abandon is made in just a few seconds. Follow these four design principles and you can be sure that your users and new visitors will stay engaged with your website.

About the Author: Guillermo Cedillo is responsible for the design and implementation of modifications of different Web, desktop and mobile applications as a User Interface Designer for Sieena. Sieena is a Nearshore software development firm specializing in Microsoft technologies, with operations in Los Angeles and Monterrey, Mexico.

Should you consider transferring your IT project work to Mexico?

By Brenda V.

The answer to this question is yes! Mexico is the lowest cost destination closest to the US Market, moving your IT project work will allow your business to grow with limited resources, while having access at the same time to the best technological resources available.

Increase your business competitiveness and gain leadership in your industry.

Mexico’s geographical location will give you an ideal place to start your outsourcing project work, a place to supply the US market with Agile and “just in time” methodologies with access to world class infrastructure, labor force and technologies.

If you are thinking about outsourcing your software development work, why not consider Mexico first? Our top-notch IT industry cluster can give you the following benefits:

· Reduce project cycle time

· Enhance work flexibility

· Reduce your total project costs

· Be able to travel to meet your team in person with just a 3 hour flight

· Have all the experience labor force available for your projects

· Operate with professionals with a very close US business culture

· Maintain or acquired a leadership position by implementing technological applications to keep you above your competitors

· Take advantage of all the legal paperwork given by the NAFTA agreement

Take advantage of the closer education system in which Mexican developers have to undergo a 5-year degree to engineers and programmers, making the quality of our resources one of the best to accommodate your expertise needs.

Before choosing any outsourcing service it would be important for you to consider that buying mainly based on expenses can bring trouble for your business: There are many more important elements to consider like the experience of the company, client base, testimonials, the software development process and the open communication channels that help you in all the creation and implementation process.

Following a formal evaluation process can give you a better understanding of the advantages that outsourcing your project work can bring to your business.

In Sieena, we specialize in custom software development work with all the benefits given by the nearshore strategy. With offices in Los Angeles, CA and Monterrey, Mexico we are ready to give you the best resources and act as a consulting firm to let you know how to improve your current IT processes; we have 6 years of experience working for the US market and have many customer testimonials and commendations. Please let us know what we can do for your company.

Cultural Proximity between the US and Mexico

By Beatriz E.

There are a small number of countries who have the same relationship as Mexico and the United States. Due to their shared border, trade and demography, these two countries enjoy a convenient relationship for outsourcing. Also they have some sort of degree of cultural proximity which isn’t enjoyed with other countries like Asian ones.

Cultural proximity is defined as the relationship between two markets that have a high level of cultural similarity.

None the less, differences can’t be ignored. It would be wrong for me to say that Mexican and American culture are like two drops of water. I’m sure that you know that’s not the case. Even though the exchange of ideas, influences and goods is at its best state; they have a strong sense of identity that separates one from another. This is founded on the perceptions they have of each other across the border.

However, there are some misconceptions against Mexico and some real differences between these two countries, which I will like to further explain.

For some, Mexico is the place of sombreros and siestas, it is hard to believe that in this age that’s the first thought that pops to mind when they think of Mexico. Although many people know that this is not true, they still have that preconceived judgment and are hesitant to do business with Mexico, since they think they’ll be lazy. Today Mexico has proven this wrong with its growth despite the economical crisis. Besides, it has a very low attrition; this means that there isn’t a gradual reduction in work force of personnel resigning or retiring, which is very convenient to do business with.

As far as the differences, in Mexico almost the entire country has the same religion which is Catholic. Therefore, a minimum awareness of other religions exists; making of Mexico a sensitive country. That’s why Mexican firms are focused on making sure that the employees are aware of the diversity in the U.S.

One outstanding city, that has proven these misconceptions wrong and has overcome differences regarding culture is Monterrey.

Monterrey is one of the largest bases of international commercial exchange in Mexico. Exchanges of this magnitude make work culture and ethics to be very similar. Business done in Monterrey have an American style; also locals keep the government as far away from their business every time they can.

This city is a major industrial center in the northern part of Mexico, it was rated by Fortune magazine in 1999 as the best city in Latin America for business and currently it ranked third best by the América Economía Magazine.

Monterrey is known as "The Sultan of the North", some think that the reason why it is called like that is due to the fact that this city is probably the most business friendly city in México. Its enormous industrial and commercial center has grown because of its amiable and open business climate.

This city is also recognized for its highly educated work force, complimented by many colleges and technical learning centers, causing an ongoing trainable work force. One of the best higher learning universities in all of Latin America is Tec de Monterrey. Also the unemployed percentage of the population is constantly the lowest in Mexico. Its overall economy and surrounding areas reflect its success.

Not only are the largest cities of Mexico proving the benefits of doing business with the U.S. but also startups to Fortune 500 companies are discovering the benefits of using Mexican companies for their IT needs.

Forrester Research recommends ... “Companies interested in the cost and quality benefits of offshore labor, but which require a closer, less risky solution should strongly consider Mexico as an important nearshore option. Projects with intensive collaboration requirements, internal domain expertise requirements or a medium to high degree of end-user participation are often more suited to nearshore outsourcing models, since travel between vendor and client is easy and time zones permit real-time collaboration.”

Forrester “Mexican Nearshore Outsourcing: A Promising Global Sourcing Alternative”(March 2003)

Many Mexican firms when asking their US clients regarding what they like most about working with them, they all have answered the same: the fundamental similar culture. This is because Mexican professionals are exposed to business practices, culture and administrative concepts typical of the US because many of them work for global or US companies. Society in Mexico closely follows the cultural, sports and entertainment events in the US, this helps to foster excellent integration of the day-to-day work teams.

As a conclusion it can be said that currently Mexico and the US enjoy a unique and convenient relationship that many countries wish to have. Differences need to be acknowledged and overcome with tolerance and disposition, the rest is particularly easy.

How can I keep up with technology with limited resources?

By Brenda V.

When asking some of our most important clients about the current challenges they face, a big percentage of them always mention the importance of keeping up with technology using limited resources. Most small to medium size companies struggle when trying to implement new applications or software to improve internal processes and help their employees to be more efficient. But we can also find companies whose main service is based on technological products they offer to their clients and are always searching for innovative ways to keep themselves in the market.

Keeping up with changing technologies as decision maker can be an overwhelming task, you may ask which IT solutions are good for me? Which ones can make my company more efficient? How can I maximize the resources I have?

There are a variety of information sources to obtain this information, such as: associations, referrals, vendors, tradeshows, etc, but the problem right now it’s not about finding the information but knowing who you should listen.

One of the most common sources for obtaining information is the data you can find over the internet, information such as success stories, press releases, whitepapers, etc; but the ultimate valuable information source is usually a trusted referral by someone you have worked with or a business partner.

It is important, no matter in what type of industry your business is to stay informed about the new technology trends that can be applied to your processes.

Some of the main benefits that technology can bring to your company are:

1) Increase business efficiency

2) Reduce operative costs

3) Improve your overall revenue

4) Improve your client service

5) Grow your company.

For the current business environment and the new IT trends, it is essential to have a strategy that will help you and your business define the necessary steps to choose and implement new technological solutions.

First it’s important to determine the current needs of your business and make a list of all of them, then choose which of those necessities has priority for you; the next step would be to make a list of all resources available to you and make an estimate of all the lacking resources to complete those tasks; the next step would be to make a list of all resources you can buy or hire to complete the activities and ranking them in order of importance (this can be done by defining which elements are most important to you like price, proximity, prompt delivery, etc.) and finally make the final decision about external or internal resources to use.

It is also important to consider what your competitors are doing to innovate and acquire market leadership, don’t forget to make a market research and include in your business strategy the next steps required to grow your business.

Here at Sieena not only do we offer custom software development services, but we can help you and your business choosing from a variety of services and products that will help your business grow.

Why is LinkedIn important for your small/medium business?

By Brenda V.

Even after … years of being created, I still bump with people who don’t even know what LinkedIn is; for all those who seek to answer the question about this I can tell you that LinkedIn is a social network dedicated mainly to help connect people on their professional side; something like connecting with the people you work with but also with former colleagues or service providers.

It’s not only that, LinkedIn has evolved into a much more elaborate and complicated tool where you can join groups of people with the same professional interest than you, ask questions related to your work activities or even put adds completely focused to the targeted markets.

Now, why would LinkedIn be important to you if you have a small to medium business? Local listings aren’t enough anymore, there is a big world out there that might be looking for your services and the only way to get to you is through the use of networking, this is where LinkedIn comes in handy.

Have you ever tried searching for a specific service on Google? I bet you have! Well I dare you to do the same on LinkedIn and you will be surprised about the results… not only will you be able to find the service providers closest to you, but you connect directly to the right people inside those companies.

There are many advantages about having your own LinkedIn Profile and having your small business on it as well:

· You will be able to gain access to your competitor’s staff skill and experience.

· Do a benchmark about what are the companies in your industry doing, what events they are attending, etc.

· Recruit and post job adds in the job section and even inside the groups you join.

· Get in touch with important people inside your industry and network with them.

· Stay in touch with colleagues and see what projects they are working on and how you can help each other advance.

· Get business recommendations by other professionals and previous colleagues or supervisors.

· Ask questions and obtain information form industry professionals who might be experts in the subject of inquiry.

· Join groups in which you can announce your products and services.

· Create online polls and send it to the targeted people that can help you in obtaining relevant information.

· Customize your profile; add all your business background, picture, even reading list or online presentations. As of lately you can even add updates from your own twitter account on your profile.

There are many things you can do with LinkedIn, the important thing about this is to never consider it as a social networking site like Facebook or MySpace; LinkedIn is a professional networking tool that will help you and your company to have an online presence and get known outside of your area of influence.

What is a Community?

By Brenda V.

We all know the meaning of the term community; however it is in these past few years that the word has taken a larger significance because of the boom caused by the social media revolution.

According to the Merriam-Webster dictionary, a community is “a group of people with a common characteristic or interest living together within a larger society”. In the end it all refers to an entity made by a group of people that somehow communicate and collaborate toward achieving a common goal or are bounded together by similar interests.

We can find communities in places like churches, schools, work, neighborhoods, etc., the main point here is that we as human beings like to be with other people and feel part of a group.

With the explosion of the internet we find that getting together with similar people is easier than ever, joining groups or discussion boards is just three clicks away. It is easy to find ourselves chatting with people from all over the world and obtaining valuable information.

Every community has to offer certain elements to make it run smoothly such as: providing enough tools to make it easier for members to form a bond and a strong connection to each other or to offer and facilitate the information sharing; but what is most important is to always give its members a sense of fun and discovery.

Sometimes these communities help people to gather as much information as possible before buying a product or hiring a service, just like the case of IWantAnOffer.com, the very first online community solely dedicated to the real estate industry in the United States.

IWantanOffer.com’s real estate community has achieved this and much more by creating a website where all the people interested in buying or selling any real estate can join and talk with other people interested, share information and create bonds between buyers, sellers and agents. It’s not just a place to put an ad of your house, but a place where you can interact with those people interested in your property and obtain feedback of your selling process. It’s a place where you can ask other people about the best places to live or even ask questions about remodeling your house, finding appraisers, etc. It’s a web site where anyone can obtain important advice before deciding upon purchasing a property.

Here at Sieena, we helped IWantanOffer.com develop this incredible web site, an online community for the real estate industry in the US.

We invite you to visit their website and give it a tour, who knows? You might end up buying something you like!


IT outsourcing, it’s not all about rates!

By Brenda V.

Outsourcing is referred as the act of a company to contract a third party vendor to provide that specific service, due to the fact that accomplishing those activities in-house would represent (most of the time) higher costs and the need of additional staff.

The act of outsourcing has been around for many years now, small to large companies are born from the act of specializing in a certain activity to offer that experience and specialization to other companies whose core activity is completely different.

When speaking about IT outsourcing, the interest for this type of service providers is normally focused on eastern countries like India or Pakistan, but sometimes outsourcing difficult project work can bring a lot more trouble than benefits for the client; and I’m not only speaking of the different language (which brings a very strong accent), I am speaking about the different culture which will always bring a different way of looking at things, a simple email can be interpreted in different ways by two or more people.

We, as humans, have the tendency of reading or listening to what other people say accordingly to our own experience and assumptions, making it very difficult to communicate clearly with someone else; we can find these communication problems everywhere, in our home, at work, etc., but just imagine having to deal with this in a project work with people from a totally different country and that they live and work in a different time zone. Not only do I need to wake up extremely early or stay up late for phone meetings, but I need to make sure that whatever it is I am saying goes through clearly to the other person on the line, someone I might never even get to meet him or her in person.

Are you willing to put your money in the hands of someone you have never met? Well maybe they have lower rates, but sometimes it’s just not about the money.

When seeking an IT outsourcing firm it would be always wise to find an IT partner that has been working with similar companies and that can have references and testimonials of their work. Someone who might not have the exact same work culture than me but that has the base of knowledge needed of how I do things, how I work and how I like things done; someone that is reliable and above everything, someone that has the experience and resources to help me out with my project.

Do your research, listen to your business partner’s referrals and maybe even consider outsourcing companies closer to you than on the other side of the world… Maybe you will find that you can obtain much more benefits by considering a nearshore software development partner.

Benefits of Gaining Immediate Access to Market Research Data

by Sieena

Giving customers real-time data access is a major advantage that many of them will be able to utilize in making their business practices that much more effective. By having direct access to their data as well as informational and comparative reports using the latest results, your clients will be empowered in maintaining and bettering their day-to-day operations. Instead of having to deal with waiting on reports that are not exactly up-to-date, your clients can now have instant access to the latest information as well as any analyses that have been done for them automatically.

With real-time data access and instant access to the latest results and analysis reports, not only is the amount of time spent on monotonous work cut to a minimum but, also, your clients are able to work proactively in order to keep their business operations running more smoothly and effectively. This real-time data integration for real-time business is truly a revolutionary way to do business. It will give clients the ability to spot a problem or make certain increases, decreases, and other changes based on the most up-to-date data, saving time and money in addition to preventing many unnecessary problems before they begin to take hold.

For virtually all types of businesses, real-time data access can provide many benefits. Having to wait on data and analysis delays the implementation of changes based on this important information. Instead of treading water in a constant game of catch-up, our systems provide not only instant access to a company's data but they also perform simultaneous updating and querying, making sure that your clients are being provided with the latest results and most up-to-date details. With this information, companies are armed with the knowledge necessary to prevent potential snags and to make their business run more effectively.

Instead of having to send out endless emails and multiple versions of the same reprts to a number of different people, your clients are able to have a web-delivered, real-time platform to manage data. This means that any staff member can have direct access to their data without needing to request and wait for it. For you, that means that less time is spent distributing the same information to many different people. Being able to offer real-time data access through the web provides a major advantage to your clients while also cutting down on the amount of work you, as a market research firm, are doing as well.

Nearshore Software Development – The Benefits of Nearshoring for US Companies

In the business world, nearshore software development, or simply, nearshoring outsourcing, refers to the use of another business for certain activities that are close to home. In other words, it is the same thing as traditional outsourcing, only the companies that are being outsourced to, are in a close vicinity to the country in which the company that hired them is located. For example, suppose a small software development firm in the US wants to find another company for IT outsourcing purposes. It would not be unheard of in this particular industry to outsource that type of work to India or China. If the US based company instead goes with a company from Mexico, then that would be an example of nearshore outsourcing.

So what would be the benefits of using nearshore outsourcing for your company’s information technology outsourcing? In other words, why nearshore? There are actually several reasons why nearshore software companies might be preferred. Here are some of the benefits of using nearshore development companies. One of the main reasons why this is commonly done is cost reduction, which may sound strange at first. After all, being cheaper was one of the main reasons why IT outsourcing, as well as outsourcing in other industries, caught on in the first place.

Nearshore outsourcing is actually less costly for a few reasons. Although traditional outsourcing was supposed to reduce costs, many times, additional unforeseen costs later surfaced, making it not that cheap after all. Using a nearshore development firm will allow a US company to save money on things like travel expenses, having to redo some of the work performed because the workers didn’t understand what was required and telecommunications expenses. Another benefit of using a nearshore software development company has to do with better efficiency in the workplace. If a US based company decides to use India for its information technology outsourcing needs, the differences in the time zones can cause a big headache for project managers. Having a nearshore software development company in the same time zone as your company will eliminate the time difference issue.

And finally, another benefit to nearshore outsourcing rather than the traditional IT outsourcing has to do with differences at a cultural level. A US based company and a company based in India are going to have more cultural differences than say a US firm and a company in Latin America. That’s not to say that there won’t be any culture clashes, but just not as many.

These are just some of the main benefits of working with Nearshoring IT firms. You can find many different firms working in Mexico, one of them is Sieena.

Since 2004, Sieena, a Microsoft Gold Certified Partner, has provided comprehensive IT support and nearshore software development services, including Rich Internet Applications and customized SharePoint deployments. The award-winning Sieena development staff has built and maintained business-critical Web platforms for small-to-medium businesses up through large multi-national corporations. To learn more about how Sieena can meet your software development goals, e-mail us at contactus@sieena.com or visit our Web site at www.sieena.com.

Why is it important to know how to interpret non-verbal Communication for recruiting?

By Brenda V.

Nearshore Software Development

I have been recently attracted to all social behavior studies, call it in person or online, I did not study a psychology related major but when you have to interact with people pretty often you tend to get interested in these subjects. As a recruiter knowing how to see what people are “not saying” can help you in making a much more efficient decision, this doesn’t mean - that you will know when people are lying - but that you will know when to find yellow flags and make more inquiries about it.

Just like when they say about people talking to you, and rolling their eyes to the right means they are making things up and when they roll them to the left they are remembering something, or if they are looking away from you while talking they are not being truthful. I don’t honestly paid attention to it, mainly because I can never tell my right from my left!, but the important thing is, everyone is different and lately there has been a great deal of studies mentioning that eye contact is not a sign of people telling lies.

On an article from Psychological Science “Reading between the Lies: Identifying Concealed and Falsified Emotions in Universal Facial Expressions,” it mentions that our faces reveal four universal emotions: happiness, sadness, disgust and fear; Adds Dr. Porter: “If someone is telling a really important lie in which the consequences are dire, say life imprisonment, the lie will be revealed anyway. Because unlike body language, you can’t monitor or completely control what’s going on your face. This research was the first detailed experimental demonstration of the secrets revealed when people put on a “false face,” faking or inhibiting various universal emotions.”

Knowing the basics on how we as humans have developed forms to create masks to protect us from our surroundings is a very vast and complete subject itself, and just by knowing some of it we can use it in our everyday lives… not just as recruiters trying to find the perfect candidate, but as salesman’s trying to get that deal or even a businessman trying to network.

Here at Sieena our candidates have to go through several interviews, exams and technical tests before being considered for any internal position. Since our clients are US based they are always looking for the best possible talent in the market to help them cover their business needs, therefore we proud ourselves of improving our talent acquisition method to fulfill our client’s expertise expectations.

Source:

Dalhousie University (2008, April 24). Lying? The Face Betrays Deceiver's True Emotions, But In Unexpected Ways. ScienceDaily. Retrieved October 13, 2009

Top 10 reasons to consider Monterrey for your IT solutions needs

If you are thinking about obtaining a competitive advantage for your business while trying to maximize your resources, don’t forget to consider Monterrey, Mexico as your next IT solutions alternative. Here you will find the top 10 reasons in why considering Monterrey is the best option for you and your company.

Monterrey is considered one of the most important commercial and technological centers of Latin America.

  1. Industrial Leadership: Out of all the cities in Mexico, Monterrey is known as the industrial capital of the country; it’s one of the most accessible cities in the country with more than 200 flights making daily connections. The city with the largest industrial leadership; hosting a wide variety of international corporations from the US, Europe, Asia and Latin America.
  2. Cultural proximity: Because of Monterrey’s large base of international commercial exchange, you will find the work culture and ethics are very similar.
  3. Geographical location: Monterrey is located within a 3 hour flight from the most important cities in the United States like: Dallas (1:50 hours), Houston (1:30 hours), Los Angeles (2:50 hours), New York (4:00 hours), etc.
  4. Time Zone: Having almost the same time zones as most cities in the US makes it easier to schedule meetings and conference calls.
  5. Infrastructure: Monterrey is one of the top business cities in Latin America, providing a modern business environment, top class infrastructure and accommodations for all visitors.
  6. Government Support: The government has been pushing the creation of an IT cluster in the northern part of the country. This is why it is easier to find help in implementing strategies and activities to accelerate the growth of IT local firms.
  7. Talent Acquisition: The city hosts the most important and influential universities with international recognition, making it easier to have access to the best local and bilingual talent.
  8. Lower Rates: Mexico’s salary fees tend to be lower than in the US, helping client’s reduce the total cost of a project while taking advantage of the nearshore benefits.
  9. The North American Free Trade Agreement: The agreement provides with intellectual property protection for US customers as well as the ability to provide temporary labor resources with work visas like the H1B or TN.
  10. Reduced costs to work with a team: Not only will you be able to save on normal salary fees but if you want to meet your team in person, travel costs are lower than flying overseas.

Why do people Blog?

By Cesar Olivas

There can be as many answers for this question as people who blog, but the growth of the internet has revolutionized communications, the way we get information across, especially in places where the media is property of the government. In these kinds of places, where people cannot freely speak their mind, blogging can be extremely attractive, this is their way to express their thoughts.

For the rest of us, the answer will differ. Some people would say (and have told me) that blogging is a waste of time, that I cannot possibly get anything from it, but I know that they are wrong. In this age, blogs are used to inform, to teach, to spread the word about news, technology, and knowledge in general, and network with individuals like us; in politics, it is used to express opinions that would not be expressed through conventional media; In education, you can basically Google a tutorial on something and it will most likely take you to a blog, where you are going to find the information that you were looking for; in business, it is a way to advertise a product, to show it to the world, to make a campaign. Some people will just do it because they want to be heard, or they want to keep their online diary; but there is a common goal:

  • To reach as many people as possible.

Why do I blog? For lots of these same reasons, because I want to be heard, because I want to teach and be taught, because I want to make an online presence, create a brand. As a web designer, this is something that I have to do, that will be fundamental for my career, and the more knowledge I share, the more I can get from people who hear me.


Blogging is the new way of saying “I exist”…like some people would say: “I blog, therefore I exist”

So let’s keep blogging, let’s stay alive.

CSS Best Practices

By Cesar Olivas

When you start creating a website, you have to make some choices before you start. Some of these choices are using HTML or XHTML, Tables or Divs, Floats or Position, Inline Styling, etc. In this post I will give you some explanation of all the elements that you usually need to choose from.

Doctype
Every website needs to have a doctype declared, failing to do so may result on your page rendered ineffectively. The best way is declaring a doctype like xhtml transitional, strict or html 4.01 and help meet standard requirements. As a personal experience, this has been an issue in SharePoint implementations, since default masterpages do not include a doctype. In a customization, the best way to deal with this is declare a doctype so you can fully transform your site.

External Stylesheets
You shouldn’t have to use the style tag for SEO purposes. Not the end of the world, but it is bad. You should always link to an external stylesheet or stylesheets. For larger projects, you would be better off using a set of stylesheets for different parts of the site, instead of one 10000 lines long stylesheet. It happens, especially of you need to apply hacks for different explorers.

HTML or XHTML
There are some reasons as to why coding should be done in xhtml. First of all: HTML is dead. Html has absorbed lots of xml features and transformed into xhtml. Second of all: XHTML can be read in xml devices, so let’s go ahead and use it.

Tables or Divs
This shouldn’t even be a question, tables are not appropriate for layout purposes, they don’t get along with CSS and they aren’t accessible at all. Having said this, I would not rule out tables 100% all the time (maybe 99.9%). Sometimes you will have to deal with this, and use tables.

Floats or position
CSS layouts will require either floats or positioning. These techniques are used to give the illusion of columns. They both have drawbacks, for example, positioning requires clearing the floats, and positioning limits the flexibility of the layout. Some people would tell that positioning is the way to do it, because it is the oldest way to do it, I personally use floats, since it allows for accessibility if text needs to be resized. With positioning, the layout would break.

Inline Styles
CSS should only be applied using classes and ids. Classes will be the most common way to do it; though I personally use IDs in all my “main” divs that conform the core layout. Using inline styles means that you have to look into the html to make the proper changes, which is really bad, it takes time, and there might be a chance that you can break the page.

CSS Shortcuts
Shortcuts in CSS are great to reduce your code, it can really help you to keep it clean and straight to the point.

CSS Rollovers
CSS has effectively done this really easy for us. Use pseudo classes to accomplish this instead of javascript!. There are lots of techniques around, look for them, or develop your own.

Good Coding
There are different ways of doing that. I personally, use firefox as my base, and then I fix it to match the other browsers. There are some people who would do it the other way around.

CSS is a great tool; it has been around for some time, so use it wisely to better maintain the look and feel of your site. Effective use of CSS will result of easy maintenance of the site, easy changes of l&f, greater accessibility and fewer headaches for you.

Creative Thinking as a way to improve Software Development (and your business).

By Eduardo Chaccourt


For all of us working in software development industry, we are often seen as people with a very methodic, squared, always “inside the box” way of thinking. This is natural since most of us have had a very engineer-like formation in college. Subjects such as Binary math and circuit design, where everything has to be exact, this helped to achieve this way of thinking.

I’m not stating that this is necessarily wrong or “bad”, but not 100% precise. My thoughts are that software engineering is also a pretty creative profession. Imagine this scenario that was pretty recurring back in the day: You need to develop some software to control an onboard car computer, one of the restrictions was that you only had about 640 k (sometimes even less!) to create one of the most robust onboard car computer software to that day. So… what do you do? Do you follow the traditional way you develop where you might need a whole lot of memory? Of course not! That’s were creative thinking will be the key to correctly solve this requirement.

The companies that stand out from the rest are the ones that INNOVATED, that created something new, maybe something that users didn’t know they NEEDED until a company decided to bring it to them. UNIX, DOS, Windows, OS X, Netscape, Facebook, Twitter among others are products that users probably didn’t know they needed it until they started to use them.

If you want your company to stand out from the rest, let the developers innovate. Even if they are on a project with a well known set of problems that have a solution, developers can innovate by finding a new way to solve a problem!

Now, we don’t have to invent something from the ground up to be innovative. We can use existing tools in an innovative way. An analogy for this statement would be to build applications like if you were building something with “building blocks for kids”, you already have the blocks you need to build whatever you need, the only thing is to find out WHAT to build and if you don’t like it you can always toss it and build something new.

Unfortunately, some companies seem to want to deter innovation. When they see a developer thinking or staring at a blank code sheet, they tie them with terms like “low productivity”, but what if that developer, the one that you just told to get back to work immediately was actually assembling in his mind a new way to retrieve, set and update database records with half the time the traditional methods took? Maybe you, as a company, could’ve sold that particular library or method for thousands, maybe millions of dollars.

There are ways to promote innovation and creativity in organizations, here are a few tips:

· Let your developers “play”: If you keep Creative developers stuck for a long time with a very specific set of problems or tools, it won’t be long until they start showing signs of boredom or worse, apathy towards the project.

Sometimes people need new challenges to constantly to keep them on their toes. Also, let them experiment with new technology or programming languages, it’ll be a win-win situation, you will have workers with new and better skills and you will ease the creative developers need to play around and create.

· Learn to differentiate thinking from slacking: One of the problems of giving your developers freedom to think is that they might start to just do what’s necessary to get the job done or maybe do nothing while posing to be doing some intense thinking. One good way to see a difference between these two kinds of developers is that the creative developer will tend to get the job done at the time specified.

· Create Innovation games inside your company: Encourage your workers to innovate! One way to achieve this is to setup some kind of creativity contest for a new mash up page and its use, the main objective here is to let your creative developers explore new possibilities and help you expand your business as well. Of course you must remember that it must remain a win-win situation if you wish for everyone to participate.

My thoughts are that if you, as a head of the development area or an organization, want your developers to be more creative, you should encourage your workers to engage in creative activities (encourage, not force).

Follow my next blog post where I will analyze how artistic activities can help developers become more creative, and by this, more valuable assets to your company that they already are.

Recruitment process at Sieena

By Ilce L.

Commonly, recruitment process is done for administrative to technical positions; sometimes the recruiters do not have the knowledge to evaluate their technical abilities, however there are some ways to choose a correct candidate.

In Sieena particularity, this process is very dynamic and challenging for both parts, because somehow the candidate has to let us know that he/she is a good prospect for the vacancy, but we also have the challenge to let the candidate know that Sieena is has a good opportunity for him.

The process begins with the requisition sent by the managers about the new position. Human Capital is then in charge of posting our job openings, where we usually included the tools, technologies and knowledge needed, as well as their technical and administrative abilities that are required to clarify the profile that we are looking for.

The next step is to search databases for the people who have applied and with the correct profile. This is the first filter that we handle. This first filter is based in the comparison between the job description sent by the managers and the resume. This does not mean that the resumes of the other candidates are rejected; on the contrary, those resumes can be considerate for other open opportunities and are at the same time registered on our database.

Once we have chosen the correct information, we begin by asking one of our technical experts to review the candidate’s information; generally our vacancies require good level of English (most of our customers are from the USA) and with great GPA that endorse their skills and knowledge.

All our resumes are confidential and only used by the people in involved in the interview process.

The third step is to send by e-mail a couple of stand interview questions that help us to reassure the information on the resume, and we also ask for their economic expectations (we also usually call our candidates to let them know an email from us is awaiting on their inbox).

Once we have their answers and have found a coherent profile, we invite the candidate to a personal interview at our office. We also send them a personality test attached to an email so they can bring the results with them when we meet in person.

In the personal interview we don’t dig deep into technical topics, we usually like to talk about their plans, future, skills, life style, involving personal and professional questions in general, etc. where the recruiters can resolve if the person is a good candidate. This interview has not limit of questions or time, this does not indicate that the longer interview reflect that the candidate is best than others. Each person is a different case and all of them have a personal contact with Sieena’s administration.

Normally the technical interview is the next step after the personal general interview. This process is continuous, while we post the vacancies; we recollect resumes, make general and technical interviews and evaluate who is the most appropriate person for the vacancy. The general recruiting-hiring process ends in a period between 3 to 4 weeks after the vacancy is posted.

The decision is taken by the recruiter’s, technical experts and managers assigned to the specific position. When we already have the ideal candidate, we then try to close up with some administrative formalities and paperwork and then the candidate gets a call from our Human Capital department with the decision. If the offer is rejected, we take another candidate already interviewed as a second choice (who also fulfills the requirements) and if we do not have any more candidates, the recruitment process starts again.

If the letter offer is accepted, we contact the maintenance department to let them know a new partner is arriving soon so they can start with the physical allocation process. On their very first day at work, the consultant is given a tour of our office and goes through our induction process.

If you have any questions of doubts and would like to apply at Sieena, please feel free to contact us at jobs@sieena.com

What is SEO? - Marketing while you sleep




A long time ago, before Internet and Social Media, companies used Marketing tools that now seem a little obsolete.

Today not only people, but companies, take advantage of Social Media's benefits to market their products or services. Facebook, Twitter, Myspace, Linked in, Blogging, and Interactive websites are just a few examples of Social Media tools your company can use to get ahead in the brand race.

One of the most important things you have to do is try to make your site SEO friendly as much as you can.

SEO is a kind of marketing in which you can get new businesses and clients even when you’re asleep.
Let’s talk about something you can do to improve your Search Engine Optimization (SEO)
First you have to decide what you’re going to talk about and what is people looking for. Google has the tools to help you find the perfect keywords for your site like Adwords keyword tool and Search based keyword tool. Adwords keyword tool can show you the search volumes of past months; also if you’re interested in buying adwords it shows you the number of advertisers per keyword. Search based keyword tool analyzes your site and compares it with the words people is looking for in search engines.

Google Analytics is a great analysis tool; it helps you see what people think your site for free. All these tools can be very helpful to measure your Site’s traffic.

Here are some of the best practices to follow that’ll help you improve your SEO.

1. Tags of Page Title. Always use a representative titles
2. Tags in headers and subtitles. Use these powerful tags to apply significant keywords
3. Page content. Make sure to have keywords in your first paragraph, and also update your content frequently.
4. Highlight keywords. Try always to bold or highlight your important words.
5. Captions for images and pictures. Always use the Alt tag
6. Keywords. Use keywords in your files, pages and images. On your action links, avoid just saying “click here” try doing something more creative.
7. Navigation Breadcrumb. Breadcrumbs are not only useful for your site visitors to know where they are, but they help Search Engines navigate your site.
8. Description Metatag. Google uses the content of this tag on its search results. You can use your content to create a minimized site summary.
9. Keyword Metatag. You can pick ten of your keywords and put them in this metatag.
10. Sitemaps. You can use an html version to your site and create an xml version for Google. Also make sure to add a link to your html sitemap from your “Error 404” page, this will help lost visitors and search engines find their path.
11. Blogs. Google and other search engines like sites that frequently update their content, so always try to add new posts to your Blog, to keep it updated.
We have control of the situations and tools mentioned above, but what happens with the rest of the Internet? Search Engines give a lot of weight when your site’s link is included in other sites, to accomplish this you can comment on other people’s blogs and add your site link, you can also reference other sites, so they could do the same, and it’s very recommended that you choose pages with good reputation and good traffic.

All these tips together would help you get a better SEO. In posts to come I’ll tell you more secrets about how to use the Web for your company’s marketing success.

How to Optimize your Search Engine position using SharePoint.

It’s a fact that a great number of your site’s visitors come from Search Engines. This is why companies are investing good money on web marketing campaigns, and a very important part of this Marketing is having a great SEO (Search Engine Optimization). SEO is about certain rules that most of Search Engines follow, and it’s a little more technical than it looks like.

Here I present to you some advice to optimize your Search; they can be very easy to follow if you plan them since the beginning of your Public Site design, using SharePoint off course.

Semantic Code. It’s very important to use the correct HTML elements, for example, in headers, use

to

. Use the “list” element if you need to group information on a list: organized
    disorganized
      or defined lists
      .

      Take advantage of the benefits that the SharePoint image libraries can offer. For better SEO it’s important to use the ALT and TITLE attributes on the site’s images. This is something SharePoint provide you with on its "Picture Libraries".


      Keyword Density. You can check this solution on Mtelligent. Mtelligent allows you to add properties like Meta Keywords and Meta Description to SharePoint pages. It’s very important that all the words added to the “keywords” actually exist on your website. Bad use or property abuse are punished by Search engines, especially Google, so be careful!

          Descriptive text on links. Try to use a clear description on your links, use the TITLE and Tooltip attributes, SharePoint provides a very useful Web part to accomplish this ("Summary Link Web Part"). As shown on the image below, you only have to fill in the attribute fields and you are set.


      Friendly URLs. Make sure your site URL addresses describe themselves, avoid code or meaningless identifiers. There is a great solution on CodePlex, you install it on your site and it allows you to change your blog post’s URLs to make them more descriptive.

      There are many other features you can implement with SharePoint:
      • Use of a robots file.
      • Workflow to update your sitemap
      • Sites and Subsites in SharePoint. This is a great way to organize your site content, and search engines seem to like it.
      At last, I’ll like to mention some of the practices you have to AVOID when planning and building your web site in SharePoint:
      1. Avoid naming the site’s pages (page title) with the core functionality (ex.: Home-Home).Try using keywords.
      2. Avoid adding just one keyword repeatedly all over your site, if you do this search engines could discard your page for being “suspicious”
      3. Don’t use hidden fields with keywords visible to the search engine but not to the user.
      4. Use temporary redirects.
      5. Don’t use styles, nor “on line” javascript, it’s better to refer to them in a separate file.
      I hope you find this information very useful when creating your site.



5 Steps to Database Synchronization Part 1

This article is the first part of a series of three where we are going to demonstrate step by step how to synchronize a client database (SQL Server Express 2008) with a server database (SQL Server 2008) using Microsoft Synchronization Services through an N-Tier architecture supported by WCF.
Let’s suppose we have an application used by insurance agents to sell insurance policies on the field. The application can work offline and needs the ability to synchronize the data with the main server database. For the sake of simplicity, we will only be synchronizing one table (Policies).
The insurance agents should not be able to access all of the policies, only the policies sold by them, so we need to filter the data by the insurance agent id.

Step 1: Enable change tracking on our server and client databases.
One of the new features of the SQL Server 2008 version is the ability to track changes. Change information will be retained for at least the time period that is specified by the retention period and retention period units.
ALTER DATABASE Insurance SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE Insurance SET
CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)
Each table to be synchronized must have a primary key (the use of guids is recommended). Primary keys must be unique across all nodes and must not be reused. Run the following script for each table that we want to enable synchronization:
ALTER TABLE Insurance.dbo.Policies
ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = OFF)

Step 2: Create the Server Synchronization Provider
The Server Synchronization Provider stores information about the tables that are enabled for synchronization and enables the application to retrieve changes that occurred in the server database since the last synchronization. It is also responsible for applying changes to the server database and detecting any conflicts.
The sample code below demonstrates how to implement a Server Synchronization Provider. Note that the sample code uses two stored procedures, usp_GetNewBatchAnchor and usp_SelectIncrementalInserts. The code for those stored procedures is also provided.
Since we are implementing the synchronization direction as bidirectional, we need to set the following commands for each table we want to synchronize:
  • SelectIncrementalDeletesCommand: Gets the deletes made to the table in the server database since the last synchronization. These are the deletes that will be sent to the client database.
  • SelectIncrementalInsertsCommand: Gets the inserts made to the table in the server database since the last synchronization. These are the inserts that will be sent to the client database.
  • SelectIncrementalUpdatesCommand: Gets the updates made to the table in the server database since the last synchronization. These are the updates that will be sent to the client database.
  • InsertCommand: Used to insert a record that has been inserted in the client database.
  • UpdateCommand: Used to update a record that has been updated in the client database.
  • DeleteCommand: Used to delete a record that has been deleted in the client database.
  • SelectConflictUpdatedRowsCommand: selects conflicting rows from the server database if the rows still exist in the base table.
  • SelectConflictDeletedRowsCommand: Selects conflicting rows from the server database if the rows have been deleted from the base table.
The sample only shows how to set the SelectIncrementalInsertsCommand command. For a complete reference on how to define the commands, consult the Microsoft Synchronization Services documentation: http://msdn.microsoft.com/en-us/library/bb726002.aspx
On our next article 5 Steps to Database Synchronization Part 2 we will continue discussing the following steps. Stay tuned!
Sample Code: Creating the Server Synchronization Provider
//Create a class that is derived from Microsoft.Synchronization.Server.DbServerSyncProvider.
public class MyServerSynchronizationProvider : DbServerSyncProvider
{
public MyServerSynchronizationProvider()
{
//Create a connection to the server database
var serverConn =
new SqlConnection("Integrated Security=SSPI;database=Insurance;server=mySQLServer;Connect Timeout=30");
this.Connection = serverConn;
//Create a command to retrieve a new anchor value from the server. This value is retrieved and stored in the client database.
//During each synchronization, the new anchor value and the last anchor value from the previous synchronization
//are used. The set of changes between these upper and lower bounds is synchronized.
var selectNewAnchorCommand = new SqlCommand
{
CommandText = "usp_GetNewBatchAnchor",
CommandType = CommandType.StoredProcedure,
Connection = serverConn
};
selectNewAnchorCommand.Parameters.Add("@" + SyncSession.SyncLastReceivedAnchor, SqlDbType.BigInt, 8);
selectNewAnchorCommand.Parameters.Add("@" + SyncSession.SyncMaxReceivedAnchor, SqlDbType.BigInt, 8).Direction =
ParameterDirection.Output;
selectNewAnchorCommand.Parameters.Add("@" + SyncSession.SyncNewReceivedAnchor, SqlDbType.BigInt, 8).Direction =
ParameterDirection.Output;
selectNewAnchorCommand.Parameters.Add("@" + SyncSession.SyncBatchSize, SqlDbType.Int, 4);
selectNewAnchorCommand.Parameters.Add("@" + SyncSession.SyncBatchCount, SqlDbType.Int, 4).Direction =
ParameterDirection.InputOutput;
this.SelectNewAnchorCommand = selectNewAnchorCommand;
//Enable downloading changes by batches
this.BatchSize = 1000;
//Create a SyncAdapter for the each table to synchronize by using the SqlSyncAdapterBuilder.
var builder = new SqlSyncAdapterBuilder(serverConn)
{
TableName = "Policies",
ChangeTrackingType = ChangeTrackingType.SqlServerChangeTracking,
SyncDirection = SyncDirection.Bidirectional
};
//Specify a filter clause, which is an SQL WHERE clause without the WHERE keyword. Use the parameter that is
//created above. The value for the parameter is specified in the SyncAgent Configuration object.
//Create a filter parameter that will be used in the filter clause
var filterParameter = new SqlParameter("@InsuranceAgentId", SqlDbType.Int);
builder.FilterClause = " InsuranceAgentId=@InsuranceAgentId";
builder.FilterParameters.Add(filterParameter);
var syncAdapter = builder.ToSyncAdapter();
syncAdapter.TableName = "Policies";
//Specifying a Command to Select Incremental Inserts from the Server to Apply to the Client
var incrInserts = new SqlCommand
{
CommandText = "usp_SelectIncrementalInserts",
CommandType = CommandType.StoredProcedure
};
incrInserts.Parameters.Add("@" + SyncSession.SyncInitialized, SqlDbType.Int);
incrInserts.Parameters.Add("@" + SyncSession.SyncLastReceivedAnchor, SqlDbType.BigInt);
incrInserts.Parameters.Add("@" + SyncSession.SyncClientIdBinary, SqlDbType.Binary);
incrInserts.Parameters.Add("@" + SyncSession.SyncNewReceivedAnchor, SqlDbType.BigInt);
incrInserts.Parameters.Add("@" + SyncSession.SyncTableName, SqlDbType.NVarChar);
incrInserts.Connection = serverConn;
syncAdapter.SelectIncrementalInsertsCommand = incrInserts;
//Set the rest of the commands here!!!
this.SyncAdapters.Add(syncAdapter);
this.ApplyChangeFailed += ServerSyncProvider_ApplyChangeFailed;
}
void ServerSyncProvider_ApplyChangeFailed(object sender, ApplyChangeFailedEventArgs e)
{
//Respond to conflicts
}
}

CREATE PROCEDURE [dbo].[usp_GetNewBatchAnchor] (
@sync_last_received_anchor bigint,
@sync_batch_size int,
@sync_max_received_anchor bigint out,
@sync_new_received_anchor bigint out,
@sync_batch_count int output)
AS
-- Set a default batch size if a valid one is not passed in.
IF @sync_batch_size IS NULL OR @sync_batch_size <= 0
SET @sync_batch_size = 1000
-- Before selecting the first batch of changes,
-- set the maximum anchor value for this synchronization
-- session. After the first time that this procedure is
-- called, Synchronization Services passes a value for
-- @sync_max_received_anchor to the procedure. Batches of
-- changes are synchronized until this value is reached.
IF @sync_max_received_anchor IS NULL
SELECT @sync_max_received_anchor =
change_tracking_current_version()
-- If this is the first synchronization session for a database,
-- get the lowest change version value from the tables. By
-- default, Synchronization Services uses a value of 0 for
-- sync_last_received_anchor on the first synchronization. If
-- you do not set @sync_last_received_anchor,
-- this can cause empty batches to be downloaded until the
-- lowest change version value is reached.
IF @sync_last_received_anchor IS NULL OR
@sync_last_received_anchor = 0
BEGIN
SELECT @sync_last_received_anchor = 0
-- Changes are only retained in the change table for a limited
-- period of time set by the CHANGE_RETENTION parameter
-- (on ALTER DATABASE).
-- Check that we haven't had changes cleaned up on this table
-- (i.e. CHANGE_TRACKING_MIN_VALID_VERSION returns > 0)
IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(N'dbo.Policies')) > @sync_last_received_anchor
RAISERROR (N'SQL Server Change Tracking has cleaned up tracking information for table ''%s''. To recover from this error, the client must reinitialize its local database and try again',16,3,N'dbo.Policies')
SET @sync_new_received_anchor = @sync_last_received_anchor + @sync_batch_size
-- Determine how many batches are required during the
-- initial synchronization.
IF @sync_batch_count <= 0
SET @sync_batch_count = (
(@sync_max_received_anchor / @sync_batch_size) -
(@sync_last_received_anchor / @sync_batch_size)
)
END
ELSE
BEGIN
SET @sync_new_received_anchor = @sync_last_received_anchor + @sync_batch_size
-- Determine how many batches are required during subsequent
-- synchronizations.
IF @sync_batch_count <= 0
SET @sync_batch_count = (
(@sync_max_received_anchor / @sync_batch_size) -
(@sync_new_received_anchor / @sync_batch_size)) + 1
END
-- Check whether this is the last batch.
IF @sync_new_received_anchor >= @sync_max_received_anchor
BEGIN
SET @sync_new_received_anchor = @sync_max_received_anchor
IF @sync_batch_count <= 0
SET @sync_batch_count = 1
END
CREATE procedure [dbo].[usp_SelectIncrementalInserts]
(
@sync_initialized int,
@sync_last_received_anchor bigint,
@sync_client_id_binary binary,
@sync_new_received_anchor bigint,
@sync_table_name nvarchar,
@InsuranceAgentId int
)
AS
BEGIN
IF @sync_initialized = 0
SELECT dbo.Policies.[PolicyId], [PurchaseDate],[etc]
FROM dbo.Policies LEFT OUTER JOIN
CHANGETABLE(CHANGES dbo.Policies, @sync_last_received_anchor) CT
ON CT.[PolicyId] = dbo.Policies.[PolicyId]
WHERE InsuranceAgentId = @InsuranceAgentId AND
(CT.SYS_CHANGE_CONTEXT IS NULL OR CT.SYS_CHANGE_CONTEXT <> @sync_client_id_binary)
ELSE
BEGIN
SELECT dbo.Policies.[PolicyId], [PurchaseDate], [etc]
FROM dbo.Policies JOIN CHANGETABLE(CHANGES dbo.Policies, @sync_last_received_anchor) CT
ON CT.[PolicyId] = dbo.Policies.[PolicyId]
WHERE InsuranceAgentId = @InsuranceAgentId AND
(CT.SYS_CHANGE_OPERATION = 'I' AND CT.SYS_CHANGE_CREATION_VERSION
<= @sync_new_received_anchor
AND (CT.SYS_CHANGE_CONTEXT IS NULL OR CT.SYS_CHANGE_CONTEXT <> @sync_client_id_binary))
END
END