Tuesday, November 14, 2006

A fresh day for naukrigulf.com

It has been a usual day with some small achievements giving you immense joy. One of these was making a customizable homepage for naukrigulf.com job seekers. It was my dream for last 2 years to develop a highly customizable section for job seekers. With some web 2.0 knowledge sinking in, i was able to visualize it in entirety. And i must say, i have plans for the next one year already well thought through. But, the smart way to go about it will be step by step. I know people will argue that such features and facilities will be overwhelming for a job seeker, but the fact is, you do not loose anything by providing an additional feature to them as long as their normal course of action on the site is not affected. I think, we should give them more and more so that they know that we care, and are continuously working to make things better for them. A user should feel invited to come to your site.
Have always felt and have said a hundred times that the future of web lies in customization, personalization and collaboration. It's better to experiment on this right now rather than take desperate steps when the whole world has done it. If you have the technology and vision, who is stopping you ? I like google for this approach. They keep producing stuff which many of us may not find useful. However, there will be some others who will be really thankful to google for coming up with such products.
Idea is not to satisfy the top 10 or 10% of your users 100%.. But i think, the idea should be to satisfy them 90% and satisfy the remaining 90% atleast 10%. You cannot afford to ignore the long tail.
My second step will be to provide as many components as possible to the job seekers. I'll definitely propose to make the homepage compatible with third party components as well... ofcourse, those components should make sense on my site.
I'll concentrate more on such components which will help job seekers to find and apply to jobs seemlessly.
My first step, i would like to believe, was in the right direction. It would not have been possible without the help i got from my team mates and my collegues in other departments. It could face the light of the day because my top management and collegues also shared my belief and vision. there are lot many steps to be taken further. It will be a long walk... give me one more month, the next version will be another big step in the "Right Direction".

Monday, October 16, 2006

Component Based Architecture & Service Oriented Architecture

The future of web is in sharing. It is time, web sites providing online services should gear themselves for this. It is better than to slog inorder to avoid competition. In coming years (or months.. who knows), online features will be rated on their plugability/mashability, along with useability and speed.
Component Based Architecture allows you to do exactly that. The software architecture should be such that each feature/product is defined as a "component". These components can then be used for different services. "SOA" is thus born... taking you to the world where web applications can be shared.
A web product is so designed and developed, that it can be used anywhere seemlessly. Few points that needs to be kept in mind are,
  1. A component should be independent
  2. It should be pluggable
  3. It should be reusable
  4. It should be mashable
  5. It should be asynchronous
  6. It should be secure
I stress upon the term "asynchronous" as i personally prefer it :-)
The best way to expose your services is through SOAP and REST. When designing your application software, do it keeping the above two in mind.
The services offered through these components should be such that these are available at the client, as well as at the server level. To put it simply, it should allow a presentation layer (for eg, javascript) integration, as well as middle layer integration.
When developing services for the presentation layer, always write APIs. If you need, you may go a step ahead and write a client for it as well. While doing that, get a peek into "rich internet applications" (RIA) as well.
To start, you may use javascript/iframes for a presentation layer integration.
I see this as the future. Your web application components will not be confined to your websites or your products. It will go beyond that and help make better products and services. Everything tomorrow will be personalized and customizable. Design your applications in such a way that you are geared up for this demand. You do it today, and you are already ahead of your competetion. A user should be able to decide what he/she wish to use and from where... that means, "the web would become programmable". Enterprise soultions with OpenSource is the mantra.

Few books worth a read,

Sunday, October 01, 2006

My allepy visit... houseboat in the backwaters of kerala.

Saturday, July 08, 2006

Search Engine - First Steps
With the web developer community already looking into next generation online solutions, it becomes imperative that user experience is seemless and tools are provided for the user which ensures optimum value with respect to time spent online. Search engines within applications have thus become integral part of every system. Today, i'll be discussing about the important factors to be kept in mind while developing a search engine for your database. Most of this i have learnt while working with my current organization. There are also stuff which i do not agree with, which i think will only result in loss of user base in the long run.
Here are some points which i think (and ofcourse experienced) will help you start.
Identify the user base - This is important so that you can provide further guidance to the user from the search results page, basis the search conducted. The search engine should be like a restaurant waiter :-) It should ask you everything about your taste (read requirements) and then offer you exactly what you had asked for. If the food (read results) does not taste good, you are unlikely to come back.
You should also provide guidance and suggestions so that the user gets to see the best result within no time. This set of facility can be divided into two.
A. When no or less number of results are returned -
  1. Users should be guided to broaden the search if their search criteria is too specific by using clouds.
  2. You can also show related results by doing "content mapping" in the background.
  3. Check for spellings and suggest correct words.
  4. Other concepts like "stemming" can be incorporated in the algo to show more results as per the requirement.
  5. Suggestions - Show suggestions basis your domain intelligence. This should be purely basis the historical data/logs of search you have.
B. When too many results are returned -
  1. Clustering - Categorize or classify the result set. This will help users to dig into more relevant results as per their requirement.
  2. Predefined Categories - Show a list of predefined categories.
  3. Search within search - Allow users to conduct search within search, so that they can drill into more relevant and specific results.
  4. Response time - Fast response to a search is more of a necessity these days. User should not be left waiting for the results. Important sections of the search results should load within 1-2 seconds is my recommendation. Care should be taken that by providing the above listed facilities, the response time is not affected. Search engine should be divided into various segments, and the best technology should be used for each one of these. A s/w developer may want to use different languages for different segments of the engine considering the processing time, easy of change etc.
Other factors important for a search engine are,
Page layout - The UI team should ensure that the page layout is such that the organic results should not be contaminated with advts and other paid results. Premium listings, advertisements etc should be separately shown. Also the construction should be such that the download of page is controlled basis importance of each section on the page.
All actionables on the page should be prominent. It should be analysed if these actions can be allowed on the same result page through DHTML, CSS etc. AJAX can be of great help here.
Navigation - Research has found that most of the users do not go beyond page 1-2. Therefore it is imperative that these pages should show the most relevant/fresh results as per the requirement. Also, prefetching of pages will result faster navigation across pages.
Domain Intelligence - Search engine developers and product managers should continuously monitor search logs and derive important information on user behaviour out of them. Most of the features related to search can be developed by studying the search dump. I would recommend that product managers should not get influenced by popular features on other search applications. They should rather study their own users' behaviour through search dumps and then conceptualize new features, sections etc.
S/w developers should be able to fine tune their algo by looking at search dumps and search performance logs.
Logging - Enhancements/ tuning of search engines is continuous. Therefore it becomes all the more important that all aspects of the search should be logged so that post enhancement analysis can be conducted and corresponding actions can be taken.
Research - Its an important part of any search engine development. Developers should be aware of latest technologies and findings. Right now web 2.0 is hot. It should be analysed with respect to your user base and the best suited technology/concept should be adopted. Choice of database and language should be carefully done.
Besides the above listed points there are other concepts like tagging, mashups etc which may contribute to your search peripherals. Now mark my words here when i say "peripherals". A search results page should not get contaminated with overwhelming hi-tech concepts. It should be simple and seemless.
I keep surfing net for niche search related technologies/concepts. Couple of websites which i frequently visit for search related news are searchenginewatch.com and battellemedia.com. The later one is John Battle's blog. His book "The Search" is worth a read. He keeps a close watch on developments in search engines, especially google. I also keep visiting jeremy's blog as it has some interesting stuff on MySQL.

Sunday, July 02, 2006

Search Engine - Supervised Rankings

Was going through various online journals on search engines when i stumbled upon this document published by mondosoft. Its interesting as they have argued the importance of human intervention in search engines. I wish i could attach the entire pdf here, but you may be able to download it from here
This document mainly covers points about gathering user behaviour data, interpreting and analyzing log data, providing informative results etc. Its worth a read. I am trying to get more whitepapers from them.
We have also concluded on similar findings. Our bottleneck lies in implementation. Don't even think that we are technically incapable. Its just that sometimes too much discussions amongst bright people results in a very stringent priority list. The best approach could be to have a clear plan for 6 months and work towards it. Its however easily said than done. For us, market feedback and faster turnaround time in crucial. We are always on our toes.
I am planning to write a small journal on search engine implementation soon....

Saturday, June 24, 2006

php extension

Had always thought of exploring the php extension creation part. Although i have always encouraged my team to go for it wherever it makes sense, never got time to sit down and write my own first piece of extension. Today i sat and decided to write my first php extension. Doing this on a saturday definitely helped as i didn't get distracted with daily fire fightings and meetings.
The whole beauty of writing the extension and making it part of the php you have just installed from source is mesmerizing. I was able to easily write an extension and run it through the command prompt. Running it from the cli was seemless, however it didn't work from the web server. Got to check it out now. Have to rush back home. Will lick this problem later. For now, the boost that i got from writing a small extension is enough to motivate me to write a useful extension soon and contribute to the community. Well here is the Zend url which helped me with my first shot at extensions.

Friday, June 23, 2006

labs.naukri.com
Have started conceptualizing naukri.com developer-network under labs.naukri.com umbrella. Have listed out various sections and resource links for naukri labs. Am planning to start it, fill it with content and then do an SEO for the same. Today, i sat with sonali to discuss its layout. Hopefully she will start working on it from monday onwards. Lets see how it goes. I plan to have resource links for PHP, MySQL, Apache, AJAX, Advanced CSS, Lucene etc on it. Also, have planned an interesting section called "wine tasters" wherein the regular chosen ones will be allowed to taste....Oops..., test and try out products/features in making. I have always believed that true contributions happen through the users. I am excited about it. Not much work, but opportunity to visualize something like this and put it into shape is really motivating.
Finished my days work. Just going through different websites using latest technology. Visted netvibes.com and found it interesting. But i sincerely wonder, how useful these "myspace" kind of concepts would be. Whole lot of it depends on how the entire web progresses crossing limitations of bandwidth. I'll definitely love to create my workarea on the web and stick to it provided i have limitless bandwidth :-)
Web can be so more useful if it continuously reaches out to different medium of communications. Its happening and a lot would depend on how we take it forward. Hmmm... long way to go. Gonna have some coffee..

Tuesday, June 20, 2006

Web 2.0

I don't know if i should use this (web 2.0) term, but the hype associated with it has definitely given a wider perspective to the web and its components. The emergence of AJAX is the biggest achievement of this era. Although many of us had used javascript to fetch server side data as as early as 6 yrs ago, somebody had to come out with a fancy name like "AJAX" to make it popular. Same is true with "Web 2.0"
The most important achievement of this era was the shift in the mindset of web service providers from proprietory to service oriented approach. Emergence of Opensource has nodoubt acted as a catalyst in this possitive shift. This is now giving way to Service Oriented Architecture (SOS) and Software As A Service (SaaS) theory.
I, as a techie find the emergence of collaborative softwares as a strong point. We have to go a long way. APIs in the web community was just a beginning. I strongly advocate that software architecture should be designed in such a manner that every important feature is available with the help of APIs as a plug-in module. Mashups ofcourse tells you how to make most use of it.
Another important approach is to reduce the number of steps (interfaces) from a web users first click till his/her last action. An intelligence use of JavaScrit, DHTML, CSS and AJAX will help one achieve this goal. The user should be allowed to take all actions on the single page itself, rather than navigating to different pages. A Desktop like feel will soon be in demand. Rich user experience along with fast downloads will become a necessity soon. Ok... i'll stop acting like nostradamus :-)
Going to do some work now. Time is less and i have got to implement so many things. I am planning to use it as a canvas for all my web 2.0 experiments. I am sure, its gonna work.