Latest Post

BankON™ Featured in Bank Technology News

Posted on: 20-12-2010 by Phil Hodsdon | In : BFS and Insurance, BankOn


As a result of this year’s launch of BankON, Sierra Atlantic was recently named one of the Top 10 Technology Companies to watch by Bank Technology News.   Sierra Atlantic is among the top 10 companies featured on the cover page of the December 2010 issue of the magazine. John Adams of Bank Technology News refers to...

Read More

Erlang experiments: The results are in

Posted on : 09-12-2010 | By : Chaitanya Munjuluri | In : Game Development, Outsourced Product Development

Tags:

0

As part of an initiative to start looking at various technologies and methodologies that will make revolutionise video game development, we were looking at various programming languages that would help scalability in servers. Multi threaded C/C++ code, design patterns, libraries, frameworks, and finally programming languages themselves fall under this division.

Subsequent to my earlier blog post on Erlang (refer: http://blogs.sierraatlantic.com/2010/10/erlang-and-experiments-with-scalable-servers/) we whipped up a quick server to test its scalability. Srini (a fresh graduate from University of Hyd) and Vijayender worked on the server side of the game while Chaitanya (not me) worked on writing a client using the Blender API.

It was in many ways an experiment on the productivity of the programmers. Vijayender, with his vast experience, was mostly involved in design while Srini and Chaitanya were responsible for actual implementation.  Keep in mind that Chaitanya and Srini have each just about 2 months of experience and I was already demanding them to write multi threaded code. However the results definitely surprised me.

We planned on making a very simple server that would cater to multiple incoming connections. The overall idea is that we would use one thread to run the networking related code, one thread to do the event management and one thread to perform collisions and the like. The reason for this was straightforward since this is a very simple form of threading (using the producer consumer pattern).

So how long did it take for us the finish this application? 2 months. Yes, that’s right. Just two months with a brand new pair of hands who have no experience writing multi threaded code.  The number of bugs that were reported? Less than 5 and all of them were deviations from the specification. None were technology related bugs.

The following graph depicts the throughput. X-Axis shows the number of clients while the Y-Axis shows the average time it took for a single update (in milliseconds)

The point to notice here is not how long each update took to perform. It is how the server scales automatically when we throw more cores at it. The performance is bound to improve if we switch all of the collision and mathematical calculations to a C/C++ interop (maybe even CUDA/OpenCL… hmmm).

Notice how the 800 clients an 8 core processor gives more than 30 fps consistent. Every time we figured an increased load on the server, all we had to do was toss more cores at it and the performance pretty much improved linearly.

Having worked extensively on multi-threaded code I have come to believe that the future lies in languages that are designed with threading in mind. Multi-core architectures are not going anytime soon and this is exactly why writing code that scales well is of extreme importance. I believe that it is better to toss more hardware at a problem than tossing programmers and Erlang seems to be a good choice.

Notes:

Here is a list of things that are left:

  • Mathematics interop in C/C++
  • Checking the numbers with Hipe VM
  • Checking the numbers on multiple operating systems
  • Hopefully try it out on the cloud ;)
  • Persistent store (database integration)

Here is the current setup:

  • Windows 7
  • Intel i7 CPU (8 hardware threads)
  • 6 GB RAM (although we were never limited by the RAM)
  • Erlang R14B 5.8.11

Cloud Web Application Development and Deployment on Windows Azure Platform

Posted on : 23-11-2010 | By : Rajeswar Turlapati | In : Enterprise Services, Web Applicatons Development & Maintenance

Tags: , , ,

1

Introduction

Nowadays, several hosting companies are assuring to provide high-end infrastructure and application services over the cloud computing environment.  This environment contains number of virtual machines running on one or more physical systems.  With the introduction of cloud computing, revolutionary changes have been taken place in hardware and in data center models with exceptional online storage and backup systems.   Security, reliability and availability are major challenges for cloud hosting providers and they are effectively monitored in accordance to the SLAs defined with the users.  Cloud environment is denoted as public or private based on the availability and accessibility of the environment at specific premises with necessary privileges.

Fig: 1   Imaginary picture of private and public cloud environments

Public cloud

In general, everyone can access public cloud environment with appropriate subscription from service providers.  In public cloud computing environment, users never know hardware details of the server on which their application is hosted; because server scales up to tens of thousands of computers automatically on need basis.  Infrastructure as a service (IaaS) is industry vernacular for the public cloud computing services as it offers access to virtual servers, desktop computers or remote storage locations on usage basis.

Private Cloud

Private cloud is similar to public cloud environment, but access is restricted to limited number of users within the company firewalls.   Private cloud computing can be tightly integrated with public cloud computing environments which are running on high bandwidth of 24 X 7 availability.   There are several wrong perceptions about private cloud computing with apprehensive calculations of hardware and software costs.  In reality, it can be set-up in much cheaper way and wouldn’t consume much time to install the software.   At minimum, private cloud environment can be set-off with $4000 approximately.

Cloud Service Providers

Microsoft, Amazon, Google, Sales force…etc are the leading public cloud service providers in today’s market. In general, all of them would provide more or less same type of services with their innovative business ideas.

Cloud Users

Cloud services are mainly beneficial for the technical people or hosting companies who wish to use cloud as future platform for their business.  It’s less significant for the end users who browse the application from the cloud environment.

If you’ve a question like, who are the users for the cloud environment?

It depends on the type of service subscribed from the cloud service provider.  For example, a development team can create a web application that will be hosted in cloud environment.  Similarly tester can validate same web application on cloud staging environment.  A hosting company might want to host their web sites on public cloud environment to reduce costs on hardware.  A gaming company could deploy online games in cloud environment to make use of hardware acceleration and performance.  All these users must subscribe appropriate services from the public cloud environment before start using it.

Web Application Development and Deployment on Windows Azure

You can look at the media files which demonstrate the subscription, development and deployment process of the public cloud computing environment on Windows Azure.  I’ve built these movies based on the sample scenario that was explained as objective in 1st video.   Essentially these movies would provide answers to the following 3 questions…



In Microsoft’s perspective, cloud computing affects 3 important areas / models…

  • Data Center / Hardware model;
  • Application model;
  • Operation model.

Data Center / Hardware Models: Unlike traditional monolithic data centers, pre-assembled/modular data centers are emerging in today’s market; especially in the cloud computing environment and hardware has enormous capacity to produce extremely high performance and backup at nominal cost.  IaaS (Infrastructure as a Service) provides a platform for virtualization where you can subscribe virtual servers, desktops and other infrastructure related services on usage basis.

Application Model:  In cloud environment, we can easily and quickly deliver applications that are targeted for international audience from any device with rich end-user experience.   A simple browser with internet connectivity would be sufficient to deal with business critical applications.  SaaS (Software as a Service) offers solutions to the wide variety of applications on consumption wise.

Operation Model:  Services from the cloud environment would be available on 24X7 basis.  You’ll be covered under pre-defined or customized SLAs when you subscribe services from the public cloud environment; it provides incredible online storage with strong back-up and recovery mechanism.

How Will True 3D Rendering Change Games?

Posted on : 20-10-2010 | By : Chaitanya Munjuluri | In : Communicatons, Media & Entertainment, Game Development, Industries

0

Majority of the game engine makers have now taken “real” 3D seriously and I have seen a lot of their implementations. I must say that with a slight bit of variation they all have a bright future. While stereoscopic rendering is nothing new, it has implications on the framerate. The most basic form of stereoscopic rendering is to render the same scene twice twice with a slight offset. This is designed to emulate the way humans see. Where rendering differs from the human is with the composition. When humans look at things around them, there are two full frequency images projected onto the retina. The brain produces a composite image from these two images. A stereoscopic renderer  The two renders are composited into a single scene by using filters (the red and the green glasses or the polarised glass that people put on).

Testing Is Not a Creative Job

Posted on : 18-10-2010 | By : Malini Mohan | In : Enterprise Services, Outsourced Product Development

Tags: , ,

0

Many young software engineers think that testing is not a creative job. Contrary to this popular belief, testing is a very creative and challenging task. In testing, there are often complaints about not being able to retain or attract skilled resource, or losing skilled resource to other roles such as programming or technical writing. These days we do have trouble attracting and keeping skilled people in testing and there may be lot of reasons and hidden factors to address this particular issue. May be we are discouraging a kind of style and personality type or we may discourage different skill set of descriptive testing styles like exploratory testing.  IT is complex and constantly evolving; so we required different skill set and different mind set or certain unique style to address the challenges.

We have to change the competitive landscape by being not just better than our competitors but by taking quality to a whole new level.  We have to make the quality so special, valuable and important to the success of our clients that we should become their real value choice. Clients are changing the Wexelblat’s scheduling Algorithm from “Choose two: Good, Fast, and cheap” To “Choose ALL: Good, Fast, and cheap.”

Billions of dollars in business are lost annually because companies and software vendors fail to adequately test their software systems and products. These kind of business losses are expected to continue as long as testing is considered just another check mark on a To-Do list or a task given to resources who are on the bench. Testing is, in fact a professional role that requires technical skills and mindset that encourages the early discovery of the problems that represent real business risks.

Technology, Methodology, Customer, business expectation, business complexities, globalization all these are more and more business visibility. The final skill on my list is the ability to see the larger picture of a company’s overall business strategy. This enables a great software tester to actively participate at a level higher than just an individual contributor—instead of merely finding and reporting a Priority 2 / Severity 2 bug, a great software tester can identify strategic strengths and weaknesses of a software system that can ultimately lead to a business competitive advantage. I think its time for us to be different not just as efficient!

Testing Team Motivation Stages – Unique Technique and Tips!

Posted on : 14-10-2010 | By : Malini Mohan | In : Enterprise Services, Outsourced Product Development

Tags: , , , , , , , , , , , , ,

0

In testing, there are often complaints about not being able to retain or attract skilled resource, or losing skilled resource to other roles such as programming or technical writing. These days we do have trouble attracting and keeping skilled people in testing and there are lot of reasons and hidden factors to address this particular issue. One major factor would be motivation. Proper motivation can save a company time, money and resources. It is more cost effective to keep existing resources through proper training and motivation than it is to constantly recruit and train new ones.There is an old saying – you can take a horse to the water but you cannot force it to drink, it will drink only if it’s thirsty”. So with people. They will do what they want to do or otherwise motivated to do. Whether it is to excel either at the work place or in the personal front. They must be motivated or driven to it, either by them self or through external stimulus. Tuckman’s model. Unique Motivation Technique to Testing team: Dooming or Winning? The Forming – Storming – Norming – Performing is a model of group development, first proposed by Bruce Tuckman in 1965, who maintained that these phases are all necessary and inevitable in order for the team to grow, to face up to challenges, to tackle problems, to find solutions, to plan work, and to deliver results.

Here are few tips from my end – What you can do?

# Tip 1:  Start with thanking them when they help the developer to fix the critical anomalies. It sounds impossibly obvious, but it’s surprising how many QA managers neglect this simple action.

# Tip 2: Bring innovative problem-solving and team building techniques to help people become more create and productive

# Tip 3: Test lead and QA manager need to communicate and give detailed instructions and provide specific instructions to test team to work better.

#Tip 4: Test lead should avoid asking people to do the same boring tasks all the time. A stimulating environment creates enthusiasm and the opportunity for “big picture” thinking.

#Tip 5: Arrange some testing events, quiz for team. Start appreciating the team for their achievements.

The main objective is here to share the practical experiences gained while working for different teams and explains why motivation is required? Where motivation plays a key role? And how motivation makes a team successful? So please share/post your tips with us.