<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>IT Musings | A ramble alongside code, design, architecture and software development</title>
    <description>A ramble alongside code,design,architecture and software development</description>
    <link>/</link>
    <atom:link href="/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Mon, 20 May 2024 04:30:58 +0000</pubDate>
    <lastBuildDate>Mon, 20 May 2024 04:30:58 +0000</lastBuildDate>
    <generator>Jekyll v3.9.5</generator>
    
      <item>
        <title>Services at the cutting edge</title>
        <description>&lt;p&gt;We have been working with a client to develop a cutting edge (no pun intended) Point of Sale (POS) system. The key differentiator is to work offline - especially in geographies where internet connection is unreliable. Our solution was to deploy services at the edge (the store) and the cloud. The store services will need to have the same functionality as the ones in the cloud.&lt;/p&gt; &lt;p&gt;We wanted the edge to deflect to the cloud when internet is UP and running but still store a copy of the entity locally so that even if the internet were to go down...</description>
        <pubDate>Sun, 19 May 2024 08:00:00 +0000</pubDate>
        <link>/services-at-the-cutting-edge/</link>
        <guid isPermaLink="true">/services-at-the-cutting-edge/</guid>
        
        <category>spring boot</category>
        
        <category>chenile</category>
        
        <category>edge computing</category>
        
        <category>java</category>
        
        <category>architecture</category>
        
        <category>design</category>
        
        <category>architecture</category>
      </item>
    
      <item>
        <title>The Camel Glue for MicroServices</title>
        <description>&lt;p&gt;Recently, at E-Bee, I developed a framework for enabling Micro Services using Apache Camel. I have always been a big fan, nay, a fanatic, of modularisation. Combine the modularisation concept with the notion of Micro services and you would stipulate that all modules need to expose Micro services. All the services that are available from one module must be exposable as Micro Services to another dependent module. One module can only consume another module via its exposed services. No back door entry permitted! This means that one module cannot sneak in and take a peek at the other module’s database. Or shared memory....</description>
        <pubDate>Thu, 15 Sep 2016 01:33:47 +0000</pubDate>
        <link>/the-camel-glue-for-microservices/</link>
        <guid isPermaLink="true">/the-camel-glue-for-microservices/</guid>
        
        <category>camel</category>
        
        <category>esb</category>
        
        <category>service_bus</category>
        
        <category>architecture</category>
        
        <category>micro_services</category>
        
        <category>architecture</category>
      </item>
    
      <item>
        <title>On the Design of Software Organizations - Balancing Autonomy with Governance</title>
        <description>&lt;!--How organizational design has evolved over the years. How autonomy must be balanced with governance. --&gt; &lt;p&gt;With a spurt in the documented history of any field of endeavor, we will begin to discern some recurring cycles of patterns. What was once touted as the next best thing would have been subsequently denounced only to have it revive later like the proverbial Phoenix with even more vigor. This observation is conveyed by the old chestnut about “history repeating itself”. In the software world, with a decade witnessing the kind of events that used to take a century or more to happen,...</description>
        <pubDate>Wed, 22 Jul 2015 00:00:00 +0000</pubDate>
        <link>/on-the-design-of-software-organizations-balancing-autonomy-with-governance/</link>
        <guid isPermaLink="true">/on-the-design-of-software-organizations-balancing-autonomy-with-governance/</guid>
        
        <category>autonomy</category>
        
        <category>governance</category>
        
        <category>agility</category>
        
        <category>conways_law</category>
        
        <category>ddd</category>
        
        <category>management</category>
      </item>
    
      <item>
        <title>De-coupling releases from deployment</title>
        <description>&lt;p&gt;IT industry is all about change. Functionality needs to constantly evolve. You need more content, more products, more promotions and what not. In fact, a static web site is not very interesting in the eyes of its users. It gives the impression that the founders have gone fishing and have left the users to their own devices. Hence software releases are a part and parcel of the lives of all folks involved with IT. In most enterprises, releases are mega affairs. They need planning and a non trivial amount of co-ordination between multiple groups. All teams need to deploy their latest...</description>
        <pubDate>Sat, 11 Jul 2015 00:00:00 +0000</pubDate>
        <link>/de-coupling-releases-from-deployment/</link>
        <guid isPermaLink="true">/de-coupling-releases-from-deployment/</guid>
        
        <category>release_management</category>
        
        <category>development</category>
        
        <category>deployment</category>
        
        <category>devops</category>
        
        <category>business_release</category>
        
        <category>architecture</category>
      </item>
    
      <item>
        <title>What Lewis Carroll can teach us about Web Architecture</title>
        <description>&lt;blockquote&gt; &lt;p&gt;“Why it is simply impassible?&lt;/p&gt; &lt;p&gt;Alice: Why, don’t you mean impossible?_&lt;/p&gt; &lt;p&gt;Door: No, I do mean impassible. (chuckles) Nothing’s impossible!”&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Lewis Carroll, Alice’s adventures in Wonderland and Through the looking glass&lt;/li&gt; &lt;/ul&gt; &lt;/blockquote&gt; &lt;p&gt;As enterprises evolve, multiple portals emerge to facilitate interactions with the end consumer. So before we can say Enterprise Architecture, we would already have a marketing site, a commerce site, a support portal etc. All of these either become sub domains or individual domains in their own right. The consumer is befuddled by these myriad web sites with their own associated styles, fonts, branding and...</description>
        <pubDate>Thu, 18 Jun 2015 00:00:00 +0000</pubDate>
        <link>/what-lewis-carroll-can-teach-us-about-web-architecture/</link>
        <guid isPermaLink="true">/what-lewis-carroll-can-teach-us-about-web-architecture/</guid>
        
        <category>musings</category>
        
        <category>architecture</category>
        
        <category>glass</category>
        
        <category>commerce</category>
        
        <category>content</category>
        
        <category>musings</category>
      </item>
    
      <item>
        <title>On Technical Debt</title>
        <description>&lt;p&gt;Technical debt has been mentioned in multiple blogs. Ward Cunningham apparently coined the term.As a software product starts acquiring more and more features and thence complexity; it tends to degrade in certain ways technically.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;If all potential product features are documented in a product backlog, then technical debt is that part of the product backlog that pertains to the maintainability (as opposed to the functionality) of the product.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;This definition of technical debt captures our understanding succinctly. Accumulating technical debt may be deliberate or unintentional depending on the actual situation. We will talk about some of the different...</description>
        <pubDate>Mon, 09 Mar 2015 16:01:32 +0000</pubDate>
        <link>/on-technical-debt/</link>
        <guid isPermaLink="true">/on-technical-debt/</guid>
        
        <category>agility</category>
        
        <category>tech_debt</category>
        
        <category>refactoring</category>
        
        <category>agility</category>
      </item>
    
      <item>
        <title>On Micro Services Architecture - Old Wine in a new Bottle?</title>
        <description>&lt;p&gt;The Micro Services Architecture has emerged as yet another old wine packaged in a spanking new bottle. Thought Works and Netflix have published this architecture to the multitude with their blogs and frameworks. People have jumped into the bandwagon and have deployed Micro Services for multiple situations. Look at &lt;a href=&quot;http://www.infoq.com/presentations/Micro-Services&quot;&gt;this video&lt;/a&gt; for instance. There are about 3500 person days of work which was divided into smaller pieces and executed using Micro services. It is the old unix style, divide and conquer yadda yadda yadda. &lt;/p&gt; &lt;p&gt;But personally I was still confused. I did not understand how you would orchestrate so...</description>
        <pubDate>Wed, 09 Apr 2014 17:57:12 +0000</pubDate>
        <link>/on-micro-services-architecture-old-wine-in-a-new-bottle/</link>
        <guid isPermaLink="true">/on-micro-services-architecture-old-wine-in-a-new-bottle/</guid>
        
        <category>architecture</category>
        
        <category>micro_services</category>
        
        <category>soa</category>
        
        <category>architecture</category>
      </item>
    
      <item>
        <title>Welcome to Jekyll!</title>
        <description>&lt;p&gt;You’ll find this post in your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_posts&lt;/code&gt; directory - edit this post and re-build (or run with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-w&lt;/code&gt; switch) to see your changes! To add new posts, simply add a file in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_posts&lt;/code&gt; directory that follows the convention: YYYY-MM-DD-name-of-post.ext.&lt;/p&gt; &lt;p&gt;Jekyll also offers powerful support for code snippets:&lt;/p&gt; &lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;print_hi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Hi, &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;print_hi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;Tom&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;#=&amp;gt; prints &apos;Hi, Tom&apos; to STDOUT.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt; &lt;p&gt;Check out the &lt;a href=&quot;http://jekyllrb.com&quot;&gt;Jekyll docs&lt;/a&gt; for more info on how to...</description>
        <pubDate>Sat, 13 Jul 2013 00:01:57 +0000</pubDate>
        <link>/welcome-to-jekyll/</link>
        <guid isPermaLink="true">/welcome-to-jekyll/</guid>
        
        <category></category>
      </item>
    
      <item>
        <title>Opspeak</title>
        <description>&lt;p&gt;It is one of software’s little ironies that most architects would fervently wish to see their software run forever and yet fail to foresee how the system would be maintained after it goes LIVE.&lt;/p&gt; &lt;p&gt;This is where the &lt;a href=&quot;http://www.viewpoints-and-perspectives.info/home/viewpoints/operational/&quot;&gt;operational viewpoint&lt;/a&gt;shines. This view point could gently steer the straying architects obsessed with functionality back on course and ensure that the system maintainability characteristics are handled as well . Operational viewpoint deals with a set of concerns relating to the maintenance of the system in a production environment by the “Ops” folks. Typical questions that need to be considered in designing...</description>
        <pubDate>Tue, 07 May 2013 00:00:00 +0000</pubDate>
        <link>/operational_viewpoint/</link>
        <guid isPermaLink="true">/operational_viewpoint/</guid>
        
        <category>operations</category>
        
        <category>viewpoint</category>
        
        <category>architecture</category>
        
        <category>maintenance</category>
        
        <category>architecture</category>
      </item>
    
      <item>
        <title>On Architecture, System Thinking &amp; the Nazca Lines</title>
        <description>&lt;p&gt;Legend has it that Bill Gates was the first self proclaimed software architect. Then the fad caught on and the rest is history. Everyone wants to now be part of this selective fraternity. So much so that it is hard to fling a brick in an IT unit without inflicting material harm to at least some person who goes around town proclaiming his membership to this esoteric club. It is hard to distinguish between the true cognoscenti and the dumb wannabes. But who is this person? What distinguishes the average Jo Developer from an architect?&lt;/p&gt; &lt;p&gt;I like to think of...</description>
        <pubDate>Thu, 21 Jun 2012 18:43:15 +0000</pubDate>
        <link>/on-architecture-system-thinking-the-nazca-lines/</link>
        <guid isPermaLink="true">/on-architecture-system-thinking-the-nazca-lines/</guid>
        
        <category>architecture</category>
        
        <category>nazca</category>
        
        <category>birdseye_view</category>
        
        <category>musings</category>
      </item>
    
      <item>
        <title>Stevey Can Rant.. I Cant</title>
        <description>&lt;p&gt;&lt;a href=&quot;https://plus.google.com/112678702228711889851/posts/eVeouesvaVX&quot;&gt;Stevey’s Rant&lt;/a&gt; has been making the blogging rounds recently. Everyone and their aged and ailing mothers are talking about it including yours truly of course - not my mom though - with this post.  I like the rant of course along with the multitude. Who can resist reading contemptuous digs on Jeff Bezos or for that matter on Google or Microsoft? Not me.. Like most wanna be billionaires who has to be content with the measly dole that gets meted out to enterprise architects, I have always looked askance at these “rags to riches” guys with their perceived pomposity...</description>
        <pubDate>Tue, 01 Nov 2011 13:08:39 +0000</pubDate>
        <link>/stevey-can-rant-i-cant/</link>
        <guid isPermaLink="true">/stevey-can-rant-i-cant/</guid>
        
        <category>service_orientation</category>
        
        <category>soa</category>
        
        <category>big_tech</category>
        
        <category>musings</category>
        
        <category>musings</category>
      </item>
    
      <item>
        <title>Ecommerce &amp; Java</title>
        <description>&lt;p&gt;I recently spoke at a Java conference in Bangalore where we discussed Java and E-commerce. This is becoming important with the advent of major e-commerce re-platforming efforts in some significantly large organizations.&lt;/p&gt;

&lt;p&gt;I am enclosing the deck that I had used in the meeting here.&lt;br /&gt;
&lt;a href=&quot;/images/2011/08/Ecommerce-Java.pdf&quot;&gt;Ecommerce &amp;amp; Java&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Take a look!&lt;/p&gt;

&lt;h2 id=&quot;comments&quot;&gt;Comments&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;#1970&quot; title=&quot;2011-11-14 09:51:59&quot;&gt;Mridul&lt;/a&gt;:&lt;/strong&gt; Very useful document, Raja. I liked the comparison slides most.&lt;/p&gt;

</description>
        <pubDate>Wed, 24 Aug 2011 00:00:00 +0000</pubDate>
        <link>/ecommerce-java/</link>
        <guid isPermaLink="true">/ecommerce-java/</guid>
        
        <category>commerce</category>
        
        <category>commerce</category>
      </item>
    
      <item>
        <title>On Digesting XML</title>
        <description>&lt;p&gt;One of the earliest uses of XML was for the purpose of storing configuration. It was soon realized that XML constructs are more amenable for specifying nested configurations rather than properties or INI files that were hitherto used for the same purpose. Since I am a confessed frame-workaholic (a term I just coined to denote a person who has a penchant for writing frameworks at the drop of a hat) , I have always been using XML forever to specify configuration for my frameworks.&lt;/p&gt; &lt;p&gt;But how do I go thru this morass of XML configuration and make sense of it?...</description>
        <pubDate>Tue, 26 Jul 2011 00:00:00 +0000</pubDate>
        <link>/on-digesting-xml/</link>
        <guid isPermaLink="true">/on-digesting-xml/</guid>
        
        <category>XML</category>
        
        <category>code</category>
        
        <category>java</category>
        
        <category>code</category>
      </item>
    
      <item>
        <title>EDA and Incremental ETL</title>
        <description>&lt;p&gt;Event Driven Architecture (EDA) is a paradigm that I became familiar with when I was coding the earliest GUI components. The user interaction with a GUI application is modeled as a series of events that the application responds to. There is an “infinite loop” of events which can potentially be engendered by user interactions with a graphical application. The user responds to an application by potentially typing on the keyboard, clicking on certain segments of a GUI (such as a button for instance) with his mouse, hovering over certain regions etc. Individual GUI components respond to these events as they...</description>
        <pubDate>Sun, 17 Jul 2011 00:00:00 +0000</pubDate>
        <link>/eda-and-incremental-etl/</link>
        <guid isPermaLink="true">/eda-and-incremental-etl/</guid>
        
        <category>event_driven</category>
        
        <category>EDA</category>
        
        <category>ETL</category>
        
        <category>architecture</category>
        
        <category>event_sourcing</category>
        
        <category>architecture</category>
      </item>
    
      <item>
        <title>On Project Ramp ups</title>
        <description>&lt;p&gt;As I think back about all the failed projects that I had seen, I recognize one unifying feature about them. They all took too long to ramp up! I am not saying that they did not spend enough time on design or architecture. On the other hand, many of these failed projects spent an inordinate time weighing on alternatives, designing, documenting, estimating the effort and the like. But they failed to recognize one little truth. All the effort expended here is fruitless without code! It is just, as one of my colleagues puts it, “intellectual masturbation” at this point in...</description>
        <pubDate>Tue, 12 Jul 2011 04:59:18 +0000</pubDate>
        <link>/on-project-ramp-ups/</link>
        <guid isPermaLink="true">/on-project-ramp-ups/</guid>
        
        <category>agility</category>
        
        <category>ramp-up</category>
        
        <category>team</category>
        
        <category>agility</category>
      </item>
    
      <item>
        <title>On Estimation &amp; Agility</title>
        <description>&lt;p&gt;I was doing an estimation review recently.&lt;/p&gt; &lt;p&gt;At first blush, I am instinctively uncomfortable about anything that requires a high degree of predictability in software development since that is going to be violated if you are ever intending to produce software that could be deemed useful by the ultimate consumers!&lt;/p&gt; &lt;p&gt;It is exactly like doing the interiors of a house which is an activity that I was partaking of recently. I was engaging some interiors contractors to do the work. Their estimation and invoice depended on a simplification. They merely told me that it would cost me a certain amount...</description>
        <pubDate>Mon, 04 Jul 2011 00:00:00 +0000</pubDate>
        <link>/on-estimation-agility/</link>
        <guid isPermaLink="true">/on-estimation-agility/</guid>
        
        <category>agility</category>
        
        <category>estimation</category>
        
        <category>planning</category>
        
        <category>agility</category>
      </item>
    
      <item>
        <title>On IoC containers &amp; Stateful components</title>
        <description>&lt;p&gt;If we elevate ourselves enough to sit on a figurative perch in the programming world and look down at the applications that are being developed, we realize that Inversion of Control (IoC) containers have most definitely come here to stay. You see more people than ever before proclaiming expertise in programming “Java with Springs” - alluding no doubt to the Spring lightweight container that has now become the de-facto choice to develop most modern J2EE applications. Now it is easier than ever to create components as “Stateless Singletons” and injecting other stateless singletons into them. The whole dependency tree gets...</description>
        <pubDate>Wed, 16 Mar 2011 00:00:00 +0000</pubDate>
        <link>/stateful-components-in-ioc/</link>
        <guid isPermaLink="true">/stateful-components-in-ioc/</guid>
        
        <category>design</category>
        
        <category>DI</category>
        
        <category>Stateful</category>
        
        <category>design</category>
      </item>
    
      <item>
        <title>Calculating percentiles in MYSQL</title>
        <description>&lt;p&gt;I was doing some interesting analysis on percentiles. In the process, I had to put some results in MYSQL and use it for calculating them. I am somewhat fanatical about the usage of select statements without recourse to stored procedures for doing anything in the database. So I was hunting for a “pure select” way of accomplishing this. It turns out that MYSQL does support stored procedure variables without mandating the use of the “create procedure” directive. This, to me, represented the best of both worlds. I wanted to avoid the admittedly dubious pain (that springs out of my personal...</description>
        <pubDate>Sun, 10 Oct 2010 03:53:31 +0000</pubDate>
        <link>/calculating-percentiles-in-mysql/</link>
        <guid isPermaLink="true">/calculating-percentiles-in-mysql/</guid>
        
        <category>sql</category>
        
        <category>code</category>
        
        <category>performance</category>
        
        <category>code</category>
      </item>
    
      <item>
        <title>IOC, AOP - 101</title>
        <description>&lt;p&gt;I had given a keynote in a conference sometime ago, about the Spring framework. It constituted a presentation on the patterns that necessitated the creation of Spring in the first place. I am attaching a slide deck on this. I would add some more material here as we go to elaborate on the content of the deck.&lt;/p&gt;

&lt;p&gt;Here is the deck.&lt;a href=&quot;/images/2010/08/DIAOP.ppt&quot;&gt;DIAOP&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Fri, 27 Aug 2010 01:11:11 +0000</pubDate>
        <link>/ioc-aop-101/</link>
        <guid isPermaLink="true">/ioc-aop-101/</guid>
        
        <category>AOP</category>
        
        <category>DI</category>
        
        <category>design</category>
        
        <category>design</category>
      </item>
    
      <item>
        <title>The Law Of Demeter</title>
        <description>&lt;p&gt;Most of us are familiar (or must be familiar) with the law of Demeter (LoD) as documented &lt;a href=&quot;http://en.wikipedia.org/wiki/Law_of_Demeter&quot;&gt;here&lt;/a&gt;. Basically, the LoD stipulates the principle of least knowledge about the internal structure of your dependencies. Or as in the case of this toilet sign, “no looking at what is happening inside”.&lt;/p&gt; &lt;p&gt;Let us say we have a class A that has a dependency on class B which in turn has a dependency on class C. LoD proscribes constructs of the form b.getC() since these would assume that A has intimate knowledge on the inner workings of B - in this...</description>
        <pubDate>Fri, 20 Aug 2010 04:13:25 +0000</pubDate>
        <link>/lod/</link>
        <guid isPermaLink="true">/lod/</guid>
        
        <category>design</category>
        
        <category>Demeter</category>
        
        <category>Architecture</category>
        
        <category>design</category>
      </item>
    
      <item>
        <title>The n+1 selects problem..</title>
        <description>&lt;p&gt;&lt;img src=&quot;/images/2010/06/n1selects-95x300.png&quot; alt=&quot;&quot; /&gt;A few years ago, one of my numerous job sojourns took me to an interesting project at a telecom company.  I was a developer then - as I would like to think of myself today as well - and had to maintain code that connected to numerous databases and published various services. In one of the C++ classes, the code issued a database query that obtained a set of rows from one database table - let us call it T1. It then looped through the result set and for each one of the returned rows, it invoked...</description>
        <pubDate>Sun, 20 Jun 2010 00:00:00 +0000</pubDate>
        <link>/the-n1-selects-problem/</link>
        <guid isPermaLink="true">/the-n1-selects-problem/</guid>
        
        <category>performance</category>
        
        <category>O(n)</category>
        
        <category>architecture</category>
        
        <category>design</category>
        
        <category>performance</category>
      </item>
    
      <item>
        <title>On Enterprise Architects..</title>
        <description>&lt;p&gt;So I had yet another meeting with an enterprise architect today. We were selling a solution to their company which is one of the top few companies in the world in their professed field of expertise. Let us call this guy John to give him an identity despite the fact that, to me, he looked like Yet another faceless EA who threatened to morph into the background. John brought along someone else whom I would christen Little John. Little John is presumably mentored by John and keeps constantly glancing at John to secure his tacit approval for whatever he is...</description>
        <pubDate>Fri, 18 Jun 2010 18:18:55 +0000</pubDate>
        <link>/on-enterprise-architects/</link>
        <guid isPermaLink="true">/on-enterprise-architects/</guid>
        
        <category>architecture</category>
        
        <category>enterprise</category>
        
        <category>architecture</category>
      </item>
    
      <item>
        <title>App Optimization - Asynchronous Pre-fetching Strategies</title>
        <description>&lt;p&gt;I remember perusing through an article on web services some time ago where the author quips about the similarity between web services and teen sexuality. He said that in both cases, they talk more about it rather than do it and even if they do it they do it pretty bad. A similar comparison can be drawn with pre-fetching.&lt;/p&gt; &lt;p&gt;Pre-fetching is one of those things that sounds almost cliched in that everyone talks about it. But I have seldom seen good implementations. How do we know what to pre-fetch? And when would be an appropriate time for that? Who owns...</description>
        <pubDate>Tue, 18 May 2010 18:30:16 +0000</pubDate>
        <link>/app-optimization-asynchronous-pre-fetching-strategies/</link>
        <guid isPermaLink="true">/app-optimization-asynchronous-pre-fetching-strategies/</guid>
        
        <category>pre-fetching</category>
        
        <category>performance</category>
        
        <category>optimization</category>
        
        <category>caching</category>
        
        <category>performance</category>
      </item>
    
      <item>
        <title>Application Optimization - Design in Retrospect</title>
        <description>&lt;p&gt;Application Performance and endurance tests are a terrible duo. They let a badly designed application fester unnoticed for a considerable amount of time. The development team languishes in the bliss provided by the lack of attention and gains confidence in its ability to slime the ailing application into production. And lo! in one sudden swipe of the blade, these two hack the application into a million pieces!&lt;/p&gt; &lt;p&gt;Good upfront design is the best tool that will stand you in good stead when confronted by this onslaught. But we all know that in the pursuit of functional requirements, we allow everything...</description>
        <pubDate>Wed, 05 May 2010 00:00:00 +0000</pubDate>
        <link>/application-optimization-design-in-retrospect/</link>
        <guid isPermaLink="true">/application-optimization-design-in-retrospect/</guid>
        
        <category>performance</category>
        
        <category>design</category>
        
        <category>retrospective</category>
        
        <category>performance</category>
      </item>
    
      <item>
        <title>Perf Analysis - Browser Caches &amp; Response Code 304</title>
        <description>&lt;p&gt;With no offense to the favored species, here is a bad joke about blondes:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Question: Why is it a bad idea to give the weekend off to a blonde?&lt;br /&gt; Answer: Because you have to retrain her on Monday.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;But browsers, unlike blondes, learn from experience and keep these learnings for sometime. Which means that if a browser has taken the time to download a certain URL, then it tries to keep the resource in its cache for later retrieval if the user has requested for that identical resource during a certain period of time so that it...</description>
        <pubDate>Thu, 29 Apr 2010 00:00:00 +0000</pubDate>
        <link>/perf-analysis-browser-caches-and-response-code-304/</link>
        <guid isPermaLink="true">/perf-analysis-browser-caches-and-response-code-304/</guid>
        
        <category>performance</category>
        
        <category>code-304</category>
        
        <category>caching</category>
        
        <category>performance</category>
      </item>
    
      <item>
        <title>Perf Analysis - Web Layer &amp; Browser</title>
        <description>&lt;p&gt;This article delves more into the performance analysis exercise that I alluded to in a previous &lt;a href=&quot;/performance-analysis-of-a-web-application/&quot;&gt;article&lt;/a&gt;. We begin our analysis with the web layer which serves as the entry and egress to our core application. Does your web layer buckle under load as the spider’s web here seems to have ? &lt;img src=&quot;/images/2010/04/web-intact-300x208.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; &lt;p&gt;Tweaking the web layer is often left to the idiosyncrasies of the infrastructure team. When was the last time that as an application architect, you looked at the browser behavior or the httpd server settings?&lt;/p&gt; &lt;p&gt;Or the caching behavior of your JSP pages?...</description>
        <pubDate>Wed, 28 Apr 2010 15:53:48 +0000</pubDate>
        <link>/perf-analysis-web-layer-browser/</link>
        <guid isPermaLink="true">/perf-analysis-web-layer-browser/</guid>
        
        <category>performance</category>
        
        <category>browser</category>
        
        <category>web</category>
        
        <category>performance</category>
      </item>
    
      <item>
        <title>Performance Analysis of a web application</title>
        <description>&lt;p&gt;Application performance testing is just about the last thing that we may have to do before we could certify an application as production ready. Or it may be just about the last thing we do before we decide to discard the&lt;img src=&quot;/images/2010/04/the-tortoise-and-the-hare.jpg&quot; alt=&quot;&quot; /&gt; app in the dumpster. This may be a loud roar or a death knell depending on what turns up. Or it may be a combination of both. I was perusing a forum the other day where the questioner asked about the appropriate time for application optimization. I have to concede that I was pretty astonished at...</description>
        <pubDate>Sat, 24 Apr 2010 05:10:25 +0000</pubDate>
        <link>/performance-analysis-of-a-web-application/</link>
        <guid isPermaLink="true">/performance-analysis-of-a-web-application/</guid>
        
        <category>performance</category>
        
        <category>web</category>
        
        <category>browser</category>
        
        <category>performance</category>
      </item>
    
      <item>
        <title>Bug Driven Development</title>
        <description>&lt;p&gt;Some time ago, I was exposed to a project which entered UAT with over a thousand bugs. Obviously, the project itself is not the epitome of perfection. But the sheer number begs some fundamental questions about the assertion that the project was even deemed as code complete to enter into UAT. In general, it has been my observation that software projects get reactive when deadlines get squeezed. Everyone is in a perpetual state of hurry to head to the next milestone - be it requirements completeness, UAT readiness or even production readiness. In this furore, thoroughness takes a back seat...</description>
        <pubDate>Wed, 21 Apr 2010 00:00:00 +0000</pubDate>
        <link>/bug-driven-development/</link>
        <guid isPermaLink="true">/bug-driven-development/</guid>
        
        <category>musings</category>
        
        <category>pitfalls</category>
        
        <category>planning</category>
        
        <category>bugs</category>
        
        <category>musings</category>
      </item>
    
      <item>
        <title>Domain Model and Application Contracts</title>
        <description>&lt;p&gt;We had spoken &lt;a href=&quot;/on-program-contracts/&quot;&gt;before&lt;/a&gt; about the application contracts. As we define components, it is imperative that we spend sometime in designing the interfaces that they expose. Let us go back to the diagram that we used when we designed components.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;/images/2010/03/interface_modules1.png&quot;&gt; &lt;/a&gt;&lt;/p&gt; &lt;p&gt;In the other post, we had decided that the best way to abstract the UI and service components is via the use of a contracts module that contains the interfaces exposed by the services layer. Where does the domain model fit into that picture? That would be the theme of this post.&lt;/p&gt; &lt;p&gt;The domain model represents...</description>
        <pubDate>Thu, 18 Mar 2010 00:00:00 +0000</pubDate>
        <link>/domain-model-and-application-contracts/</link>
        <guid isPermaLink="true">/domain-model-and-application-contracts/</guid>
        
        <category>domain</category>
        
        <category>api</category>
        
        <category>contracts</category>
        
        <category>design</category>
        
        <category>design</category>
      </item>
    
      <item>
        <title>On Program Contracts</title>
        <description>&lt;p&gt;Contrary to possible expectation, this post is not about signing contracts between companies. It is the contracts that must exist between the various modules within an application. Any application would have a lot of classes that implement various parts of its functionality.&lt;/p&gt; &lt;p&gt;The interface based design principle stipulates that implementations must be fronted by an interface. This would facilitate a loose coupling between an implementation class and its consumer.&lt;/p&gt; &lt;p&gt;Let us say that the implementation class provides a business functionality which is exposed as a service. It resides in the services module. The consumer is a UI class that stays...</description>
        <pubDate>Sun, 07 Mar 2010 00:00:00 +0000</pubDate>
        <link>/on-program-contracts/</link>
        <guid isPermaLink="true">/on-program-contracts/</guid>
        
        <category>design</category>
        
        <category>api</category>
        
        <category>interface-based-design</category>
        
        <category>design</category>
      </item>
    
  </channel>
</rss>
