Friday, September 30, 2011

English Language Snobbery in India - Why some people consider themselves as "superior" ?

I have come across a kind of snobbery circling around one's English language skills in India. Some times , people tend to fallaciously believe that mastery (relative ) of   the English language indicates a superior level of intellect. Of course , due to sociocultural reasons , English is one of the best thing to have happened to this world. 

It all starts in their childhood. Some people tend to have their  language genes "straight" and show superior verbal and writing skills, compared to the average. Since the stuff has given them some competitive advantage , they tend to consciously put extra effort to improve their fund of words and skills in sentential composition, to gain some kind of self-gratification.  Most of their peer circle will christen them as "Shakespeare".

I like such people because, they enhance our linguistic skills. Too much love for anything is counter productive. In their quest to improve their language skills, they hit the utility wall (Law of diminishing marginal utility applies here ). The poor "Shakespere" does not seem to realize it.

These people would have gained a lot were there was a law which invites capital punishment for your gramatical mistakes and poor sentential composition.

What they tend to forget is that language has got other purpose as well. Every language is a communication tool as well as a representational tool. The laws of Grammar are there to bring
down ambiguities while communicating your ideas. The human mind can easily  disambiguate some stuff based on the context and past experience , even if there are some flaws in the grammar.  Since Languages do evolve over a period of time , even gramatic rules are not stationary. These "Shakespeare's" will cling on to the classical usage ( so-called King's English ) and attack anyone who has forgotten to put a comma here or full stop there. Those stuff are really important , But , these snobs put their "rage" in an insulting manner. For them , first impression is the best impression. For a mistake you might have committed long back , they will still accuse you about your lack of language skills.

Among the software professionals , I have come across a pattern where people with good technical skills slowly focus on the content and for them ,  grammatical correctness is a secondary concern. When you communicate your ideas ,  context and the content also gains equal importance. But, these shakespeares won't spare us there. ( I have been a victim of such accusations even today ).

Indeed , English language gives you a better life ( at least in India ). But, it is true upto a point and slowly "meat"  (content ) gains importance as the texture ( communication ).

I have not been able to tackle these "Shakespeares" in my midst because of my fear of loosing their companionship. Of course , they have helped me to improve my language skills. ( Had it not been for them , I would not have been able to blog ! ).

This is a case where "English snobs" are people whom you are forced to live with , despite your discomfort !


Thursday, September 29, 2011

Discovered (for myself ) a new Singer - Raghu Dixit

When I commute for work in Bangalore , one thing is for sure that you will be bombarded with Kannada filmi music. You are forced to "Invest" your ear to listen to this. Slowly, I started liking the Kannada film songs.

The first series of songs I liked were  "Shiva Anta Hogittude" from Jackie (My ten year old son can dance that ) , Jackie title music , songs from Sanju Weds Geetha etc.

Couple of times , I have heard a good song whose lyrics goes like "Poojege Bande Mahadeshwara" . I felt it to be a devotional song converted into a rock song. I searched youtube and came to know that the song is from the movie "Psycho". I liked the video. The video features Raghu Dixit, a cool singer. I heard couple of his other songs as well.

You can enjoy the song @ http://www.youtube.com/watch?v=GSmggknxQxo


Computer Programming For Better Cognition

Most people start Computer Programming due to academic compulsions or from compulsions to make a living . Because of a booming services economy , most of the people in this category were successful in having a better quality life through Computer Programming.

We have contempt for anything which you do routinely. Most software professionals hate Computer Programming for this very reason.

Here , I am going to suggest some reasons which will help you to have a much richer life through Computer Programming. In my parlance , "Richness" means a life with Awareness.

At first , Computer seems to solve any problem which we can devise algorithms for. Wrong !. There is something called Algorithmic Complexity ( Big-O stuff ) which should be linear , quadratic or cubic at the most for having a working computer program.

Try to find possible permutations of  "Quick Brown Fox Jumps Over The Lazy Dog". It is easy devise a Permutation algorithm , But, this program will take ages to execute.

"Most of Combinatorial optimization problems are not tractable". This shows the complexity of the world and inability of humans to cope up with things around. In a way , this shows the limitations of  our innate intelligence.

How to come out of it ? We go for something called Randomized Algorithm to have a close enough solution to our problems. Such solutions are not good , if we are aiming for a deterministic solution.
Large class of problems in finance , supply chain/logistics and rendering are solved with this approach.

Another paradigm which we can use is Genetic Algorithms and It's variational cousin Genetic Programming. They borrow ideas from Biology to model problems as String ( Strings generated out of finite alphabet. From a reductionist perspective ,  humans are strings composed of alphabets A,C,T,G ) and by applying Genetic operators Iteratively converge to a good solution. ( It does vindicate Darwin's Theory of Evolution by natural selection ). Lot of problems in Scheduling , VLSI design are solved using this algorithm.

There are large class of problems which are not computable as well. So, we humans are vulnerable to lot of risks because of lack of understanding about the universe. Exploring these Computer Programming models will help you to understand the complexity of this world in a better manner. You will become good at Mathematics , Biology , Problem Solving and Analysis of issues.

My personal experiments to learn these stuff   have made me a better(?) human being . It has helped me to analyze my own stupidity , biases and other fallacies. These issues convinced me that as an Individual , my cognitive ability cannot process all the variables to take the next decision.

Snobbery nation !

I have not seen any Indian who has not been a "victim" of snobbery, so far. If all of them are facing it , it automatically implies that we are also contributing to this mess. Inadvertantly , we are snobs as well.

Snobbery comes from ignorance !

Of course , all men are not equal. But, earth is a closed system and there is no escape from this. A smartie and a dumbo are equally vulnerable from physiological survival point of view.

Most snobs have some traits in common

          a) They are self centric  ( or self obsessed )
          b) They lack respect for others ( I am Ok , You are not Ok )
          c)  They lack broad perspective and human values.
          d)  They most probably are in a silo
          e)   They are cocksure ( border line between confidence and cocksureness is narrow )
          f)    Their parents might be Snobs themselves
         
Snobbery is a moral consequence of India's Economic growth which spawned lot of neo-literates ( semi baked knowledge ) and neo-rich ( people who suddenly got disposable income )

Wednesday, September 28, 2011

I chanced upon a Company Website !

A friend of mine happen to mention about a company in Infopark (Kochi) which is into the Mobility domain. He came to know about the company through his network. This was last week and once again name of this company popped up in a different context. (This time , I was discussing lack of SSL (TLS ) library  support while developing iPad applications. Recompiling OpenSSL is an option. It is bulky !)

Today , I googled to find the company website and was able to locate the site @
http://www.rapidvaluesolutions.com/blog/ (Google took me to their blog site )

I read some high quality  articles there. I liked the Windows 8 vs Apple iPad article and found Native apps vs HTML 5 development article to be thought provoking. ( My personal belief is that developing
hybrid apps is also a good  option. Use Web browser controls (UIWebview in iOS ) in native app to write most of the  UI in HTML 5. Ease of HTML/CSS and power of the platform APIs in one go. )

I suspected that articles might have been written by professional ( technical ) writers or management consultants. Out of curiosity , I just browsed the management team page. It is run by erstwhile management consultants and technical consultants ( Their focus is though on product development  )


I am looking forward to a day where some people who got their employment there, starting similar ventures in future. This can put Kerala up in the IT value chain.



How do you come out of Technical difficulties while developing Software ?

Recently , I happen to chance up-on a person who is stuck up with a programming problem. Since there were not much people  in his friend circle (or family circle )  working as a software professional , It has been a precarious situation for him..Some who do work are in a different sub-domain.  ( the problem of specialization haunts him ).

Being from a remote village , he does not have much social skills. If you take a look around , you can see hundreds of them  !.  ( I am speaking about , Indian context )

Here are some methods to rescue yourself.

a) Google it !
         Only  problem here is Google spits matches to what you key in (Garbage In. Garbage Out ). You should learn to control the Google site !.

b) StackOverFlow
         Browse through the questions over there. Do post your questions ? Here also , you need to slowly master the craft of putting the questions in a right manner.

c) Discussion Forums
         Join some Discussion forums. Sites like CodeProject , CodeGuru are excellent discussion forums.

d) Google Groups on the subject

e) Join a Local mailing list or user group
            K-mug (http://k-mug.org ) for people from Kerala ! . Such local groups might be there everywhere.

f) Read articles from various sites

g) Buy some books !
            Very important.

h) Go to standard documents . For everything there is a standard.

i) Go for technical events like User group meeting , Barcamps etc.

j) Network with people in the similar domain (and situation ).



Tuesday, September 27, 2011

Programming Interview Question books

In the market , there are a new breed of book(s) which helps people to attend programming interviews in a confident manner. These books does server a purpose for the people who already knows their subject. It enhances their knowledge for sure. 

It is rumored that most of the interviewers in  a famous Seattle based company uses a particular book as a reference guide for their Interviews.

How does this process helps a company which develops products based on algorithms and other deep fundamental topics in the computer science where mathematical sophistication is also necessary?.

The simple answer is deep stuffs are done by PhD's and Professors . These books help to train programmers to better understand these smarties.

One thing is for sure , you are compelled to read it . Otherwise,you will lag behind the people who have peeked it !.






Risk management vs Fairness

I recently came across a situation where employee of a company was evicted prematurely after he has submitted his resignation.

It was , like "we have been waiting for your resignation so that we can terminate you !".

The company tried to persuade the person to  stay back. Moment they realized he is not going to , they evicted him by paying severance money.

I investigated the cause and most probable reason could be the "clout" this person had with the client ,was perceived as a risk by the company management.

The Risk was spotted by a manager who is also leaving the company ! . He showed more concern for the Kingdom than the rulers, even when he is also deserting.

In the name of risk management , Fairness was swept aside !.

Monday, September 26, 2011

Idiomatic C++ (aka C++ ) vs Pragmatic C++ ( aka C/C++ )

Having started programming in the C era , most of my generation approached C++ as a better C. That paid rich dividends where we could leverage existing code and incrementally learn Object Oriented Programming and Generic Programming in a phased manner. Generic Programming boiled down to
usage of Standard Template Library.

Recently , I came across a code base where they have used idiomatic C++ constructs. They have got strict guidelines for documentation , error handling etc. They have used most of the idioms from herb sutter, Andrei Alexandrescu , Scott meyers etc. The code uses C++ template mechanism and C++ template meta programming as well.

This is a case where people who are smarter than me , focused in one language ( C++ and at max bindings to other languages ) , has read all the standard literature and are true practitioners !.
Initially , I felt like being asked to write a novel (done by novelist ) to a Journalist. (Both juggle words ,  but former seems to be bit above !. No offence , intended )







Saturday, September 24, 2011

Windows Runtime - COM is back ! , I am having smiles !

I happen to hear from a friend of mine (Mathew, from Kochi ) that Microsoft is unleashing a technology called Windows runtime and it is also named as "Don Box's Revenge". He also mentioned that COM is making a comeback.

That means C++ is back as an application programming language ?!

I first encountered the term COM from David Kruglinski's Inside the Visual C++ 4 book. He had given description about COM in his appendix using a simulated COM interface involving space ships etc. I thought , why they are trying to do things in a complicated manner when easier ways are available. Kruglinski's book was a MFC book and it talks about Automation ( IDispatch ) and MFC's CCmdTarget class ( which encapsulates IUnknown ). This was in the year 1996.

For the next two years , I struggled with books like Inside Ole ( Kraig Brochshmidt ) , Inside COM ( Dale Rogerson ) , countless articles ( I remember Crispin Goswell's COM programmer's cookbook and an MSDN article called "CPP to COM" )  and finally Frank E Redmond's "DCOM book " gave me the click point which gave me the COM nirvana.

I was the first and to my notion only person who has taught COM as a course in the state of Kerala (in the year 1999). I designed , delivered a course for then nascent Nest Cyber Campus in the year April, 1999. I started with a C++ class and gradually moved the students to COM. This was really successful.

From 1998 to 2001 , I was regarded as a COM guru which gave me good fame , couple of good job offers and some money through Consulting. The arrival of ATL (reached critical mass during Visual C++ 6 ) boosted my credentials because people were new to templates , COM , Multithreading .

All things have to have an end , so the saying goes. People who cannot navigate COM territory drifted to GNU Linux programming or Java Platform. Java implemented most of the features at the language level compared to COM's technology level offerings. Visual basic and Borland's Delphi helped people to write COM objects fast. But, Visual Basic's appartment model threading forced developer's to choose ATL as the only mechanism to write Component's which can run at the Session scope or Application scope of Active Server Pages ( ASP ).

Then , C# arrived on the scene. C# had all things Java and more !. C# edged out C++ from the application programming landscape and people who resisted the change were in for some kind of career crisis. Finally , I also moved to C# ( "You made me a Communist" saga ) and mentioning COM in public was heavily crisized by people around me. Then, it was Managed code nirvana all around. Ocassionally , I have written a Visio Pluggin or Outlook addin using COM/C++. Finally , I wrote an Open Source compiler ( http://slangfordotnet.codeplex.com/ ) in C# to silence my critics.

After hearind about Windows runtime , I read couple of articles and saw a video from Channel 9. The COM is back with a bang. All the Windows runtime objects implement IUnknown and Introspectable ( new name for venerable IDispatch ) . Windows runtime is mix of COM runtime and CLR run time. It seems to use CLR meta data format for native components as well.

Then they use some thing called Language projection ( fancy name for Language mapping ) to map meta data to programming language constructs. As per the diagram , C++ projection is native mapping , VB and C# through the CLR and Javascript through Chakra runtime.

When I reached back to Kochi this weekend , I ran to my book shelves and spotted my worn out copy of Don Box's Essential COM and read it ! .  

My C# friends are pissed off and this has given me some kind of pleasure !!






Thursday, September 22, 2011

"Coolie Programmer"- a fresh look !

In the late 90s , there was a Polish Born Swedish Naturalized Manager , to whom I was reporting to for a period of three years. He was no oridnary manager and he has written an Electronic CAD product for Windows in the 1991/1993 time line as a solo programmer. He is one of the best Programmer I have come across till date. He used to write the bulk of the code for the application and I was instrumental in re-engineering the product's graphics  engine for 32-bit Windows.

At times , when I used to "cheat", He used to utter a phrase , "Do not behave like a Coolie Programmer.".
I had a dislike for that usage back then and I used to quip to myself that compared to other programmers
in my cirlce , I have done a lot ( like Compiler construction , 2D/3D vector graphics , Font engines etc ) and
this fellow is calling me a "Coolie Programmer".

It took close to two years for me to get an appreciation from him. I got it , when I emulated 32 graphics under Windows 95 so that our application can run on 16-bit graphics subsystem of Windows 95 without
changing a single line of application code.

When I moved on , I really understood the meaning of his usage , when I saw the mentality among most of the programmers whom I have come across.

How can you detect a coolie programmer ?

A coolie programmer is some one who learns only when things are necessary. He will give all kind of excuses like priority , focus etc. These people treat programming just as a job and most will have less self esteem. They will see everything happening around as a game ,and will demote programming as a lower level activity and they will be craving to start a restaurant , MLM to spin the  money.

Opposite of this is Model Driven Programmers,
       These are programmers who will study programming models , evaluate libraries , learn patterns , try to relate their practice to the fundamentals , speak from first principles and philosophically inclined etc.






Semantic Gap !

Yesterday , I had a discussion with a friend of mine involving topics like Qt Library , Meta Object Compiler of Qt , MultiThreading , Objective C , MAC OS X Programming etc.  The person in question has got great belief in his ability to learn anything very fast ,and if the past is an indication of the future, he has done well in this regard and likely to do it for long time to come.

The Kind of Knowledge he was demonstrating is something which I call , "Operational Knowledge". Since most APIs are "Average Programmer Interface" , Model of learning things as and when it needed works in most of the cases . In services Industry , this is THE quintessential model.

The discussion drifted to Qt programming model.  Having a re-factoring project under his belt in Qt , coupled with another project done using WxWidgets some five years ago , he made a remark trivializing
Qt Library.

I took objections to it. The Qt Library is easy because of the design idioms which designers have used and as far as I am concerned , It is a wonderful achievement with a "rugged" language like C++. I began to quiz him about his Qt knowledge to make him understand his lack of understanding of the library.

Then the usual planck started viz "I will learn when it requires" , "Had I got opportunities to work with Qt,I would have cracked it".

I told him this , "Any good C++ programmer might have taken a look at Qt for the wonderful pattern oriented design of the Qt library. If somebody doesn't understand Qt programming model , I consider
him to be a poor C++ developer (mostly !)".

Then discussion drifted to Qt Programming model , Meta Object Compiler , C++ RTT , Signals/Slots , Automatic Wiring of Signals/Slots with MOC hint etc.

At some point of time , I understood that my friend has shut his ears and was like a dead wood !. Then , I softened my blow and discussion took a turn when he named another friend of mine and asked me , whether
he understands things we were discussing.

I told him that he knows Groovy , has used Blocks and Grand Central Dispatch etc. recently. I also did add a statement indicating to him that the other friend , despite his age , is superior in some respect.

Then, he accused me that my bias for Groovy is the reason why I rate the other person. He also tried to
trivialize Blocks as some kind of Function pointers ( a crude analogy which is right in conversational sense).

I began to explain about Blocks ( Lambda or Anonymous methods with slight semantic change for C# developers ) and it's relevance for Multi-core programming. When, I began to explain Closure , Variable Capture and Other functional programming topics , It was a case of me speaking Hindi and he understanding Oriya.

At the end of the discussion , I did explain what Closure is by explaining Relational Model , Regular Expressions , Scheme lambda etc. Due to the semantic gap , we terminated the discussion ,when it was already 11.45 pm.




A nice article advocating MultiLingual Programming

I know Steve Vinoski as a person who was the chief architect of Orbix ORB which was very popular in the late 90s. He also wrote foreward for the venerable book "C++ Network Programming - Part 1" by Douglas Schmidt.

I found a nice article written by him on the necessity of being a Polyglot.

Enjot it @  http://steve.vinoski.net/pdf/IEEE-Multilingual_Programming.pdf




Wednesday, September 21, 2011

DSLs in Action book and C++ Template meta-programming

DSLs in Action by Debashish Ghosh is a fantastic book and I have mentioned about it in some of my previous blog posts. This book is one  reason which re-kindled my interest in Meta Object Programming.

His description of Internal DSLs ( DSLs using Host Language support ) helped me to learn lot of idioms in
Java, Groovy , Scala , Ruby and Clojure.

Even though , C++ do not support Meta Object Protocol , C++ Templates can be used to do Meta Programming. They call it Template MetaProgramming. That too , Compile Time MetaProgramming.

I am thankful to the book for helping me to take a serious look at Template MetaProgramming. ( Even though , there was only a small paragraph about C++ template metaprogramming in the book )

Modern C++ Design By Andrei Alexandrescu

This book has been mentioned to me  by lot of people in the last decade . For some unknown reason , I never laid my hands on the book.

Here are my "Insight in HindSight !" ( aka Hindsight Bias - a well studied phenomena )

For a long time , I was viewing C++ as C/C++ ( Still is , for most projects ). I prefer to use C subset of
C/C++ for writing the engine code and C++ class facility to encapsulate my C functions. C++ Templates
were used for Type safe containers via STL. It was a deliberate choice. I had mastered templates from
Mark Nelson's  book C++ Templates ( Out of Print , If you come home , I will show my worn out copy ).
But , Being a programmer from the C era , I was bothered about Compatibility and Compiler portability in
the pre-ANSI C++ world.

By the time , ANSI C++ standard was laid out , I was already working on thousands of lines of C and C++ code ( Mixed Code ) ,on a huge codebase. Incrementally , I began to use STL in my new projects. Still, never tried to follow Herb Sutter , Philip Romanik/Amy Muntz , Andrei Alexandrescu because of priority reason.

I did work with BOOST library for a while in a project ,which gave me better insights into the template mechanism than I knew before. ATL ( ActiveX Template Library ) is another good template Library , I had used.

Now , I am working with a code base which uses Templates , Template Meta Programming, BOOST and Microsoft's COM programming model as an architecture. While revisiting C++ ( idiomatic C++ ! ) , I purchased Modern C++ design.

A Fantastic Book !. I read it , whenever I travel !.

Read and Saw Some of the works of Ravichandran - the crazy star

I saw the Kannada remake of the Malayalam Movie "Happy Husbands" on Monday ( 19th sept. ). RaviChandran took the role enacted by Indrajit ( a "Casanova" ) and Senior actor Jayaram's role was
taken by Ramesh Aravind. It is kind of role reversal.

I think , "Crazy star" has got a reputation among the kannada fans the kind of things we are fascinated
about Mohan Lal. So , role ,enacted by Indrajit seems to be more fit than the "Harischandra" role played
by Jayaram.

RaviChandran is not an ordinary film star and has acted , directed and produced some of the biggest hits
in Kannada , till date. He introduced Juhi Chawla to the silver screen with his ace movie "Prema Loka".

I saw songs from Prema Loka , Rana dheera  and others, today morning. His products are really good and appeals to the masses ( At least the Kannada audience of 80s and 90s ). In the last decade , he has remade
lot of successful movies from Malayalam , Tamil and Telugu and has been a money spinner.

There is a song which Yesudas sang in the movie Prema Loka , where lyrics are really cool.

"Eee Lokata Shristike Preeti Kaarana" is a sentence which I felt to be really a master piece. The songs should be watched with a 1987 mindset to be really appreciative about this talented actor's innovation to
the Kannada movie.

Watch the song which I have mentioned @
http://www.youtube.com/watch?v=8isLiCnMOJk

Thursday, September 15, 2011

"Lifu Ishtene" - a good movie

Yesterday , I saw the movie "Lifu Ishtene" at the Kamakya Theatre. The movie is well paced
and the actor Diganth has done a wonderful job portraying his character.

The film begins with shots where Vishaal ( enacted by Diganth )  is being shown as a globe trotting services sector professional, currently stationed out of Dubai. Then , movie goes for a peek into his life right from the
day he stepped into the school.

The school days and his first crush for a girl in the class were nicely picturised.  Then, he moves on to
series of crushes through out his life without making any "breakthroughs" , untill he meets Nandini (enacted by Samyuktha Belawadi ) in his B-school. His happy go lucky attitude and reluctance to commit (by signing up for a job ) led to the  break up of the relationship.

Then , he had a chance encounter with Rashmi (Sindhu Loknath) , a wannabie TV anchor. She helped him recover from his previous "shock" and he falls for her. Being a girl who had series of affairs in past , she was not interested. When she got interested , a "friend" from her yesteryears made Vishaal paranoid and He pulled out , like
any youngesters do now a days.

The movie had got some emotional tidbits where Vishaal's friend Shivu dies of Cancer. The shots were they use of WebCams to communicate and dying man's last craving were nice shots.

What I liked about the movie was two good songs , comedy , good camera work and Diganth's screen presence. Sindhu Loknath played her role really well.

One particular shot and dialogue was really cool where Vishaal's father was remembering his teen crushes. This irritates his mother and she reminds his father not make her remember "Shekhar" of her life.

Note:- I know some conversational Kannada (that too , Basic ) and the review should be read with
that in mind. I clearly enjoyed the two plus hours.



Wednesday, September 14, 2011

A query which lead to further queries

A friend of mine joined a company in Bangalore and I happen to chance upon him yesterday. Out of curiosity , I googled about his company to understand it's history , managment stakeholders , business models , areas of expertize etc.

The company in question has had quite a few acquistions in the past and I visited each of them to understand their portfolio. I grabbed lot of new memes in the process.

Got lot of information for sure !.  Some day , "Kaam aa jayegaaa !".

What is domain knowledge ?

Now a days , If you chit-chat with a seasoned professional , he will be giving good emphasis on the Domain Knowledge.

IMHO , "Domain Knowledge" is akin to the word "Cousin" or some times "Uncle". You have to ask the specifics to get details of the interpretation of  terms , if you are of the type who need better cognition ,to do something with the information you got .

Most often , the guy in question might mean some Functional Domains like Finance , Banking , Retail , Engineering Processes , Manufacturing , Supply chain etc. If the person in question is a new entrant , he will be giving emphasis on Platform , Language or Technology he works . For him, that is the domain.

As far as I am concerned , there are two families of Domain Knowledge

 a ) Functional Domain Knowledge ( aka Verticals )
      Banking , Finance , Retail , Manufacturing etc , comes under this.

b ) Technical Domain Knowledge  ( Horizontals ? )
      Computer Graphics , Geometric Algorithms , Language Translation,
       Data Modelling comes under this.

From a Computer Programming perspective , a Domain Consists of  (IMHO !)

a ) Ontology
     Things or Entities and their relationship within the Domain.
     In other words,what exists out there.

 b ) Players within the Domain from a Industry perspective
      There will be lot of actors in the Domain and these fundamental
      forces determine the practice within the domain.
                        
  c ) Workflow Practices
       Workflow is another import ingredient in any Domain.

  d ) Standards and Compliance framework
        In any domain , there will be standards and their will be a
        legal framework as well.
                             
   e ) Academic support
       If a domain is worth specializing , It should have good interest
       among the academia and most of them do.

    f ) Practice models at vogue


In a nutshell ,

"A Domain is an organized body of Knowledge about Solutions in a problem area , whether it
is in Business, Industry or Science".








Sunday, September 11, 2011

A ride which won't be forgotten for sure

Yesterday evening (11th sept,2011), I boarded a Bus from Aluva to Bangalore ,by paying Rs. 1300 to the travel agent. I had to pay 300 extra since the whole of kerala was coming back to work after onam holidays. In the end , we got a Bus which is not fit for long distance travel.

I could not sleep as It would have been risky as the back seat ( back row ! ) travel was like a horse ride. Luckily , I picked up a conversation with a gentleman who was sitting besides me and there was some connect or we could find enough common ground to talk for close to six hours on topic ranging from
each others occupational woes ,  team management , consulting , game theory , chess , compensation
anomalies ,education etc. to name a few.

Thursday, September 08, 2011

Be Standards Based and Vendor Nuetral Professional !

How do I maximize my return on the effort is a question every Software Professional
should ask himself or herself. Too often , time is spent on working with a particular vendro's
non standard implementation of a particular technology.

I think , it is a good idea to study some standard in the domain which you are working or
planning to work. This is true even if you are working with a particular vendor's implementation.

The standards document embeds lot of deep domain concepts which is hard to come by
unless one spents years acquiring it.

You can live more by consulting Standard documents from OMG , SEI and others !

Revisiting CORBA !

An application Infrastructure which I am working uses TAO framework. TAO is a Corba Object Request
Broker ( ORB ) which the program is using to communicate between the Client and the Server.

I thought Corba is long dead !. This lead me to re-visit some Corba information which I picked more than
a decade ago. I read about TAO and I was suprised to know TAO is relying on ACE library.

I stumbled upon a good online book @ http://www.ciaranmchale.com/corba-explained-simply/index.html


You can read about ACE library from http://www.cs.wustl.edu/~schmidt/ACE-overview.html

Discovered a new book stall in Bangalore

I wanted to buy a book to learn Kannada and I entered a book stall just left to the entrance of the Domlur Flyover from Koramangala to Indira Nagar. The name of the shop is "Axis Books" and to my pleasant
surprise , I found lot of titles which I have not seen till date from any other shop in India.

I got my book as well !

Wednesday, September 07, 2011

Now, I see why people are hyping Meta Object Programming and Dynamic Languages

Currently , I am going through the book "DSLs in Action" written by Ashuthosh Ghosh. Being a person who has written Expression Evaluators , Straight line Interpreters , Tree Based Interpreters , Compilers and Dynamic Compilers for DSLs for a decade , It was a curiosity when I purchased the book.

Thanks to this book , I am now uptodate with DSL lingo used in the Enterprise Application Development Community.   The pleasant surprise was the appreciation of Meta Object Programming and Dynamic Languages ( Duck Typing ). I used to consider stuff like Scala , Clojure and likes as noise and the book
has shown me that they are wonderful tools writing Internal DSLs. This book also taught me that
all the DSLs which I have written so-far are External DSLs.

Even though , I have had a consulting assignment with Groovy in the past , I never appreciated Dynamic Languages. I was worried about a scenario where the team will write "lousy" code. The book "C# in Depth"
did show me some convincing reasons while "dynamic" keyword is not a bad idea when you are consuming services written in Dynamic Languages like PHP,Python and Groovy.

Meta Object Programming helps you to write code in a expressive manner by typing in the most essential stuff (hints ) to the compiler. This removes the fluff associated with some languages like Java,C# and C/C++.
It is a quick way to proto-type something and a great tool for people who know to use it.



Sunday, September 04, 2011

Reading "Beyond Java"

Beyond Java is a 2005 time line book written by Bruce A Tate ( a well known author ) as a critique of then
main stream programming languages ( At that time  , the views were applicable for both C# and Java !) for
the enterprise systems.

It starts with a history of state of things when Java arrived on the scene and Why it clicked. It starts with
a look at C++ Programming methods of the time and explains some problems which might arise , If some
one uses it for building Enterprise Apps ( where change is the norm ).

Then , he slowly builds a case for Java and It's well known Success story.

He then shifts to XMLising yourself to death ,  Convention over configuration , Aspect Oriented Programming , Mixins (with Ruby ) and even a look at RoR ( Ruby on Rails ).

Currently , due to the influence of Ashuthosh Ghosh ( through the book " DSLs in action" )  , I have started looking at so-called "alternate" languages like Ruby,Scala , Clojure , Groovy ( I had consulted for a Groovy
based application early this year ) etc. 

I have gone through the book "Seven Languages in Seven Weeks " by the same author (Bruce Tate ). 

Despite it's timeline , Beyond Java's Cognitive value is great. I highly recommend it to anyone who wants to understand Modern Enterprise Application Development.