<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sierra Atlantic - Official Blog &#187; Outsourced Product Development</title>
	<atom:link href="http://blogs.sierraatlantic.com/category/services/outsourced-product-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.sierraatlantic.com</link>
	<description>The Official Blog of Sierra Atlantic</description>
	<lastBuildDate>Mon, 20 Dec 2010 19:03:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Erlang experiments: The results are in</title>
		<link>http://blogs.sierraatlantic.com/2010/12/erlang-experiments-the-results-are-in/</link>
		<comments>http://blogs.sierraatlantic.com/2010/12/erlang-experiments-the-results-are-in/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 14:45:04 +0000</pubDate>
		<dc:creator>Chaitanya Munjuluri</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Outsourced Product Development]]></category>
		<category><![CDATA[Gaming]]></category>

		<guid isPermaLink="false">http://blogs.sierraatlantic.com/?p=506</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>Subsequent to my earlier blog post on Erlang (refer: <a href="../2010/10/erlang-and-experiments-with-scalable-servers/">http://blogs.sierraatlantic.com/2010/10/erlang-and-experiments-with-scalable-servers/</a>) 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.</p>
<p>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.</p>
<p>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).</p>
<p>So how long did it take for us the finish this application? 2 months. Yes, that&#8217;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.</p>
<p>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)</p>
<p><a href="http://blogs.sierraatlantic.com/wp-content/uploads/2010/12/erlang.png"><img class="aligncenter size-medium wp-image-507" title="erlang" src="http://blogs.sierraatlantic.com/wp-content/uploads/2010/12/erlang-300x176.png" alt="" width="300" height="176" /></a></p>
<p>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&#8230; hmmm).</p>
<p>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.</p>
<p>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.</p>
<h4>Notes:</h4>
<p>Here is a list of things that are left:</p>
<ul>
<li>Mathematics interop in C/C++</li>
<li>Checking the numbers with Hipe VM</li>
<li>Checking the numbers on multiple operating systems</li>
<li>Hopefully try it out on the cloud <img src='http://blogs.sierraatlantic.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Persistent store (database integration)</li>
</ul>
<p>Here is the current setup:</p>
<ul>
<li>Windows 7</li>
<li>Intel i7 CPU (8 hardware threads)</li>
<li> 6 GB RAM (although we were never limited by the RAM)</li>
<li> Erlang R14B 5.8.11</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sierraatlantic.com/2010/12/erlang-experiments-the-results-are-in/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Web Application Development and Deployment on Windows Azure Platform</title>
		<link>http://blogs.sierraatlantic.com/2010/11/cloud-web-application-development-and-deployment-on-windows-azure-platform-2/</link>
		<comments>http://blogs.sierraatlantic.com/2010/11/cloud-web-application-development-and-deployment-on-windows-azure-platform-2/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 18:42:36 +0000</pubDate>
		<dc:creator>Rajeswar Turlapati</dc:creator>
				<category><![CDATA[Enterprise Services]]></category>
		<category><![CDATA[Web Applicatons Development & Maintenance]]></category>
		<category><![CDATA[Advanced Operating Systems]]></category>
		<category><![CDATA[Application Maintenance]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Enterprise Application Development and Deployment]]></category>

		<guid isPermaLink="false">http://blogs.sierraatlantic.com/?p=454</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>
<p>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.</p>
<p><a href="http://blogs.sierraatlantic.com/wp-content/uploads/2010/11/Cloud1.png"><img class="aligncenter size-medium wp-image-453" title="Cloud1" src="http://blogs.sierraatlantic.com/wp-content/uploads/2010/11/Cloud1-300x253.png" alt="" width="300" height="253" /></a></p>
<p><strong>Fig: 1   Imaginary picture of private and public cloud environments</strong></p>
<h3>Public cloud</h3>
<p>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.</p>
<h3>Private Cloud</h3>
<p>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.</p>
<h3>Cloud Service Providers</h3>
<p>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.</p>
<h3>Cloud Users</h3>
<p>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.</p>
<p>If you’ve a question like, who are the users for the cloud environment?</p>
<p>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.</p>
<h3>Web Application Development and Deployment on Windows Azure</h3>
<p>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 1<sup>st</sup> video.   Essentially these movies would provide answers to the following 3 questions…</p>
<p><script src="http://apps.visiblegains.com/get/8bnY4M5ZAVk" type="text/javascript"></script><br />
<br/></p>
<p>In Microsoft’s perspective, cloud computing affects 3 important areas / models&#8230;</p>
<ul>
<li>Data Center / Hardware model;</li>
<li>Application model;</li>
<li>Operation model.</li>
</ul>
<p><strong>Data Center / Hardware Models</strong>: 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.</p>
<p><strong>Application Model</strong>:  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.</p>
<p><strong>Operation Model</strong>:  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.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sierraatlantic.com/2010/11/cloud-web-application-development-and-deployment-on-windows-azure-platform-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How Will True 3D Rendering Change Games?</title>
		<link>http://blogs.sierraatlantic.com/2010/10/how-will-true-3d-rendering-change-games/</link>
		<comments>http://blogs.sierraatlantic.com/2010/10/how-will-true-3d-rendering-change-games/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 18:35:11 +0000</pubDate>
		<dc:creator>Chaitanya Munjuluri</dc:creator>
				<category><![CDATA[Communicatons, Media & Entertainment]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Industries]]></category>

		<guid isPermaLink="false">http://blogs.sierraatlantic.com/?p=386</guid>
		<description><![CDATA[Majority of the game engine makers have now taken &#8220;real&#8221; 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 [...]]]></description>
			<content:encoded><![CDATA[<p>Majority of the game engine makers have now taken &#8220;real&#8221; 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).</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sierraatlantic.com/2010/10/how-will-true-3d-rendering-change-games/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing Is Not a Creative Job</title>
		<link>http://blogs.sierraatlantic.com/2010/10/testing-is-not-a-creative-job/</link>
		<comments>http://blogs.sierraatlantic.com/2010/10/testing-is-not-a-creative-job/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 08:00:20 +0000</pubDate>
		<dc:creator>Malini Mohan</dc:creator>
				<category><![CDATA[Enterprise Services]]></category>
		<category><![CDATA[Outsourced Product Development]]></category>
		<category><![CDATA[Software testing]]></category>
		<category><![CDATA[Tester]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://blogs.sierraatlantic.com/?p=271</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>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.”</p>
<p>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.</p>
<p>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&#8217;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!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sierraatlantic.com/2010/10/testing-is-not-a-creative-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing Team Motivation Stages – Unique Technique and Tips!</title>
		<link>http://blogs.sierraatlantic.com/2010/10/testing-team-motivation-stages-%e2%80%93-unique-technique-and-tips/</link>
		<comments>http://blogs.sierraatlantic.com/2010/10/testing-team-motivation-stages-%e2%80%93-unique-technique-and-tips/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 08:00:38 +0000</pubDate>
		<dc:creator>Malini Mohan</dc:creator>
				<category><![CDATA[Enterprise Services]]></category>
		<category><![CDATA[Outsourced Product Development]]></category>
		<category><![CDATA[Attracting Testers]]></category>
		<category><![CDATA[Bruce Tuckman]]></category>
		<category><![CDATA[Forming]]></category>
		<category><![CDATA[Motivation]]></category>
		<category><![CDATA[Norming]]></category>
		<category><![CDATA[Performing]]></category>
		<category><![CDATA[QA Manager]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Skill]]></category>
		<category><![CDATA[Skilled Testers]]></category>
		<category><![CDATA[Storming]]></category>
		<category><![CDATA[Team Building]]></category>
		<category><![CDATA[Test Lead]]></category>
		<category><![CDATA[Testers]]></category>

		<guid isPermaLink="false">http://blogs.sierraatlantic.com/?p=268</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.<strong> “</strong><em>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</em><em>”.</em> 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.</p>
<p>Here are few tips from my end &#8211; What you can do?</p>
<p># 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.</p>
<p># Tip 2: Bring innovative problem-solving and team building techniques to help people become more create and productive</p>
<p># Tip 3: Test lead and QA manager need to communicate and give detailed instructions and provide specific instructions to test team to work better.</p>
<p>#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.</p>
<p>#Tip 5: Arrange some testing events, quiz for team. Start appreciating the team for their achievements.</p>
<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sierraatlantic.com/2010/10/testing-team-motivation-stages-%e2%80%93-unique-technique-and-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Appliance Testing Methodology</title>
		<link>http://blogs.sierraatlantic.com/2010/10/appliance-testing-methodology/</link>
		<comments>http://blogs.sierraatlantic.com/2010/10/appliance-testing-methodology/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 08:00:51 +0000</pubDate>
		<dc:creator>Malini Mohan</dc:creator>
				<category><![CDATA[Enterprise Services]]></category>
		<category><![CDATA[Outsourced Product Development]]></category>
		<category><![CDATA[Acceptance Testing]]></category>
		<category><![CDATA[Appliance Testing]]></category>
		<category><![CDATA[Appliance Testing Methodology]]></category>
		<category><![CDATA[Environmental Set Up]]></category>
		<category><![CDATA[Lab Setup]]></category>
		<category><![CDATA[Load Testing]]></category>
		<category><![CDATA[Performance Testing]]></category>
		<category><![CDATA[Stress Testing]]></category>

		<guid isPermaLink="false">http://blogs.sierraatlantic.com/?p=264</guid>
		<description><![CDATA[Appliance performance is performed for various reasons. There are laws that govern domestic appliances and their performance. Appliance testing is done to confirm adherence to these laws. Along similar lines are ratings tests. These are pseudo legal requirements in that the adherence to standards is strict but the objective is to use the rating to [...]]]></description>
			<content:encoded><![CDATA[<p>Appliance performance is performed for various reasons. There are laws that govern domestic appliances and their performance. Appliance testing is done to confirm adherence to these laws. Along similar lines are ratings tests. These are pseudo legal requirements in that the adherence to standards is strict but the objective is to use the rating to gain market acceptance. Appliance testing is also done to ensure that the appliance is accepted in the market. Appliance testing is also done to evaluate the effectiveness of the appliance. This entails calculating the improvement (or otherwise) factor that can be expected when the appliance is deployed in a typical environment as against when the appliance is not part of the environment. In all these cases, the results of the test are used to alter the appliance or reconfigure it.</p>
<p>Methodologies followed to perform appliance testing vary according to the class of the appliance. Broadly, these follow the following pattern:</p>
<ul>
<li>Gather      Baseline numbers – this can be picked off a manual or rule book if the      test is an adherence to a standard kind of test. These numbers can be      arrived at using statistical evaluations based on a large set of data from      representative usage runs. Rule of thumb can also be a driver in arriving      at the baseline data. When the testing is done to calculate the      effectiveness of an appliance, a load test is done without the appliance      and values of identified parameters are recorded as baseline.</li>
<li>Identify      usage pattern and environment</li>
<li>Design      lab and application flows on pattern, environment identified above</li>
<li>Subject      the appliance to ‘load’ and measure parameters</li>
<li>Compare      / Publish / Certify results</li>
</ul>
<p>Quick Tip</p>
<ul>
<li>Have a      panel of experts certify the important choices made: The parameters      selected to evaluate performance, the flow identified to exercise load on      the appliance, the ‘load’ scenario that the appliance will be subjected to      and the lab setup. You are sure to have a few plus or minus. Having only      the in-house expert certify these is bound to leave you open to ‘bias’      claims</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sierraatlantic.com/2010/10/appliance-testing-methodology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erlang and Experiments With Scalable Servers</title>
		<link>http://blogs.sierraatlantic.com/2010/10/erlang-and-experiments-with-scalable-servers/</link>
		<comments>http://blogs.sierraatlantic.com/2010/10/erlang-and-experiments-with-scalable-servers/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 05:00:30 +0000</pubDate>
		<dc:creator>Chaitanya Munjuluri</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Outsourced Product Development]]></category>

		<guid isPermaLink="false">http://blogs.sierraatlantic.com/?p=321</guid>
		<description><![CDATA[A little introduction to Erlang. Erlang is a language that was designed around concurrency as a core feature. It is a functional language and supports threading as a first class primitive. This is one of the features that set it apart from most other languages, primarily C/C++ and Java. These languages rely on libraries to [...]]]></description>
			<content:encoded><![CDATA[<p>A little introduction to Erlang. Erlang is a language that was designed around concurrency as a core feature. It is a functional language and supports threading as a first class primitive. This is one of the features that set it apart from most other languages, primarily C/C++ and Java. These languages rely on libraries to provide concurrency primities (threads, processes, locks and syncs). Since Erlang had this designed into the language, threading and associated issues have been reduced to  minimum.</p>
<h3>Why Erlang?</h3>
<p>Games today need to scale smoothly. The advent of multiple cores on each processor has resulted in an almost a feverish rush toward the parallel processing paradigm. However anyone who has written large chunks of code will appreciate the problems that would naturally arise from using threads. Sprinkling a lot of locks around the threads hardly improves performance, the very reason we add threads. At the same time failure to keep synchronisation and race conditions in mind will result in a lot of late nights debugging the code. I faced this exact problem a few years ago and out of purely academic interest I started searching for languages that could make things better (for me atleast). This was when I discovered into Erlang.</p>
<p>Erlang uses message passing to communicate between processes. While this is not a new thing, having it as a construct within the langauge ensures that code written in Erlang is inherently concurrent. Since messages passed between processes give up ownership of data, it prevents locking and thus makes IPC faster. At the same time processes in Erlang are faster than native OS threads (hence even OS processes).</p>
<p>The biggest advantage, in my opinion, is loading and replacing code at runtime. Service Oriented Architecture is one area that will greatly benefit from this. It means that the downtime is extremely minimal. Who enjoys disturbing a gamer while he is playing only for &#8220;scheduled downtime&#8221;? It also encourages prototyping and rolling out faster updates. This is of great importance especially when gameplay balancing comes into picture.</p>
<p>Being a functional language code written in Erlang is generally shorter than equivalent code written in C/C++ or Java. This results in easier verification of the correctness of the code and fewer bugs creep up because of this. Code reviews are also faster to perform.</p>
<h3>What are we up to?</h3>
<p>As part of our casual game development division we&#8217;ve been at work trying to find various architectures and schemes that make scalability as smooth as possible. Some solutions we have implemented are based on the cloud while others like the Erlang initiative are projects that take a different approach for solving the problems.</p>
<p>We currently are working on a nice little multiplayer game that has a flash frontend and runs an Erlang server in the backend. Erlang is good with IPC hence we spawn a new process for each of these dungeons and for each entity in the game. Purely client side effects are cosmetic effects while physics, entity spawn and destruction and scores are simulated on the server. Since Erlang messages are asynchronous we have to perform some double checks, especially during scoring. Doing this was extremely easy since we decided to only trust the server and force the client to reflect these changes. Essentially the client presents a view of the world for the player. Since Erlang is good with concurrent code, we&#8217;ve had a chance to simulate cool particles on the server side. However we shifted all of this to the client side since particles are only cosmetic we decided to move this over to the client. It also resulted in saved network bandwidth.</p>
<h3>Work in progress:</h3>
<p>We are working on coming up with metrics that will compare existing frameworks with what we are implementing, for the same set of features. This will give us a better idea as to where we are heading and where we need to be in the coming few weeks.</p>
<p>A test automation that will reduce the workload of testers is definitely something we are desperate for. The usual click based testing frameworks help, but I am hoping that my team here will come up with something that is far superior to anything I&#8217;ve seen till date. Again, I would be interested in seeing if we can develop a load/stress testing suite that can use Erlang underneath.</p>
<p>Integrating 3rd party APIs, especially some of the payment gateways. This will be a huge leap ahead for us, especially since micro transactions are a popular way to monetise in casual games.</p>
<p>Metrics to check the load bearing characteristics of the servers.</p>
<p>Metrics for the kind of bugs we reported on the servers.</p>
<h3>Challenges:</h3>
<p>The biggest challenge we face is with respect to the number of people who are aware of Erlang as a programming language. This has resulted in some training time for the members of the project.</p>
<p>The next challenge we have is integration with 3rd party libraries. While Erlang has bridges for running C code (even Python <img src='http://blogs.sierraatlantic.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ) these need to be extensively tested before we can start using them.</p>
<p>Integer performance seems to be better in C/C++. I am guessing that this would be because the CPUs nowadays are really good with predictable data. I am not sure how we can tackle this in Erlang.</p>
<p>Having worked in Erlang, I can say with a certain amount of confidence that it has definitely proven itself on the scalability end. We need to see what are the limits to it&#8217;s execution and this is where Sierra Atlantic&#8217;s expertise in testing and test automation will help me in the coming few weeks.</p>
<p>I hope to post more cool stuff in the coming weeks. Till then, tah.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sierraatlantic.com/2010/10/erlang-and-experiments-with-scalable-servers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multi-Skilling Is Currently the Big Buzzword</title>
		<link>http://blogs.sierraatlantic.com/2010/09/multi-skilling-is-currently-the-big-buzzword/</link>
		<comments>http://blogs.sierraatlantic.com/2010/09/multi-skilling-is-currently-the-big-buzzword/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 08:00:40 +0000</pubDate>
		<dc:creator>Malini Mohan</dc:creator>
				<category><![CDATA[Enterprise Services]]></category>
		<category><![CDATA[Outsourced Product Development]]></category>
		<category><![CDATA[Automation Tester]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[business visibility]]></category>
		<category><![CDATA[Customer Confidence]]></category>
		<category><![CDATA[Multi Skilling]]></category>
		<category><![CDATA[people skill set]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[role of a testing]]></category>
		<category><![CDATA[Software testing]]></category>
		<category><![CDATA[Software Testing Industry]]></category>
		<category><![CDATA[software testing skillset]]></category>
		<category><![CDATA[Tester]]></category>
		<category><![CDATA[tester efficiency]]></category>
		<category><![CDATA[tester interest]]></category>
		<category><![CDATA[tester role in organization]]></category>
		<category><![CDATA[testing job]]></category>
		<category><![CDATA[testing style]]></category>

		<guid isPermaLink="false">http://blogs.sierraatlantic.com/?p=262</guid>
		<description><![CDATA[Sipping a cup of hot coffee and re looking at the good old days, Science and Technology has indeed changed and evolved for good. There were many new innovations and the new decade started.  Our new generation is living in an era of virtual information explosion. There is unimaginable amount of content that is available [...]]]></description>
			<content:encoded><![CDATA[<p>Sipping a cup of hot coffee and re looking at the good old days, Science and Technology has indeed changed and evolved for good. There were many new innovations and the new decade started.  Our new generation is living in an era of virtual information explosion. There is unimaginable amount of content that is available on any topic just at a stroke of a keyboard or click of a mouse. Thinking about my profession, I wonder whether my profession, Software Testing, has also completed a decade. Wow! it was a successful year and a boom time for software testing industry and the complexity of software products increased thus rising the end user expectations. It has also increased the pressure on software testers to have multiple skills to gain the customer confidence.</p>
<p>Multi-skilling is currently the big buzzword. The common belief is that a multi-skilled workforce can avoid retrenchment and can lead to increased productivity for the organization in a time of increased severity, which can directly impact the company’s bottom line. In leaner times, a multi-skilled workforce helps bring in operational efficiency and increased productivity, since a smaller workforce is required to cater to the scaled down demand. But even when economic conditions are on the upswing, a multi-skilled workforce helps in addressing customer demand faster and better,”</p>
<p>IT sector might be on the down slope due to the global financial crisis and recession in the world economy but the “Software Testing Industry” is growing rapidly.  The incessant pressure on increasing the “Performance” of various software is ensuring that the Software Testing market is getting bigger. The business potential in Software testing is also at an all time high and continues to grow, considering the growing complexity of software products and increasing expectations from the end-users demanding the best quality product. The size of the Software Testing industry globally is $13billion. At present to ensure the competitive advantage, testing phase which is typically 30% of total software development is critical to ensure on time release within budget and with the agreed level of confidence.  And more over 300 automated test tools in the market, a new testing role emerged that is responsible for identifying the right tool for the right testing. These growth rates are forcing Software test engineers to be well equipped to meet the day to day challenges.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sierraatlantic.com/2010/09/multi-skilling-is-currently-the-big-buzzword/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Software Tester’s Skill Contributes in Business Failure and Success</title>
		<link>http://blogs.sierraatlantic.com/2010/09/software-testers-skill-contributes-in-business-failure-and-success/</link>
		<comments>http://blogs.sierraatlantic.com/2010/09/software-testers-skill-contributes-in-business-failure-and-success/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 08:00:03 +0000</pubDate>
		<dc:creator>Malini Mohan</dc:creator>
				<category><![CDATA[Enterprise Services]]></category>
		<category><![CDATA[Outsourced Product Development]]></category>
		<category><![CDATA[Business Failure]]></category>
		<category><![CDATA[Business Success]]></category>
		<category><![CDATA[Comprehensive Test Cases]]></category>
		<category><![CDATA[Evaluation]]></category>
		<category><![CDATA[Execution]]></category>
		<category><![CDATA[Individual Skill Set]]></category>
		<category><![CDATA[Localization Testing]]></category>
		<category><![CDATA[Logical And Analytical]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Security Testing]]></category>
		<category><![CDATA[Tester Evaluation]]></category>

		<guid isPermaLink="false">http://blogs.sierraatlantic.com/?p=260</guid>
		<description><![CDATA[There are specific testing-related measures against which a tester can be evaluated. For example, all testers must be detail oriented and possess analytical skills, independent of whether they are technical testers, subject-matter experts, security testers, performance tester or usability testers. A software tester should requires at least complete knowledge of software testing  tools, logical and [...]]]></description>
			<content:encoded><![CDATA[<p>There are specific testing-related measures against which a tester can be evaluated. For example, all testers must be detail oriented and possess analytical skills, independent of whether they are technical testers, subject-matter experts, security testers, performance tester or usability testers. A software tester should requires at least complete knowledge of software testing  tools, logical and analytical ability along with quality approach to the software testing processes. Tester should focus and improve all his skills on” understanding customer requirements and writing appropriately”, “comprehensive test cases”, “performing and executing test” and “preparing a detailed self-explanatory test report”. Testing complex business requirements will require extraordinary level of experience and knowledge to keep the budget and time constraint for performing testing without compromising with the coverage or quality.</p>
<p>Some testing tasks may require specific skills within the technical or subject-matter area. For example, a tester who is experienced, or at least familiar, with security testing techniques should be responsible for security testing. A tester who is not skilled in this area can only guess what makes an application secured. Similarly, in the case of localization testing, an English speaker can only guess regarding the correct translation of an application into another language. A more effective localization tester would be a native speaker of the language into which the application has been translated.</p>
<p>Individual skill and knowledge contributes in business failure and success. The individual skill and knowledge contributes in business failure and success. if a resource enhances his skill sets, albeit in a phased manner, he will be far more valuable to his company and the company will be a more potent force in the market. Not only this is relevant in a recession, but also in a booming economy where companies compete to attract and retain the best business. “Forced Multi-Skilling” by companies might lead to the employee losing interest in job and finally walking out. This apart, employees’ work-life balance may be negatively impacted due to time constraints. “Multi-skilling needs to be nurtured and ‘sold’ to employees. It should not be thrust randomly</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sierraatlantic.com/2010/09/software-testers-skill-contributes-in-business-failure-and-success/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GPUs and High Performance Computing (HPC)</title>
		<link>http://blogs.sierraatlantic.com/2010/09/gpus-and-high-performance-computing-hpc/</link>
		<comments>http://blogs.sierraatlantic.com/2010/09/gpus-and-high-performance-computing-hpc/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 05:00:18 +0000</pubDate>
		<dc:creator>Chaitanya Munjuluri</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Outsourced Product Development]]></category>

		<guid isPermaLink="false">http://blogs.sierraatlantic.com/?p=319</guid>
		<description><![CDATA[A long time ago, in a kingdom far far away HPC was restricted to the likes of Cray. There was also a time when GPUs were merely specialised silicon that could draw pixels a little faster than the CPU could. Around 1998 nVIDIA release the Riva TNT and things began to change, albeit slowly. Then [...]]]></description>
			<content:encoded><![CDATA[<p>A long time ago, in a kingdom far far away HPC was restricted to the likes of Cray. There was also a time when GPUs were merely specialised silicon that could draw pixels a little faster than the CPU could. Around 1998 nVIDIA release the Riva TNT and things began to change, albeit slowly. Then came hardware T&amp;L support from nVIDIA&#8217;s Geforce 256. Games did not look the same after that. And time moved on&#8230; . GPUs had a fixed function pipeline for most of their existence till programmable shaders entered the picture. This allowed programmers to treat the GPU like another programmable chip. The one thing to notice here is that all these GPUs were specialised processors to make fast games render faster.</p>
<p>Around this time, GPGPU (General Purpose GPU)  initiatives by the GPU manufacturers saw GPUs being used for not only rendering but also general purpose computing. One drawback was that GPUs still liked textures and matrices and disliked strings.  However with the introduction of CUDA by nVIDIA, OpenCL by Khronos group and CAL/CTM from AMD/ATi GPUs changed the terrain in favour of programmers. To explain the difference between a CPU and GPU&#8217;s processing capabilities, I&#8217;ll use the following video: http://www.youtube.com/watch?v=fKK933KK6Gg . The Mythbusters showed exactly what it is that the GPUs are good at &#8211; They are good at doing a designated task incredibly fast only when it is performed in parallel. Using that same video as an example, the GPU would have a hard time drawing the smiley, one dot at a time. However if you were to build a new parallel gun that has the smiley imprinted on it, the drawing happens in an instant.</p>
<p>If you were to harness the power of the GPU, you would need to write a program in a way that it can execute instructions in large chunks. The size of these chunks depends on the GPU (or the CPU). The operating model for these programs is based on the SIMD model &#8211; Single Instruction Multiple Data. What this means is that you have a single instruction being executed simultaneously across multiple chunks of data. An example for where SIMD would be a good fit is calculating the magnitude of a vector. magnitude_square = x*x + y*y + z*z.  The three multiplies could be performed in a single go.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.sierraatlantic.com/2010/09/gpus-and-high-performance-computing-hpc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

