Wendy's Blog

Monday, April 24, 2006


Last December, the Web 2.0 workgroup listed The Best Web 2.0 Software of 2005. Here is the list:

Category: Social Bookmarking
Best Offering: del.icio.us

Category: Web 2.0 Start Pages
Best Offering: Netvibes

Category: Online To Do Lists
Best Offering: Voo2do

Category: Peer Production News
Best Offering: digg

Category: Image Storage and Sharing
Best Offering: Flickr

Category: 3rd Party Online File Storage
Best Offering: Openomy

Category: Blog Filters
Best Offering: Memeorandum.com

Category: Grassroots Use of Web 2.0
Best Offering: Katrina List Network

Category: Web-Based Word Processing
Best Offering: Writely

Category: Online Calendars
Best Offering: CalendarHub

Category: Project Management & Team Collaboration
Best Offering: BaseCamp

Monday, April 17, 2006

Happy Easter!

Monday, April 10, 2006


When I was looking for the advantages of using ASP.NET over J2EE, I found a Web page titled ‘Why choose ASP.NET vs J2EE’ in the Ask Philip Forum of Philip Greenspun’s Website. This rather lengthy page starts with a question posted in 2002 asking why MIT had chosen .NET over J2EE as the toolkit for developing Internet applications. Then it archives all the answers from different contributors up to March 2006 -- a discussion which has gone on for 4 years!

After going thru this page, I have picked up the following points.

1. .NET requires a shorter development time

Although J2EE allows a developer to choose different components (e.g. operating systems, development environments, databases, web servers, servlet engines and application servers) in building an application, this freedom of choice comes with a price.

For example, for persistence, a developer has to decide between Hibernate, EJB3, JDO, etc. It may involve reading up on each technology, doing demos and comparisons, etc.

To use ASP.NET, there is only one choice – the Windows platform, which is not a bad platform compared with those provided by J2EE.

In Philip Greenspun’s answer to the title question, he said: “My students who elected to use Microsoft .NET tools spent an average of two hours setting up their systems. Those students who elected to go the J2EE route wasted two weeks and ended up having to drop the course because they couldn't get their application servers up and running (despite the fact that all of these students had at least one semester of Java programming experience).”

2. J2EE is not 100% platform independent

There are subtle differences in running J2EE under different application servers and execution environments. E.g. J2EE built for WebLogic won’t run under Tomcat or Websphere. To switch between these platforms, developers may have to change 1% of the code, but it is not obvious which 1% needs to be changed.

While it is true that ASP.NET ties an application up in the Microsoft environment and does not offer the flexibility that J2EE does, at the same time it lends itself to fewer headaches.

3. The .NET framework is language Independent

The .NET framework is not tied to any particular computer language, recognizing that an organization may have a diversity of programmers and therefore a diversity of programming languages.

This feature is provided by .NET’s Common Language Infrastructure (CLI). Every .NET compatible language is compiled to a platform-neutral language called Common Intermediate language (CIL). Microsoft’s implementation of CIL is known as Microsoft Intermediate language (MSIL). Any source code compiler that emits MSIL can be used to create assemblies which can be executed by Microsoft’s Common Language Runtime (CLR). Hence, CLR supports both object-oriented and procedural languages. There are currently over 40 languages with compilers for the .NET framework.

Of course, J2EE uses the Java language exclusively, which is a difficult language to master.

4. The coding for .NET is easier than that for J2EE

ASP.NET has tools for creating server side controls and is easy for validation control.

Since ASP.NET supports event-driven programming, developers can understand and debug the coding in less time.

ASP.NET is not so case-sensitive as Java.

5. Is .NET more expensive?

One may say that a company has to pay license fee to Microsoft for using .NET, whereas the cost of using J2EE may be zero when open source components are used. However, the longer development time required by J2EE may increase labor costs, and the delaying of time-to-market may have an opportunity cost.

Monday, April 03, 2006


I have to say that J2EE is a difficult subject for me, because it is a complex programming platform and involves many terms and concepts that are new to me. The tutorial on J2EE provided by Sun Microsystems has more than 1,500 pages!

In reseaching the advantages of using J2EE over PHP on the Web, I see quite a lot of debates out there about scalability. Some say that “Java scales and PHP doesn’t”, while some insist that “PHP does scale”.

In The PHP Scalability Myth, Jack Herrington compares the performance and Web server architecture between J2EE and PHP. He concludes it is not true that PHP does not scale. Chris Shiflett states the same viewpoint in his article.

Generally speaking, J2EE is much more powerful than PHP. It provides faster response in a high traffic environment by keeping byte code resident in RAM, avoiding reloading programs with each request. However, the tradeoff is that in large complex systems, multiple dedicated servers must be used, or else it may run out of memory.

Monday, March 27, 2006


There are four major technical components in a dynamic, database-driven website: the operating system, the web server, the database and the scripting language.

Although there are many combinations of these components, the two most widely used combinations today are:

1. LAMP – based on various open-source technologies
- Operating system = Linus
- Web server = Apache
- Database = MySQL
- Scripting language = PHP, Perl or Python

2. WISA – based on Microsoft technologies
- Operating system = Windows
- Web server = Internet Information Services (IIS)
- Database = Microsoft SQL Server
- Scripting language = Active Server Pages (ASP)

In comparison, Linux is more stable and handles high server loads better than Windows. Furthermore, Linux is a free operating system that does not cost to download, install and operate, whereas Windows requires licenses and is very expensive.

Apache and IIS are both free. IIS is easy to install and is part of the default installation of Windows 2000. Apache is open-source, i.e. programmers can customize the way it runs by editing the program itself. It is considered more secure than IIS. Apache is available on many platforms including Linux and Windows, while IIS can only be used in the Windows environment.

MySQL is a free database that supports most of the standard SQL syntax and runs on all operating systems. Microsoft SQL Server costs about US$5,000, supports all SQL syntax and only runs on Windows. It is very powerful and is considered an enterprise-level database. Although MySQL is not as powerful as MSSQL, it is sufficient for most web applications.

PHP is a free scripting language that was designed to work with the web. It offers many object-oriented features, integrated tightly with HTML. ASP is not actually a scripting language: it is a Microsoft technology that allows existing scripting languages to be used in a web context. The supported scripting language most commonly used is Visual Basic (VB). While both PHP and ASP are free, PHP has more standard features than ASP, including file uploading and image manipulation. To get these functionalities in ASP, one must purchase third party modules. Many pre-made packages such as shopping carts and web forums are written in PHP and distributed free, while those written in ASP are typically sold.

In summary, LAMP is low-cost, open-source and community-supported, while WISA is expensive, corporate, and well-documented. LAMP is suitable for most web sites because of its cost, PHP’s simple web integration and Apache’s security. On the other hand, WISA is recommended for enterprise-level sites because of the SQL Server’s very advanced functionality and Microsoft’s support service.

    Monday, March 20, 2006


    AJAX is very hot today. There are more and more tools and frameworks introduced for developers to build web applications with the AJAX technology.

    AJAX toolkits, like General Interface, are actually entirely constructed in AJAX itself. Thus Ajax is far more than an approach to Web user interfaces; it's a complete software environment, something akin to a Windows or Linux though far lighter.

    The following diagram shows some of the big names for existing AJAX tools, sorted according to their level of comprehensiveness.

    Source: http//web2.wsj2.com

    As we can see, the AJAX development tools can be divided into two groups. One is to provide full and self-contained framework for an integrated solution, such as TIBCO and Backbase. The other is lightweight AJAX pieces that can be included and woven together with other pieces, such as script.aculo.us. and prototype.

    Which one is better? Small pieces that allow more flexibility or sophisticated solutions that do everything quickly?

    For existing systems, especially for the huge ones, small pieces can help improve user interface without big change to the applications. However, for those developers who are going to build a new Internet application, a more sophisticated framework may help them do the work much faster and more easily.

    Monday, March 13, 2006


    Yesterday I came across a very good article about Client-side and Server-side JavaScript at the DevArticles.com. It touched on almost all the topics Dr. Chun wanted us to study this week. So let me share with you what this article talks about.

    JavaScript is a cross-platform, object-oriented scripting language created by Brendan Eich of Netscape. It is the world's most popular programming language, used on more platforms and in more languages than any other programming language in history.

    Uses of JavaScript

    1. Menus for navigation
    2. Form validation
    3. Popup windows
    4. Password protecting
    5. Math functions
    6. Special effects with document and background
    7. Status bar manipulation
    8. Messages
    9. Mouse cursor effects
    10. Links

    Client-Side JavaScript (CSJS) - runs on the client-side

    It is an extended version of JavaScript that enables the enhancement and manipulation of HTML documents (e.g. checks form fields, submits forms, creates dynamic pages) and the client browser itself (e.g. directs the browser to load other HTML pages, displays messages).

    Server-Side JavaScript (SSJS) - runs on the server-side

    It is composed of additional objects and functions for back-end access to databases, file systems, and servers. It enables developers to quickly and easily create integrated database-driven web applications. It is an alternative to CGI programs.

    The table below compares CSJS with SSJS.

    ExecutionClient browserServer
    CompilationNot compiledApplication file(.web)
    (interpreted)(compiled into SSJS byte code)
    ClientJavaScript-enabledAny browser
    ServerAny serverJavaScript-enabled

    CSJS and SSJS have different sets of objects and functions that are specific to client-side or server-side functionality. If you try to use CSJS objects in your server application, errors will result. Also, CSJS can be served by any server but only displayed by JavaScript-enabled browsers, whereas SSJS must be served by a JavaScript-enabled server but can be displayed by any browser.

    Netscape provides SSJS in its Enterprise Server for developing server-based applications. SSJS uses the LiveWire database access engine to connect the applications to a variety of databases such as DB2, Informix and Oracle.

    SSJS is faster and more efficient than CGI programs for web applications, particularly those that access a database. In internal Netscape tests, SSJS was three times faster than Perl CGIs for database access.

    Monday, March 06, 2006


    In Monday night’s class, Dr. Chun suggested that we may write something about the alternatives to Ajax in our blog. So I’ve done some research on the Web and found the following info, which is quite relevant.

    Today many developers are talking about Ajax, largely because Google has used Ajax in its new applications like Google Suggest, GMail and Google Maps, which has made people realize the powers and possibilities of Ajax.

    Of course, Ajax is not a perfect technology, and we know it has certain drawbacks. So experts in the field have suggested a number of alternatives that can hopefully do Ajax’s job while at the same time overcoming its shortcomings:

    A. Atlas

    1. In September 2005, Microsoft released a test version of Atlas for Ajax-style development on Windows.
    2. Atlas contains JavaScript code that works with Microsoft's Visual Studio 2005 development environment and its ASP.Net 2.0 technology for writing Web apps.
    3. Using Atlas, developers will be able to write Ajax apps that contain pre-written code to smooth over technical distinctions between Web browsers, and debug those apps with Microsoft-branded tools.
    4. Atlas is new, and the jury is still out on whether it is a good substitute for Ajax.

    B. UI Technologies for developing rich Internet applications

    1. They include XUL, XAML, Java, Flash and SVG
    2. They offer similar functionalities to Ajax with as-good-if-not-better UI capabilities
    3. But they either require the user to install plug-ins (as is the case with Flash, Java Applets and SVG) or limit her to a specific browser or operating system (as is the case with XUL and XAML).

    C. XForms

    1. It appears to be a reasonably good alternative to Ajax, so I will talk about it in greater details this week.


    Mark Birbeck, an expert on both XForms and HTML at the W3C Working Group, has written three articles in his blog about how to implement Google Suggest, Google Maps and Flickr Search, using XForms.

    He says the main purpose of XForms is to try to capture as much of Ajax’s functionalities as possible and convert them into easily re-usable mark-ups.

    Let us see how he simulates the GUI of Google Suggest. He divides Google Suggest into two major parts:

    (a) Part 1: a user can type into an input box and see suggested search terms based on what he has entered.

    (b) Part 2: once a choice has been made, or a completely new term entered, a search is made on Google.

    He implements Part 1 by using XForms to retrieve data (i.e. suggestions) from Google Suggest, convert the returned JavaScript into a list of XML suggestions, and then display them onto an XForms instance, where the user wants the suggestions for.

    Part 2 of the application is the actual searching of Google based on what the user has selected. It is done by using Google’s Web Services API.

    (There is a real-time Flash movie in Mr. Birbeck’s blog showing how his program works. You can also download the source code for this sample there.)

    XForms vs Ajax

    Mr Birbeck says he prefers XForms to Ajax because:

    1. It is always easier to use mark-up than script
    2. Many of the problems related to Ajax can be solved within the XForms framework, e.g.
      -interacting with servers in different domain to the current document
      -loss of semantic information due to having to code against empty DIVs all the time
    3. XForms can interact with two web services within the same application – one web service is used to provide values that will serves as inputs into the second web service.

    However, XForms has one big drawback:

    1. Users have to use IE6 or FF1.5 and install an XForms plug-in before they can run XForms today, whereas Ajax’s building blocks are all open standards supported widely across different browsers and platforms.

    That’s why Ajax is more popular than XForms.

    Saturday, February 25, 2006


    Peter Norvig, director of search quality at Google, has said:

    "Python has been an important part of Google since the beginning, and remains so as the system grows and evolves. Today dozens of Google engineers use Python, and we're looking for more people with skills in this language." -- <www.Python.org>

    Besides the fact that more and more developers are using Python today because of its high productivity, Python is being applied in real revenue-generating products by real companies, e.g.

    1. Google and Yahoo! use Python in Internet services

    2. Hewlett-Packard, Seagate and IBM use Python for hardware testing

    3. Industrial Light and Magic uses Python in the production of movie animations

    4. NYSE, Fidelity and Putnam use Python in financial-services applications

    Monday, February 20, 2006


    Python is a high-level, interactive, object-oriented scripting language. It was developed by Guido van Rossum, a Dutch computer programmer, in 1990.

    It can be used as a scripting language or compiled to byte-code for building large applications. Because of its simple syntax and powerful high-level built-in tools, it is easy to learn and use.

    Python’s Advantages

    Mark Lutz and David Ascher, authors of the book, Learning Python, 2nd Edition, 2003, have the following findings:

    1. Software Quality: Python code is designed to be readable, and hence maintainable – much more so than traditional scripting languages, like Perl.

    2. Developer Productivity: Python programs are simpler, smaller and more flexible than equivalent programs in languages like C, C++ and Java. Python code is typically 1/3 to 1/5 the size of equivalent C++ or Java code. That means there is less to type, less to debug and less to maintain.

    3. Program Portability: Python programs run on virtually every major platform in use today, e.g. Unix, Linux, MS-DOS, Windows, Macintosh, PalmOS, PocketPC, Cray supercomputer, IBM mainframe, etc.

    4. Support Libraries: Python comes with a large collection of pre-built and portable library tools that support everything from regular-expression matching to networking. In addition, it can be extended with both home-grown libraries, as well as third-party application support softwares.

    5. Component Integration: Python scripts can easily communicate with other parts of an application in a variety of ways. That means a developer can add functionality to the Python system as needed, or use Python programs within other environments. E.g. Python can invoke C and C++ libraries, can be called from C and C++ programs, can integrate with Java components and can communicate over COM, CORBA and .NET, etc.

    Fast Development Cycle

    In my opinion, Python’s greatest strength lies in its fast development cycle. Time to market is very important in today’s business environment.

    Frederick Sells, founder and president of Sunrise Software International, a consulting firm in Orlando, Florida, told us in an article, “Wall Street Puts its Stock in Python”, how he won the contract for part of a real-time equity trading system at the New York Stock Exchange, the world’s largest stock exchange. Being able to develop an operational simulation targeted on the required system features in just two days, he convinced the NYSE that Python could do the job. “Python’s ability to accomplish so much in very few lines of code gave me the ability to put together a successful sales representation”, he said.

    Python also makes it much easier to recover from requirements changes and design errors. During development, Sells had used a floating-point number to represent price, which could not support a mix of fractions and decimal trades. In a few hours, he designed a Price class to replace the use of floating-point number. “Had I been required to deal with C++ or Java type casting, the impact of this bug would have been disastrous,” said he.

    Furthermore, Python is good at rapid prototyping. Systems can be implemented in Python first to leverage its speed of development, and later moved to C or Java for delivery. It is easier and more efficient for users to run a prototype than to read specifications during system development.

    Saturday, February 11, 2006


    Dr. Chun has asked us to write a blog entry about CGI this week. I have done the relevant research on the web and here is some information that I have found useful:

    CGI is a standard for web servers to forward a user’s request to an application program and to receive data back from the application program to be forwarded to the user.

    CGI is ususally used to process HTML forms on the Web, converting a static HTML document into a dynamic web page.

    Although CGI is flexible and easy to use, its major disadvantage is that it is inefficient. CGI execution has to start a new process for every request. It is OK for low to medium traffic sites, but does not scale well for high traffic sites.

    In spite of this drawback, CGI is still very popular with programmers, because there are a lot of resources on CGI out there on the Internet and they save programmers time in developing web applications.

    Various methods have been introduced to enhance the performance of CGI, such as:

    1. FastCGI: Uses a single persistent process instead of creating a new process every time.

    2. Accelerators: Store a compiled version of a web script so that further requests for the file are automatically directed to the compiled code instead of invoking the script interpreter every time the script is called.

    3. Specialized modules: Embed the desired script interpreter into the web server to reduce overhead of re-launching the interpreter for each request. E.g. mod_perl and mod_python are modules integrated with Apache web servers.

    A CGI program can be written in any language. Perl is the most common language used in CGI.

    If a programming language like C is used, it must be compiled before it can be run. On the other hand, if a scripting language, such as Perl, is used, the script itself only needs to reside in the directory. That’s why many people prefer to write CGI scripts instead of programs.


    Sunday, February 05, 2006


    This week I am busy doing Assignment 2, building a home page from scratch. In order to learn how to build a good home page, I have looked up on the Web several related topics, such as XHTML, CSS and Web standards. I have found an excellent article about Web standards at MACCAWS.

    This article is very comprehensive, so I would like to share it with you.

    According to Wikipedia, “Web standards refers to a set of standardized best practices for building web sites…” It is fundamental to Internet application development.

    The most commonly used Web standards

    1. XHTML: a specification for describing the structure of a site, e.g. headings, paragraphs. It is a redefinition of HTML to conform to the rules of XML.
    2. CSS: a different technology responsible for the presentation (“look and feel”) of a site. It has the advantage of making Web pages suitable for different types of devices, such as browsers, printers, PDA and cellular phones, without having to create additional XHTML pages.
    3. XML: a standard that is the core of a large family of related technologies, including XSL, RSS, SVG and XForms.
    4. Other standards: operate at different levels of the infrastructure of the Internet, e.g. HTTP, DOM, ECMAScript.

    Other Web standards

    Accessibility: W3C recommends several guidelines. The primary goal is to promote accessibility – make Web content more available to all users. The one that applies to us is the Web Content Accessibility Guidelines. Accessibility elements include:

    1. CSS for content presentation
    2. Meaningful link phrases
    3. No-script alternatives to Javascript
    4. Table-less page structure
    5. Provide alternatives to audio and visual contents
    6. Allow customizable font size and color
    7. Compliant W3C standards for XHTML and CSS
    8. Etc

    Internationalization: While accessibility standards are in place to ensure the Web can be used by everyone, the internationalization effort aims to ensure everyone can use the Web in their native language. Concepts include:

    1. Character encoding: Unicode is a standard character encoding for all languages that is now widely adopted. It facilitates communications between systems running in different languages.
    2. Localization consideration: Issues include cultural sensitivity in graphics and text, flexible forms that allow different address and naming conventions, etc.
    3. Etc.

    Benefits of using Web standards

    1. Reduce bandwidth used and load time
    2. Expand audience by improving accessibility
    3. Device independence
    4. Quality assurance
    5. Lower development and maintenance costs

    Saturday, January 21, 2006


    City University of Hong Kong

    My Favorite Course

    CS5281 (Internet Application Development) is one of my favorite courses in the MSEC degree program.

    CS5185 Multimedia Technologies and Applications
    CS5222 Computer Networks and Internets
    CS5281 Internet Application Development
    CS5285 Information Security for eCommerce
    CS5286 Algorithms and Techniques for Web Searching

    I have always wanted to build a professional e-commerce website. I believe this course will teach me how to develop Internet applications with the latest technologies available.

    However, the biggest challenge I’ll face is that I haven’t done programming for a while. I’ll have to learn several new programming languages within a semester in order to complete the course assignments. I hope I’ll be able to handle it.

    Resources I’ve Uncovered

    Anyway, to get started, the first thing I did was to put together some websites that I feel will help me in studying this course. Let me share with you what I’ve found.

    1. W3 Schools

      This will be the major website for me to learn XHTML, CSS, JavaScript, etc. I choose it because the tutorials here are very concise. I can pick up the languages much faster this way. It is better than going over several hundred pages of JavaScript, and then another several hundred pages of PHP.

    2. 50 Coolest Websites 2005

      Here is the list of websites that were selected by Time magazine as the favorite haunts of Internet surfers. Since we are going to learn to set up web applications, it is worth taking a look at some examples with good web design/cool technology/great user interface.

    3. Bambi Francisco’s Net Sense Column at MarketWatch.com

      Bambi Francisco

      Ms. Francisco is a veteran journalist who has covered Internet business for many years. Geeks like us will benefit from her analyses of what new technologies, ideas, trends or companies are having an impact in the business world.

    Thursday, January 19, 2006

    Blog Set Up

    I'll be back....