Tools for Agile: Puppet

Capistrano provides server automation; by running a set of predefined scripts on remote servers. Puppet is a tool providing configuration management, provisioning and reporting. Puppet Enterprise extends Puppet by adding application deployment. Below is a quick introduction to what Puppet is, how is used and links to tutorials.  An Agile environment requires Continuous Deployment, for constantly […]

Agile Methodologies: User Stories and Acceptance Criteria

Both Scrum and XP rely on User Stories to describe features required for delivery at the end of a Sprint/Iteration; and provide a basis for Time Estimates and Acceptance Criteria. This entry covers what User Stories and Acceptance Criteria are, how to write, and use. What are User Stories? User stories are a short description […]

Symfony2: Version and Install Steps

This post marks the start of a series of Symfony2 focused entries, describing how to install Symfony2 and prepare the environment for a new project. Relying on the “Installing and Configuring Symfony” chapter of the Symfony Book, this entry provides details about choosing the right version, and an introduction to composer; followed by step by […]

Agile Methodologies: eXtreme Programming

“Always be doing the most important thing that you can be working on.” – Kent Beck. While Scrum puts more emphasis on project management, XP is more focused on programming. XP surfaced from the need for flexibility, speed and quality. None of the XP practices are wholly new, but it takes existing ones to a […]

Create Capistrano Recipes for NodeJS Applications

This, and the following entry, are the main focus of this tutorial. Here you will learn how to create a Capistrano project, recipe – for deploying your application code, run tests, stop and restart the NodeJS server; and maintain roles. The assumptions are that git, npm and NodeJS are already installed on target servers, and […]

Prepare your NodeJS Project Using Forever, Nodeunit and ExpressJS

Prior to creating Jenkins jobs and Capistrano recipes you should prepare NodeJS dependencies and scripts. This article does not provide in-depth details about NodeJS. The assumptions are that nodeunit is used for unit testing, forever for process management, and ExpressJS for creating a web server. Step 1: Create a package.json file: NodeJS dependencies and utility […]

Agile Methodologies: Retrospective

At the end of each Sprint/Iteration, team members (developers, customers, managers) get together and analyse how to become more effective.  What is a Retrospective? Retrospections are the time when processes are inspected in order to be improved, successes shared, real numbers are collected to be used for future projects and successful actions are reinforced in […]

Install Jenkins on Debian

Installing Jenkins on Debian is a trivial task – a package is available, through aptitude, and default configuration is sufficient. This tutorial does not cover advanced security topics. By default, port 8080 is open and no authentication required – this poses a major security risk; thus if you rely solely on the instructions below, you […]

Agile Methodologies: Estimation

Once User Stories and Acceptance Criteria are created, developers being estimating tasks. This is done in a “Planning Poker”. Each team member having a set of “cards”, consisting of numbers in the Fibonacci sequence, and assigning a number in this sequence to each task. Planning Poker The Planning Poker aims at providing estimates as accurate […]

Continuous Integration and Deployment using Debian, Jenkins, Capistrano, NodeJS and Git

This series of entries provide a short tutorial on how to install Jenkins and Capistrano on a Debian machine; and how to integrate the two to continuously integrate and deploy NodeJS applications. The following topics are covered: Continuous Integration and Delivery Processes, Install and Configure Jenkins and Capistrano, Prepare your NodeJS Project and Create Capistrano […]