Tuesday, December 7, 2010

The Art of SEO

I was deeply contemplating  SEO (Search Engine Optimisation) the other day and as I contemplated over the principles, practices and perceptions, I could not help but feel that SEO truly is an art. A digital art, and so as a cheesy pun I thought this week I would write my blog on SEO and the art of SEO.

In the past year I have trained many people on SEO, and each time I trained a group of people I would always ask them a question to begin with, a simple looking question that has a hundred answers.

"What is the Internet?"

Think about this for just one moment... Now when I asked this question I would always get hit with people giving me the purpose of the Internet but no one really knew what it was. But intriguingly the number of times I heard "Google" is the Internet was amazing, so this got me thinking, people think Google is the Internet so "search" for them is the primary function of the Internet.

If Google is being perceived as the Internet to many modern day browsers and search is their primary function of using the Internet that means optimising websites for search engines could never have been more important. Just think about it, traditionally businesses go out to customers, reaching them with promotions and adverts, expensive campaigns and sponsorship. But the Internet has delivered an avenue where customers are searching for products and services, as a business owner this is very exciting, people are searching for my products everyday, with an active purchase intention. That's great!

But this is where the art comes in, how to get my website in the top 10 results of search engines to get a slice of that delicious pie which is buzzing with users wanting my product.

Before actually looking at the art I want to outline, search engines are businesses with a product. Their product is to deliver the most relevant, reliable and accessible search results. SEO is the process that shows search engines your website and online business presence is the most relevant, reliable and accessible in relation to the search that people are putting in.

Spiders/Bots/Crawlers: These are the search engines henchmen that read websites and determine who should be in those top 10 positions. So how to get those results:

SEO revolves around 2 main elements:
1. On-page Optimisation
2. Off-page Optimisation

On-page is focused around your actual website as an entity, the content, structure, keyword density, domestic links and design. Most people will commit suicide the fact I have included design in that list, but contact me if you want to debate over that.

Off-page is focused around how external sources link to your website and the weighting of those sources, different links give different value so simply having 1 million links could mean nothing unless they have a high value. Also not in the distant past social media was considered a part of off-page optimisation, but with that exploding it has its own realm now SMO (Social Media Optimisation), but that's for another blog.

Now personally my philosophy is simple, "get your own house in order before stepping out", this essentially means, get your basics right, don't buy a gazillion links before you have even looked at the content on your own website. SEO is an art because it is fragile and is process driven and if you take shortcuts you will not nowhere.

To finish once I was training a group of individuals and at the end of the session, there was a lady and she looked like if she had seen a ghost. I asked her "Whats the matter...are you OK?" she replied "It truly is a whole new world the Internet, I never knew the potential"

Blog contributed by Akmal Saleem.

Rich Internet Applications: JSF vs ASP.NET

Rich Internet Applications are Web-based applications that function as traditional desktop applications however Web browsers (or clients) are required to access but unlike traditional applications. The key benefit RIAs possesses is the functionality to interact and manipulate with data, rather than simply visualize or represent it. And that’s the reason users demand their applications to be much more interactive, dynamic and highly responsive. It makes developer task more challenging to meet user expectation.

Market for the server-side languages is crowded and lot of languages are being used by the developers like JSF, ASP.NET, Adobe Flex, PHP and more which promises RIA features. So how can a new developer understand and realize that which application is best for his application. To find out the appropriate server side language always remains the hot issue for the companies and developers. For this reason I am going to compare the features of different frameworks.

Two main technologies I am going to talk about are ASP.NET and JSF; both represent next generation development frameworks. Comparison will be based on ease of development provided to developer, tools for the framework and support to other frameworks.

What is Web 2.0

The term Web 2.0 is commonly associated with web applications that facilitate interactive information sharing, interoperability, user-centered design, and collaboration on the World Wide Web. To better understand Web 2.0 we can divide it into three sections:
  • RIA (Rich Internet Applications) – RIA helps to achieve the behavior of desktop application on web browser.
  • SOA (Service Oriented Architecture) - It is one of the key section of Web 2.0 that includes buzz words like Feeds, RSS, Web Services and Mash ups.
  • Social Web - Web 2.0 tends to interact much more with end user, end user is not only user of application but also a participant whether it is interacting with wiki or doing podcast or blogging.

What are Rich Internet Applications?

Rich Internet applications (RIAs) are web applications that have some of the characteristics of desktop applications, typically delivered by way of an Ajax framework, proprietary web browser plug-ins, advanced JavaScript compiler technology, or independently via sandboxes or virtual machines. Examples of RIA frameworks that require browser extensions include Adobe Flex, Java FX and Microsoft Silverlight. Rich Internet Applications serve users through web browser, via browser plugin or by an independent sandbox (Independent Desktop Application).

Rich internet applications use a distributed-function model rather than the simple thin-client–server model. RIAs enrich user experiences in part due to their reduced reliance on network/server communications.

Overview of Technologies

JSF (Java Server Faces)

JSF is a rich featured framework of JAVA technology. JSF provides a set of standard features that makes it a powerful and standard among the existing technologies available for the development of web application based on java technologies. Some of the features have been given below to justify the above statement.
  • JSF is standard web user interface framework for Java.
  • Built on top of Servlet API.
  • JSF is a component framework
  • UI components are stored on the server.
  • Easy use of third party components.
  • Event driven programming model.
  • Events generated by user are handled on the server
  • Navigation handling.
  • Can automatically synchronize UI components
  • JSF supports multiple client devices.
  • JSF has extensible architecture.
  • International language support.
  • Extensive tool support (Sun, Oracle, IBM etc.)
  • Rapid application development approach.

ASP.NET

ASP.NET is a programming framework built on the common language runtime that can be used on a server to build powerful Web applications. The first version of ASP.NET offered several important advantages over previous Web development models. ASP.NET 2.0 improves upon that foundation by adding support for several new and exciting features in the areas of developer productivity, administration and management, extensibility, and performance.

ASP.NET is Platform to develop Rich Internet Application has simplified web development and provides rich components to develop web applications. The obstacle face by ASP.NET or Microsoft is integration with other frameworks, although ASP.NET can be used with any of .NET based technologies (C#, VB, J#).
Below are the features of ASP.NET:
  • Easy Programming Model
  • Flexible Language Options
  • Great Tool Support
  • Rich Class Framework
  • Enhanced Reliability
  • Memory Leak, DeadLock and Crash Protection
  • Easy Deployment
  • Dynamic update of running application
  • XML Web Services
  • Mobile Web Device Support

Comparison

This section compares the feature and functionality provided by the frameworks.

FeaturesJSFASP.NET
SecurityJSF used J2EE security features, where the possibilities are numerous and mature.Provides lots of security features but most the security features are ties to Windows Platform
PortabilityOnce develop can run on any platform.Requires windows platform.
Ease of developmentLots of tools provided in the market which visual development or RAD facilityMicrosoft Visual Studio provides extensive support and have made really easy to develop web applications.
MaintainabilityJSF code is based on MVC structured and is really easy to maintain.Visual Studio provides good visual support to maintain the code but sometimes make messy code when using lot of visual mode.
IntegrationJSF can be easily integrated with other frameworks like spring, struts, or moreASP.NET can easily use .NET based Frameworks only as an application framework.
PerformanceReduces the data traffic and increase the performance by long term data cachePerformance in ASP.NET is better than JSF one of the main reason is it only focuses single platform Windows
AJAX integrationMore than 30 Frameworks availableMicrosoft ASP.NET AJAX Control Toolkit


Following table describes the few facts about the J2EE and .Net technologies

J2EE.Net
Type of technologyStandardProduct
Middleware Vendors30+Microsoft
InterpreterJRECLR
Dynamic web pagesJSF, JSPASP.NET
Middle-tier componentsEJB, Spring, JRuby.NET Managed components
Database AccessJDBC, Hibernate, SQL/JADO.NET, ODBC

Conclusion

Both frameworks have their pros and cons, like JSF is very good technology providing much enhanced features like Security, Interoperability, scalability, portability but it not easy to learn as compared to .Net. To build standard web application you have to know and follow standards of J2EE to get good result.

If we talk about ASP.NET it has a very good Integrated Development Environment provided by Microsoft, very easy to learn, even if you don’t know anything about ASP still you can develop fully interactive web application using visual editor.

If we stay within Microsoft technologies to develop application there is lots of support provided but it does provide much support to integrate with other technologies and if we successfully integrate with other technology it affects performance badly.

Both the frameworks are still working to get even better result and most of the time both of them follows each other, even if you see set of built in component provided in both are same and have same sort of functionality. So in the next article of this series I’ll compare the built in component and their support in integrated development environments.