<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Priyanshu Goyal&#8217;s Weblog : Life Beyond Coding</title>
	<atom:link href="https://priyanshugoyal.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://priyanshugoyal.wordpress.com</link>
	<description></description>
	<lastBuildDate>Mon, 23 Aug 2010 07:10:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='priyanshugoyal.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://s0.wp.com/i/buttonw-com.png</url>
		<title>Priyanshu Goyal&#8217;s Weblog : Life Beyond Coding</title>
		<link>https://priyanshugoyal.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://priyanshugoyal.wordpress.com/osd.xml" title="Priyanshu Goyal&#039;s Weblog : Life Beyond Coding" />
	<atom:link rel='hub' href='https://priyanshugoyal.wordpress.com/?pushpress=hub'/>
	<item>
		<title>Is it possible to do manual unit testing?</title>
		<link>https://priyanshugoyal.wordpress.com/2010/08/19/is-it-possible-to-do-manual-unit-testing/</link>
					<comments>https://priyanshugoyal.wordpress.com/2010/08/19/is-it-possible-to-do-manual-unit-testing/#respond</comments>
		
		<dc:creator><![CDATA[priyanshugoyal]]></dc:creator>
		<pubDate>Thu, 19 Aug 2010 08:54:19 +0000</pubDate>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[Testing]]></category>
		<guid isPermaLink="false">http://priyanshugoyal.wordpress.com/?p=130</guid>

					<description><![CDATA[Unit testing by definition is testing of individual units where a unit is the smallest testable part of an application for example a class method in isolation. What it means is, we have to ideally test just the logic within the method and not the logic of supporting classes or libraries being used in the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Unit testing by definition is testing of individual units where a unit is the smallest testable part of an application for example a class method <strong>in isolation</strong>. What it means is, we have to ideally test just the logic within the method and not the logic of supporting classes or libraries being used in the current method. </p>
<p><a href="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/manualtest.jpeg"><img data-attachment-id="132" data-permalink="https://priyanshugoyal.wordpress.com/2010/08/19/is-it-possible-to-do-manual-unit-testing/manualtest/" data-orig-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/manualtest.jpeg" data-orig-size="229,214" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="ManualTest" data-image-description="" data-image-caption="" data-medium-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/manualtest.jpeg?w=229" data-large-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/manualtest.jpeg?w=229" src="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/manualtest.jpeg?w=780" alt="" title="ManualTest"   class="alignright size-full wp-image-132" /></a></p>
<p>Now we can do this through an automated tool like junit/testNG/nunit/flexunit etc by creating stubs and even more often now mock objects which are not real objects but still mimic their behavior making it possible to unit-test functionality of a single class without actually calling underlying or collaborating classes. How is it possible manually? </p>
<p>The answer is <strong>NO</strong>, it is not and thus any form of manual unit testing is actually integration testing. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://priyanshugoyal.wordpress.com/2010/08/19/is-it-possible-to-do-manual-unit-testing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://2.gravatar.com/avatar/b3c63c1b1d813b4278fab00250d95cc5878eef6c8c41ba843789c57e135c086f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">priyanshugoyal</media:title>
		</media:content>

		<media:content url="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/manualtest.jpeg" medium="image">
			<media:title type="html">ManualTest</media:title>
		</media:content>
	</item>
		<item>
		<title>Sharding with MangoDB</title>
		<link>https://priyanshugoyal.wordpress.com/2010/08/18/sharding-with-mangodb/</link>
					<comments>https://priyanshugoyal.wordpress.com/2010/08/18/sharding-with-mangodb/#respond</comments>
		
		<dc:creator><![CDATA[priyanshugoyal]]></dc:creator>
		<pubDate>Wed, 18 Aug 2010 10:32:22 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[Scalability]]></category>
		<guid isPermaLink="false">http://priyanshugoyal.wordpress.com/?p=115</guid>

					<description><![CDATA[As per my earlier post we need to scale out our data store when the application data requirements outgrow a single instance capacity. This is in most cases achieved through sharding (a.k.a. partition of data). With traditional RDBMS systems the application data model has to be modeled such from the very start to enable equalized [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/partition2.jpg"><img data-attachment-id="120" data-permalink="https://priyanshugoyal.wordpress.com/2010/08/18/sharding-with-mangodb/partition/" data-orig-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/partition2.jpg" data-orig-size="253,204" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="Sharding" data-image-description="" data-image-caption="" data-medium-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/partition2.jpg?w=253" data-large-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/partition2.jpg?w=253" src="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/partition2.jpg?w=780" alt="" title="Sharding"   class="alignright size-full wp-image-120" srcset="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/partition2.jpg 253w, https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/partition2.jpg?w=150&amp;h=121 150w" sizes="(max-width: 253px) 100vw, 253px" /></a></p>
<p>As per my earlier post we need to scale out our data store when the application data requirements outgrow a single instance capacity. This is in most cases achieved through sharding (a.k.a. partition of data). </p>
<p>With traditional RDBMS systems the application data model has to be modeled such from the very start to enable equalized partitioning of data or it may require a considerable change if we want to do it as an afterthought to scale up the application for using multiple database instances where each instance keep a balanced subset of the big data for an application. So in a way we have to plan for scaling out an application in typical RDBMS world but then with <strong>MongoDB</strong> it can actually occur as an afterthought as it provides automatic balancing and fail over of the partioned data</p>
<p>MongoDB as on 1.6 onwards supports production ready automated sharding architecture where we can convert a single instance into a cluster of shard whereby MongoDB manages the distribution of load of data across the shards (redistributing if the data on one node goes out of proportion with the rest) and also provides fail over support with each shard data being replicated in a replica set and all this with very minimal or no code change. The application needs to connect to a mongos process (which sits in front of the sharded cluster) which is responsible for managing the reads and writes across these shards giving a similar impression as we are working with a single node database systems.<br />
<span id="more-115"></span><br />
Each shard as part of the cluster in itself consists of multiple servers where data is replicated either as a master slave configuration or as a replica set (v1.6 onwards). The data set or the collection of data is distributed through shard key pattern where we use one or more fields to define this key. These fields are to be choosen carefully and has to be granular enough to allow even distribution of data across the nodes and thus in most cases we end up using compound key with multiple fields. </p>
<p>Apart from the shard cluster we also have config servers and routing processes where config servers are the one with the metadata information about each node and the chunk of data each node has and the routing process being responsible for intercepting the client requests and processing them in orchestration with the different nodes of the cluster giving an impression that the request is being processed through a single server.</p>
<p>At the base minimum we can have just two or more shards, one config server and a mongos routing process to create a shard cluster. You can read more about configuring the shards <a href="http://www.mongodb.org/display/DOCS/Configuring+Sharding">here</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://priyanshugoyal.wordpress.com/2010/08/18/sharding-with-mangodb/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://2.gravatar.com/avatar/b3c63c1b1d813b4278fab00250d95cc5878eef6c8c41ba843789c57e135c086f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">priyanshugoyal</media:title>
		</media:content>

		<media:content url="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/partition2.jpg" medium="image">
			<media:title type="html">Sharding</media:title>
		</media:content>
	</item>
		<item>
		<title>Web Applications Scalability</title>
		<link>https://priyanshugoyal.wordpress.com/2010/08/16/agile-and-scalability/</link>
					<comments>https://priyanshugoyal.wordpress.com/2010/08/16/agile-and-scalability/#respond</comments>
		
		<dc:creator><![CDATA[priyanshugoyal]]></dc:creator>
		<pubDate>Mon, 16 Aug 2010 09:40:17 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Scalability]]></category>
		<guid isPermaLink="false">http://priyanshugoyal.wordpress.com/?p=111</guid>

					<description><![CDATA[Please do take care of the scalability concerns of your application or at least architect it such that it can be scalable later on. If we ignore this fact at the very start concentrating more on the business aspects of the application (something which is misunderstood in Agile) we are doomed to fail even at [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/index.jpeg"><img data-attachment-id="123" data-permalink="https://priyanshugoyal.wordpress.com/2010/08/16/agile-and-scalability/index/" data-orig-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/index.jpeg" data-orig-size="290,174" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="Scalability" data-image-description="" data-image-caption="" data-medium-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/index.jpeg?w=290" data-large-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/index.jpeg?w=290" src="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/index.jpeg?w=780" alt="" title="Scalability"   class="alignright size-full wp-image-123" srcset="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/index.jpeg 290w, https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/index.jpeg?w=150&amp;h=90 150w" sizes="(max-width: 290px) 100vw, 290px" /></a>Please do take care of the scalability concerns of your application or at least architect it such that it can be scalable later on. </p>
<p>If we ignore this fact at the very start concentrating more on the business aspects of the application (something which is misunderstood in Agile) we are doomed to fail even at the slightest hint of making the application scalable. Do not get me wrong, there are measures which can be taken a little later in the development cycle which can improve the scalability of the application but then they have their limitations. For example something like what to choose as data storage is something you need to decide upfront. Agreed having designed the application with a layer of data access objects abstracts the rest of the application from the data storage dependency but then why do the rework of rewriting the data access implementation. I am very sure we cannot regard such a change as trivial.</p>
<p>Have a strategy to allow the application to scale from the very start will definitely help and it is more a matter of choosing the right technologies and right architecture to accomplish it upfront.<br />
<span id="more-111"></span><br />
<strong>N-tiered architecture with highly decoupled layers</strong> &#8211; Something quite basic but make sure you do not miss out on this. Decoupling can be achieved through use of interfaces and now something very common through dependency injection. What this does is allow us to separate out the different layers from the restriction for them to be co-resident on the same box and let them scale out as independent units may be to the extent of being implemented as web service</p>
<p><strong>Scale the data store</strong> &#8211; Either choose something more traditional like MySQL or something which is gaining a lot of popularity due to its ability to allow the applications to scale : NoSQL databases like MongoDB or Cassandra but the idea is to allow cutting down the bottleneck of having a single instance of the database being accessed by large number of users. Few approaches to keep in mind</p>
<p>1. Use replication of data to provide scalability and more so high availability. Split down the read and writes with a single master server to write to and multiple slaves to read from using the replication of data from master to slaves but then this has a limitation with still a single master server to write to. Too many writes and replication takes too long</p>
<p>2. Database Partitioning &#8211; It allows us to split the datastore among multiple instances so that we can distribute both read and writes. We can choose a technology which has a built in support for it like MongoDB, Cassandra etc or we can implement something of our own as application logic and use MySQL for partitioning the data. </p>
<p><strong>Introduce the Caching of data</strong> &#8211; Introduce a caching layer on top of the data access layer either using something like Ehcache as a second level cache on top of hibernate + MySQL or moving the cache onto a distributed solution like Memcached. Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) which can be as a result of database calls, API calls, or page rendering</p>
<p><strong>Go for a stateless application</strong> &#8211; Try to keep the application as stateless as possible cutting down the cost of session replication or if not possible going stateless move towards centralized sessions rather then local</p>
]]></content:encoded>
					
					<wfw:commentRss>https://priyanshugoyal.wordpress.com/2010/08/16/agile-and-scalability/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://2.gravatar.com/avatar/b3c63c1b1d813b4278fab00250d95cc5878eef6c8c41ba843789c57e135c086f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">priyanshugoyal</media:title>
		</media:content>

		<media:content url="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/index.jpeg" medium="image">
			<media:title type="html">Scalability</media:title>
		</media:content>
	</item>
		<item>
		<title>TDD and Architecture</title>
		<link>https://priyanshugoyal.wordpress.com/2010/08/06/tdd-and-architecture/</link>
					<comments>https://priyanshugoyal.wordpress.com/2010/08/06/tdd-and-architecture/#respond</comments>
		
		<dc:creator><![CDATA[priyanshugoyal]]></dc:creator>
		<pubDate>Fri, 06 Aug 2010 10:14:35 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Architecture]]></category>
		<guid isPermaLink="false">http://priyanshugoyal.wordpress.com/?p=101</guid>

					<description><![CDATA[Let us first look at the TDD and why I feel it is right way to develop functionality. To start with let me just ignore TDD as if it does not exist but obviously I do believe writing unit test cases is worth the effort. So I have done my design, written my implementation as [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Let us first look at the TDD and why I feel it is right way to develop functionality. To start with let me just ignore TDD as if it does not exist but obviously I do believe writing unit test cases is worth the effort.</p>
<p>So I have done my design, written my implementation as per the design and now I am writing the unit test cases to test out every possible scenario and then I realize I am not able to unit test a scenario until I modify the code to get it more suitable and enabled for testing. I modify my code to make it available for testing but then we know if our code is not testable, it is a flaw in the design and the design itself should have been such to allow for it to be tested. So I need to modify the design.</p>
<p>So in a way my tests are driving the way the code is written and eventually the design hence why not start with the unit tests at the very first place rather then going through an unnecessary loop and that is what is TDD (or more aptly TDDAD &#8211; Test driven development and design).</p>
<p>But then can we just stretch it even further and have my test cases drive the architecture of the system as well. Not really</p>
<p>1. Architecture by definition has much <strong>wider scope and relevance</strong> then may be just the design of few classes. It is a decision which is taken at a team and solution level and not merely confined to the reasoning being done at the pair programming level.</p>
<p>2. We need to get some basic architecture in place as part of zero iteration which takes in account just enough skeleton in place from which we can start building. We need to ensure we are pretty confident of this basic skeleton as it will be one of the <strong>hardest stuff to alter</strong> later in the future iterations and will have quite a strong consequence whenever we plan to do it.</p>
<p>3. Architecture decisions are very hard to postpone as something like going for a typical n-tier architecture or may be for SOA or in some case opting for a third party off the shelf solution or the very latest GAE as PaaS solution has to be taken upfront and cannot be delayed for a point in future</p>
<p>Not to say that we need to do big upfront architecture but still the bare bones or the minimal set has to be in place and then let the design evolve</p>
<p><a href="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/architecture.jpeg"><img loading="lazy" data-attachment-id="126" data-permalink="https://priyanshugoyal.wordpress.com/2010/08/06/tdd-and-architecture/architecture/" data-orig-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/architecture.jpeg" data-orig-size="257,196" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="Architecture" data-image-description="" data-image-caption="" data-medium-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/architecture.jpeg?w=257" data-large-file="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/architecture.jpeg?w=257" src="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/architecture.jpeg?w=780" alt="" title="Architecture"   class="aligncenter size-full wp-image-126" srcset="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/architecture.jpeg 257w, https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/architecture.jpeg?w=150&amp;h=114 150w" sizes="(max-width: 257px) 100vw, 257px" /></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://priyanshugoyal.wordpress.com/2010/08/06/tdd-and-architecture/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://2.gravatar.com/avatar/b3c63c1b1d813b4278fab00250d95cc5878eef6c8c41ba843789c57e135c086f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">priyanshugoyal</media:title>
		</media:content>

		<media:content url="https://priyanshugoyal.wordpress.com/wp-content/uploads/2010/08/architecture.jpeg" medium="image">
			<media:title type="html">Architecture</media:title>
		</media:content>
	</item>
		<item>
		<title>Management as Craft</title>
		<link>https://priyanshugoyal.wordpress.com/2010/08/05/management-as-craft/</link>
					<comments>https://priyanshugoyal.wordpress.com/2010/08/05/management-as-craft/#respond</comments>
		
		<dc:creator><![CDATA[priyanshugoyal]]></dc:creator>
		<pubDate>Thu, 05 Aug 2010 11:03:06 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Management]]></category>
		<guid isPermaLink="false">http://priyanshugoyal.wordpress.com/?p=96</guid>

					<description><![CDATA[Management in general is very generic and might involve very varied role and responsibilities depending a lot on where we are. Not too kill the fun of hundreds and thousands of job titles floating around at the moment within IT with the suffix as Manager, I dare to list down some of the very basics [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Management in general is very generic and might involve very varied role and responsibilities depending a lot on where we are. Not too kill the fun of hundreds and thousands of job titles floating around at the moment within IT with the suffix as <strong>Manager</strong>, I dare to list down some of the very basics one must possess in my opinion but then it can never be comprehensive enough to cover most of them. </p>
<p>1. Earn their trust and trust the ones you are managing as a team lead &#8211; Give them the space, enable them to be effective, keep them out of the politics and unnecessary management value and vision dialogues, do not over inform them of the goals and objectives as they very well know the importance of the business and how much impact they are already doing through high quality deliverable. Make them comfortable and protect them to gain their trust. </p>
<p>2. Remain connected always but not micromanage &#8211; Make sure they feel valued and even more their work by asking smart, relevant queries even if you the answer to many. Never micromanage and leave them to manage themselves just being sure they are very clear on the goal and timelines. Development and coding background especially ability to help with the design and architecture decisions really help and help you being closer to the so called technical crowd of the project</p>
<p>3. Let them own and feel responsible for their work &#8211; Empower them and let them handle it giving right support and guidance throughout. Do not make them agree to you all the time but challenge them asking for ways to improve and optimize the work and velocity</p>
<p>4. Do your bit for their morale &#8211; Nothing is good for the team as much as highly motivated and energetic team working with you. Inspire them , reason it out and keep them informed about all the important decisions no matter of it effects them directly or indirectly. Not just 1/10th but atleast 8/10th picture of the importance organization changes happening and why</p>
<p>5. Be there to say &#8220;No&#8221; for the team &#8211; Never leave it for the team to come back and say no to you. Be the first to take the shot if you really believe if it may cause distraction to the team to meet their goal and commitments, the team will not be able to complete it, we are not going to sacrifice on the quality, the testing team doesn&#8217;t have enough to get started with the testing. </p>
<p>I know there are a lot more and may be I will update the post as I evolve more as a manager and learn this craft which actually doesn&#8217;t have that many hard ground principles or rules as such  </p>
]]></content:encoded>
					
					<wfw:commentRss>https://priyanshugoyal.wordpress.com/2010/08/05/management-as-craft/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://2.gravatar.com/avatar/b3c63c1b1d813b4278fab00250d95cc5878eef6c8c41ba843789c57e135c086f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">priyanshugoyal</media:title>
		</media:content>
	</item>
		<item>
		<title>Leadership Smells</title>
		<link>https://priyanshugoyal.wordpress.com/2010/08/03/leadership-smells/</link>
					<comments>https://priyanshugoyal.wordpress.com/2010/08/03/leadership-smells/#respond</comments>
		
		<dc:creator><![CDATA[priyanshugoyal]]></dc:creator>
		<pubDate>Tue, 03 Aug 2010 07:54:12 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Management]]></category>
		<guid isPermaLink="false">http://priyanshugoyal.wordpress.com/?p=81</guid>

					<description><![CDATA[Just like code smells, I just wanted to highlight some irritating and disgusting practices people follow in the name of leadership. Do these if you want to join the same group of &#8230;&#8230;&#8230;&#8230; 1. Behave, act and communicate what you are doing as path breaking, out of the world, big value add for the organization [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Just like code smells, I just wanted to highlight some irritating and disgusting practices people follow in the name of leadership. Do these if you want to join the same group of &#8230;&#8230;&#8230;&#8230;</p>
<p>1. Behave, act and communicate what you are doing as path breaking, out of the world, big value add for the organization<br />
2. Your sole aim of existence is to impress your boss, be on his side explaining your achievements and how much support you have got from him/her to achieve them<br />
3. Always lunch with you boss and never with your team.<br />
4. Try to keep things confidential as much as possible to enjoy being in the elite group<br />
5. Keep the time which you need to spend with your team as low priority over everything else<br />
6. Reorganize everything as per your convenience once you move into the new role to demonstrate your value and the impact of your role and hierarchy<br />
7. Delegate the responsibility not the credit or recognition of the good work done<br />
8. You be the single point of failure for any ideas or suggestions coming from the team you are leading<br />
9. Never challenge your boss or even you have to, to demonstrate such a behavior do it where it impacts the least<br />
10. Have few favorites within the team. Trust them blindly, they are always right</p>
]]></content:encoded>
					
					<wfw:commentRss>https://priyanshugoyal.wordpress.com/2010/08/03/leadership-smells/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://2.gravatar.com/avatar/b3c63c1b1d813b4278fab00250d95cc5878eef6c8c41ba843789c57e135c086f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">priyanshugoyal</media:title>
		</media:content>
	</item>
		<item>
		<title>First Stop to Cassandra</title>
		<link>https://priyanshugoyal.wordpress.com/2010/08/02/first-stop-to-cassandra/</link>
					<comments>https://priyanshugoyal.wordpress.com/2010/08/02/first-stop-to-cassandra/#comments</comments>
		
		<dc:creator><![CDATA[priyanshugoyal]]></dc:creator>
		<pubDate>Mon, 02 Aug 2010 09:33:26 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Availability]]></category>
		<category><![CDATA[Scalability]]></category>
		<guid isPermaLink="false">http://priyanshugoyal.wordpress.com/?p=61</guid>

					<description><![CDATA[So I start my search for a non relational database one more time to see if the latest buzz about NoSQL really worth it or is it just another time when we are looking at the options which eventually are going to die down for the ever dominant RDBMS. I soon realized NoSQL encompasses much [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>So I start my search for a non relational database one more time to see if the latest buzz about NoSQL really worth it or is it just another time when we are looking at the options which eventually are going to die down for the ever dominant RDBMS.</p>
<p>I soon realized NoSQL encompasses much more then I would liked (just because I find myself a little lost with so many options) with so much already out there challenging the SQL databases. My first stop Cassandra.</p>
<p><strong>Why Cassandra?</strong> &#8211; For me at least to start with the need for a non RDBMS has been quite straight forward, a data store which can provide me high availability with complete fault tolerance, highly scalable, very minimal downtime if any. This is mostly achieved through highly replicated and db clustered environment. Cassandra comes out as a natural choice to explore.<br />
<span id="more-61"></span><br />
<strong>Features </strong>&#8211; </p>
<ol> <strong>Fault Tolerant :</strong> Data is automatically replicated to multiple nodes. Loosing a node doesn&#8217;t bring down the cluster </ol>
<ol> <strong>Flexible Schema :</strong> We are talking in terms of columns, supercolumns and columnfamilies instead of rows and tables. BigTable datamodel</ol>
<ol> <strong>Symmetric :</strong> No single point of failure, Every node within the cluster is identical and there are no network bottlenecks </ol>
<ol> <strong>Scalable :</strong> Linear with addition of new machines with no downtime or interruption to applications. Read and write throughput increase linearly as new machines are added </ol>
<ol> <strong>Support for Large Data :</strong> The ability to scale to many hundreds of gigabytes of data </ol>
<ol> <strong>Written in Java :</strong> Originally built for facebook and then made open source</ol>
<p><strong>Data Model</strong> &#8211; Very confusing to start with and will need some time to get a hang off.  </p>
<ol> <strong>Column &#8211;</strong> Simplest of all, a tuple with binary no-fixed length name and value along with the timestamp. To keep it simple ignore the timestamp for the moment. </ol>
<ol> <strong>Super Column &#8211;</strong> Essentially a container for one or more columns. It is again a tuple with a binary name and a map of  where key is the same as the name of the column </ol>
<ol> <strong>Column Family &#8211;</strong> A structure which keeps an infinite number of rows just like a traditional table. Each row in itself has a binary key and a map of where again a key is the same as the name of the column </ol>
<ol> <strong>Super Column Family &#8211;</strong> Same as column family with the exception that each row has a map of super columns instead of columns. The map is keyed with the name of each SuperColumn and the value is the SuperColumn itself </ol>
<ol> <strong>Keyspace &#8211;</strong> It is like schema containing the column families </ol>
<ol> <strong>Sorting &#8211;</strong> The data is sorted as soon as we put the data within the cluster and it remains that way as there is no way to do it while fetching the data which makes it all the most necessary to plan it right as per the access path. I am not going to go all in detail here but I guess you got the idea.</ol>
<p>The data model is not schema bound with no specific number of type of columns for each row, no relationship between the column families and thus no way to join them.</p>
<p>More on the data model is <a href="http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model">here</a> and <a href="http://maxgrinev.com/2010/07/09/a-quick-introduction-to-the-cassandra-data-model/">here</a></p>
<p><strong>So no SQL then how to Query</strong> &#8211; Uses <a href="http://incubator.apache.org/thrift/">Thrift</a> framework as its client API. Essentially a communication protocol used not just by Cassandra but by many others. Available for a large number of development languages, ranging from Java and C++ to Python, PHP and many other software development languages. It is an internally developed cross-language framework that ties all of these different languages together, making it possible for them to talk to each other.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://priyanshugoyal.wordpress.com/2010/08/02/first-stop-to-cassandra/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		
		<media:content url="https://2.gravatar.com/avatar/b3c63c1b1d813b4278fab00250d95cc5878eef6c8c41ba843789c57e135c086f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">priyanshugoyal</media:title>
		</media:content>
	</item>
	</channel>
</rss>
