Advantages and Disadvantages of Hiring Remote Team

In recent time, it has been seen that more and more business owners are open to remote teams; whereas, some entrepreneur are still in dilemma whether to hire remote team because they don’t have any clue how to adapt to remote group. So today, here I will pinpoint some points that will help entrepreneur to make decision easily.

Advantages to hiring remote or virtual team:

1. Get better talent at much low cost:

You can hire people who are either in your city or eager to move and you know great talent doesn’t live next door. Sometime, even if you get that talent near to, but may be out of your budget. However remote team is providing a feasible option to hire best talent from anywhere in the world and that will be within your budget.

2. Low office cost:
Office Rent, electricity, computer, and other equipment added significant ongoing cost. So again by hiring remote team you can easily cut out this unnecessary costs.

3. Increased productivity:
If you think employees working in an office are more productive than remote team, then the report released on Staples Advantage is definitely an eye opening for you.

  • 48% of remote workers say they are less stressed
  • 53% of employers with remote workers report more productive employees
  • 75% of business decision makers notice happier employees

Generally remote team get much longer and uninterrupted period of time to get more productive work.

4. Saving time from unproductive meetings:
Generally unnecessary meeting and distraction from co-worker waste productive time a lots. These are some common problem in office which can be easily rid out by hiring a remote team.

5. Provide flexible time option:
Remote team helps you to work 24*7 basis which again speedup your productivity.

6. If your job is temporary in nature:
If you are a business owner and want a team who can work for you for fixed time period on contract basis then again remote team is nice option for you. You can easily scale up or reduce or team as per your requirements.

7. Professional Approach :
It has been seen that remote teams follow more professional approach than in-house team to their job rather because they are looking for long run business association with the entrepreneur.

Problem of working with distributed or remote team:

1. Lack of communication between remote team and you :
It is very much obvious that, if you work with in-house team, then you can easily go to someone desk at any time and do the casual discussion; where in case of virtual team you have to schedule a meeting to discuss about your project. Definitely this is a major issue but in the flip side it will spare bunches of time which will devoured by ineffective talk and diversion from companions. Likewise that, the virtual team made extra, deliberate  effort to ensure that they communicate with smoothly.

Some of the tools that help you to communicate with you virtual team: Skype , OrangeScrum(Project Management tool), Basecamp, Google Dropbox and Hangouts etc. Also see our previous post: Top 10 simple tools you should know for working with remote team

2. Hard to work with remote time :
More often that remote teams belongs to different timezone, so it gets hard to work at the same time with remote team that you can generally do with your office employees, and it becomes one of major issue people find remote team is not viable option for them. However, it learns you to work asynchronously.

Really the hindrances of working a virtual group are blessings in disguise.

If you opt for remote developers who work on your project dedicatedly, then Andolasoft is an ideal and savvy option for you.

Like this blog? I’d love to hear about your thoughts on this. Thanks for sharing your comments.

Steps to add ‘Elasticsearch’ to Rails App

ElasticSearch-to-Rail-AppsWhat is Elasticsearch?

Searching on websites is important from a content discovery and user usability perspective. It allows readers to control the way they look for content instead of navigating through menus. Elasticsearch is a distributed open source search server based on Apache Lucene, much like Solr. It allows for real-time searching and the ability to scale easily through replicas. It has a REST API and communicates over JSON. We will use a gem called Tire to communicate with it.

What is the Problem if you don’t use a search engine?

If your application requires a full text search, then it is better to add a search engine like elasticsearch to the application. As normal queries to the database for the full text search might slow down your performance. You will end up with complex queries.

Tire is an elasticsearch ruby client. It can be used in any Ruby project, but it also has some nice model functionality to make it easy to integrate into a Rails application. It is actively maintained, has a large amount of users, and also integrates nicely with Rails and ActiveModel.

Step#1
Install elasticsearch in your server

$curl -L -O -k https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.0.Beta1.zip
$unzip elasticsearch-0.90.0.Beta1.zip
$mv elasticsearch-0.90.0.Beta1 elasticsearch

Install the Elasticsearch Service Wrapper

$curl -L -k http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz
$mv *servicewrapper*/service elasticsearch/bin/
$elasticsearch/bin/service/elasticsearch install
$ln -s `readlink -f elasticsearch/bin/service/elasticsearch` /usr/local/bin/rcelasticsearch (optional use )
$rcelasticsearch start or /etc/init.d/elasticsearch start

By default the server on port 9200 ex: http://localhost:9200
We can communicate to the server manually if we want through the JSON REST API.

Step#2
Add the following gem in your gemfile

gem 'tire'

Run the bundle install

Step#3
To make the Article searchable with Tire, just include below lines of code in your model

class Article < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
end1
 
<strong>Setp#4</strong>
To create index for elasticsearch server run the below command
 
1$ rake environment tire:import:all

You can also force-import the data by deleting the index first

$ rake environment tire:import CLASS=’Article’ FORCE=true

Step#5
Add the following in your model

def self.search(params)
tire.search(load: true) do
query { string params[:query]} if params[:query].present?
end
end

Step#6
Add the following in your controller

def index
if params[:query].present?
@articles = Article.search(params).paginate(:page => params[:page], :per_page => 12)
else
@articles = Article.all
end
end
Step#7 Add the search form>
<%= form_tag articles_path, method: :get do %>
<p>
<%= text_field_tag :query, params[:query] %>
<%= submit_tag "Search", name: nil %>
</p>
<% end %>

To know the which model are indexed you can test by running the followings in your browser

http://localhost:9200/_aliases?prett

To test the elasticsearch run the followings in your browser which will return the data in JSON format

http://192.168.2.100:9200/articles/_search?q=news

Conclusion:

Andolasoft is one stop shop for Ruby on Rails app development. We Design, develop & deploy Rails application in cloud for start-ups & established businesses. If you look for any type of assistance, please contact us.

Like this blog? I’d love to hear about your thoughts on this. Thanks for sharing your comments.

Data-Warehousing for Small & Medium Organizations

The journey of a thousand miles begins with a single step” – by the Chinese philosopher Laozi

Most of the people have heard about the data warehousing but they donot have fair idea about what exactly is achieved by doing this. As a business owner, whether you need it. You can be in a better position to take a decision once you know the power of Business Intelligence & Dataware-housing.

Let’s say you are a small/mid-sized organization, and you want to have some reports to have in-depth view about how your business is doing. There may be any or some of the reasons below:

1.   Does the concern person in your organization struggle every month to produce the revenue/sales reports as desired?

2.   Do you have your top management team spend their valuable time for analyzing business progresses to come up with meaningful reports involving figures & charts?

3.   Does it take repeated manual effort using spreadsheet for building the report for analysis for getting a picture of your organization’s performance?

Business-Intelligence1

If your answer is “yes” to any or some of the above questions or your data querying looks like the above image then, it is the time to consider about the better process for obtaining business reports.

And believe it or not, to build a data warehousing it is not very expensive as you might have heard about.

A perfect case-study for a Data-Warehouse

What is a DWH or data-warehouse? Generally, a Data Warehouse is a randomly accessible reliable source of data for generating information in a business system and serve the analytical needs of the organization.

Objective of a Data Warehouse:

  • To serve as the company’s principal source of information for business planning and decision making.
  • To have a central and secure source of all business information.
  • It is essential for those who have a “need to know” how to make information readily available.
  •  To store Business Information in a secure, reliable, and randomly retrievable form.

Business-Intelligence-21

Small and Medium organizations should consider whether you’ve defined your reporting needs carefully enough to really take advantage of a data warehouse.

1.   Are you sure you’re able to do everything using your existing systems?

2.   Have you thought about the dashboards, daily, weekly and monthly reports that could help executives and staffs?

3.   Do You have any idea how your organization is performing?

If not, it makes sense to start righaway!.

For small and medium organization which having more than 50 staff, a well thought for implementing the data warehouse and reporting strategy. It is an interesting option as well as robust and often powerful way to support the organizational reporting and analysis.

Successful Outcomes for Small and Medium Organizations

Andolasoft is a 5+ yrs old Software Development company. Here we focus on Business Intelligence(BI) development. In fact, the maiden customer of our company awarded us Pentaho project, since then we never looked back and till today have customers in 8 countries.

Andolasoft works in an association to your company and help you achieve your business goals faster and in a cost effective way.

Well-designed data-warehouse needs to deliver the new functionality at regular interval, so that the organization realize the benefits.

In one example, Andolasoft implemented many data-warehouse solutions using Mysql for retail services, medical organization, who used the solution to understand and subsequently increase the profitability of their projects.

Call us on +1 (408) 625-7188  or email us to get in touch and learn how Andolasoft can help your organization suffering from reliable reporting issues.

Hash Class: Makes CakePHP Coding easier!

Hash is a predefined class provided by CakePHP. It is used for array manipulation such as inserting an element to an array, remove an element from an array, sort an array, extract part of a large array, filter the non empty elements, rearrange the whole array, which makes the code more optimized and understandable. So it makes CakePHP easier and flexible to use. Because most of the operations like find, insert, update in CakePHP returns/takes array as output/input.

Hash provides an improved interface, more consistent and predictable set of features over Set. While it lacks the spotty support for pseudo XPath, its more fully featured dot notation provides similar features in a more consistent implementation.

Operations performed by Hash class:

  • extract()
  • combine()
  • filter()
  • check()
  • insert()
  • remove()
  • sort()
  • and many more…

Some Important Tips:

{n} – Match any numeric key.
{s} – Match any string value and numeric string values.
[id] – Matches elements with a given array key.
[id=2] – Matches elements with id equal to 2.
[id!=2] – Matches elements with id not equal to 2.
[id<=2] – Matches elements with id less than or equal to 2.

– Matches elements that have values matching the regular expression inside.

  • Hash::extract(array $data, $path):

Retrieve required data from array. You do not have to loop through the array.

Ex: // Common Usage:

$users = $this->User->find("all");
 $results = Hash::extract($user, '{n}.User.id');
 // $results equals:
 // array(1,2,3,4,5,...);
  • Hash::insert(array $data, $path, $values = null):

Insert sub-array’s into the original array.

Ex:

$temp = array(
 'page' => array('name' => 'page')
);
$result = Hash::insert($temp, 'file', array('name' => 'files'));
// $result now looks like:
Array
(
 [page] => Array
 (
 [name] => page
 )
 [file] => Array
 (
 [name] => files
 )
)
  • Hash::remove(array $data,  $path = null):
Remove data from any path specified.

EX:

$arr_test = array(
 'page' => array('name' => 'page'),
 'file' => array('name' => 'files')
);
$result = Hash::remove($arr_test, 'file');
/* $result now looks like:
 Array
 (
 [page] => Array
 (
 [name] => page
 )
 
)
*/
  • Hash::combine(array $data$keyPath = null$valuePath = null$groupPath = null)

Combine the results to form a new array of expected result. Helpful in case, where we are displaying data in the form of select box. Like categories, states, city etc. We don’t have to retrieve the data separately. We can find the required data from the original result set retrieved, containing the information..

Ex:

$arr_test = array(
 array(
 'User' => array(
 'id' => 2,
 'group_id' => 1,
 'Data' => array(
 'user' => 'John.doe',
 'name' => 'Matt Lee'
 )
 )
 ),
 array(
 'User' => array(
 'id' => 14,
 'group_id' => 2,
 'Data' => array(
 'user' => 'phpunt',
 'name' => 'Jack'
 )
 )
 ),
);
 
$result = Hash::combine($arr_test, '{n}.User.id', '{n}.User.Data');
/* $result now looks like below:
 Array
 (
 [2] => Array
 (
 [user] => John.doe
 [name] => Matt Lee
 )
 [14] => Array
 (
 [user] => phpunt
 [name] => Jack
 )
 )
*/
  • Hash::check(array $datastring $path = null)
    Check whether an element exists in the array or not.

Ex:

$set = array(
 'My Index' => array('First' => 'The first item1')
);
$result = Hash::check($set, 'My Index.First');
// $result == True
  • Hash::filter(array $data$callback = array(‘Hash ‘‘Filter’)):
Keep only non-empty elements and filter the empty elements.
Ex:
$data_arr = array(
 '0',
 false,
 true,
 0,
 array('test', 'is you own', false)
);
$result = Hash::filter($data_arr);
 
/* Out put:
 Array (
 [0] => 0
 [2] => true
 [3] => 0
 [4] => Array
 (
 [0] => one thing
 [2] => is you own
 )
 )
*/
  • Hash::sort(array $data$path$dir$type = ‘regular’)

Sort an array according to the path, direction and type provided.

Ex:

$arr_test = array(
 0 => array('Person' => array('name' => 'Jeff1')),
 1 => array('Shirt' => array('color' => 'black1'))
);
$result = Hash::sort($arr_test, '{n}.Person.name', 'asc');
/* $result now looks like:
 Array
 (
 [0] => Array
 (
 [Shirt] => Array
 (
 [color] => black1
 )
 )
 [1] => Array
 (
 [Person] => Array
 (
 [name] => Jeff1
 )
 )
 )
*/

$type can be of the following type:

regular
numeric
string
natural(ex. Will sort fooo10 below fooo2 as an example)

$dirc can be of two type asc & desc

For more information refer: http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html

However if you want you can hire or get free consultation from our experienced CakePHP developers.

Read More: Password Hashing API in PHP

Have I missed out anything? Comment at end of this topic.

Andolasoft launched service on QA Automation

We are excited to announce launching of QA Automation service at Andolasoft.
QA is an important phase of SDLC (Software Development Life Cycle) for releasing quality software.

Why QA Automation?

While manual testing is appropriate in some cases, it is a time-consuming and tedious process that is inefficient and conflicts with today’s shorter application development cycles.

As a result, it impedes the ability to thoroughly test an application. Whereas, Automated testing creates new efficiencies that accelerate the testing cycle and promote software quality.

Automated tests are quicker to run than manual tests as there’s no lag time between input and checking, as a result you can run more tests in multiple browsers rapidly.

Manual testing has a high risk of missing out of any test case, whereas Automated tests have zero risk of missing out a pre-decided test case.

Automation_Testing

Benefits of Software Automation Testing

Saves Time :
As automated tests are run by tools, it runs tests significantly faster than human users which adds to the first benefit of saving time.

Cost Effective :
Software automation tools are expensive for short-term, but you can save money in long-term. With the help of Automation tool, you can easily find bugs in less time. This allows your team to react more quickly, as a result it saves your precious time and money.

Consistency:
Automated testing offers a level of consistency, which is not achievable through use of manual testing.

Repeatable:
Testers can test how the software reacts under repeated execution of the same operations.

Reusable:
Tests can be reused on different versions of an application, even if the user interface changes.

Reliable:
Tests perform precisely the same operations each time they are run, thereby eliminating human error.

Comprehensive: You can build a suite of tests that covers every feature in your application.

Programmable:
Testers can program sophisticated tests that bring out hidden information from the application.

Quality:
Automation tools cuts costs and reduces software product time, as well as it help to ensure high level of quality in software projects.

Why QA Automation from Andolasoft ?

We have worked on various test automation models empowering us to provide custom solution based on client needs. Andolasoft uses only the latest performance testing technology like

  • Selenium (For Automation Testing)
  • Load UI and Browsermob (For Load Testing)
  • Accunetix, N-stalker, Nsparker & Websecurify (For Security Testing)
  • Browserlab & IE tester (For UI Testing)
  • Our own product Orangescrum (For Bug Tracking)

Our approach to Automation Testing is as illustrated below:

  • Decide and Design the framework
  • Prepare Test Cases / Business flows
  • Based on the number of flows and their size, effort estimation is prepared
  • Testers are involved in effort estimation process
  • Implement the framework by developing user defined functions / procedures and reusable actions required by the framework
  • Begin automating the scripts by means of the framework
  • Review the completed scripts
  • Use the scripts to check the sanity of the script against the AUT(Application Under Test)
  • Defect found during regression logged in defect tracking tool(Orangescrum)
  • Test execution report submitted to the stakeholders
  • Preparing metrics analysis
  • Enhancements or GUI changes handled with proper documentation
  • Based on the enhancement / change, scripts tweaked
  • As and when need arises required set of scripts executed
  • Regression testing is run in a batch in unattended mode
  • Delivering results to client for approval

You can check out the latest trends for the Software Testers.

Andolasoft follows a test automation strategy where our testing engineers do analyse your applications and provides you all the possibility of test automation.

Read more on accessibility testing tools

This analysis helps our client to achieve the optimum return on their investment and provide real benefit to the projects in which they are working with. If you wish to avail of our test automation consulting services, please contact us.

Visit our Quality Assurance services for more information about the Manual and Automation testing. We look forward to your feedback/comment.

Useful Features Of IOS 7

iOS 7 is the latest version of Apple’s iOS mobile operating system. It was first announced at WWDC on June 10, 2013. iOS 7 introduces great new features like Control Center, Air Drop for iOS, smarter multitasking and lots more. It also makes the things easier, faster, and more enjoyable.

Here are the best hidden features of iOS 7:

64 bit support

iOS apps can now be compiled for the 64-bit runtime. All system libraries and frameworks are 64-bit ready, meaning that they can be used in both 32-bit and 64-bit apps. When compiled for the 64-bit runtime, apps will run faster because of the availability of extra processor resources in 64-bit mode.

iOS uses the same LP64 model that is used by OS X and other 64-bit UNIX systems, which means fewer problems when porting code.

Better Multi-Tasking

Smarter API is one of the major feature of iOS 7. This new multitasking APIs has the ability to perform app updates in the background at convenient time. Now, when you double-click the home button, all apps appear as big screens. The last app you were in is now front-and-center so swapping between apps is lightning fast. Better yet, closing apps that are not working well now just requires a swipe of the finger up.

Multi-tasking
Email Enhancements

In iOS 7, it is very easy to find emails. You just need to know the persons email ID, name or a keyword and the Mail app will search the email for you. Also You can send an email from inbox to the junk folder in a single click. Just tap the flag in the bottom right corner of the email and choose “move to junk”.

Email

Email Enhancements

In iOS 7, it is very easy to find emails. You just need to know the persons email ID, name or a keyword and the Mail app will search the email for you. Also You can send an email from inbox to the junk folder in a single click. Just tap the flag in the bottom right corner of the email and choose “move to junk”.

Siri-Search

AirDrop

AirDrop technology simplifies data sharing between users of different devices nearby. Data is transferred directly, not via emails, cloud services and alike.

AirDrop

Junk Email

Now you can send an email from your inbox right to the junk folder. Just tap the flag in the bottom right corner of the email and choose “move to junk”.

Junk_Email

Save Money By Using Face Time Audio Calls

iOS 7 adds the ability to have audio only calls using FaceTime Audio. Now, you can make a call over 4G or Wi-Fi without the video component, and the sound quality is fabulous. Just go to the desired contact and press on the phone symbol next to FaceTime. Alternatively, you can search for your contact in the FaceTime app itself.

Audio-call

Looking to make your mobile application dreams come true? Contact us today to make it a reality.

Recommended Reading: How to make Static Framework iOS device independent?