As we started the project of a web site, we knew that the proprietary software costs would be too high for the financial resources. The only option then was to make use of Open Source Code softwares.

However, within the Open Source Code there are lots of softwares to choose from, and it's up to the system analyst/programmer to pick the ones that best suit the project goals.

In this case, we picked Linux as the operating system. However we faced a big question: Which Linux distribution ? There are dozens of linux distributions, each one with specific advantages, sometimes with or without paid services.

We chose linux Slackware because we thought that it would suit better our needs, in terms of stability and reliability. Slackware is a conservative distribution, meaning that it only offers in its distribution package kernel versions and third party libraries, once it's been proved to be stable and reliable. As a result, Slackware is one the most stable Linux operating system on the market. If the user wishes the most recent Linux kernel and libraries, we recommend to look for a different distribution.

Another reason for us picking Slackware, was because of its text interface, which at the beginning may become a bit difficult, in the long run however it offers a better understanding of the Linux environment. This way most of Slackware configurations are done thru text scripts.

Once it was set the operating system, we picked Apache as the web server. Apache is one of the most popular web server in the internet. For server programming language, we chose PHP. Also, a very popular programming language. Experience with Apache/PHP proves that this setup is very reliable, working extremely well in a production environment. For workstation programming language, we chose javascript, which besides of having a simple syntax, it offers lots of resources.

Apache web server is really a complete web server. Also, it can become very complex with many configuration setups.

For the database, we picked Postgresql. This database has been made available to the public for more than 15 years, and besides of being well debugged, it offers so many resources that it has become one of the best database options from Open Source Code softwares. Extremely reliable, Postgresql has reported cases where there have been databases in production with over 4 terabytes. Besides all of that, Postresql is not the most popular Open Source Code database. A matter of marketing ? Probably.

As for the programming language PHP, we had to use an object oriented application structure. There are many PHP application structures being offered with Open Source Code license. Object oriented application is very important, because it makes programming very easy and scalable up to the point where the system may grow without many problems. Also, it helps to keep PHP code separated from HTML, with the help of some specific libraries, such as Smarty. We make use of Smarty library and we believe that it is a very important resource, which can even make web pages faster thru the use of its cache functions.

Also a very important set of libraries worth mentioning for PHP systems, is the PEAR libraries. In PEAR web site, among the many libraries being offered, there are the database interface DB and the MAIL_QUEUE, which sends emails thru the use of database.

As we came to the end of this project, we had to use some sort of real time database replication. For that we chose the DRBD and Heartbeat libraries. The use of database replication is very important and should not be postponed. Just after 3 months the system got into production, the server hard disk became bad. Thru the use of Heartbeat we were able to put the system back into production within seconds, without loosing any data.Heartbeat replication is done thru the use of a lan network between the server and slave nodes.

As a programmer, there may come a time when you think that the world is against you. You may believe that there are no proper software development tools out there that can help you design and build that program you have been working on for months. However, the exact opposite is actually true. There are hundreds of tools out there that can help make your life as a programmer much, much easier. Here is a short list of some of the most popular tools for programmers.

The programming process starts with the actual design and development of a program, so you will want to look at software development tools that can make this process that much easier to save you tons of time. Start with software development kits and other all encompassing systems that can help you design the interface for your program and provide you with an easy way to input all of your code.

Many programs get updated from time to time, and if you think that your program will be updated frequently, you will need to check out the revision control tools that are available. These tools can help you keep track of your revisions, create a unique numbering system for them and make sure that each one follows a specific set of guidelines.

Because we all make mistakes from time to time, you will want to also make sure that you have a debugging tool handy. Debuggers will make your life much easier because you will not have to sift through your code line by line just to find one small typo that causes your program to crash.

One of the great things is that you can take advantage of a number of free software packages that can help you isolate and correct bugs in the code before you release anything to anyone. Also, you may find something for free on the Internet that will aid you in the streamlining of the updating process as well. Spend some time checking out viable resources online before you waste any time trying to reinvent the wheel.

Finally, if you are planning on making a massive program capable of doing a variety of functions, then you may want to check out some of the code sharing websites available on the Internet. While not technically software development tools, code sharing websites are perfect for coders of any level who want a jump start on their programming.