Search This Blog

Monday, January 30, 2017

Frameworks, Libraries, Services, Platforms

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.

Tuesday, January 24, 2017

"Three Buttons" of Information Management


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.

 

Observations:

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.


Saturday, December 28, 2013

Mahabharata and Disney Lab Rats

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.

Monday, May 06, 2013

The Genius of U.Srinivas-Rajesh and the Stupidity of the Indian Elite

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.