AppIdeas.com - Technology A note about the technologies we use:
Why has AppIdeas.com chosen certain technologies?

This document provides the interested viewer with insight as to why AppIdeas.com chose to use the technologies that it employs. Our developers spent many long hours in researching and using a lot of different technologies before settling on a single set of primary technologies. This paper provides technical reasoning behind our decisions.

For our web programming tasks, AppIdeas.com has chosen to primarily use the PHP programming language, implemented into the Apache web server on Unix platforms. We also make use of the MySQL database engine. Perl is used as the programming language of choice for system administration tasks, but not for web site functionality.

To explain why we chose to use these technologies, we must provide the strong points and contrast those to the other alternatives. PHP is a programming language that was designed specifically for use on the World Wide Web. This means that the functions that PHP performs were programmed with use on the World Wide Web as the primary focus. The core developers have designed PHP to take the strong points from many programming languages (mostly C, C++, Perl, Fortran and Cobol) and discard the programming conventions that are more confusing or don't make a lot of sense. This makes PHP extremely flexible and easy to use as a programming language. PHP is an Open Source project and has thousands of code contributors from all over the world. This means that when new functions are needed, they can be added quickly by anyone who has the time and ability. This also means that bug fixes can be developed and implemented by anyone (literally). The Apache web server is the only server that has shown a continued increase in market share (now at about 60%), and according to a recent study by E-soft, PHP is installed on nearly 40% of all Apache servers. This means that PHP is installed on nearly 25% of all web servers. According to several studies, Microsoft's Internet Information Server (IIS) is in a distant second to Apache with somewhere near or below 20% of the server market. According to these studies, PHP is in use on more servers than Microsoft's entire server software market share! With the continuing growth of the Apache server and PHP's continued rapid development, the popularity of the PHP language will continue to increase indefinitely. Increased use has the advantage of increasing the support base, which in turn makes the technology even more popular.

Market share isn't the reason we chose PHP, in fact, PHP was only deployed on about 1.5% of the Internet servers when we chose it (we were way ahead of the crowd). Growing market share is only proof that others are coming to the same conclusion as we did. The reason we chose PHP was for its speed, reliability, power and flexibility. PHP exceeds every other alternative in all four of these areas.

Let's compare PHP to some other technologies. PHP vs. Client-Side Languages PHP is a "server-side" language. This means that programs are written and placed on the server and when a person requests a document, the server runs the code, parses the results and sends the requesting web browser code that appears as regular HTML. Several programming languages are "client-side." A client-side script sends the code to the web browser (such as Netscape or Internet Explorer) and the web browser parses the code and shows the results. The most popular client-side languages are "Java," "Javascript," "ActiveX" and "VBScript." The problems with client-side languages are the following:

  1. These languages depend on the individual web browser to adhere to its programming code. Microsoft and Netscape browsers have vastly different opinions about what constitutes "correct" java code. Code that runs on one browser doesn't necessarily run on the other.
  2. ActiveX and VBScript (Visual Basic Script) don't even pretend to run on most Netscape browsers.
  3. Most security-conscious web users purposefully disable client-side scripting because allowing such scripts creates the possibility of receiving viruses and it opens the doors to allow Internet web site programmers with malicious intent to harm the web browser's PC.

The bottom line is that not all web users are going to be able to take advantage of client-side programs. Some studies place this number around 20%. Relying on such technologies could automatically eliminate up to one out of every five of your potential clients!

What other server-side languages are available? There are three others that are popular, and we'll show you why we chose to not use those.

PHP vs. ASP (Active Server Pages)
ASP is Microsoft's server-side solution. The first problem is that ASP is based on Visual Basic, which was developed and designed before the World Wide Web was even a thought. That being the case, it has needed to be retrofit for the web. ASP code runs exclusively on Windows NT/2000 Servers. The main disadvantage of using a Windows NT or 2000 server has to do with the fact that you can't shut the Graphical User Interface (GUI) off. The GUI takes up a lot of system resources, which could be better used to serve web pages! Because Unix web servers require no GUI interface, they can operate more efficiently on less computer hardware. The other disadvantage of a Windows NT or 2000 server has to do with cost. The license agreements for the Operating Systems typically have to be purchased in increments of 10. This means that if you have more than ten people accessing your site simultaneously, you must purchase more licenses. This becomes even more of a problem when dealing with dynamic web sites because licenses for Windows capable database servers are very expensive (Microsoft SQL Server 2000 has an MSRP of $1,395 for the initial server and first 5 licenses and $680 for each 5 license pack!). Think of how much this would cost if you were expecting 500 simultaneous visitors! $69,395 - just for the database software! Furthermore, ASP is developed by a team that consists of a few programmers who work for Microsoft and Microsoft jealously guards the source code for ASP. This means that if a bug is found, the public has to wait for Microsoft to fix it. If a new feature is desired, the people using ASP are at Microsoft's mercy concerning when or if that feature will ever be added. The fact that PHP has a function list that is at least 10 times longer than that of ASP (check out http://www.php.net/manual), proves that a large scale open source project is much better at adapting to meet the needs of the rapidly changing World Wide Web than one that is controlled by a single company. One company, even one as big as Microsoft, simply cannot keep up with all of the extremely rapid changes that have been commonplace on the Internet. Based on the ground-up "made for the Internet" design of PHP, the relative stability and speed of the Operating System, the system hardware and software cost, the scope and nature of the development and the number of functions that exist which allow for flexibility in programming, PHP is far and away better for dynamic web sites than ASP.

PHP vs. Perl/CGI
Using the perl programming language to output data to the CGI (Common Gateway Interface) was the first server-side programming language available for the World Wide Web. Perl is a pretty good "general purpose" language. This means that you can do just about anything with it. The open source nature of perl, combined with the fact that it runs well on Unix systems gives it many of the advantages of PHP. The only "big" negative of using perl/CGI is the fact that every script that is run launches separate programs on the Unix server. This means that if you have 100 users simultaneously accessing documents, you could be running 100 to 1,000 extra programs on your web server. Furthermore, time is needed to "start" the perl program on every script request. This can (and does) impose a very significant system resource penalty on the server, which slows down your web site. PHP is built directly into the Apache executable, which means that it only uses the memory that has already been allocated for the web server. When scripts are accessed, no extra memory is needed to run the program, and no time is required to start extra programs. Some programmers have recently developed an Apache module called mod_perl, which gives perl the same performance advantages that PHP gains by being built into the Apache executable, but mod_perl bloats the Apache executable by more than 1 MB. This means that every request for a document from your web site would require 1 MB more memory than it would without mod_perl, regardless of whether the perl functions are even being used for the particular script(s) being requested. A server that gets 100, 500 or 1,000 simultaneous requests could be impacted quite dramatically by the extra memory required for mod_perl. Perl and CGI are good languages, they just weren't designed primarily for the World Wide Web, and therefore do not measure up to PHP for this use. We use perl to do many of our system administration functions, but it just doesn't work as well as PHP on the World Wide Web.

PHP vs. ColdFusion
Many of the disadvantages of ColdFusion are related to the fact that it only runs on Windows NT or 2000 servers (see the notes on that in the "PHP vs. ASP" section above). Another big disadvantage of ColdFusion has to do with the fact that it is closed source and the development is handled completely by one company (which has fewer resources than Microsoft). As mentioned above, the disadvantage of this lies in the fact that new features cannot be added and bugs cannot be fixed nearly as quickly as in a popular open source solution. ColdFusion has a list of features that is smaller than ASP's, which is already about one tenth the length of PHP's. Another problem with ColdFusion is that you are required to purchase a new copy of the server ($1,300) to obtain features that have been added since your original purchase of the product at $1,300. In short, ColdFusion is slower, has fewer functions, less scalability, less flexibility, less stability and costs more than PHP with Apache. With this in mind, PHP is an obvious choice.

Of all of the alternatives, PHP has proven to be a solid choice. If something dynamic can be done on the web, PHP can do it, can do it faster and can do it more reliably than any of the alternatives.

Why MySQL?
Mostly because of its speed compared to other database servers. The developers of MySQL have left out a few features that normally exist in SQL servers in order to gain a magnitude of speed. Most of the "lost" features are really not applicable to web site use. The one that is talked about most often is "transactions" - the ability to "commit" and "roll back" groups of commands. This functionality can easily be gained by proper use of the existing SQL language, and it is usually not necessary for use on the web since web sites typically only make one, or at most a few, database alterations at a time. The other main feature that the "complainers" mention is MySQL's lack of sub-selects. The fact of the matter is that the queries that can be formed by the use of sub-selects can also be obtained by the proper use of standard SQL table joins (we haven't yet found an exception to this). Furthermore, the times that transactions or sub-selects would be useful are extremely rare on the web. The speed that MySQL gains by purposefully leaving out these features far outweighs any disadvantages that may be imagined. All that is really necessary is a good working knowledge of SQL and the proper workarounds and these disadvantages disappear.

We do occasionally use PostgreSQL for customers who have very busy web sites with, "mission-critical" data, but the speed disadvantage that is taken on is normally not justification for a more advanced database server than MySQL.

In conclusion, some of the technologies mentioned above may be "acceptable" for some web site projects. AppIdeas.com does not wish to create acceptable web sites, we wish to create phenomenal web sites. The use of PHP, Apache and MySQL on Unix servers is the only combination that allows the power and flexibility that we require.

If AppIdeas.com can help you make your dynamic web site dreams come true, feel free to contact us.

AppIdeas.com
2305-C Ashland St. #271
Ashland, OR 97520
sales@appideas.com
http://www.appideas.com/