Thursday, September 13, 2007

Tools for setting up a PHP Web Development Project

I've come across some rookie web programmers that have no idea of what tools to use in order to get started on a project. So I decided to compile a list of tools that I use to develop my web development projects written in PHP and why they are useful:

  • SVN Server/Client - Version control is a vital part of project development especially if you are developing in teams. I don't care if the project is large or small. It's just nice to keep track of the changes you've made to your project throughout its lifetime. This also gives you the ability to veer off into another development branch to create a customized version of your project if you'd like. Or if you have a stable version you can then tag it with a name or version #. There's other things that you can do with subversion but I won't go into too much detail on how it all works since there are plenty of tutorials out there. However, I will tell you some clients that I use for connecting to the subversion server:
    • TortoiseSVN - Stand alone client which integrates itself seamlessly into the Windows Explorer and your context menu.
    • Subclipse - A plugin client that integrates itself into Eclipse quite nicely
  • Integration Development Environment (IDE) - IDEs are nice when it comes to big projects and can be overkill in some small projects but they provide some nice functionality to increase productivity and in some cases make coding a lot easier. IDEs may require a steep learning curve at first but worth it in the end in my opion. The IDE I like to use is:
    • Eclipse - This is primarily a Java development platform, however, the nice thing about Eclipse is the amount of plugins that it has to virtually program in any language. The best thing about Eclipse is that its FREE! Some of the plugins I've had to install are:
      • JSEclipse - Plugin for editing JavaScript files
      • CSSEditor - Plugin for editing Cascading Style Sheet (CSS) files
  • Text Editor - This tool isn't necessarily needed if you decide to use an IDE but if an IDE is not ideal then you can choose from a variety of text editors that provide syntax highlighting for PHP. I'll only list a few here:
    • Notepad++ - Provides syntax highlighting for a variety of languages including PHP and best of all... it's FREE! (Windows)
    • Textpad - Highly configurable and fast, however, you'll need to download the syntax definitions in order to get syntax highlighting for PHP and it's not necessarily free. You can try the demo version, however, it pops up this annoying help dialog every time you start it up. (Windows)
    • EditPad - Fast and extremely simple text editor and not free. (Windows)
    • VIM - Has a learning curve due to the need to type key combinations in order to delete/copy/paste/edit lines of text but it is FREE! (Linux/Windows)
    • Emacs - Can be quite slow and bulky but it is FREE! (Linux/Windows)
  • Local Web Server - The web server is an obvious necessary tool for developing your project since it will be doing all the work (i.e. passing the PHP files to the PHP parser to generate the content and then sending the content to the client). Perhaps you have a host and don't really need this tool, however, I disagree because having a web server installed locally can speed up your development significantly and it provides a testing grounds so that you don't mess anything up on the actual host. I prefer to use Apache with PHP, and MySQL (for projects involving databases) rather than IIS. You can install all these tools separately but I prefer an all-in-one solution such as WAMP for Windows. If you are developing on Linux you'll have to install LAMP which isn't an all-in-one solution and requires quite a few steps to get up and running, but you can choose whatever solution you'd like for this tool just do a search on Google.
  • Web Developer Extension for FireFox - I've found this plugin to be useful for debugging the layout of my web page but can also be useful for debugging JavaScript.
If you haven't noticed already most of the tools mentioned above are free to use which means all you'll need is an idea for a project and time in order to develop the project. If anyone who is not a rookie is reading this then please by all means post a comment with other tools that you use in place of or in addition to the tools mentioned. If you are a rookie and trying to get started on a project, then I hope this helps and good luck on your project!

Monday, August 27, 2007

Birthday List

My girlfriend asked me earlier today what I wanted for my birthday because a friend of ours had asked what I wanted so I figured I'd brainstorm a list and put it on here. Most of them are pricey so I don't expect to get any of those but hopefully I can think of some with a reasonable price.

  • 300 by Frank Miller DVD
  • Sin City DVD
  • Kill Bill Vol. 2 DVD
  • Office Space DVD
  • The Replacements DVD
  • The Office Seasons 2 & 3 DVD
  • Heroes Season 1 DVD
  • The Simpsons DVD (coming soon)
  • Any Raiders gear (Cap, Jersey, etc... doesn't matter which player)
  • Table Tote for my laptop
  • Gift Card from any electronics store (i.e. Best Buy, Circuit City, CompUSA, etc.)
  • SAMSUNG 206BW Black 20" or if you are rich then I'd prefer (not that the 20" is cheap by any means :)) SAMSUNG 245BW Black high glossy 24"
  • Playstation 3 (again if you are rich)
  • Gears of War PC Game (although it's actually not coming out until the holidays according to this article)
  • Microsoft's Zune - Had a chance to look at this the other day and I think it's a pretty slick MP3 Player OR iPod Video - More expensive but nice
  • iPod Touch - I'm in love... screw the Zune and iPod Video. The best features are:
    • WiFi - Watch YouTube videos, browse the web... what more could you ask for?
    • Touch screen - Ah... touch screen goodness...

Tuesday, August 07, 2007

Having code design trouble

I've been trying to design a blogging system recently and have been running into some snags on my design. It may be due to the lack of knowledge for PHP development and/or web interface development. I'm attempting to take the MVC pattern and apply it to a simple yet powerful blogging system. I'm trying to design it where it will allow for plugins and themes (or templates) whichever you prefer. While I'm typing this I'm trying to think of how to design this type of system without getting in over my head on this. I'll probably run into some unforeseen issues which I really hate because some issues may require me to recode a lot more than I want. I know I want to stick to the MVC pattern and I see some of the user interactions that may occur but their may be more that I'm not aware. So I guess now the issue is my design good enough to handle such things. I really do hope so. Well... before I start coding again I think I'm going back to the drawing board...

Tuesday, June 26, 2007

Memento project

Well, I've been hard at work on a new project recently. Development has slowed a bit as of late but that's due to the lack of free time I've had these past few days. I'm working on a blogging/content management system. It will use the OO features that PHP provides as well as the most popular open source database system out there, MySQL. I will be mixing in some AJAX to make it look and feel faster. I'm basing the look and feel a lot on Lingua (not yet released). I'm hoping to get a few more developers to help me out on this project, so if you know of any please shoot me an e-mail or post a comment. There are some requirements though before you decide to join the project:

  • Strong knowledge of PHP/MySQL (AJAX is a plus)
  • developer will have to get familiar with or already be familiar with how to work with subversion for version control
  • Experience using Eclipse with Subclipse and phpEclipse is a plus and preferred
  • Experience using Dreamweaver is also a plus
Also, something to keep in mind:
Project will be free and available to anyone therefore no profit is involved, which means you will be programming for free (no money involved)
So I don't want anyone to get the wrong idea. However, if this project does get to be a big project and grows a large community, there may be a possibility for profit, but that will depend on the community and the quality of our product.

Wednesday, March 21, 2007

Programming Goodness

Recently I've been in the mood to program some web applications after an extensive amount of time programming a "p2p" instant messenger. It doesn't work like most p2p applications though because it doesn't doesn't request other users through a tree. The way it works is through sending UDP packets to a certain port on a certain IP address to broadcast presence initially. This IP address is considered a group that a MulticastSocket listens on. Anyway, this is only used when a user first logs in to the messenger. For more information on how multicasting works go to http://en.wikipedia.org/wiki/Multicast for a great explanation. Anyway, after presence is sent once you are on the network then TCP connections are made when exchanging messages and other data. The protocol to send and receive presence and instant messages is a modified version of the XMPP protocol. It's kind of a watered down version because I just didn't really feel like adding all the bells and whistles that come with the XMPP protocol. Everything seems to work fine right now but I think I'm going to put that off and take a break from it.

Now I'm in the mood for some web application programming as I mentioned earlier and I think I know the perfect project. Since AJAX is the buzz word going on around the internet I took a look at some of my php scripts and decided to convert one of them over to using AJAX but I have to learn AJAX in parallel with converting my script. I'm hoping that it will not turn out to be a big pain in the ass but so far it looks like I will have to design the interface from scratch and hopefully nothing will have to change on the back end. Oh well... at least I'll learn quite a bit from AJAX and be able to add something else onto my resumé :). Wish me luck!