Thursday, November 30, 2006

Collecting and sharing your notes by using Google Notebook

Google Notebook is a service being developed in Google Labs. I have used it for a couple of weeks, and enjoy it a lot. Now there is no need for me to take the paper notebook around the office and home. Its valuable features include:
1. Collecting the points not just the links from the web, and
2. Easy sharing and collaborating.
The web-based applications like Google Notebook are perfect for team work of research and development projects. They would be efficient tools for organizations to collect knowledge from individuals and the web at large. I think the areas like E-leaning and knowledge management will see many such applications soon.

Wednesday, October 25, 2006

Spellcheck in Firefox 2.0

The Spellbound add-on does not work on Firefox 2.0, and I installed a new add-on named United States English Dictionary. It works just like Spellbound. There is also a British English Dictionary available.

Tuesday, October 24, 2006

IBM's patents

Just heard that IBM Files Patent Infringement Lawsuits Against I am really curious to know these patents refer to what applications Amazon has done. The following is my guess:
"Presenting Applications in an Interactive Service" -- web application or web services or Amazon E-Commerce Service (ECS)?
"Storing Data in an Interactive Network" -- database or Amazon Simple Storage Service (Amazon S3)?
"Presenting Advertising in an Interactive Service" -- all the Ads on the web?
"Adjusting Hypertext Links with Weighted User Goals and Activities" -- personalized recommendations?
"Ordering Items Using an Electronic Catalogue" -- the whole Amazon website?

Monday, October 16, 2006

Reading PDF documents on two monitors

Most papers I read are PDF documents, and I need to read two or three at the same time to compare different approaches related to the same topic. It is luck that my boss put two LCD's on my desk. Adobe reader annoyed me at first because I could not make two documents displayed on different monitors. I found the trick is at Window->Tile. It is perfect for two documents, but things will be messy when you have more than four documents opened at the same time. Now it is time to use gsview to read as many documents as you like. The difference between adobe reader and gsview is that the former can only have one application instance running on the system, but the latter has no such restriction. Therefore, there is no way to display different parts of one document on two monitors at the same time by using adobe reader when you do not make a copy of that document.

Friday, September 29, 2006

A tutorial for new axis2 users

I just posted a beginner tutorial of axis2. Two simple web service examples are discussed. The source code is here.

Wednesday, September 6, 2006

Web services and utility computing meet at Amazon

Amazon web services has published more and more items based on the ideas of virtualization and utility computing. It seems that Amazon will virtualize every piece of IT and make them as utility services: from storage (Amazon Simple Storage Service (Amazon S3)) to messaging bus (Amazon Simple Queue Service (Amazon SQS)) to application hosting (Amazon Elastic Compute Cloud (Amazon EC2)). Even the human resource is virtulized into Amazon Mechanical Turk as "Artificial Artificial Intelligence". The idea is really interesting and crazy. I find reward prices for most jobs in the "Artificial Artificial Intelligence" machine are ridiculous. It is just a test now, but may become popular in the future because of divers human resource markets in the world.

The concepts of virtulization and utility computing have been around for couples of years, Amazon does a great job to realize them in B2C market.

Wednesday, August 30, 2006

Spell check for text inputs in Firefox

For those who always type but not write, typing text without spell checking is really painful. Most editors support spell checking. Some web applications like Gmail also support that. There are lots of text input areas on web pages needing this feature. For Firefox, you can use SpellBound. The old versions of SpellBound can be found at You can read this post at MozillaZine for the development version for Firefox 1.5.0. For IE, you may look at ieSpell.

Tuesday, August 29, 2006

More debates coming about REST and WS

In a talk between Mark Baker and Stefan Tilkov published on InfoQ titled "Give it a REST: Mark Baker on Web Services", Mark Baker says that

Web services build upon HTTP, but they don't build upon the Web. The Web uses HTTP as an application contract which enables the loosely coupled exchange of documents between applications, while Web services uses HTTP as a bit pipe - as a transport protocol. Doing the latter instead of former means that you're starting from scratch, and not taking advantage of the existing network effects in the Web.

This is new for me about the difference between the web and another "web" in web services. I consider the web to be a space of information, and the end applications of web so far are agents(web browsers) with humans behind them. So how about the space of services? I imagine most agents(services) in that space are autonomous, and they are not directly controlled by the human users. In the case that most current services, e.g.,, are targeting human customers, there is no big difference between the space of information and the space of services. However, I suspect that there will be in the future.

I agree with his point that SOAP is essentially a generic XML envelope. However, I cannot see what to replace the roles of WSDL and UDDI for service description and discovery. My opinions have a root in the study of agent-based software systems.

His suggestion about starting REST is

It's technically possible, but from what I've seen of Web services toolkits (even those that claim to "support REST"), there's a very good chance that it'll be more trouble than it's worth. My advice would be to start with mature client and server Web frameworks in your language of choice, and to read up on what others are doing with REST/POX/XML-HTTP style services as replacements for traditional "Web services". Then apply that to the simplest possible problem you have, and once you've conquered that, move on to more complex problems.

Again, the assumption of this method is that services are just part of the web.

Friday, August 18, 2006

The so-called "computer revolution" and "information revolution"

Alan Kay, the recipient of 2003 Turing Award for his contributions to object-oriented programming languages and personal computing, points out that "the computer revolution" has not happened yet :
The printing press was invented in the middle of the 15th century, yet it took 100 years before a book was considered dangerous enough to be banned. 150 years before science was invented, almost 200 years before a new kind of political essay was invented…The commercial computer is now about 50 years old and is still imitating the paper culture… we could claim that the computer revolution hasn’t even started.

Although it may not be a revolution from the current aspect, the computer is changing our life to what we cannot even imagine. Among all the computer-related technology development, the emergence of Internet is most significant. The use of Email and World Wide Web (WWW, or Web) boosts the popularity of Internet, though they are not the original design goals of Internet. The web has changed so many aspects of human life such as mass media, business, entertainment, science, and politics. It even introduces new elements to languages and cultures.

It is Nick's and Joe's articles that remind me to post part of my recent writing here.

You can watch Alan Kay's keynote at OOPSLA 1997 titled "The Computer Revolution hasn't happend yet."

Thursday, June 29, 2006

Testing, modeling, and simulation of large-scale service-oriented systems

When many enterprises transfer to web services, large-scale intra- and inter-organization service-oriented systems are emerging. Compared to software systems such as stand-alone desktop applications and multi-tier web applications, we almost have no experience about testing large-scale service-oriented systems. A new level of complexity arises from the scale, open, and dynamics of such distributed systems.

When a service-oriented application is deployed, we expect that most aspects of its behavior are by design. However, when these applications are integrated to form large-scale systems, we have no confidence about how the whole system will work based on the knowledge of each application that could be very limited if the integrations are inter-organization. Service-oriented systems are open: A new application following the service contracts can join in and leave the system anytime. The dynamics of these systems are not just reflected on their scales, but also the structures. An approach to elicit knowledge for designing and managing such systems is modeling and simulation.

Frank Cohen writes an excellent article on testing SOA . The purpose of testing is more focused on performance and scalability rather than functionality. Werner Vogels has two posts on scalability and performance that help to understand these terms in the context of distributed systems.

Thursday, April 13, 2006

I'm a Mandarin!?

You're an intellectual, and you've worked hard to get where you are now. You're a strong believer in education, and you think many of the world's problems could be solved if people were more informed and more rational. You have no tolerance for sloppy or lazy thinking. It frustrates you when people who are ignorant or dishonest rise to positions of power. You believe that people can make a difference in the world, and you're determined to try.

Talent: 51%
Lifer: 33%
Mandarin: 59%

Take the Talent, Lifer, or Mandarin quiz.

Thursday, April 6, 2006

The best text editor

Many programmers have experiences of using UltraEdit as the code editor, even if they have some complicated IDE available. However, UE is a shareware ... You may want to try something that you do not need to care about expiration, then PSPad is the best text editor for you. I would like to say that PSPad suplies all the features I need. You can find an interesting artical on various editors here.

Sunday, March 19, 2006

Load-balance Jetty using mod_proxy

Here are two reference articles for this topic: one from Jetty and the other by PierFumagalli. Although they were developed before the release of Apache Httpd 2.2, most of the configuration can still be applied to the current version.

Thursday, March 2, 2006

Using mod_proxy and mod_proxy_balancer to cluster and load-balance Tomcat application servers

I just updated the Apache HTTP server on my Window box from 2.0.54 to the current 2.2.0. Release 2.2.0 includes many new features, among which mod_proxy and its extension for load balancing, mod_proxy_balancer are most interesting to me as replacements for load balancing using mod_jk. Graham King has a good article about how to setup mod_jk/mod_jk2 for clustering Tomcat using Apache. Now he also changed to the new mod_proxy and mod_proxy_balancer, and say goodbye to mod_jk. To setup mod_proxy_balancer in 2.2.0 is quite straightforward and you can refer to mod_proxy_balancer document and Graham’s post.

To test the load balancing of Tomcat, I have to start several Tomcat instances on my Windows system. I found some hints about running Tomcat instances on the same system from the Web, but they did not help me so
much. The method I figured out is as follows:

  1. Download the zip version of core release of Tomcat, and unzip it to a directory where will be the Home of one Tomcat instance, say c:\tomcat0. Read the RUNNING.txt in the directory. The “Advanced Configuration - Multiple Tomcat Instances” part will help you a lot during the further configurations.

  2. Download the Tomcat Native library and put it in the \bin if you want to improve Tomcat’s performance.

  3. In server.xml, change the ports for connections to avoid conflict with other applications including other tomcat instances. Add jvmRoute=”tomcat0” into the line of < Engine name="Catalina"
    defaultHost="localhost" > to specify the route required in < proxy/ > entry of httpd.conf.

  4. At the beginning of startup.bat and shutdown.bat, set both CATALINA_HOME and CATALINA_BASE to be c:\tomcat0.

  5. Copy the folder c:\tomcat0 to c:\tomcat1 to create another Home for an instance, and change its server.xml, startup.bat and shutdown.bat correspondingly.

Now you can run startup.bat in c:\tomcat0 to get the Tomcat instance of tomcat0, and the same for instance of tomcat1, and so on.

I have tried both ajp and http connections to forward the request from Apache proxy to Tomcat instances, and using JMeter to test the performance of both options. Unfortunately, ajp always triggers exceptions related to socket connections. My Tomcat log is quite similar to those catched when using mod_jk . I am not sure if that mean we cannot avoid the bugs in org.apache.jk package even if switching from mod_jk to mod_proxy_ajp. Therefore I suggest to use http to connect Tomcat with Apache other than ajp at this moment.

Wednesday, January 11, 2006

A nice FREE webcam software for Windows

I just installed a webcam software named Fwink. It is light and works perfectly.