i n t e r e s t i n g

Wednesday, August 24, 2005

Google Talk

Google stepped into IM market. I’ve not tried it yet, but after read through the website, I’ve not seen any feature that differentiates it from other IM (from end user stand point). From developers (or geeks) standpoint, it runs on the open XMPP protocol, so that you might develop your own chat client to chat with your friends who are using Google Talk. This could leverage the standardization of the IM protocol. The idea of “service choice” stated on the Google Talk website (http://www.google.com/talk/developer.html) is interesting. People should have an opportunity to use their favorite chat client to talk to their friends regardless of which chat client their friends are using. I used to have ICQ, Yahoo Messenger, and MSN Messenger run on my computer at the same time because each of my friends has different preference in IM client.

From the business standpoint, this is another step of Google in internet service market. Nowadays, a lot of people are using IM all day. The IM user network is very huge and it could be a great advertising channel. Google Talk beta version doesn’t have any ads. It’s interesting to see if Google would integrate Google Talk to its ads service later (just like MSN, ICQ, Yahoo, and other IM service providers did). Google could integrate Google Talk to its ads system, so that it could display the ads that relate to what people are chatting in the Google Talk. Or Google might come up with new idea to gain benefit from its Google Talk rather than adding ads to it. Additionally, GMail account is required to login to Google Talk. This could leverage the number of its GMail user accounts. Google Talk could add more value to GMail to compete with other free email providers who have been increasing the size of the inbox to compete with GMail.

It’s interesting to see if Google Talk could fight with the network externality power of other IM service providers such as MSN, Yahoo, and AOL.


Let’s try …

http://www.google.com/talk/


Thursday, August 18, 2005

Google AdSense

I was searching for Barnes & Noble in downtown this afternoon, when I noticed that there was an Amazon.com sponsored link on the page. hmm… interesting. I first thought that Amazon.com might add “Barnes & Noble” as a keyword for its website on that search engine. So, I entered “Barnes & Noble” in the search box in Yahoo, Google, and Clusty. Looking at the search result, I found Amazon.com sponsored link on Google (in the Sponsored Links panel on the right of the page, but not in the Sponsored Links panel on the top of the page). I didn’t see Amazon.com link on Yahoo and Clusty. To make sure that Amazon.com does have its sponsored link on yahoo and Clusty, I enter “book” on those two search engine. And yes, Amazon.com does have its sponsored link on those websites. I thought that if Amazon.com added “Barnes & Noble” as its keyword on Google, why it doesn’t do that also on other search engine. The answer is that Amazon.com didn’t add “Barnes & Noble” as its keyword. I think that what I’ve seen is what Google AdSense can do better than others. The Amazon.com’s sponsored link I saw on Google result page didn’t show up because of the word “Barnes & Noble”. As you might know, AdSense didn’t show sponsored links base only on the keyword search, but also on the result from the keyword search. For example, in this case, the first link of the search result is definitely www.barnesandnoble.com and its description is “BarnesandNoble.com - The World's Largest Bookseller Online.” Amazon.com’s sponsored link might have associated with the keyword “bookseller” or “online”. That’s why Amazon.com’s sponsored link shown up on the Google search result. This is what Google AdSense can provide better than those traditional sponsored link based on keyword search. In this case, someone who’s never heard about Amazon.com.com and probably looking for Barnes & Noble store could see ad says “Amazon.com.com has low prices on millions of new & used books. Find the book you want with search inside the book. Save with free super saver shipping on qualified orders over $25.” This could lead to a new customer for Amazon.com. This case shows that AdSense allows companies to show their ads to their competitor’s customers. Additionally, a company could also show different ad to different users. Ads that can catch particular users’ interest will get more chance to be clicked. It would be great if a company could show the ads that match viewers’ interest. For example, company might show the ads that express its competitive advantage over its competitor if the viewer is viewing a page that contain its competitor name. Whereas, it might show ads express its promotions to the viewers who are viewing the content shown that they’re price-concern consumers.

There are many interesting issues about this model. I googled “AdSense” and found many websites selling a book or a link to an information on how to make money with AdSense. Some website also sells a list of the “top paying” keywords. To someone who might not know what AdSense is, it’s an affiliate program that allows anyone to display ads on the website and earn money based on cost-per-click (CPC) or cost-per-1000-impressions (CPM). It pays different amount of money for each sponsored link depended on how much the sponsor pay for the ads. They also employ auction system and let sponsors name their own price for displaying their ads. If you pay more, your ads will show up on the top of the sponsored links. That’s why there are websites selling top paying keywords. If you put those keywords on your website, the top paying sponsored link will show up. And when your visitors see or click on those links, you will gain more money. As there are websites selling top paying keywords, people might put those keywords on their websites hoping that the top paying sponsored links will show up on their page although those keywords don’t actually relate to their website. Thus, people who visit those websites might not be a target group of those sponsored links. This will reduce the benefit of the AdSense which try to show the ads to the target users who are interested in the content related to the ads.

What if someone setup a website with sponsored links on the page and developed a program to load that page from different computers (this could be a virus that distribute itself to others computers and request for the page containing sponsored links), so that the system recognized those request as different users. What if someone asked people to open the webpage and click on the link to boost up the revenue gained from AdSense program and shared that revenue with those people (this could become MLM-like model: you could gain money by loading webpage and clicking on the sponsored links. You might also invite your friends to do so, so that when your friends clicked on the sponsored links you would also gain some money). These ideas are illegal. I’m not suggesting or inviting you to implement those ideas. But it’s interesting to think of this issue from different point of view (users, webmaster, Google, companies who post ads on Google). Those issues might affect a company when considering bidding for ads posting in Google’s AdWord program. Google must have some ways to prevent people from cheating its system.

Friday, August 12, 2005

Web Testing

Yesterday, I was assigned to prepare a test plan using OpenSTA (Open System Testing Architecture – www.opensta.org). It’s an open source distributed software testing architecture. It was designed around CORBA framework. Sound grand? Another good thing about this is that it’s open source. Nevertheless, it’s been developed using Microsoft Visual Studio 6, and I don’t have it at my office. So, I can’t compile it. That’s ok. Let me try what they have.

I was not going to implement the whole testing process. The plan was to prepare test script to send request to the server that run Tomcat and JProbe to profile the performance of the system.

OpenSTA is pretty cool. It allow user to prepare the test scripts. Then, drag those scripts to a test. In order to develop a test script, Script Modeler can capture what I do on browser and generate the script for me. What it actually does is that it sits between the browser and the server by setting the proxy setting in the browser to point to its gateway, so that it can capture all the packages that browser send and receive [ Browser <-> Gateway <-> Server ] to generate the script that say what data should be send to the server. The script is very flexible. I tried modifying a bit on the script to log in as a different user when running the test.

The web application that I was going to test was using HTTPS. OpenSTA also support HTTPS. It talks to server using HTTPS but talk to browser with HTTP. Special character “{“ is added before the server name to tell OpenSTA gateway that it should talk to server with HTTPS. That works fine, but on environment that I worked on (Windows XP with IE6), it will popup security dialog for every request sent to the server (*_*) which mean that I have to click the button on the dialog for every request to let it show on the browser. No, it’s not just a click per page, but I popup for every single request (for image file, CSS file, JS file, etc.). I had a chance to exercise my index finger.

At the time I try this OpenSTA, it’s not supported non-HTTP content such as Flash or Applet. The system that I had to test did use Applet. Nevertheless, the Applet on the system was used for display purpose only. So, that should not affect much on the testing result because the purpose of the test is to test the performance, not the functionality.

At the end, I got an error when recording the script with Script Modeler on some pages in the system. Those pages contain some Applets and probably do something uncommon. I read through the FAQ and mailing list on OpenSTA website and found a few people that got the same problem (http://sourceforge.net/mailarchive/message.php?msg_id=531213
). Someone said that it cause by the bug of (Microsoft Windows - BUG: Winsock Control run-time error 10054 in DataArrival event for UDP) http://support.microsoft.com/kb/q260018/

I didn’t look through the source code because I don’t have MS Dev tools at my office. Actually, the script can be modified manually. I could browse through the test case and look in the Tomcat log file to see the requests and add those requests into the script, but it would be fun to try some other web test tools :D

Then, I got an idea of develop small and simple web testing tools myself. The concept is to have a small program that sit on IE and click through the link, submit the form, and act like there is someone testing the web application with the browser. By doing this we can test everything that works on the browser. So, I started with JavaScript. The plan is to write JavaScript that attach special behavior (event handler) to each object on the web page. The special event handler will record what user does with the object on the browser. The problem was I couldn’t access to the object on the web pages from my code in another frame. That’s again because of IE6. (http://support.microsoft.com/default.aspx?scid=kb;en-us;889407). Microsoft didn’t allow me to download fix file on its website, and recommends me to wait for the next Internet Explorer 6 service pack. To obtain the fix immediately, I have to contact Microsoft Product Support Services to obtain the fix. That’s ok. I’m not that serious to get it now. It’s just for fun. I wish I could finish this idea later. (-/\-)

I moved on to another test tools, JMeter from Apache Jakarta Project (http://jakarta.apache.org/jmeter). JMeter can be used to test many things such as Web, Files, Servlelts, Data Bases and Queries, FTP Servers. Pretty cool, huh? I started with testing the web application. JMeter also provides HTTP Proxy Server which can record what user does on web browser and create test sample objects in the test plan. Similar to what I did with OpenSTA. Unfortunately, it’s not supported HTTPS at that time. So, I click through the test case on my browser and read the Tomcat log file to enter the request to the test plan on JMeter manually. It would be easier and more effective if I understand the system. But I don’t know anything about the system, I didn’t involve in any part of the development of that application. That’s fine. I finally finished implementing the test plan and run it. JMeter is pretty cool. It was obviously designed in component based. It provides many components for the test plan both for running the test and monitor the result. I could implement the test that has many threads log in as a different user. There are also some other features that I hadn’t tried.

Web test tool are interesting. There are a lot of them out there on the Internet. I also tried the ActiWATE that provides the web testing framework that can work with JUnit. It has the same concept as HTTPUnit. I tried to write a small testing program to send the request to the server, fill in the username and password and submit the form to login, click through a few pages, and check the result. It work pretty well and not that hard to implement, just look through the API.

It would be interesting to develop a web testing tool that can act like it sit on a browser and work through the web application.