Showing posts from 2014

Spring Integration - Introduction

In this blog post and the subsequent post, I'm going to write about Spring Integration and also share my experience in using Spring Integration in a live project. To begin with, I will provide a brief introduction to Spring Integration framework and in the next post I will show how to apply it. Much of the content of this post is taken from the Spring Integration official website Spring Integration Reference What is Spring Integration? Spring  Integration   is a Spring driven framework which supports message driven architecture and provides routing, transformation of messages and implements the common Enterprise Integration patterns, more importantly the "Pipes and Filters" pattern. What is Pipes and Filter Pattern? This is an Enterprise Integration pattern, which is applied, if multiple processing units are required to process a message and we need to increase reuse and also achieve decoupling. The "filters" represent any component that is

HTML5 Canvas - Basics

In this post we will take a look at the HTML5 Canvas element and how to use it. What is canvas? HTML5 canvas element provides platform to draw stuff on it and also animate them. How to create a Canvas? Canvas is a html5 element, which is created as below: <canvas id="mycanvas" width="578" height="200"></canvas> How to get a handle to the canvas? In order to draw shapes or write text into the canvas, we need to get a handle to the canvas object. This could be done in javascript as below: <script>       var canvas = document.getElementById('myCanvas');       var context = canvas.getContext('2d');  //TODO </script> Entire html code: <!DOCTYPE HTML> <html>      <body>     <canvas id="myCanvas" width="578" height="250"></canvas>     <script>       var canvas = document.getElementById('myCanv

HTML5 Form Fields

In this post I'm going to write about HTML5 form fields.  HTML5 has introduced a lot of input controls, which would otherwise been very tedious to code using javascript. Note that if the browser does not support any of these controls, it would just render a plain text field. 1. Color Picker: <input type="color"/> 2. Range slider This input type displays a slider within min and max range of values. <input type="range" min="10" max="80"/> 3. Date  <input type="date"/> 4. Email <input type="email"/> 5. URL  <input type="url"/> 6. Datalist  <input type="text" list="states"/>  <datalist id="states">          <option value="CA">          <option value="TX">          <option value="FL">  </datalist> The datalist input type provides a sugges

Agile and Scrum Methodology - Estimation

In this post, I'm going to talk about estimating in agile. In agile world, before sprint planning happens, the team would go through the backlog and estimate them in terms of Story Points. This would provide a relative high level estimate for the team/management so that they can proceed with Sprint planning. Story Points: Story Pointing is a technique wherein the team gets together and understands the high level requirements for each story and provides a rough number indicating the complexity of the story. The team would brainstorm on the high level requirements and come to a consensus on the story points. If team members disagree, then they have to give justification on why they disagree and try to arrive at a consensus. (Scrum master can play the role of moderator in these discussions). Story Pointing is NOT time based, but rather, is based on complexity. The rationale here is that some tasks would take less time but are complicated and needs more focus than few other

Agile and Scrum Methodology - Product and Sprint backlog

In this post, we are going to see what is a Product backlog and what is a Sprint backlog and the differences between the two. Product backlog: The product backlog is an ordered list of everything that might be needed in the product and is the single source of requirements for any changes to be made to the product. A product backlog contains a list of product backlog items. The items could be in the form of: Story - short description of what the user wants from the product (eg., As a online retailer I need a catolog of products to be displayed). Bug Epic - represents bigger user stories The items which are of high priority will be at the top of the backlog. The product backlog is maintained and managed by the product owner.  Progressive Refinement: It is a process wherein items at the top of the backlog will have more details into it than the ones at the bottom of the backlog. With time, and as and when the the backlog items at the top are completed, rest of th

Agile and Scrum Methodology - Roles and Responsibilites

In this post, we will talk about the various roles and responsibilities associated with Scrum. In scrum, generally there are 3 distinguished roles as follows: Product Owner Scrum master The Team 1. Product Owner The role of a Product Owner is very crucial in the making the product a success in the market, as it deals with the "What" and the "Why" of the product. Is one who has a product vision on how the product should look like, what should be its features etc. Unsurprisingly, the product owner should have very good domain expertise. Communicates with various stakeholders like sponsor, client, end users and gathers requirements. Also responsible for end user satisfaction, has overall commitment to product road map. Also responsible for ROI (return on investment) and work out the budget constraints. 2. Scrum master Scrum master is more of a facilitator and a coach who gives valuable advice to the team. The roles include: Make sure every

Agile and Scrum Methodology - Introduction

In this post (and a a few more to come), I will be writing about Agile methodology and how it works. What is agile? Agile is a methodology, a way of managing projects which is emerged as an alternative to traditional software management (also termed as "Waterfall" model). In Waterfall model, we perform the following: Team gathers requirements Team comes up with design and architecture  Team implements (coding) Release it to market Now, lets say it is a huge project and took around 6 months to complete. At the end of six months, when the product is released, the team realizes that this is not what the customer wanted or the market conditions have changed and the customer wants lot of modifications to the product.  There is only one shippable deliverable in this process and that was produced at the end of 3rd step, which took months together. Clearly, there is a problem with this process. Why Agile? Agile as the name suggests is a process which allows th

Security Questions and password security in Web Applications

Security questions: Today almost every web application uses security questions to identify the user, especially when the user forgets password.  However these security questions pose a major security risk, if they are not properly thought of. Most of the times we come across simple questions like 'In which city you were born' ,'What is your favorite movie' etc.  Nowadays there is so much information on social networking sites, that a little research will give us all the information needed. Information on favorite movie/actress etc, can be mined by following the 'likes' the user has clicked. The questions have to be smart enough to avoid questions on events which occurred in the person's life, and also avoid questions on person's taste and likes.  Rather, the questions should evoke answers (sometimes strange) which cannot be guessed. How about these  questions :  'Name a city which you never visited', (definitely this will have a lar