Friday, December 15, 2006

Use Numbers

To argue, try to use statements with numbers, like
  • "1000 sites * 20 services * 200 VOs * 10 roles/groups = 40M metadata"
  • "100k CPUs * 10 jobs per day * 10 queries per job = 10M queries per day, 115 queries per second."
  • Publishing one service adds 138 RDF statements to the triple store, which consumes up about 25 KB of memory. Then each triple uses 181 bytes. Each metadata has at least 3 triples: (entity, hasMetadata, metadata), (metadata, hasMetadataType, type), (metadata, hasMetadataValue, value). Thus 4M metadata uses 181 * 3 * 4M = 2.1GB.
And pay attention to detail.

Wednesday, December 06, 2006

Tuesday, December 05, 2006

Create A User Community to Improve Our Open Source Software

  • Create impact. Open source software's value relies on its usage.
  • Get feedback, which could be good ideas for the future work.
  • Create a well organized website, easy downloads, a bugzilla system, etc. Twiki and Sourceforge are very helpful in this sense.
  • Well answer questions by email.
  • Create a user list, which includes the project name, url, contacts, etc.
BTW, check out OpenCola, which applies the open source idea in making cola.

Monday, December 04, 2006

My New Laptop

Today I got a new laptop, a SONY VAIO, which has
              • Intel® Core™ 2 Duo T7200 Processor 2.0GHz
              • 2GB, 100GB HDD & DVD/RW Super Multi DL Drive
              • 13.3" WXGA TFT Display, Bluetooth & FREE T-Mobile WAN Card
              • ... ...
              • And a fingerprint reader! So that I am able to log in Windows by using my fingerprint. Cool!

Sunday, December 03, 2006




八阕】美国大学与雇主协会,每年按4个季度分别发布新毕业的大学生、 硕士和博士研究生的薪水调查报告,这报告共涉及80个学士专业,40个硕士专业,23个博士专业。冬、春、夏三季发布的数据是各季度的数据,秋季版发布的 是去年8月31日到今年9月1日为止的整个学年数据。以下列出的是该协会最新公布的美国博士和硕士毕业生2006年秋季薪水调查报告。


1、商业管理(Business Administration/Management):$81,438

2、电气/电子与通信工程(Electrical/Electronics & Communications Engineering): $81,297

3、冶金工程(含陶瓷科学与工程)(Metallurgical Engineering ):$80,667

4、计算机科学(Computer Sciences):$76,630

5、化学工程(Chemical Engineering):$75,659

6、计算机工程(Computer Engineering):$74,750

7、工业/制造工程(Industrial/Manufacturing Engineering):$73,292






3、社会科学(Social Sciences):$48,487

4、生物/生命科学(Biological Sciences/Life Sciences):$43,916

5、英语语言与文学(English Language & Literature/Letters ):$41,405


01、计算机科学(Computer Sciences):$71,165

02、石油工程(Petroleum Engineering):$68,833

03、电气/电子与通信工程(Electrical/Electronics & Communications Engineering):$66,687

04、计算机工程(Computer Engineering):$66,545

05、地质及相关科学(Geological & Related Sciences):$64,111

06、材料科学(Materials Sciences):$63,500

07、航天/航空/宇航工程(Aerospace/Aeronautical/Astronautical Engineering):$62,811

08、工业/制造工程(Industrial/Manufacturing Engineering ):$61,273

09、机械工程(Mechanical Engineering):$61,234

10、化学工程(Chemical Engineering):$59,008



最低年薪:$64,620,最高年薪: $143,620

在公司和企业管理层谋职(Management of companies and enterprises):$126,250

在联邦政府谋职(Federal Government):$108,090

在法律机构谋职(Legal services):$99,580

在地方政府谋职(Local government):$73,410

在州政府谋职(State government):$70,280



外科、普通外科(Surgery, general):$255,438


内科(Internal medicine):$155,530

小儿/青少年科(Pediatrics/Adolescent medicine):$152,690


家庭全科(Family Practice):$150,267



高中毕业平均年薪:  $28,645

大学毕业平均年薪:  $51,554




  • 选择专业前先要做好各个专业的benchmark, 什么专业工资最高。看来benchmark真是无时无地不重要。
  • 计算机科学博士起薪只比计算机科学硕士高7.7%。虽然理论上博士比硕士有更好的成长空间,究竟读不读博士还是要慎重考虑。
  • 医生收入压倒性的高,远高于其他专业,甚至包括律师。还是学医收入高。
  • 读书有用啊。读书越多,收入越高。
BTW, I read this from Ian Foster's blog:

"Indeed, it was outsiders—those with expertise at the periphery of a problem's field—who were most likely to find answers and do so quickly."

Friday, December 01, 2006

Java I/O

This presentation gives a good overview of Java I/O, from which I have learned:
  • FileInputStream/FileOutputStream: for sequential I/O and simple to buffer
  • RandomAccessFile: for full random-access
  • FileChannel: adds support for NIO byte buffers
  • MappedByteBuffer: for memory-mapped I/O
  • Buffering: for instance, use BufferedOutputStream for buffering FileOutputstream
  • Forcing I/O, e.g. flush() or FileChannel.force(), equals to the "fsync" system call
  • No direct I/O in Java

Thursday, November 30, 2006

Google File System

The Google File System is a scalable distributed file system for large distributed data-intensive applications, being used within Google. The paper, published in the 19th ACM Symposium on Operating Systems Principles, is a well written computer engineering paper. System builders should read it.

Quoted from its conclusion:

"We started by reexamining traditional file system assumptions in light of our current and anticipated application workloads and technological environment. Our observations have led to radically different points in the design space. We treat component failures as the norm rather than the exception, optimize for huge files that are mostly appended to (perhaps concurrently) and then read (usually sequentially), and both extend and relax the standard file system interface to improve the overall system."

Lesson learnt:
  • Application driven.
  • Base on the technological environment. Base on the facts of performance characteristics. Performance benchmark is the foundation for system design.
  • Application/file system (or OS, or underlying infrastructure, etc.) co-design.
  • Optimize for what should be optimized.
"Our system provides fault tolerance ..."

Lesson learnt:
  • Reliability is a must for any system. System must work. Never forget reliability, persistence, fault tolerance during system design.
"... This makes possible a simple, centralized master that does not become a bottleneck. ..."

Lesson learnt:
  • Down to earth.
  • ...I had already come to the conclusion that in the practise of computing, where we have so much latitude for making a mess of it, mathematical elegance is not a dispensible luxury, but a matter of life and death. - Edsger Wybe Dijkstra ["My hopes of computing science" (EWD 709)]
elegant: [...]ingeniously simple and effective. - Concise Oxford Dictionary

This elegance makes perfect sense in the domain of system design. May we say in system design, elegance is not a dispensible luxury, but a matter of life and death.

Friday, November 17, 2006

A Korean Artificial Beauty

A authentic dream face based on popular Korean stars.

Thursday, November 16, 2006

A Very Interesting Story

Copied from Ian Foster's blog.


Hadoop on EC2

Here's something neat (and details here).

Hadoop, an open source clone of Google FS and MapReduce, can be run on top of Amazon EC2, a hosting service that allows leasing servers on an hourly basis.

As Greg Linden goes on to say:

Developers may now be able to rapidly bring up hundreds of servers, run a massive parallel computation on them using Hadoop's MapReduce implementation, and then shut down all the instances, all with low effort and at low cost. Very cool.

My colleague Tim Freeman points out that you can run those same VMs on your own resources using the Globus Workspace service.


I got a feeling that parallel computing becomes more and more available, and has better and better programmability.

Provenance of Life

We are moving. Our current landlord claims the carpet is "new". Although it does not look like a new one at all, and I remember it was not very clean when I moved in one year ago, we do not have any evidence to support our point. The landlord also blames us that we did not report problems to them promptly. Having consulted the university accommodation officer, we now learn that we had better write to them and keep a photocopy of the letter.

The evidence matters. The evidence could be pictures, receipts, letters, or anything concrete, not transient, but retrievable. Furthermore, the evidences should not be isolated. They should be logically linked together, and finally lead to some conclusion. Put it in another way, when we see an event in the life, we would like to "see" the complete process that leads to this event. By "see" we really mean to reconstruct it in a convincible way.

My boss is investigating a "provenance" project, which defines "the provenance of a piece of data is the process that led to that piece of data". The aim of the project is to "to conceive a computer-based representation of provenance that allows us to perform useful analysis and reasoning ...".

I argue we also need provenance support in our lives. Important facts should be documented in a retrievable and searchable way, for instance, in a computer-based way. We should keep recording provenance of life.

Google advocates searching instead of organizing. Ideally, as long as we record the provenance of life in our computer or on the internet, there should be a way to query and retrieve it.

I am interested in all techniques to improve productivity. It is great that some software could help to record the provenance of life an query over it, which will definitely improve our productivity of life.

Saturday, November 11, 2006

Wednesday, November 08, 2006

The Outcome of MPT

Here is a visualized outcome of MPT. The x-axis is the number of processors used in the throuthput test (1 - 32). The y-axis is the number of threads per processor (1 - 16). The z-axis is the measured throughput. More precisely, it is the number of service discovery (by name) requests served in 30 minutes when there are 5000 service descriptions registered in GRIMOIRES. When 32 processors and 16 threads per processor are used, GRIMOIRES can serve 62,877 service discovery requests in 30 minutes , i.e., 34.9 per second. Each request costs 28.6 milliseconds.

Tuesday, November 07, 2006


星期六一早起床, 阳光明媚, 万物复苏. 乘机定下今后N年的旅游大计. 以求心中有数, 目标明确.


(一) 回顾过去, 成绩很大.

香港, 东方之珠, 生活5年, 非常好;
倫敦, 逝去帝国的首都, 非常好;
巴黎, 文化艺术之都, 非常好;
瑞士, 美丽的高山, 湖泊, 非常好;
芝家哥, the mile of magnificence, 不错;
加拿大BC, 温哥华, 维多利亚, 不错, 从温哥华到维多利亚的水路很美;
洛山基, 听说治安很差, 硬是没敢进downtown;
胜地呀哥, 还是不错的, 还看到了航母.

(二) 面对现实, 压力很大.

这里又要谈两点, 一如何在时间上创造机会, 二是如何在经济上开源节流. 以后有时间再版详细谈.

(三) 展望将来, 希望很大.

埃及, 非常想去看看古埃及的伟大;
日本, 又爱又恨, 要去走走;
台湾, 另类中国, 要去看看;
纽约, 要去;
拉丝围家四, 要去;
欧洲, 那是要经常过去看看的, 意大利, 西班牙, 德国, 北欧, ..., 法国和瑞士也要再去;
非洲, 南美, 大洋洲, 有机会都要去踩上几个脚印.

The Reasons to Have a Blog

According to Wikipedia, the term "blog" is a contraction of "web log". From its original name, blog can be inferred to have two characteristics that correspond to the two purposes for me to blog.
  • Blog is a log that is organized as a chronicle. I can use blog to track events in my life and to record my thoughts. In this sense, the blog is just like a diary.
  • Blog is web based thus it is intended to be read by people. Blog can be a good communication tool to present the blogger. Blog is actually a bilateral communication tool because it allows other to comment.

Thursday, November 02, 2006

Monitor the Blog and Benchmark the Program

I am using Google Analytics to monitor visits to my blog. See the picture, in which the dots indicates where somebody has visited my blog. There is even one returning visitor. Not bad!

It is a good practice to start monitoring since the website is established. Just like it is a good practice to start benchmarking since the program is prototyped.

Monitoring is an inherent requirement of a website. Thus it should become a part of website infrastructure. I.e., when you establish a website, your website is automatically being monitored. No webmaster effort is involved.

Just like benchmarking is an inherent requirement of a program. Benchmarking should become a part of development environment. When you prototype a program, it costs you zero or little effort to benchmark the program. Some benchmark specific code should be automatically added into your program. Thus according to the benchmark data, you can make a decision on whether to take a certain refactoring or not. Will Aspect-Oriented Programming help on this?

Wednesday, November 01, 2006

Use VMware to Release Server-Side Software

I am using WMware's free VMware Server to create a GRIMOIRES virtual appliance. I admit it is not very easy to install GRIMOIRES. And I believe it is not easy to install any server-side software, probably because of the tedious and error prone procedure to configure, for instance, backend database, and security.

While VMware is able to relieve this pain. We create a VMware virtual appliance, which includes OS and our software. Our customer simply downloads it, and is able to play it, thus avoiding the painful installation procedure. The size of the VMware virtual appliance could be much much bigger than the size of our software. But who cares. Our computer spends more time in downloading, but we spend much less time in installation.

Tuesday, October 31, 2006

Massive Parallel Test Kit

I have implemented a Massive Parallel Test Kit (MPT) whose major goal is to measure the throughput of a server. While in my case, MPT is used to measure the throughput of our web service registry, GRIMOIRES.

MPT has the following features:
  • MPT is an MPI program. So it is able to create a large number of real parallel clients on a computer cluster to generate a large number of requests simultaneously. That is why it is claimed to be "massive parallel". By the way, it is really convenient to program a cluster using MPI.
  • Each MPI process invokes a Java program, ThroughputTest. ThroughputTest provides basic functionalities required to run a throughput test. Above all, it supports user provided plug-in, called Worker, which implements the actual test business logic.
  • In fact, Worker extends Thread. Thus two forms of parallelism are leveraged in MPT: multi-processing at the MPI level, and multi-threading in at the Java level.
  • MPT has a single control point. The degree of multi-processing, the degree of multi-threading, and the test time are all set as the parameters for the MPI program. The latter two are then passed as environment variables to ThrouputTest.
  • The fairness of the service can be revealed by calculating the deviation of the throughputs measured by individual MPI processes.
I believe MPT is a useful tool to conduct a stress test for web services. A cluster is useful for a building and testing environment for web services. After more tests of MPT, I will release it at the GRIMOIRES project website.

Monday, October 30, 2006


Many First Times Today

Happy today! Lovely weather. We had many first times today. For the first time, we had our Hong Kong style dim sum in UK. It is not bad. For the first time, we drove through a bridge asking for a payment, 50p. There is a good view along the bridge and nice drive.

Saturday, October 28, 2006

My Very First Blog

This is my first blog.



Keep testing