You are hereBlogs / Slim's blog / The RDS System and Tools for Development

The RDS System and Tools for Development


By Slim - Posted on 31 August 2009

In my quest in becoming a better developer. I am using the Retrieve, Develop, and Stage System to rapidly develop web applications. This system is where I store and retrieve my commonly used code in a source controlled repository, develop and configure a customized website from a working copy of the code on my local development system, and then stage a working copy of the application in order to release it into production. Just the basic three step process where I refine it with each project site I develop.

Tools for Development

Since I am doing web development, and I am on the go a lot. There is a few tools of the trade I use to be more efficient in my development process. I will go into detail about each sometime in my writings, but here is a quick list of the packages and software tools I use to complete my projects. I am always learning and refining my techniques as time goes along, but these are the things I use almost everyday in the RDS System.

The LAMP stack

The Linux operating system, Apache Web Server, MYSQL Database, and PHP programming language (LAMP) stack of programs for developing web applications. These are the basic building blocks for my work. While I do most of my work on a separate computer running Ubuntu Linux. I do also work on my Laptop that has Apache, MYSQL, and PHP running on Windows Vista operating system through a package called XAMPP. I will still call it the LAMP stack even though I do run it on Windows some times.

Drupal Content Management System. (CMS)

Even though I could create a website from scratch using the LAMP stack for each client. It is very impractical for me to do so in this climate of Rapid Development and people always needing new features to manage their information on-line and appealing to visitors. Content Management Systems like Drupal helps to quickly implement things like on-line stores, forums, and other user-generated content without re inventing the wheel with each new website. It is also easier to add features over time through add on files called modules.

After all that's the purpose of any website is to quickly deliver information in an appealing and efficient way to attract patrons to a particular business or cause. A website should also allow the visitor to interact with the business on some level to receive more information or to participate in the community surrounding it.

Yes I could develop my own CMS, but I would be concentrating more on developing the system than the needs of the client. I can download the base system and the features (or modules) that the client needs for their site. I can then configure or modify the base system and feature to adhere to the client's business model. Because Drupal is Open Source Software or a co-op for web developers any bugs that I find while working with the base code or a module I can submit a fix to be included in the next release. Also if I determine that there's no module to accommodate the feature I need for a website. I can also just write my own module to use. If I feel that's the module is good enough that other people can use it I can contribute back to the system.

For those less technical think of Drupal like an iPhone or iPod, and modules from drupal.org are apps from the AppStore.

This website, llslim.com, is powered by Drupal to deliver it's content. I'll never use something for my business that I haven't tried myself.

Mercurial Distributed Source Control Manager (DSCM)

Managing changes I make to my projects is very important to me. If I break a website when changing something it's hard to remember what caused that break. A Source Control Managing Software like Mercurial allows me to track each change made to files in a project. I can make a repository out of the project files, and each set of changes I commit to the repository makes a new version of the code. If one version of the code or change set as they are referred in Mercurial, I can compare and revert back to a previous working copy without any hassle.

Another feature of Source Control Management Software is when collaborating with other developers on the same project. If two or more developers make changes to the same code. An SCM can assist the developers in resolving which change takes precedence by alerting there's a conflict. Also giving several options to the developers to resolve the issues.

There are several source control managing software packages available today. The two that are most well known are the Concurrent Versions System (CVS) and Subversion (SVN) billed as the most capable successor to the older CVS Software. Both are open source software projects and are free to download. Also both CVS and SVN are client-server programs where the developers need to be connected to a network to commit and retrieve changes on a project. Even though you can install a local copy of the software on a machine like a laptop to work off-line. Still working off-line with SVN is a pain compared to Distributed Source Management Software like Git or Mercurial because they were design to work with their repositories off-line and changes imported through e-mail. Also with Mercurial being written in Python. It can be installed on a shared hosting account of a web server with shell access.

Mercurial is my DSCM of choice.

Editors and Development Environment

Last but not least in my description of my tools for development are the editors and the development environment I use to create web applications. My main editors are nano, Gedit (Linux), Notepad++ (Windows), and vi/vim. I occasionally use notepad, but mostly for talking without my communication device near me.I like the nano editor because it's fast, and easy to invoke from the shell prompt. It's my editor of choice in doing anything from the command line. The vi editor was my first love in editors, because I did most if not all my programming assignments in college over telnet / ssh using it. I feel that everyone should be familiar with vi as it is on all unix-like systems as the default editor. I use the Gedit / Notepad++ editors mainly for the syntax highlighting and working on multiple files.

I use the Eclipse Development Environment for writing any large applications for it's keyword and function name prediction that assist me in writing code quickly. Eclipse also has good integration with the Xdebug package which lets the developer run the application line by line.

Conclusion

The above list is not the only tools and packages I work with, but just the major ones in developing my web development applications. In future entries you will other technologies introduced such as BASH shell scripting. I write a lot of shell scripts to automate many of the routine tasks in my development process. I also integrate many other technologies as well, but this is my basic set up. Until next entry.