<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-21691863</id><updated>2011-11-14T15:04:24.040-08:00</updated><category term='technology'/><title type='text'>Manoj's Blog</title><subtitle type='html'>Thoughts on Technology and things i come across in daily life and work</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kmanuj.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kmanuj.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Manoj</name><uri>http://www.blogger.com/profile/09016378291810649685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21691863.post-5352155768552388932</id><published>2011-02-06T14:06:00.000-08:00</published><updated>2011-02-06T14:06:44.024-08:00</updated><title type='text'></title><content type='html'>&lt;b&gt;My thoughts on Agile Development&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I dont confess to be a authority on 'agile' , however in my last five years with various companies i have seen 'agile' becoming a buzzword &amp;nbsp;and a fad i.e. people say we do agile while they end up following water-fall model. I have learned from talking to people and understanding the challenges they faced and running scrum myself and learning from my mistakes.&lt;br /&gt;&lt;br /&gt;sometimes people get up hung up in 'following the book to the last word' while they forget that it is "essentially" an evolution based on the current times.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;what is 'agile development'&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;- the only problem that matters here is that the time to market is very large for &amp;nbsp;water-fall / RUP blah blah model e.g. how would you manage your project if your time to project is 1 month or rather continuous , we can no longer afford to have requirement complete before we start design and design complete before we do development. &amp;nbsp;In other words the entire environment is continuous i.e. all stages need to react to changes as all of them are working concurrently in other words 'agile' development.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How do i get agile&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;- people tend to condense the process into the small timeframe without adopting some of the principles of being 'agile'. let us consider the problem mentioned in the above paragraph and try to figure out how would we solve the problem.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the first thing that it means that i am not going to have complete requirements before i design and develop. it means close co-operation with my product manager and my designer i.e. we collaborate on the product in an iterative process.&lt;/li&gt;&lt;li&gt;&amp;nbsp;some people thing that agile means PM can give a completely new requirement 2 days before a release and expect it to get done. &amp;nbsp;to be fair to the entire "PM community" i think there are some PMs who get it and understand how it works &amp;nbsp;and some who don't get it. ( i am not going to get into why they don't get it) .&lt;/li&gt;&lt;li&gt;&amp;nbsp;i can surely hear a lot of people cry out loud that what happens when it is a genuinely such a condition for e.g. an unexpected market opportunity. &amp;nbsp;to all those people out there yes agile is supposed to address this. &amp;nbsp; One of the most important features of being agile is &amp;nbsp;to instill the thought "&lt;b&gt; ALL PARTIES &amp;nbsp;eng/product/qa/ops are equal stake holders in the project&lt;/b&gt;" , if your org does not believe in this then in my opinion you are not agile. coming back to argument , in such a case where all parties are equal parties to the project it means couple of things&lt;/li&gt;&lt;ul&gt;&lt;li&gt;every body in the project recognizes the opportunity and willing to accept the change&lt;/li&gt;&lt;li&gt;once consenus is achieved , it comes down to resource planning and scheduling and this is less of a problem in my opinion and needless to say "to put something in a bucket which is full, something needs to be taken out first"&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&amp;nbsp;- make sure all the members of the project know what every member is responsible for , one cannot have mis communication when one is working on such short time projects. &amp;nbsp;have a daily scrum meeting.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;keep is small , i have been part of scrum meeting which run for one and half hours long everyday&lt;/li&gt;&lt;li&gt;scrum meetings should be of the following , every team member needs to say only 3 thing&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;what am i &amp;nbsp;woking today&lt;/li&gt;&lt;li&gt;what i did yesterday&lt;/li&gt;&lt;li&gt;am i blocked on something i am working. if there is a dependency please dont make that discussion a part of the scrum meeting. &amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;- &amp;nbsp;make sure you develop something, give a demo to all the stake holders of the project and then iterate on the feedback. giving early demos and collecting feedback is invaluable.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;- MOST Important . RECOGNIZE that there is no single solution that fits all, a team is made of people and people are different in different teams and different orgs just because one worked in one project does not mean it will work everywhere.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;for e.g. if you successfully ran scrum in a startup with 3 engs and &amp;nbsp;qa, it &amp;nbsp;does not mean the same process applies for a large group where there are some 20 eng and 10 qa. &amp;nbsp;in this example dont hesitate in breaking up the scrum to multiple team scrums and have a representative from that team&amp;nbsp;&lt;/li&gt;&lt;li&gt;understand that "agile" &amp;nbsp;means being "agile" ourselves. learn what works and does not work and tweak process till you get the desired effect.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;- Lastly, &amp;nbsp;if you want to learn 'agile development' do the following&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;get a book. after you read the book throw it down the drain or sell it on ebay, whatever you do don't ever touch that book again. sometimes i have a sneaking feeling that some books are ambiguous so that we can hire consultants who will explain it in lay man terms.&lt;/li&gt;&lt;li&gt;understand what is the problem that you are trying to solve&lt;/li&gt;&lt;li&gt;apply you analytical mind to the problem , in this way u will adapt the process to the problem instead of adapting the problem to the process.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;would like to hear how other people adapted scrum to their projects.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21691863-5352155768552388932?l=kmanuj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmanuj.blogspot.com/feeds/5352155768552388932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21691863&amp;postID=5352155768552388932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/5352155768552388932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/5352155768552388932'/><link rel='alternate' type='text/html' href='http://kmanuj.blogspot.com/2011/02/my-thoughts-on-agile-development-i-dont.html' title=''/><author><name>Manoj</name><uri>http://www.blogger.com/profile/09016378291810649685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21691863.post-6252135822201397870</id><published>2011-01-30T12:41:00.000-08:00</published><updated>2011-01-30T12:41:53.101-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'></title><content type='html'>&lt;b&gt;Checking out Node.js&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;I am been playing with node.js for some time and over the weekend i thought of doing a simple benchmark between node.js and jetty, &amp;nbsp;the objective was to quickly check out the two implementation in other words beat the bush and see what falls out.&lt;br /&gt;&lt;br /&gt;I half expected the node.js performance to be less that jetty using a NIO connector , however i was pleasantly surprised to see that tps is the same while the cpu utilization of node.js was very very less.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is what i ended up doing&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;wrote a small helloworld &amp;nbsp;httpserver in node.js , about 4 lines of code&lt;/li&gt;&lt;li&gt;wrote a custom handler for jetty which says helloWorld&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Used apache bench to test it for 10000 requests and 20 concurrent clients.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;node.js results&lt;/div&gt;&lt;div&gt;=========&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Server Software: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;Server Hostname: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;uno&lt;br /&gt;Server Port: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8124&lt;br /&gt;&lt;br /&gt;Document Path: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&lt;br /&gt;Document Length: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;14 bytes&lt;br /&gt;&lt;br /&gt;Concurrency Level: &amp;nbsp; &amp;nbsp; &amp;nbsp;20&lt;br /&gt;Time taken for tests: &amp;nbsp; 12.896 seconds&lt;br /&gt;Complete requests: &amp;nbsp; &amp;nbsp; &amp;nbsp;10000&lt;br /&gt;Failed requests: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;br /&gt;Write errors: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&lt;br /&gt;Total transferred: &amp;nbsp; &amp;nbsp; &amp;nbsp;780000 bytes&lt;br /&gt;HTML transferred: &amp;nbsp; &amp;nbsp; &amp;nbsp; 140000 bytes&lt;br /&gt;Requests per second: &amp;nbsp; &amp;nbsp;775.41 [#/sec] (mean)&lt;br /&gt;Time per request: &amp;nbsp; &amp;nbsp; &amp;nbsp; 25.793 [ms] (mean)&lt;br /&gt;Time per request: &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.290 [ms] (mean, across all concurrent requests)&lt;br /&gt;Transfer rate: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;59.06 [Kbytes/sec] received&lt;br /&gt;&lt;br /&gt;Connection Times (ms)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;min &amp;nbsp;mean[+/-sd] median &amp;nbsp; max&lt;br /&gt;Connect: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2 &amp;nbsp; 13 &amp;nbsp;29.2 &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; 994&lt;br /&gt;Processing: &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; 13 &amp;nbsp;10.4 &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; 255&lt;br /&gt;Waiting: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2 &amp;nbsp; 12 &amp;nbsp; 8.4 &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; 234&lt;br /&gt;Total: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 11 &amp;nbsp; 26 &amp;nbsp;32.2 &amp;nbsp; &amp;nbsp; 22 &amp;nbsp; &amp;nbsp;1009&lt;br /&gt;&lt;br /&gt;Percentage of the requests served within a certain time (ms)&lt;br /&gt;&amp;nbsp;&amp;nbsp;50% &amp;nbsp; &amp;nbsp; 22&lt;br /&gt;&amp;nbsp;&amp;nbsp;66% &amp;nbsp; &amp;nbsp; 24&lt;br /&gt;&amp;nbsp;&amp;nbsp;75% &amp;nbsp; &amp;nbsp; 26&lt;br /&gt;&amp;nbsp;&amp;nbsp;80% &amp;nbsp; &amp;nbsp; 27&lt;br /&gt;&amp;nbsp;&amp;nbsp;90% &amp;nbsp; &amp;nbsp; 33&lt;br /&gt;&amp;nbsp;&amp;nbsp;95% &amp;nbsp; &amp;nbsp; 40&lt;br /&gt;&amp;nbsp;&amp;nbsp;98% &amp;nbsp; &amp;nbsp; 69&lt;br /&gt;&amp;nbsp;&amp;nbsp;99% &amp;nbsp; &amp;nbsp;105&lt;br /&gt;&amp;nbsp;100% &amp;nbsp; 1009 (longest request)&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Jetty results&lt;/div&gt;&lt;div&gt;========&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;Server Software: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Jetty(7.2.2.v20101205)&lt;br /&gt;Server Hostname: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;uno&lt;br /&gt;Server Port: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8081&lt;br /&gt;&lt;br /&gt;Document Path: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/&lt;br /&gt;Document Length: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;21 bytes&lt;br /&gt;&lt;br /&gt;Concurrency Level: &amp;nbsp; &amp;nbsp; &amp;nbsp;20&lt;br /&gt;Time taken for tests: &amp;nbsp; 12.779 seconds&lt;br /&gt;Complete requests: &amp;nbsp; &amp;nbsp; &amp;nbsp;10000&lt;br /&gt;Failed requests: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;br /&gt;Write errors: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&lt;br /&gt;Total transferred: &amp;nbsp; &amp;nbsp; &amp;nbsp;1680000 bytes&lt;br /&gt;HTML transferred: &amp;nbsp; &amp;nbsp; &amp;nbsp; 210000 bytes&lt;br /&gt;Requests per second: &amp;nbsp; &amp;nbsp;782.54 [#/sec] (mean)&lt;br /&gt;Time per request: &amp;nbsp; &amp;nbsp; &amp;nbsp; 25.558 [ms] (mean)&lt;br /&gt;Time per request: &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.278 [ms] (mean, across all concurrent requests)&lt;br /&gt;Transfer rate: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;128.39 [Kbytes/sec] received&lt;br /&gt;&lt;br /&gt;Connection Times (ms)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;min &amp;nbsp;mean[+/-sd] median &amp;nbsp; max&lt;br /&gt;Connect: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2 &amp;nbsp; 13 &amp;nbsp;32.9 &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp;1011&lt;br /&gt;Processing: &amp;nbsp; &amp;nbsp; 2 &amp;nbsp; 12 &amp;nbsp;12.0 &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; 357&lt;br /&gt;Waiting: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2 &amp;nbsp; 12 &amp;nbsp;10.5 &amp;nbsp; &amp;nbsp; &amp;nbsp;9 &amp;nbsp; &amp;nbsp; 288&lt;br /&gt;Total: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9 &amp;nbsp; 25 &amp;nbsp;36.6 &amp;nbsp; &amp;nbsp; 21 &amp;nbsp; &amp;nbsp;1062&lt;br /&gt;&lt;br /&gt;Percentage of the requests served within a certain time (ms)&lt;br /&gt;&amp;nbsp;&amp;nbsp;50% &amp;nbsp; &amp;nbsp; 21&lt;br /&gt;&amp;nbsp;&amp;nbsp;66% &amp;nbsp; &amp;nbsp; 24&lt;br /&gt;&amp;nbsp;&amp;nbsp;75% &amp;nbsp; &amp;nbsp; 25&lt;br /&gt;&amp;nbsp;&amp;nbsp;80% &amp;nbsp; &amp;nbsp; 26&lt;br /&gt;&amp;nbsp;&amp;nbsp;90% &amp;nbsp; &amp;nbsp; 32&lt;br /&gt;&amp;nbsp;&amp;nbsp;95% &amp;nbsp; &amp;nbsp; 43&lt;br /&gt;&amp;nbsp;&amp;nbsp;98% &amp;nbsp; &amp;nbsp; 98&lt;br /&gt;&amp;nbsp;&amp;nbsp;99% &amp;nbsp; &amp;nbsp;121&lt;br /&gt;&amp;nbsp;100% &amp;nbsp; 1062 (longest request)&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Observations:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;1) the latency and tps between the two is very much the same &amp;nbsp;which truly surprised me so i decided to see cpu and context switches and that the number were very interesting&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;jetty cpu usage:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;======&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;cpu usage : 30%&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;cs : &amp;nbsp;max &amp;nbsp;~ 7200 &amp;nbsp; avg ~ 5000&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;node.js cpu usage:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;=======&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;cpu usage : 4%&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;cs : &amp;nbsp;max 1100 &amp;nbsp; avg ~ 750&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;jetty has a very high number of context switches (note that this is untuned server, i had expected the default config to do a better job) , this also points to the fact how engineers overlook context switches there is no way that the system can perform if it has such a high number of context switches&lt;br /&gt;&lt;br /&gt;trying to figure out why jetty is doing so much CS and cpu is a another weekend project.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) &amp;nbsp;because of modern cpus and because of the lean design of node.js ( which means that we are executing only a small amount of script code) the numbers are very close.&lt;br /&gt;&lt;br /&gt;Things that i did not try or find out how to:&lt;br /&gt;*) the current release does not give the ability to tune the number of worker threads. not sure how it can be tuned to different workloads.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I came away impressed with node.js and now need to look into the actual code and figure out more about its tuning parameters &amp;nbsp;as well as benchmark it against netty&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21691863-6252135822201397870?l=kmanuj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmanuj.blogspot.com/feeds/6252135822201397870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21691863&amp;postID=6252135822201397870' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/6252135822201397870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/6252135822201397870'/><link rel='alternate' type='text/html' href='http://kmanuj.blogspot.com/2011/01/checking-out-node.html' title=''/><author><name>Manoj</name><uri>http://www.blogger.com/profile/09016378291810649685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21691863.post-2122464419038630927</id><published>2011-01-29T18:28:00.000-08:00</published><updated>2011-01-29T18:28:59.702-08:00</updated><title type='text'></title><content type='html'>&lt;b&gt;NFC why i am excited about it&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;During my interactions with my friends and colleagues i came to realize that &amp;nbsp;lot of people do not know about this technology and how it would make their daily experiences better. so here i am putting down my thoughts why i am excited about nfc and looking forward to it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Consider the following use case :&lt;br /&gt;Whenever is visit fry's i see a lot of people scanning the barcode and checking out the product information and as anyone knows this is a not a very fool-proof system but it works as of today, with NFC we would be able to tap our phones on the product tag on the shelf below and get all the product information.&lt;br /&gt;&lt;br /&gt;The scope for retail is huuuge (there are a lot of other very interesting use cases but that will take me some days to talk about) and i expect google to enable the whole merchant eco system and integrate it with google checkout &amp;nbsp;and hook it up with the ad network and analytics &amp;nbsp;, i fully expect Apple will going to try the same too.&lt;br /&gt;&lt;br /&gt;if we consider our daily interactions to consist of the following&lt;br /&gt;1) me interacting with society ( let us assume for the discussion that it a web interaction )&lt;br /&gt;2) me interacting with objects : buying goods (clothes/electronics/phone) &amp;nbsp;&lt;br /&gt;3) my interacting with other machines at my workplace , my home , my car , my music system &amp;nbsp;using my phone&lt;br /&gt;&lt;br /&gt;1 and 3 are possible as of today , i can control my TV/printer &amp;nbsp;through my phone , what is missing is my interactions with objects like buying a gadget, the gadget has a &amp;nbsp;bar code but i am not a bar code reader there is no way i can get information and look up what other people are talking about it and more importantly what do people in my social circle have to say about it. NFC is going to enable this and make my interaction cycle complete.&lt;br /&gt;&lt;br /&gt;I am looking forward to the day when the technology becomes mainstream.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21691863-2122464419038630927?l=kmanuj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmanuj.blogspot.com/feeds/2122464419038630927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21691863&amp;postID=2122464419038630927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/2122464419038630927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/2122464419038630927'/><link rel='alternate' type='text/html' href='http://kmanuj.blogspot.com/2011/01/nfc-why-i-am-excited-about-it-during-my.html' title=''/><author><name>Manoj</name><uri>http://www.blogger.com/profile/09016378291810649685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21691863.post-2770965238827244408</id><published>2010-01-07T16:36:00.000-08:00</published><updated>2010-01-07T17:06:55.301-08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;My web 20 experience&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If i were to answer it in one line it would be "i eat my own dogfood".&lt;br /&gt;&lt;br /&gt;I have been an enterprise guy who developed software and threw it over the wall to the QA and finally customer and all i was interested in, was in solving technical challenges.  I was never responsible for keeping them running and understanding how to make them better.&lt;br /&gt;&lt;br /&gt;As part of building and running apigee i realized the value of eating my own dogfood. One cannot build and run a website based business without understanding all different metrics associated with it.   Apart from creating technology i am interested in understanding what features  get used often, which part of the system is getting stressed under what conditions and the user behaviour.&lt;br /&gt;&lt;br /&gt;In short I am much more agile, motivated and a better technologist than before. It has been hell of a ride with plenty of battle scars to go along with it  and i am proud to say "I eat my own dogfood".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21691863-2770965238827244408?l=kmanuj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmanuj.blogspot.com/feeds/2770965238827244408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21691863&amp;postID=2770965238827244408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/2770965238827244408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/2770965238827244408'/><link rel='alternate' type='text/html' href='http://kmanuj.blogspot.com/2010/01/my-web-20-experience-if-i-were-to.html' title=''/><author><name>Manoj</name><uri>http://www.blogger.com/profile/09016378291810649685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21691863.post-7143650768250701820</id><published>2009-09-01T22:44:00.000-07:00</published><updated>2009-09-01T23:03:52.439-07:00</updated><title type='text'></title><content type='html'>Application Infrastructure race in the clould&lt;br /&gt;&lt;br /&gt;Today Intalio announced the takeover of webtide ( the maker of Jetty) me and my friend (an ex Intalio employee,  and both of us being old middle ware hands) realize that this is the race for owning and proving the complete application infrastructure on the cloud.&lt;br /&gt;&lt;br /&gt;Oracle with its acquisition of BEA and SUN in uniquely poised to  provide a complete application infrastructure ( the whole enchilada) on the cloud.&lt;br /&gt;&lt;br /&gt;I am also looking forward to when VMware would provide us   with&lt;span style="font-weight: bold;"&gt; V&lt;/span&gt;irtual &lt;span style="font-weight: bold;"&gt;M&lt;/span&gt;iddle&lt;span style="font-weight: bold;"&gt;ware&lt;/span&gt; with VMware and Springsource technologies.&lt;br /&gt;&lt;br /&gt;The Race is on ....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21691863-7143650768250701820?l=kmanuj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmanuj.blogspot.com/feeds/7143650768250701820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21691863&amp;postID=7143650768250701820' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/7143650768250701820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/7143650768250701820'/><link rel='alternate' type='text/html' href='http://kmanuj.blogspot.com/2009/09/application-infrastructure-race-in.html' title=''/><author><name>Manoj</name><uri>http://www.blogger.com/profile/09016378291810649685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21691863.post-3387928873959820668</id><published>2009-04-17T22:22:00.000-07:00</published><updated>2009-04-22T01:54:50.619-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;what is an API ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I met a friend after a couple of years and we started talking about our work.   We started talking about API Infrastructure and midway thru the discussion he asked me a very simple question. what is an API and how is it different from a Service ,  Why is a service Bus infrastructure different from a API Infrastructure.   At that moment I realized that this is question that i should have answered first and here i am writing it down.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; api definition:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;- An api is reusable asset which can be invoked on the web. As a reusable asset the api can be combined/invoked from another website/mashup/application to add value for e.g. retrieving the List of Movies I have watched on Netflix over the last week  and displaying it in my website.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;what is the difference between a Service Infrastructure and API Infrastructure&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I sometimes use services and apis in the same context and there is no difference between the two in my mind however architecturally there are two types of services&lt;br /&gt;&lt;br /&gt;a)  services which i create within my application/enterprise for business process reuse and loose coupling between the various technology stacks available. This is the soa story and i am not going there. there are enough products out there which can solve the problem&lt;br /&gt;&lt;br /&gt;b) service or APIs  which i create so that they can be consumed by my partners /consumers or even shared across departments and services which i consume from other guys.&lt;br /&gt;&lt;br /&gt;From a technology perspective "a" requires "&lt;span style="font-weight: bold;"&gt;Service Infrastructure&lt;/span&gt;" while "b" is the "&lt;span style="font-weight: bold;"&gt;API Infrastructure&lt;/span&gt;"&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"&lt;span style="font-style: italic;"&gt;Service Infrastructure&lt;/span&gt;" is about integration of services while "&lt;span style="font-style: italic;"&gt;API Infrastructure&lt;/span&gt;" is about producing and consuming apis/services. &lt;/li&gt;&lt;li&gt;"&lt;span style="font-style: italic;"&gt;Service Infrastructure&lt;/span&gt;" is  part of the middleware technology while "&lt;span style="font-style: italic;"&gt;API Infrastructure&lt;/span&gt;" is  more of a gateway functionality. In "&lt;span style="font-style: italic;"&gt;Service Infrastructure&lt;/span&gt;" i am trying to integrate across disparate technologies how to integrate with ftp/email/jms etc while "&lt;span style="font-style: italic;"&gt;API Infrastructure&lt;/span&gt;" is about exposing apis via http as  POX/REST/SOAP &lt;/li&gt;&lt;li&gt;the concerns of  "&lt;span style="font-style: italic;"&gt;API Infrastructure&lt;/span&gt;" are security,scale, sla&amp;amp; monitoring,visibility instead of transport mediation/data mediation/process orchestration. If i am 1800Flowers.com and exposing an api to buy flowers then i would be concerned of making it available on the web with regards to scalability and security (for e.g. how can i guard myself against XML xDos/MDos Attacks) on the other hand if i were an enterprise doing service integration i would looking at how can i expose my Messaging (JMS) backend with a HTTP front end and do not end up having duplicate messages , architecturally an API Infrastructure sits in front of the Service Infrastructure.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21691863-3387928873959820668?l=kmanuj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmanuj.blogspot.com/feeds/3387928873959820668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21691863&amp;postID=3387928873959820668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/3387928873959820668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/3387928873959820668'/><link rel='alternate' type='text/html' href='http://kmanuj.blogspot.com/2009/04/what-is-api-i-met-friend-after-couple.html' title=''/><author><name>Manoj</name><uri>http://www.blogger.com/profile/09016378291810649685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21691863.post-1906459541795236273</id><published>2009-04-15T15:11:00.000-07:00</published><updated>2009-04-15T16:31:42.242-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;Adoption of  Enterprise 2.0/N.0 == More API Traffic&lt;/span&gt;&lt;br /&gt;-------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Enterprise 2.0 as an idea was floated as an idea late as 2007 and my interest in Enterprise 2.0/N.0 stems only from the product engineering perspective and the new infrastructual requirements it poses.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is my version of Enterprise 2.0&lt;/span&gt; ( i can see you guys rolling your eyes but give me a hearing first...)&lt;br /&gt;&lt;br /&gt;For me the definition of "&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Enterprise  2.0&lt;/span&gt; is the successful adaption of  social software platforms within companies, or  between companies and their partners or customers&lt;/span&gt;". I  have to say "successful adaption" because i do not think the enterprise will adapt the web 20 completely,  Enterprises will never give up the control but they would  like to adapt the  practices of web 20 with regards to collaboration &amp;amp; self service and agility and adapt them into the enterprise.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How will they get manifested within the Enterprise&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;I would like to see "&lt;span style="font-weight: bold;"&gt;Boeing&lt;/span&gt;" build its next generation "Partner Management/Tracking Platform" using mashups and social software paradigms , the idea of  having the  "part tracking" portlet implemented as a mashup and exposed  as a widget of choice on someone's iphone, blackberry which is very salivating thought.&lt;br /&gt;&lt;br /&gt;With Google announcing SDC and vendors providing support means only one thing i.e. we are going to see more api traffic coming from the enterprise and thats a very good thing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;End Result&lt;/span&gt;&lt;br /&gt;more APIs /more enterprise data getting exposed/ more traffic....  how are you going to manage this ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21691863-1906459541795236273?l=kmanuj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmanuj.blogspot.com/feeds/1906459541795236273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21691863&amp;postID=1906459541795236273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/1906459541795236273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/1906459541795236273'/><link rel='alternate' type='text/html' href='http://kmanuj.blogspot.com/2009/04/adoption-of-enterprise-2.html' title=''/><author><name>Manoj</name><uri>http://www.blogger.com/profile/09016378291810649685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21691863.post-6086188173303893220</id><published>2009-03-13T21:08:00.000-07:00</published><updated>2009-04-07T14:55:18.893-07:00</updated><title type='text'></title><content type='html'>APIs Do we need a seperate Infrastructure ?&lt;br /&gt;&lt;br /&gt;We as an industry have been talking about apis since 2007 (&lt;a href="http://www.readwriteweb.com/archives/web_30_when_web_sites_become_web_services.php?"&gt;when web sites become web services&lt;/a&gt;) and with the recent success of guys like twitter (&lt;a href="http://blog.programmableweb.com/2007/09/10/twitter-api-traffic-is-10x-twitters-site/"&gt;Twitter Traffic is 10x times its site&lt;/a&gt;) we are starting to  hear more about apis.&lt;br /&gt;&lt;br /&gt;My colleague (&lt;a href="http://brail.org/wordpress/index.php"&gt;Greg&lt;/a&gt;) recently blogged about what is an api,  it gives a good definition of what an api is and raises some important questions that everybody needs to ask, whoever is looking to build an api.&lt;br /&gt;&lt;br /&gt;As a company/user who is starting to go down the API path the subsequent question that it needs ask is do i  have  an existing infrastructure which can handle the requirements rasied by Greg.&lt;br /&gt;Some of us might say yes, we have the  infrastructure to do that or there are existing products which can help me manage my apis,  but do we have the "complete and comprehensive infrastructure" to cover all the requirements.&lt;br /&gt;&lt;br /&gt;I can possibly take an existing open source stack or some Middleware product  and say it provides me the capabilities but does it also do the following&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;does it give analytics for e.g. Netflix launched a API and is now integrated into Facebook, Netflix would be intersted in knowing what are the top apis, who drives more traffic facebook or myspace  in other words can the infrastructure provide me with information to make business decisions.&lt;/li&gt;&lt;li&gt;Does the infrastructure provide me with SLA and alerts so that i know when my api is down or not behaving properly.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;How flexible is the deployment model of my apis so that it can change to the ever changing business needs, in other words what is the life cycle management of my apis in a ever changing world&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If i am Boeing who is exposing an api to my partners can i assign different rate limits to different partners , i am paranoid about security/compliance/data security can the api infrastructure help me with that.&lt;/li&gt;&lt;li&gt;Does it do intelligent caching&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If i am an enterprise who is consuming a lot of web Apis how can i use this infrastructure to manage and control the apis i am consuming within my enterprise (this is a discussion for another day)&lt;/li&gt;&lt;/ul&gt;On top of this do i have a robust infrastructure to scale to the requirements of the web.  (Each of the requirements above probably require a dedicated blog so that's a task for some other day)&lt;br /&gt;&lt;br /&gt;Today is the day to ask whether we need a seperate infrastructure for apis and if yes then let  ask for one.&lt;br /&gt;&lt;br /&gt;Would like to hear from people producing and consuming apis what are some of the problems you have been facing and how are you planning to solve them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21691863-6086188173303893220?l=kmanuj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kmanuj.blogspot.com/feeds/6086188173303893220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21691863&amp;postID=6086188173303893220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/6086188173303893220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21691863/posts/default/6086188173303893220'/><link rel='alternate' type='text/html' href='http://kmanuj.blogspot.com/2009/03/apis-do-we-need-seperate-infrastructure.html' title=''/><author><name>Manoj</name><uri>http://www.blogger.com/profile/09016378291810649685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
