My Personal Blog

Experiences. Thoughts. Ideas.
  1. A recent conversation happened in my workplace about how one defines a framework. More often than not, software developers and architects tend to call their code as "frameworks" if it is reused (or in many cases, they they can potentially be reused without any proof) across multiple applications.
    A quick search through Stack Overflow provided an explanation I thought was helpful.
    When writing code:
    • eventually you discover sections of code that you're repeating in your program, so you refactor those into Functions/Methods.
    • eventually, after having written a few programs, you find yourself copying functions you already made into new programs. To save yourself time you bundle those functions into Libraries.
    • eventually you find yourself creating the same kind of user interfaces every time you make use of certain libraries. So you refactor your work and create a Toolkit that allows you to create your UIs more easily from generic method calls.
    • eventually, you've written so many apps that use the same tool kits and libraries that you create a Framework that has a generic version of this boilerplate code already provided so all you need to do is design the look of the UI and handle the events that result from user interaction.

    Another reference puts this in a visual context:

    Additional thoughts

    One interesting point made in the second post is that a telling (but not necessarily the only) characteristic of a framework is that it has Inversion of Control (it calls the app than the other way around). Frameworks tend to do a lot of the 'plumbing' work that is necessary for a software application while the developer needs to focus only on extending or leveraging the work at the right places (knowing where to put the faucets, in the plumbing analogy).

    What is probably missing in this picture is the notion of a "service", but in this context, it can simply be taken as a more abstract form of a "library", as it possesses the same characteristics.  If a use of a library spans across multiple platforms and technologies, it can potentially be abstracted further as a service.

    The description below also nicely conforms to the "three-box principle" that I learned a long time back, which states that you cannot get to libraries / tool kits / frameworks without having done or at least thought through multiple (at least three) implementations.

  2. Recently, I came across this talk through my LinkedIn. The talk was given at the Adobe Symposium (2016) by Mr. Jones Lukose, a Senior Information Management Officer at theInternational Criminal Court of Justice at Hague. My comments are below the video so as to minimize any bias before you get a chance to view it first. I do request that you view the video first before reading further so as to get the appropriate context.



    The talk, to me, is a great example of how powerful a good story can be in engaging audience and making the message 'sticky'. When the talk started, you can see the audience generally restless or bored - likely due sitting through various sessions. Even a couple of ice breakers that the presenter made seemed to only provide some awkward silence. But then, the moment he says "I want to tell you the story of three buttons", the mood suddenly seems to change. It is not a boring lecture anymore, but a 'story'! You can see the audience suddenly paying attention to the video and get fully engrossed subsequently. The thick accent the presenter has doesn't seem to bother anyone - because the story was so compelling and engaging.

    The crux of the presentation itself was simple, but to the point. A good Information Management system should have three things at its core:
    1. It should preserve information
    2. It should provide value around the information that is managed
    3. It should facilitate orchestration around the information

    I felt the choice of words was important because it goes beyond simply boiling it down to "storage", "insights", and "collaboration", as typical marketing jargon is prone to do. Each goal goes much beyond these catchphrases and more importantly, are from the perspective of the end user - a critical component that is often missed in ECM implementations.

    I noted down the following takeaways from the presentation. Obvious as they may be in hindsight, they are most often ignored in the heat of getting a project completed:
    1. Listen carefully to your end users: We often tend to have preconceived notion about what the customer wants or can have, driven by either corporate policies, vision, technical limitations, or what have you. But at the end of the day, if the system does not do what the end users want (may not be your direct customers), it will not get adopted. ECM solutions often suffer from this malady. We tend to look at various features without getting appropriate insight into the context in which those features are used to fully appreciate their usefulness. As a result, a solution gets deployed that is not aligned with the user's flow.
    2. Develop guiding principles to achieve scale: Scalability is not achieved on the first day. It is achieved over time. However, in order to support scalability it is more important to establish a set of guiding principles that will govern the architecture than to anticipate and devise and architecture that will potentially be scalable from the start. The guiding principle that the presenter created - "every feature should build trust" - is a great example. It is broad enough to be applicable across various scenarios, while being specific enough to be able to test the outcome, and pithy enough to be a principle.
    3. Pause: Whether it was natural or intentional, the presenter paused throughout his speech on various occasions, especially during exciting points in his narrative that provided a cliffhanging feeling. We often are so compelled to get our message across that we forget to pause and give a moment for the listener to ingest. A pause builds expectation, excitement, and oxymoronically, momentum.
    4. A good story is more powerful than a great message: If the presenter had gotten on the podium and started talking about the three critical features of an Information Management system, it would've been a snooze fest. Instead, he wrapped the message into a story and pulled the audience along for the ride. When he narrated the story, we were walking in the corridors of ICC with him. WE could visualize the judge sitting motionless in front of a monitor that was all wrapped up. WE were engaged and ready to listen to whatever he would say next. This made the story sticky.
    5. Keep it concise: The 30 minute presentation was just about the three bullet points mentioned earlier. Nothing more. This gave enough room to build a story around the message. We often tend to cram the time we get with a number of messages that we try to convey that it becomes an information overload for the audience. At the end, none of the messages end up registering in their memory. It is far better to let them remember a few things than attempt many and leave with none.

    I hope you enjoyed the talk as much as I did.

  3. Within Mahabharata - one of the greatest Sanskrit epics - there is a verse that describes the epic itself:
    "Whatever is here, is found elsewhere. But what is not here, is nowhere else."
    While surfing through channels I came upon the Disney program Lab Rats - Episode "Bionic Showdown" (per Wikipedia). The key premise of the story is about a billionaire who has three bionic kids - one with intellect, one with strength, and one with agility/speed - and a regular kid who is the traditional "good-at-heart but full-of-pranks" Disney staple. In this episode there is an extra bionic - who is later revealed to have the combined skills of all three - built by the billionaire's evil brother and is used to try to destroy the other bionics.

    As the plot unraveled, I realized the strong similarities with the good old Mahabharata. Here are the key ones just based on this episode:
    1. The three bionics are similar to Yudhishtra (intellect), Bhima (strength), and Arjuna (speed/agility)
    2. The billionaire and brother are akin to Pandava and Dritharashtra (good and evil fathers) - technically the evil brother can be compared to Duryodhana instead of Dritharashtra, but we will set that aside for now.
    3. The android is equivalent to Karna - having strength of all the good bionics combined, but sides with evil
    4. As a bit of a stretch, the goofy kid can be compared to Krishna - he doesn't fight by himself but assists/helps/boosts morale of the bionics and is there at the pivotal moment to turn things around
    Now, I am not necessarily suggesting that the writers based the characters off of Mahabharata or were 'inspired' by it - I don't even know if they know that an epic called Mahabharata exists. I am also aware that it is easy to draw similarities in hindsight where none exist - like a Nostradamus 'prediction' of things that happened in the past.

    However, what I do want to bring attention to is the notion that a seemingly unrelated story still seems to have strong similarities to aspect of Mahabharata - keeping true the quote at the beginning.

    What also interests me is the possibilities that can arise if we were to do it the other way around. One of the most common complaints against the new readers of Mahabharata, or any other Sanskrit literature for that matter - is about how dated the situation, text, plot, and characters are. New generation of kids don't relate to names like "Yudhishtra" or "Yajnavalkya" or "Nachiketas", even though each name has been carefully crafted to provide insight in many cases to the character itself. Nor do kids relate to the story of kings of bygone era talking about caste and arrows and chariots (even though they interestingly don't have issues with similar concepts around Disney characters). Nor do kids relate to the complex moralities embedded within each story.

    Imagine that if instead of finding similarities from a Disney story back to Mahabharata and then vainly posting in Facebook about the greatness of Mahabharata, this can be made more constructive. What if one is more proactive instead and read the epic carefully and then translate it to the modern world in a way that relates to kids without losing the story or the plot? If a minute component of Mahabharata can lead to a successful multi-season episode in Disney, imagine the number of episodes that can be created from all of Mahabharata! Truly, it will be endless.
  4. Yesterday, I had the pleasure of attending a Mandolin concert by maestros U. Srinivas and U. Rajesh. It was three and a half hours of sheer bliss with the brothers belting one soulful rendition after another of various classical Carnatic compositions.

    Of course, even bliss has its moments of despair and this was no exception. The concert was marred by periodic interruptions by enthusiastic listeners who wanted the brothers to play their favorite song.

    I have been to a few concerts in USA and this is a recurring event. The concert begins and the organizers provide some ground rules only to be flouted within 30-45 minutes into the show. Given the nature of the concert and where it is being played, it is reasonable to assume that most, if not all, attendees were well educated, poised, and professional - at least till they get into the concert hall. Then all hell breaks loose.

    The concert started with a beautiful rendition of a song in Kamas, followed by "Mahaganapathim" set to Gowla (something I haven't heard before). Then the maestros kicked it into high gear by rendering a song in a raga I had never heard of (hope to remember soon). It was a mesmerizing experience. Then came trouble.

    As soon as the song got over, an 8-year old kid came with a small chit - probably a printout of the concert ticket. His parent (or grandparent) wanted the musicians to play "Nagumomu" - a popular Carnatic composition by Saint Thyagaraja. The U brothers - probably too nice for their own good, and mos likely not realizing the gravity of what was to come - accepted the requested and duly played the composition beautifully and got claps all around.

    From then on, the break between every other song gave way to a 6-year old, a 10-year old, the 8-year old again - this time with a bigger piece of paper - and finally off with a 1-year old who had just learned to walk - all asking for one song or the other.

    It was like watching Katrina Kaif suddenly popping up in the middle of a suspense thriller when the hero is about to unmask the villain and singing 'Sheela ki jawani' - it has no relevance to the theme, undermines the intelligence of the story writer, and all for satisfying the 'popular sentiment'.

    The height of the farce was the decent looking gentleman with an equally decent looking lady two rows in front of me jumping the row before him, running to the stage, and deftly vaulting up the stage to get to the now-stunned musician to give his request. I don't know if he was just being passionate or was trying to impress his lady - the result was an act of extreme stupidity.

    Unfortunately, the event organizers were too tame to control this jarring interruption to the event they had painfully put together. Having had the experience as an attendee of such events, I would like to propose to the organizers to announce the following before the start of the event AND after the second song (for the stragglers):
    1. Please do not 'request' musicians to play a song - by chit, by shouts, or by screams. 
    2. The musicians are intelligent and are quite capable of creating an agenda that will suit their audience.
    3. The audience want to listen to the performer's playlist and not the 'personal playlist' of any attendee. If they are so inclined, they can buy and listen to a CD
    4. Anyone who tries to get to the stage before the end of the show will be summarily removed from the venue - the person or the family if the offender is a child.
    5. A camera flash is functional only up to 3 meters (10 yards) from the camera. If you don't know how to turn the flash off and are intent on blinding the eyes of the performers, RTFM before coming to the concert.
    6. Limit your photography/videography to no more than 5 minutes an hour. Sure you want to keep some memories of the concert, but don't turn it into a bootlegging event. You know that you are not going to see this video you are going to take EVER again. Don't kid yourself.
    To the organizers, please keep a 'bouncer' even if it is an old grandfather on both sides of the stage to prevent people from simply walking up to the musicians.

    Ideally, request the musicians and set aside 15 minutes at the end of the program to play 'thukkadas' of various popular songs to satisfy the passionate elite who resort to these tactics.

  5. One of the chapters that I remember reading in History class is the "Bhakti Movement" between 8th and 12th centuries in India. During this time, India was at it is peak of productivity in terms of religious exposition, philosophy, and spirituality. The movement was made by three great saints, who in turn, founded three interpretations of Hindu Philosophy - Advaita(monism) propounded by AdiSankara, Vishishtadvaita(qualified monism) propounded by Ramanuja, and Dvaita(dualism) propounded by Madhwacharya.

    Though there are numerous Gods depicted and worshipped within the umbrella of Hinduism, fundamentally the Vedas (scriptures) emphasize that there is only one God and he is the Creator (interestingly "theory of evolution" seems to be weaved within the concept of a "Creator", as I mentioned in an earlier post). With that as a given, various scholars since have tried to understand the relationship between that one God and us humans by way of interpreting the vedas and supplementary documents such as the upanishads (appendix to vedas), ithihasas (epics), and puranas (mythologies).

    Personally I feel that this is the most distinct feature of Hinduism compared to most other religions, where the focus is not just on how God wants humans to behave, but more on what the relation between the two is. Rather than taking the "God is the Creator" concept for granted, it tries to probe further - Who is He? Is He the same as me? If not, how are He and I related? What makes Him a Him and me a me?

    In programmatic terms, I would say that Hinduism focuses on the class hierarchy (sub-class, super-class, abstract class) as well as interfaces (behavior of a class) while others tend to elaborate only on the interfaces! You need to have a strong foundation of your class hierarchy first before you can start extending the behavior by means of interfaces.

    While eminent scholars over time have provided a number of interpretations what the vedas describe as the relation between God and human, three are the most popular enough to be in history text books. I have always held a simplistic summarization of these three philosophies:
    • Advaita says God is the same as human (in other words, God lives in humans or when humans die they merge back with God)
    • Vishishtadvaita says humans are not the same as God, but by devotion throughout life, they can eventually become one with God after death (moksha)
    • Dvaita says God and humans are always distinct and never the 'twain shall meet.

    This suited me well for the last 20 years. However, there is really no pizzazz in this explanation. It sounds, well, as dull as a history textbook! Recently, I received an email forwarded to me by my dad that provided a much better, more fun, and a more profound definition. This was by Sri. Chandrasekharendra Saraswati (fondly called Periayaval - not to be confused with Periyar - or the Elder One), who I personally consider to be the last "true" saint that India has seen, and who himself was the head of an Advaita institution.

    He had an inimitable quality of explaining complex philosophies in a way that commoners can understand. He was down-to-earth, unassuming, and most importantly focused purely on spirituality without getting into politics - a quality that no one else seems to have nowadays.

    Here goes his definition (interpretation from Tamil to English by me) of the three philosophies in the form of 3rd grade Math!!

    According to Advaita, the relationship between God and Human is like the relationship between the side and perimeter of a square. Like how the perimeter of a square is always four times the side, Advaita preaches that if you follow a proper path, then you WILL reach God (or become one with God). There is no ambiguity there.

    In case of Dvaita, the relationship between God and Human is like the relationship between diameter and circumference of a circle. Unlike a square. the circumference is PI times the diameter. The issue here is that PI is an irrational number and cannot be accurately defined. Likewise, Dvaita says that no matter how much humans try to be close to God or be one with God, it will not happen and that there will always be a difference, however minute. The diameter is a whole number in itself and the circumference is another whole number by itself, but the relationship between the two cannot be defined absolutely. With this established, Dvaita philosophy then goes into the details of the inequality of the relationship and defines the various intermediary stages between God and Human (called 'tAratamya'). This can be roughly translated into the precision of PI.

    Lastly, Vishishtadvaita takes a midway (similar to Aristotle's Golden Mean). It says that the relationship is like a square being perceived as a circle. By default, Humans perceive their relationship to God as that of a circle's diameter and circumference - that the two can never be the same. As they gain enlightenment by devotion, the confusion is resolved and the "square" nature of the relationship is revealed at which point, the enlightened person becomes one with God. The thought here is that humans can become egoistic if they believe that they are God (Advaita) and can get disillusioned or depressed if they believe that they can never reach God (Dwaita) and hence a middle path is proposed.

    The analogy here is that each individual has a distinct identity by default, but when they get into a train, they all become "passengers" for the conductor, thereby losing their individual identity and becoming a part of a bigger entity.

    A simple, but powerful explanation! What I love even more about this is that he leaves enough room for the three schools of thought to claim superiority over others - an apolitical person but with a perfect political speech!