Ruby on Rails Development – How To do It Agile?


Agile

Ruby on Rails – Agile Software Development

The rapidly accelerating pace of technology change and a desire to achieve a competitive edge are forcing a growing number of organizations to re evaluate the conventional approach of simply tossing resources at various enterprise projects and challenges.

Agile development, which puts software development on the front burner focusing on broader and deeper collaboration along with a more iterative approach has emerged as a key business and IT strategy. A growing number of organizations are adopting this methodology to address the need for more frequent release cycles and higher quality software.

However, agile development is complex and tricky. As a result, many organizations struggle with the concept.

Here is the basic gist of things-

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Agile methods

The choice of a suitable agile software development methodology is the second pillar of a successful agile project. Many agile methods have evolved over many years. A few popular ones are Scrum, Feature Driven Development (FDD) and Dynamic System Development Model (DSDM), among others.

Scrum:

Scrum is a popular approach for team collaboration and product development. Scrum enables the creation of self-organizing teams by encouraging face to face communication across all team members involved in the project. A scrum project is facilitated by a scrum master whose primary goal is to remove impediments for the team instead of “handholding” them. Work is done in short sprints (iterations) of less than 4 weeks.

FDD:

Jeff De Luca and Peter Coad created the Feature Driven Development method. FDD is a simple, but well-defined process that avoids process overheads. Also, it is logical and the worth is immediately obvious to each team member.

DSDM:

DSDM has the unique distinction of having the best-supported training and documentation amongst any of the agile software development techniques. The underlying philosophy of DSDM is that nothing is built perfectly the first time. DSDM acknowledges that software development is an exploratory endeavor where clarity emerges more during development stage of the project. DSDM advocates active user involvement and empowered teams.

It is interesting to note that all these three agile methods, does not specifically mention about the software engineering practices required for the development of software. Unfortunately, many software projects embracing agile seem to go by the book and follow the frameworks without realizing that they are only a guiding light and not a process handbook. In that sense, these are probably only frameworks and not full-fledged methodologies. Neglecting the engineering aspect in agile projects is a sure recipe for failure.

Source : RailsCarma

Advertisements

Offshore RoR Web Development Partner – RailsCarma


 RailsCarma specializes in Offshore Ruby on Rails Development and is located at Bangalore, India. RailsCarma offers specialized web development services using the Ruby on Rails platform. RailsCarma has high level of expertise and experience in developing ruby on rails or ror applications on PaaS platforms, both in standalone and Software as a Service formats.

 Projects that are designed, coded and maintained by RailsCarma consists of line of Business applications, industry specific applications in healthcare, smart grid areas where there is high level of API integration with other software and hardware systems.

 

20120709-163457-RubyOnRails

 

RailsCarma has handled and delivered projects with more than 20k man hours of effort and durations more than 2 years. Visit the website to learn more on this.

You can contact us at sales@railscarma.com for any of your Ruby on Rails related needs. We can work out a deal on an hourly, monthly or on a per project basis.

Besides this, we are also offering a couple of partnership opportunities as given below:

White Label Partnership

RailsCarma services can be resold by you under your own brand. Through this initiative, we aim to make it possible for you to easily add Ruby on Rails web development, which has huge demand right now, to your portfolio of services. With our services and your user base, we can both profit.

Become an Affiliate

If anyone you know has any Ruby on Rails related requirements then you could forward them to us. We can work together on a profit sharing basis on such projects.

Let us know if you are interested or if you have any queries regarding Ruby on Rails Consulting

Charts In Rails


We have been working on a project that deals with server data where charts are worth a thousand words. I always get requests for various charts and in the past I’ve used Gruff to produce them. Gruff is a great library and the results look good too! However, recently I’ve have had more demanding requirements to provide more dynamic behavior on the charts. Users wanted to be able to interact with the charts in various ways and drill down to gather more information.

I looked at the alternatives to Gruff and decided to go with XML/SWF charts. These frameworks use Flash rendering for charts and have great features, 24hr turn around support and they’re inexpensive. The other advantage is that we no longer had to deal with figuring out the various spells to install RMagick on client’s servers. Moreover, we were able to delegate the actual chart rendering over to the client, which with dynamic graphs is key. All we had to do now on the server side was generate XML (for CPU usage in real time).

In this article, I would like to throw some light on various charts that are available for rails like Gruff, Google charts, Ziya charts, Open Flash charts and Fusion charts.

I am currently using Open Flash charts for the current project.

Gruff charts:
Gruff is a Ruby library for generating attractive and powerful graphs, useful for web applications, print media and many others.

Snapshot Rendering

You can render a Gruff graph as many times as you want and change any settings between renders. Data, colors, even the graph size and image type can all be changed for the next render.

Easily Extensible

Gruff is designed to be extremely extensible. Adding new graph types or themes can be done in as little as a few lines of code. If you need more control over your graphs, you can customize the layouts, data generation, almost anything.

Installaton

sudo gem install gruff


Demonstration of usage

Pie Chart example

require ‘rubygems’

require ‘gruff’

g = Gruff::Line.new

g.title = “My Graph”

g.data(“Apples”, [1, 2, 3, 4, 4, 3])

g.data(“Oranges”, [4, 8, 7, 9, 8, 9])

g.data(“Watermelon”, [2, 3, 1, 5, 6, 8])

g.data(“Peaches”, [9, 9, 10, 8, 7, 9])

g.labels = {0 => ’2003′, 2 => ’2004′, 4 => ’2005′}

g.write(‘my_fruity_graph.png’)

Google charts:

The Google Chart API returns a PNG-format image in response to a URL. Several types of image can be generated, including line, bar, and pie charts. For each image type, you can specify attributes such as size, colours, and labels.

Installation ruby script/plugin install http://google-charts-on-rails.googlecode.com/svn/google_charts_on_rails/

Once installed, start using it directly in your project.

Pie Example

GoogleChart.pie(10,20,40,30).to_url

With labels:

GoogleChart.pie([‘1997’,10],[‘1998’,20],[‘1999’,40],[‘2000’,30]).to_url

Ziya Charts:

Ziya allows you to easily create interactive charts, gauges and maps for your web applications. Ziya leverages flash which offloads heavy server side processing to the client. At the root, Ziya allows you to easily generate an XML files that will be downloaded  for rendering. Using this gem, you will be able to  create great looking charts for your application easily.

Features :
-Supports a wide variety of chart/gauge types.
-Geographical maps.
-Relieves your server load by generating the actual chart on the client side.
-Themes support. You can change the appearance and behavior of any charts by introducing new themes.

Installation :
> gem sources -a http://gems.github.com
> sudo gem install derailed-ziya

cd to your application directory and issue the following command:
> ziyafy –charts
This will copy the necessary themes and flash files to run ZiYa in your application’s public/charts directory. You can install maps and gauges components as well. Type in:

> ziyafy –help
To see all available options.

Open Flash Charts:

Features :
-More dynamic graphs with eye catching tooltips and legends for readability.
-Various types of charts available, except real time charts.
-Simple and easy to install the plug-in. Does not need and gem like Rmagick or ImageMagick.
-Data is rendered and displayed in SWF format.
To install and use the open flash chart plug-in for Rails do the following:

1.script/plugin install http://svn.pullmonkey.com/plugins/trunk/open_flash_chart/
2.Move the open_flash_chart.swf file into your RAILS_ROOT/public directory
3.Move the swfobject.js file into your RAILS_ROOT/public/javascripts directory
4.Create a controller and a view as in my examples below.

Implementation:
def index_stacked_bar
@graph = open_flash_chart_object(600,300,”/test_it/graph_code_stacked_bar”)
end

def graph_code_stacked_bar
title = Title.new(“A stacked bar chart”)
title.set_style( “{font-size: 20px; color: #F24062; text-align: center;}” );
bar_stack = BarStack.new
bsv1 = BarStackValue.new(2.5, ‘#C4D318′) # yellow
bsv2 = BarStackValue.new(5, ‘#50284A’) # purple
bsv3 = BarStackValue.new(1.25, ‘#7D7B6A’) # gray
bsv31 = BarStackValue.new(1.25, ‘#C4D318′) # yellow
bar_stack.append_stack( Array.new( [bsv1, bsv2, bsv1 ]) ); # 0
bar_stack.append_stack( Array.new( [bsv1, bsv2, bsv3,bsv31 ]) ); # 0
bar_stack.set_tooltip( ‘X label [#x_label#], Value [#val#]<br>Total [#total#]‘ );
y = YAxis.new();
y.set_range( 0, 14, 2 );

x = XAxis.new();
x.set_labels_from_array( Array.new( [‘Winter’, ‘Spring’, ‘Summer’, ‘Autmn’ ]) );
tooltip = Tooltip.new;
tooltip.set_hover();
chart = OpenFlashChart.new
chart.set_title(title)
chart.add_element(bar_stack)
chart.x_axis = x ;
chart.y_axis = y ;
chart.set_tooltip( tooltip );
render :text => chart.to_s
end

Fusion Charts:

Fusion Charts is a flash-based charting component which can generate interactive and animated charts. Fusion Charts can be used with any web scripting language, to deliver powerful charts with fairly minimal coding. Fusion Charts comes with wrapper modules for use with RoR.
Fusion Charts offers over 45 types of 2D/3D charts including line, area, bar, column, pie, doughnut (donut), combination, scatter, bubble, scroll charts etc. The functional and cosmetic aspects of each chart can be extensively customized using the XML API used by Fusion Charts.
Generating charts using Fusion Charts in Ruby on Rails through a sample application. To run the sample application, the following would be needed:
• FusionCharts Free/ v3:
Fusion Charts Free can be downloaded by clicking here

or the commercial version with more options can be downloaded directly from www.fusioncharts.com .

Installation of Fusion Charts involves just copying and pasting the SWF and .rb files from the download package into appropriate application folder. The .rb files are present in Download Package > Code > RoR > Libraries folder.
• Ruby 1.8.6 or above
• Rails gem 2.0.2 or above:
• MySQL 4.0 or above

All the charts explained above have its own advantages and disadvantages. The best way to use them depends on the type of the requirements of your project. Hope this article helps to implement the best use of the charts available in rails.

Source : RailsCarma

How To Build The Perfect Team?


Without doubt one of the main tasks of a startup CEO , is to create a dream team that will be in a position to get the entire startup off the ground. Nobody can reach ambitious objectives by themselves . With the greatest share of duties before the future team , investors , clients and/or consumers , business leader should have someone to depend on . These people will communicate personally as well as talk about business challenges . They will put forth proposals and make decisions , affect the company culture , as well as develop the environment by themselves . If we step aside from ‘be motivating , be a good example , and have passion for what you do’ advice , we’ll find out several more efficient tips you should always take into account .

1 . Become an HR manager yourself
You need to know the right person from wrong . An HR manager can assist you to evaluate the professional experience and approach of a candidate , but it’s you who is required to feel whether or not this is the person you want to work with . Selecting the core of the team is the duty that begins with you .

2 . Seek the services of the best professionals there are
This is certainly the main rule – seek the services of individuals with experience in different areas . They are more expensive and it’s more difficult to wake and sustain their interest , however the effectiveness of work as well as their efforts will take care of salary expenses . It would also be a lot less important to manage each and every of their efforts . Employing a ‘so-so’ professional may in the long run result in a need for replacement , so why not stop it right away ?

3 . Offer challenges
Money is an excellent motivator , but could possibly be not the perfect one . On many occasions experienced professionals do not have a problem looking for a job , and therefore they would like an ideal chance for self-actualization instead of a small salary improvement . Ambitions , along with non-standard , challenging , creative tasks , can play a pivotal role in establishing a startup .

4 . Bring home a diversity of individuals
Members of your team don’t have to have the same age , gender , character traits , ethnicity , whatever . A diverse traits along with experience , professionalism as well as shared vision of powerful personalities , is a solid , effective backbone for the team .

5 . Search for individuals with triumphs
No matter what these achievements are , whether they concern your area of expertise or not . This demonstrates a person’s commitment to the things they like and enjoy doing . Later on they need to possess all the needed circumstances to take pleasure in their work , along with wish to set goals , do their best , and be successful – just like they did before .

6 . Never hire full-time by reason of urgency
You could possibly just end up eventually searching for an alternative . The waste of your time and money can be eliminated by offering a one-time quantity of work . Or perhaps you will be lucky to quickly find the person you need – who knows .

7 . Set the mission of your company endeavor , shared vision , values and goals .
You should agree on what you would like to achieve and the ways you will be achieving it .

8 . Be clear with expectations and goals , and encourage teamwork
Clearly define responsibilities of every team player . However , do not isolate anyone ( this concerns a single person , as well as a whole department ) to make them concentrate on their own duties only . Teamwork is always far more effective . Specialists in different areas ( a CEO , a technical specialist , a marketing manager , whoever else ) will make contributions to solving common business tasks – for a startup it’s an optimal solution from the very beginning .

9 . Be patient to mistakes
If a person repeatedly makes the same mistakes , unable to analyze and improve the outcome of work , maybe that’s not the person you have been looking for . But in general everyone makes mistakes , including you , and the best thing is to learn from them , and solve problems together .

10 . Help people develop their skills
This will boost the performance of the whole team in the end . Practice brainstorming of ideas and never let anyone rest on laurels.

Source : RailsCarma