Developer Tools

Last Edited: on 14/1/10

Code review and collaboration

  • Share snippets of your code for review: Pastebin.com

Driver / Navigator Programming

  • Involves a driver (the person typing) and a navigator (the person overseeing)
  • Allows for live second-opinion coding, catches errors faster and creates a wider spread understanding of the code (instead of just the sole programmer knowing wtf it does)
  • Live 'pastebin' collaboration: Etherpad.com
  • Web conferencing and screen sharing: Dimdim, Skype and others

Code Versioning and Backup

Methodology

  • All your files you want to keep track of are added to the repository
  • Every day you are done with your changes in your code, you submit a commit of all the changes. This creates a new revision
  • Changes between files and different developers can be compared and shown using a 'diff' tool
  • Multiple developers can submit code to 1 repo, allowing consolidation and comparison of who's code is in / out / accepted
  • Branches can be made so that developers can work on large chunks of code such as large features without worrying about other developers changing their base regularly
  • Once a branch is ready, it can be merged back into the core trunk code, where the updated code is relayed to all the other developers
  • Every single change is tracked to the developer who submitted it. Every single copy of each revision is also stored, so reverting back to older revisions or tracking down a certain change is now possible
  • Every single repo acts as a backup copy of your code
  • Advanced users can configure publishing tags (official stable versions of code) to automate publication to the web

Git

  • Newest, Developed by linux founder Linus Torvalds as the better alternative
  • The latest developers are upgrading to Git
  • Code hosting at Github.com

SVN

  • Most heavily used in the industry today
  • GUI interface with Turtoise SVN: http://tortoisesvn.tigris.org/
  • Code hosting at Google Code: http://code.google.com/

Differences between the two

  • Git creates only 1 directory in the root, not recursively
  • All code is stored in 1 compacted file instead of replicas of each file
  • File tracking is easier due to the lack of file replication needed
  • Exporting to webserver with git repo doesn't take forever due to thousands of files
  • Every repo is a full repo, ensured by a SHA1 hash
  • Git introduces 'Push' and 'Pull' from one repo to another, allowing developers to pick and choose who's repo code they wish to pull from
  • Branching and merging is much easier and seamless

Bug and Ticket tracking

  • Allows users to submit errors in 'todo list' fashion that organizes work into small, digestible tasks
  • Gives a visible progress of development based on task completion and milestone dates
  • Bugs can be associated with peices of code more concicesly and linked to specific revisions when used with versioning

Resources

  • Enhanced Github bug tracking: LightHouseApp
  • Trac (open-source code, uses webserver)
  • Bugzilla (open-source code, uses webserver)
  • General Project Management (non-coding): Basecamp or OpenGoo (free)

Developer networks

  • Google Groups
  • The project's developer mailing list
  • The project's bug tracker
  • Forums
  • StackOverflow.com (Yahoo Answers for programmers)

IRC

  • Freenode.net is a developer server filled with hundreds of developer channels
  • Channels are IRC chatrooms, and must be hosted by a server
  • IRC Clients can be connected to multiple servers and channels at the same time
  • Firefox Plugin: Chatzilla
  • Browser Based: Mibbit.com
  • Freenode Friendly Browser Based: java.freenode.net
  • Opera, Trillian, Pidgin*, Adium* are all capable of IRC (*latest versions)

Documentation and auto-generated APIs

  • PHPDoc
  • API Generating Plugin

Scaffolding and Prototyping

  • Online Whiteboards
  • Collaborate over website mockups: Twiddla
  • Create Application Mockups: Mockingbird
  • Simplistic Database Designer: http://ondras.zarovi.cz/sql/


============== TO BE ADDED ===================

Integrated Development Environment (IDE)

Heavy feature boosted development environment.

Coda ($100:Mac):
Mac
Aptana (Free:All):
A fully-featured web development environment built off of eclipse. Java based application.
NetBeans (Free:All):
Almost identical to the eclipse development environment applications, however it uses it's completely own code-base and is unrelated to eclipse. Java based.
Eclipse with PDT (Free:All):
PDT is a plugin that can be added to eclipse (used in the CIS department for object oriented Java programming) for usage with PHP and other web languages.
Kommodo IDE ($250:All):
Another eclipse-like editor with web development capabilities.
CSS Edit + Espresso:
A mac environment editor that specializes in assisting with live feedback of css rules and a graphical interface for editing rules.
Adobe Dreamweaver ($400:Windows+Mac):
An excellent program for live graphical feedback, should not be used to generate code however and is not as compatible with dynamic languages (php, mysql)
Zend Studio ($400:All):
Another build of Eclipse with PDT, based upon the Zend Framework. No real benefits for the cost
Microsoft Visual Studio / Expression:
I'm not too familiar with web development in these programs, I recommend the same instructions for Microsoft Frontpage.
Microsoft Frontpage:
!!!DO NOT TOUCH!!! Seriously, Just don't.

Text Editors:

Text editors are lighter and use less computer memory while running. They usually have less standard features but in exchange run faster. Any decent text editor has syntax highlighting, but not code hinting.

Wordpad is not a true text editor and should not be used

Textmate ($50):
Considered to be one of, if not, the best web development application. A simple text editor with code highlight with an excellent plugin base. It is in fact the massive array and support of plugins for expediting common programming tasks in a wide variety of languages that makes this tool a powerful resource, at the same time requiring very few resources.
Notepad++ (Free):
Due to lack of better alternative, this program is the usually the most heavily used text editor on the windows environment. A decent plugin base facilitates some common IDE capabilities (like FTP and file browsing) but not a diverse array, in exchange however is speed and stability.
E Text Editor ($35:Windows):
A windows port of Textmate for its sheer popularity. Due to stability and inability to port certain features and plugins to windows, this program can be less stable than Notepad++ occasionally and hasn't quite taken the lead.
Textpad ($30:Windows):
Very similar to Notepad++, however issues a payment nag-screen and issues a different selection of functions and features to the other, quite possibly less.
Kommodo Edit (Free:All):
A slimmed down version of Komodo IDE, although this could still pass as an IDE, the stripping of major features (listed on the website) to increase speed and stability has placed it into this category.
Notepad (Windows Native/ Free):
No features or syntax highlighting. Loads the fastest (usually) though.

Packaged Server Build (LAMP):

Used for setting up your development environment. If you wish to create advanced websites that use any degree of dynamically generated pages (php and/or mysql database driven), these are pre-compiled and packaged builds of all the necessary libraries and server softwares needed ready to go from launch. No configuration or advanced knowledge needed. LAMP stands for Linux, Apache, MySQL, PHP.

Not needed if you just plan to use HTML and CSS only

MAMP (Free+Pro:Mac):
The free version has all functionality built in. The Pro version is simply an addon tool that gives you a convenient graphical interface for advanced configuration of your server. Pro is an excellent resource and highly recommended to avid developers.
WAMP (Free:Windows):
Windows only LAMP build
XAMPP (Free:All):
Although XAMPP is compatible in all OS's, it's generally agreed usage of the above two is generally easier to use and more straight-forwards due to no configuration needed on their parts and the additional graphical interface features provided.

FTP / SSH and File Transferring:

Transmit ($40:Mac):
A nicely polished and clean FTP solution for the mac environment. However there are many other free solutions that work just as well.
Filezilla (Free:All):
Unbelievably widely used (even on xbox) open-source solution to FTP. Very oddly though, I personally have had issues with file permissions and transfers crapping out midway through and prefer to avoid this software.
Cyberduck (Free:Mac):
The open-source FTP solution nicely polished for the mac environment.
SmartFTP ($?:Windows):
CuteFTP ($?:Windows):
Windows Explorer or Terminal (Built into OS:All):
Windows Explorer is capable of setting up ftp servers as local folders, while *nix (Mac) terminals usually have SSH capabilities built-in

IRC (Internet Relay Chat) Tools for collaborate chatrooms

IRC is chatrooms before messengers existed. Although considered 'old-school' there are easy ways to connect to the network and locate the excellent chat rooms available filled with fellow users who are as able to help you as the local tutor on EVERY subject or hobby, INCLUDING accounting, physics, biology, web design and programming. It helped a friend through Bio-Chem.

It is not necessary to install extra programs just to connect to IRC. Many programs already installed on most people's pc's are fully capable, and if none of those are available, browser-based solutions are also (see websites below). Many programs can be launched and connected using IRC links in browsers irc://irc.freenode.net/html with the domain being the server and the final argument being the chatroom (channel) to join.

Chatzilla Plugin for Firefox
If you already use Firefox, install this addon and you're ready to go.
Opera Browser (Windows/Mac)
The web browser comes with IRC functionality. Not necessary to use if you don't already use Opera normally.
Multi-Network Messengers (Trillian, Pidgin/Adium beta, Miranda)
Many multi-protocol instant messengers are capable of handling IRC protocol, unfortunately setting up IRC will usually require you to know which server and chatroom before-hand that you want to join.
mIRC (Windows)
The original IRC client for windows. Standalone.
Colloquy (Mac)
The defacto IRC-dedicated client for Mac. Standalone.
Freenode.net and #IWDSA
Not actually a piece of software or website, this is an IRC Chatroom server that is host to MANY excellent developer chatrooms. Rooms with 300+ active users who daily discuss their simple to expert issues from HTML to Java to C++

Websites:

AlternativeTo.net:
An excellent website where you can search for recommended alternative software to programs. If you need an alternative OS, price, or just solution altogether, an excellent place to check.
Pastebin.com (and other variants)
A source code copy+paste tool for quickly sharing with other developers chunks of code for debugging or other temp-storage purposes
Etherpad.com:
A live-editing version of Pastebin.com that lets multiple users edit the code on-screen simultaneously in addition to storing revisions and chatting. Useful for live group review
Github.com
Online code repository hosting for your projects. Requires usage of Git. Includes wiki, ticketing (bug tracking) system, and free public project hosting, paid private project hosting.
Code.Google.com
Online code repository hosting for your projects. Requires usage of SVN or Mercurial. Includes wiki, ticketing (bug tracking) system, and free open-source project hosting.
Mibbit.com
A browser based IRC client. Comes with quick access to tools like pastebin and chatroom searching. No longer permitted access to the Freenode server however
Java.Freenode.net
The dedicated Freenode server web-based IRC client. For if you're not at your computer but need to get on that server
SearchIRC.com
If you don't know what chatroom (channel) or server to use for the community you're looking for, you can always search here and use the IRC links to join.