Thursday, December 6, 2012

So how does Android support Device Diversity ?


Android attempts to address device diversity by the following techniques:
  • By providing density specific resource folders. 
  • By providing resource folders for screens with different sizes.
  • By providing an ever upgraded Compatibility library which is used to extend the capabilities exposed on the later versions of OS, to older versions of the OS. For example, Fragments were introduced from 3.x onwards. However, by using the Compatibility Library, you can use Fragments even in Apps targeted to Android 1.6.
  • By unifying the Tablet and Phone experience ( Android 4.0 onwards ). 
  • Third-party libraries also exist which can provide similar capabilities ( or in some cases even better ) to extend capabilities to previous platforms. An example of this is, ActionBarSherlock.
The above are some of the ways which Android developers can use to tackle device diversity for their Apps.

.... and then Google+ entered


Google.com is one of the hottest properties on the internet, and that has enabled the search giant to get to where it is. Several years passed since 1998 ( when Google was launched ), and then in 2005, Zuck launched Facebook. Gradually the engagement factor of Facebook became a force to reckon with. 
Google’s business model was to provide adverts highly specific to the search query, and it has been a grand success for them so far. One potential pro / con of this approach was the fact that the results were independent of who searched for the results. However, in real life, this is not the case. This is because the same search query can mean multiple things to different people. Google searches, while being highly relevant, were completely devoid of this calculation, and yet it all worked out great for Google…
Then Facebook entered, and with it the user specified a myriad number of their personal preferences, and choices, and likes and dislikes. All of this information was subsequently available to Facebook, and to the other third-party vendors who dealt with Facebook as well. The difference in the level of targeting that Google could provide, versus what Facebook could provide was astounding… This is because Facebook could not only take into account what the user was searching for, but also use a plethora of information about user’s likes, dislikes etc. and then subsequently present advertisements which were relevant not just from the search query POV, but also from the user’s POV…
I believe that Google did not anticipate an attack on their core business from this attack vector, and were complacent initially. Finally Google decided that social was an important angle to the whole targeted advertisement business, and tried to enter the social space. After a few ‘failed’ social experiments ( Orkut, Buzz ), Google finally launched Google+, and also updated it’s privacy policy to more broadly integrate user’s interactions across different Google properties. With this change, Google encourages users to log-in and stay logged-in across the different Google product offerings, and also enables Google to learn more about the logged-in user. Slowly, but surely, Google is on it’s way to building a solid social graph…

Saturday, December 1, 2012

Notes from Google I/O 2012 session - ” What’s New in Android ( 4.1 ) “


The official page for this session is here . The session is specifically about the latest iteration of the Android OS, i.e. Android 4.1 / JellyBean.

Google has now also made available the entire changelog, which is another good source of information about JellyBean . 

Below are my notes from this session, organized by category.

Performance, Memory
  • Using V’sync + Triple buffering to make overall performance much better ( or much butter - as google likes to call it ! ).
  • Non-editable TextViews use less memory.
  • New Memory inspection APIs introduced for the application to be able to better inspect system memory, and then respond to it.
  • RenderScript updates.
  • Ability to cancel Database queries.
Widgets
  • Android Widgets can now be hosted in third-party launchers.
  • Widgets can respond to size changes. In Android 4.0, while re-sizing widgets was possible, intercepting this event was not possible. However, intercepting this change is now possible with Android 4.1, and consequently you can do stuff like update layouts etc.
  • Widgets can now have different layouts for portrait mode, versus landscape mode.
Layout
  • The new layout called as ‘GridLayout’ which was introduced in Android 4.0 for Activities / Fragments, is now also available for Widgets.
  • GridLayouts were specifically created to solve the problem of deeply nested layouts for certain use cases in a more performant manner. 
  • TextureView : Enhanced SurfaceView essentially.
  • The above layouts are not Android 4.1 specific, but were actually introduced in Android 4.0 .
Animation
  • Multiple Animation related updates to make animations easier.
  • Activity Animation updates. Now, you can easily animate the ‘zooming out’ expansion of activities from a specific point + dimension on the screen. Android 4.1 JellyBean is replete with examples of this functionality / behavior.
ClipBoard
  • ClipBoard can now hold styled text, I.e. Not just raw text.
Navigation
  • Now you can manually create synthetic task stacks ! This is huge in my opinion. Also, this update is available within Google-developed Android compatibility package, which goes all the way back to Android 1.6, so this should be available for us as well.
  • Automatic ‘Up’ navigation support for Activities, in context of Action Bar.
  • Still no official Action Bar support within the Support package. Romain Guy recommended using ActionBarSherlock for this.
Internationalization
  • 18 new locales, support for right to left text – Arabic, Hebrew.
Accessibility
  • Enhanced in a major way. For visually challenged folks, you can perform gestures which will gradually traverse, and describe the various views to you, without looking at the screen. Once you choose the right area / view that you want to interact with, you perform another gesture ( double tap ) anywhere on the screen to execute the action. This way, you don’t have to figure out exactly where to tap. Also included is accessibility support to make complex Custom views more accessible. All of this exists in the support library, and therefore works all the way unto Android 1.6 !
Security , Permissions
  • From now on, Apps that need to use external storage, need to explicitly request for this this permission. While this is not mandatory, at the moment, it will become mandatory in the future.
Networking, Throttling, $
  • Android already supports determing whether user is on a WiFi network, or is using a regular cellphone network. However, this is a coarse-grained approach, for example, what if the user is on a metered Wifi HotSpot network ? In this case, the user can specify which networks are metered, and you can now query this setting from within your application before performing a network-intensive operation. 
MultiMedia
  • Media Codec updates.
  • Audio Latency improvements.
NFC
  • Large payloads over Bluetooth, tap for pairing support.
Play Store
  • You can respond to user comments, but this is for ‘Top Developers’.
  • In-App subscription support.
  • New seller countries.
  • Entire Team can now access Android developer console.
  • Sales report are now available.
  • Android Expansion files -> Initial APK file can be unto 50 MB, and it can then be remotely augmented with extension files unto 4 GB.
  • Incremental APK updates are now available, automatically ! Average saving ( data ) of 66 % per download, per Google stats.
  • Unlocked devices now available directly from Google.
DevTools
  • Emulator is much faster now, to the extent that you can run games on the same with good performance.
  • Can test hardware acceleration, via Emulator.
  • Sensor and multitouch support using physical Android devices. In this case, you actually run you application on the emulator, but can feed all sensor data + multitouch events using a connected Android device for thorough testing.
  • ‘Lint’ Tool for automated checks of your code against Google recommendations.
  • Tracer tool for Open GL ES.
  • Device Monitor Tool. This is basically a newer version of DDMS, with a better UI.
  • System Trace tool.
  • Better NDK support.
  • Support for creating standardized types of Applications.
  • Layout editor updates.
Notifications
  • New attribute introduced – priority. Support for opportunistic notifications. Opportunistic notifications are those which do not appear when the Notification drop-down is unexpanded, but show up once the user has pulled down the notification menu.
  • bigContentView – 256dp tall ( 4 times previous contentViewSize )
  • Notification Actions: you can add upto 3 buttons within your notification, from which the user can perform an action directly. If you want to add more than three buttons, you can use Custom Layouts.
  • Styling updates with regards to Notifications.
  • Notification sort order is first by priority, then by time.
  • Users can now long-tap and find out which application posted a notification. If the user is annoyed by notifications coming from an application, they can just switch off the notifications from just that application.
Comments, questions and feedback are appreciated !

Enabling Android Webview to Ignore bad Certs..


Recently, in a small project I wanted to display a mobile optimized website inside of a WebView in a native Android App. So, I created the WebView and proceeded to load the website in it, and Voila ! it did not work ! I tried a few different settings for the webView, but each time I got a “Website not available” error.

Subsequently, I opened up the website on my desktop browser, and it worked great. Then, I opened up the website in the Android browser, and it opened up fine in either case. This was fairly baffling to me. [ Later I realized that in either case, I had set my browser to ignore bad SSL Certs ]
I was using a Custom webViewClient for loading the page, but was over-riding only three methods:

onPageStarted(WebView view, String url, Bitmap favicon)

onReceivedError(WebView view, int errorCode, String description, String failingUrl)
I had hoped that in-case of *any* kind of error, the onReceivedError would get triggered, but it was not getting triggered. After a little head-banging, I decided to take a deeper look at which other webViewClient methods I could over-ride and found some interesting ones.

onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm)

onTooManyRedirects(WebView view, Message cancelMsg, Message continueMsg)

So, I proceeded to over-ride the above three methods as well. In my subsequent test, I found that the method “onReceivedSslError” was getting triggered ! This was excellent, because now I had a clue of where the problem could be, and which direction to proceed in. I subsequently went to my desktop browser, and stock Android browser, and made sure that I got prompted in-case of a bad SSL Cert. After that change, I could see that the stock Android browser, gave me a Dialog with three options, kind of like the image below.


The above image communicated to me that the SSL Cert was not trusted, and that all I would need to do to make it work, would be to ‘intercept’ this Dialog within the WebViewClient, and ignore the bad Cert.

After a little bit of digging, I found this post ( image above is sourced from the same ) from Damian Flannery’s Blog which mentions :

engine.setWebViewClient(new WebViewClient() {
 public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) {
 handler.proceed() ;
 }

The single bolded line of code above, will make sure that the webView will ignore bad Cert warnings, and continue to load the website. I made the above change, and it was all good after that. 

Hoping that this post could save someone’s time when faced with a similar issue in the future…


State of the Android....


A non-techie post highlighting where Android is, and where it is headed. Will be updated in due course of time as Android evolves and the use cases explode. :-)

Enabling Xcode like Auto-Complete in Eclipse…


1. Open Preferences in Eclipse. ( Command Key + , ) 

2. Type “Content Assist” into search box.

3. For each Editor that you wish to have code completion:
  • Ensure “Enable auto activation” is checked.
  • Put all characters into “Auto activation triggers for *” e.g.  .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789
  • Set “Auto activation delay” to 500 (or whatever works for you).
Thanks to Matt 

Android Resources of note


A short collection of Android related resources that I like to visit / read:

HTML5 Financial/Trading Apps


While HTML5 is the future, some vendors have already started to promote / create HTML5 based financial / trading apps. Here is a sneak peek at some of those. These will be updated over time as new apps become available.

1. Kaazing App
Link: http://demo.kaazing.com/forex/

Blog Entry:  http://blog.kaazing.com/?p=641

" Crimson "



The story behind ‘Gyaani’ pic




I took a picture in March 2008 for my collection, as it carried a pretty powerful message. I had, at the time, not imagined that it would end up getting circulated as far and wide, as it eventually did. It’s appeal lines in the punch of it’s message, and the direct no-nonsense delivery of the message. I am referring, ofcourse, to the ‘Gyaani’ Pic shown above ! What follows below is the background on that picture.
It was a regular crisp Indore morning in March of 2008. It was also my first trip to India in nearly two years. Me and my mom had gone to a temple to which we usually go to, atleast once during my India trip. The trip to the temple was going along well and we were minding our own business, when a random visitor to the temple ( i.e. not the priest himself ) who was praying besides us, initiated a general conversation with us. It all seemed nice at the beginning. It was not long before, the conversation turned into a religious one. 
I am usually pretty hesitant to discuss matters of religion first and foremost because I do not consider myself to be a ‘religious’ person. I am especially disinclined to discuss religion with people whom I don’t know because people tend to have fairly strict opinions on right and wrong in religion. As a corollary to this, people are also less inclined to hear anything which may contradict their closely held beliefs. So while I have my own beliefs and I do not go about imposing the same on others, I have similar expectations from others as well. This may perhaps be an unreasonable strategy in certain circumstances as I was about to learn that day !
Initially, the topic of conversation was fairly general, like it’s generally a good idea to come to the temple and pray, and I was like, “Sure, sounds reasonable…” etc. Then, slowly the conversation started taking a turn towards more personally ( and closely ) held beliefs like, ” One should come to exactly _this_ temple, ‘X’ number of times an year, and perform the prayer ‘Y’ and  all of one’s wishes would be fulfilled “, and with the completion of that sentence, my “B$”-detector started ticking almost as excitedly as that Geiger-counter in Chernobyl on that unfortunate and fateful day.
The discussion, in a few minutes became a monologue, due to lack of my interest to pursue a dialogue as it appeared to be a lost cause. Detail after detail was being dished out meticulously, and our initial polite receptiveness appeared to be more and more absurd by the minute. Finally, I decided to abruptly cut off the ad hoc-preacher, after having had more than my fair share of ‘Gyaan’ ( literal translation of which is knowledge, or more accurately, translated to “un-needed or un-solicited knowledge” ). We decided to move to a different part of the temple, prayed one last time and left the temple premises.
I was thoroughly amused by the incident of being approached by a total stranger, in a place of worship where I would expect ( or appreciate ) some privacy ( atleast between you and your God ), and being unsolicitedly preached about the ‘right’ ways of life, of praying and best of all, religion ! The cherry on top was that it was initiated by someone whom we did not even know and who, by appearance, was your average Joe, not even the officially designated preacher ! I was by then, truly in need of a system ‘restart’, i.e. a vent to express my amusement at the experience. 
Being the photo-nerd that I am, I always have at least one camera with me at all times. My mom, was less amused by this incident, but casually mentioned to me about a sign-board at another temple. It seems that there had once been an abundance of ‘knowledgeable’ people at this other temple, so much so that, it had prompted the priests at the temple to put a fantastic quote at a very prominent place, i.e. at the entrance of the temple. Since we had lived very close to that other temple for nearly a decade, my mom remembered the quote verbatim, and it read: 
कृपया यहाँ ज्ञान ना baatein  
यहाँ पर सभी ज्ञानी  hai   
- or - approximate translation
Please do not share your ( unneeded ) knowledge here,
All here are knowledgeable !
_That_ was my “A-Ha!” moment which I had been waiting for, after receiving the deluge of ‘Gyaan’ a few minutes earlier. As soon as my mom told me about the quote, I knew that the only way I would find peace would be to take a picture of that quote for my personal collection. And so even though we had other time commitments for the day, we decided to hop over to the other temple, and I was positively delighted to know that after all these years, the quote was still there, and it was positively refreshing ! Best of all, it had been put up at another place of worship, leading me to believe that the priests there had learnt their lesson. More power to them !
If at any point of time, want to have the privilege of viewing this delightful sign yourself, then this map-link shows the approximate location of the temple. ( or if you happen to be in the Sikh Mohalla area of Indore, you can ask around for the Shiv temple behind Mahoo-wala’s Kulfi shop )
So, gentle reader,  there you have it ! The origins of the “Gyaani” picture, it’s location and it’s ultimate source.
Finally, since enough “Gyaan” has already been shared within this post, I shall conclude it here …. :D

The evolution of Photography - Boon Vong Style !

First dig at Flickr'ing

I had joined Flickr a long time back, but finally decided to upload some pictures there. Hope to have a decent portfolio up and and running there in the near future.

A good photograph

So what defines a ‘good’ photograph ?

  • it conveys a powerful message, it communicates well/connects with the viewer.
  • it moves, it touches, it inspires.
  • some pictures are best viewed with a short narrative / title. In such cases the pictures may be great themselves, but their ‘meaning’ increases significantly with a short description of the artist’s intent. In some cases, a picture simply needs no description !

On Meditation..


Wrote this after a nice session of meditation:

Meditation is like cleaning the lens of your mind, before and after each day, to see things more clearly, to see your purpose more clearly, to see your destination more clearly, to remove prejudices and pre-judged notions about anything since ultimately, mind, not the eye, is what creates an impression within us about a thing. The clearer the mind, the clearer the vision, the clearer the purpose, and the stronger / focussed will be our actions….

Work and motivation


Some random thoughts on work and motivation:

* Hard Work always pays back handsomely in the long run.

* You can also prioritize the hard work to generate immediate / short-term / tactical results. 

* In any undertaking in life ( or a project ), one of the possible categorization of sub-tasks can be 
1. Seemingly boring tasks, or
2. Exciting tasks.

The boring tasks are uninspiring, dull and tedious whereas the exciting tasks shine, impress and motivate. It has happened to me in the past, that the seemingly boring tasks can combine in previously unforeseen ways to lead to something which is appealing and inspiring. In other words, whenever you get bored with doing ‘grunt’ work, remember that it can very well be beneficial later. 

One excellent technique is to start off with the grunt work, and to then ‘reward’ yourself with more challenging activities, and then alternating between them appropriately. Also, very often one of the reasons why doing a grunt task may seem pointless can be that you do not know a real life use-case / application of what you are doing. In such scenarios, it is extremely useful to research for the potential / existing applications of what you are doing and how it can e applied to real life. As soon as you see a link to the real world applications, pursuing the topic may make much more sense and much less tedious. 

One of the examples of this, which I very vividly remember was given by Professor Saraswati when he was explaining the concept of Integral Calculus. Infact, I would say that most of the ‘good’ teachers that I have come across, have this knack and knowledge to link a topic of review with a something that the audience would care about. But now, I am digressing....

Things which are _truly_ valuable in life...

“Over a period of time, I have realized that the things which are _truly_ valuable in life are those which you cannot measure in terms of money. Things like love, friendship, dedication, commitment, good intentions etc etc.. There are many more, and in my humble opinion, it is these “things” which truly define a person and make him/her valuable.”

Efficiency

“Efficiency matters more than the sheer number of hours you put in….”

Anupam Dhyani's blog



A most interesting take on life, by my friend Anupam Dhyani. The posts are mostly in Hindi.

P.S.: Hopefully Google’s automatic translation will someday be good enough that the experience of Anupam’s blog for a non-Hindi speaker will begin to approach that experienced by someone fluent in Hindi. 

The programmer’s ( author’s ) ‘itch’


At several places, I have read that any piece of software is essentially an expression of a programmer’s ‘itch’ to solve a particular problem. This is all the more true for FOSS ( free open source software ), since it is by definition non-commercial. I believe the same applies to writers/authors(*) as well. I believe, at some point of time the ‘itch’ / self-chattering inside a writer’s mind increases to a point that expressing these thoughts in the open, starts to seem natural, spontaneous and an itch-reliever as well ! It seems to me that I have reached such a point. This blog will serve as an itch-reliever henceforth !

(*) = I use the term writer loosely here, i.e. not in the generally accepted ( I believe ) sense of a well-published author, but as a person who merely pens down his ( perhaps less than earth-shattering ) thoughts. A more accurate representation of my intent would be ‘thought-expressor’ ?

Commenced the use of 2 Factor Auth for my Google account


Security works best when it layered. Therefore, in order to protect your online accounts, it is best to have a strong-password, and to ensure that you always login from trusted computers and/or via trusted networks ( and preferably using SSL ). However, with most of the online services today, as long as someone has your userid and password, it means that your account can be accessed. In other words, your password is a single-point of failure, and no matter how strong it is, if it gets keylogged or phished, then basically your account is open. One of the ways of preventing this is by using something known as two-factor authentication, which needs additional piece of randomly generated information to complete the login process.

Since February 2011, Google has enabled access to to two-factor authentication for their services to common users. After about 2 weeks of deliberation, I decided to bite the bullet and activate two factor authentication on my account. If you are a heavy user of Google Services, you may consider it worthwhile to enable this feature on your Google account as well. It does add an extra step in the login process as part of increasing your account security, but may be worthwhile if your Google account is important to you. 

The details of how to setup your Google account to use 2FA are here, or here.

Blurb on Mobile UI design


I got these thoughts on mobile UI design as I was working on a recent mobile web app project, and using my own app during the design phase: 

1. *Every* action that a user takes, is an opportunity for you as a developer to enthrall, engage and please the user. Similarly, *every* action by the user must have a very clear reward for the precious time, effort and attention provided by the user in performing that action.

2. Strict focus on getting the maximum done, with the minimum number of clicks is not an optional feature, but a required feature for a mobile app.  

3. Any step more than the absolute bare minimum required to finish an activity will prove to be a hurdle to continued user adoption.

Small Business - Success Factors

The following factors, in my opinion, are some of the key driving factors for the success of a small organization. While it is true that the same factors are useful for an organization of any size, the factors below apply more to a smaller organization than a larger organization, due to the lack of dedicated functional resources which are usually available in a larger organization.

* Cross-functional training
In any organization, ‘silo’-ization of information is a problem. ‘Silo’-ization is a term I use to describe creation of distinct storehouses of knowledge / information about the company, and it’s processes. Some of it is unintended, simply because it is a tad impractical to know everything about everything in your organization. However, sometimes it is also intentional. In the latter case, there can be several driving factors: 1. Employee insecurity in imparting information which they think may be hazardous to their continued employment 2. Employee inertia to hold on to an existing skill-set and to not evolve with time. 3. Lack of good communication within the team leading to distrust, 4. Or just plain old laziness. This problem gets compounded as ‘silo’-ization increases and usually has an adverse impact on efficiency and viability of an organization as a whole. To counter these

* Leading from the top
While leadership from the top is key for an organization of any size, I believe it has a special meaning in case of a small company. In a small company, you typically get to know people more intimately than a small organization since one has to wear many hats at the same time. Therefore, top management personality traits can have a significant impact on the employees.

* Documentation
Documentation is essential for:
- Maintaining project history over time.
- Keeping a record of KPIs ( Key Performance Indicators ) over the years and trending them to evaluate current performance. 

Android: Pre-built Drawables Index



This link contains a comprehensive listing of inbuilt Android Drawable Resources ( android.R class ) which can be used directly in your projects. Use of these can also increase connsistency of the user experience, in reference to the default apps.

Tools And Services



An (incomplete) list of tools and services that I use, and love to use.

Category = Security ( Windows )
* Microsoft Security Essentials = Microsoft’s free real-time antivirus solution which taps into Microsoft’s threat libraries to detect / prevent attacks.
* SuperAntispyware = A good solution which has helped me on atleast three instances.
* MBAM - Malware Bytes’ Anti Malware = Another solution like  SuperAntiSpyware. I typically use these programs in parallel.

Category = Storage / Backup
* DropBox - the best Sync solution I have come across. DropBox just works.
* Adrive - excellent for storing large amounts of Data. Provides 50 GB of free storage space. 

Category = Developer
* Eclipse IDE - extremely customizable and has a plug-in for almost anything that you can imagine ! Some of the typical use-case scenarios are: For pure Java development, GWT development, BIRT Report development, Android development, Syclo development etc. 
* MS VWD - Microsoft’s free tool set for Web Development.
* Fiddler2 - a tool for capturing HTTP Request/Response Headers, indispensable for web service and/or HTTP development. Other similar products: Firebug extension for Firefox does this ( and much more ). Similarly, Wireshark/Ethereal can be used deep analysis of port traffic. 

Category = Browser
* Google Chrome - the best/quickest browser I have come across. Has a very rapid update cycle which is good from a security perspective. Also comes with a wide array of extensions which can be used to extend the browser functionality. One of my favorite extensions is theSecure Sites extension. This extension attempts to establish a secure connection ( HTTPS, instead HTTP ) with every site that you visit which allows for safer browsing. Also, it was excellent Javascript debugging tools and Firebug Lite as well. 

[ This list will be expanded in due course of time ]

What makes Smartphone ( and development on the same ) so important ?


A few reasons off the top of my head.

1. Mobiles are getting extremely powerful, and more people are looking at ways to replace laptops with them, and / or augment the existing use cases for laptops. The diversity of uses to which mobiles have already been applied are frankly mind-boggling: from being used as satellite controllers to being used as supercomputers ( sort of ) to enabling extremely vivd and engaging augmented reality games / apps . The future holds tremendous possibilities. 

2. As per some studies, more people will access the internet using devices with a form-factor much smaller than traditional computing platforms.

3. App Stores are extremely lucrative, provided you can make a good app. There are literally millions of people who can access the distribution channels, hence can be targeted. Another fact is that App Stores are indexed extremely rapidly by search engines ( Google at a minimum ), leading to decent ‘search’-ability ( not necessarily visibility though ) even without excessive marketing. More marketing muscle behind a solid app is always welcome, but the point is that even without the same, you can hope to write a decently popular app.

4. Several of the companies, today, are yet coming to grips with the upcoming future and need a consistent mobile strategy. Due to the upcoming trend of ‘mobilization’,  they will need people with skills to ‘take them mobile’.

5. The advertising of future will be 1. highly personalized, and 2. hyper-local, which is again commoditized / democratized due to the mobile technology, since mobiles are always with you AND can also capture your location information ( i.e. if you allow them to), enabling permitted apps to provide you with localized, hyper-contextual info ( and ads. ). Advertising is about context, and location is an excellent signal for determining relevance and context….

TRIRIGA Application Platform versus TRIRIGA Applications


For a significant period of time, I had a confusion between the TRIRIGA Application Platform, and TRIRIGA Applications. In addition to my own confusion, I also found that several other people whom I met, were equally confused about the same. The difference between the two is that the Application Platform represents the underlying technology like the Data Modeler, Workflow Builder, GUI Builder.

TRIRIGA Applications, on the other hand refer to the objects created using the Application Platform, like the Workflows themselves, the created Business Objects, GUIs, Queries etc. As a rough rule, all the ‘builders’ form a part of the TRIRIGA Application Platform, while the rest of the elements can be considered to be Applications themselves, which have been created to address specific business needs, like the Real Estate Application, Project Management Application. Also, the TRIRIGA Applications version, by definition, refer to the out of the Box Applications provided.

In certain cases, like the WPM Applications, the difference between the Platform, and the Application is blurred.

A short collection of Tech Blogs and Feeds that I like to visit / read



triDeveloper - Open-Source Extensions and Applications for the TRIRIGA Platform→


Interesting group for Tririga Developers, created by Eric Glass of Serco. It is refreshing to find a group like this, in the vast vacuum of open discussion forums on TRIRIGA despite the decent sized user base.

“This project provides open-source extensions, applications, and useful utilities for the TRIRIGA Application Platform. In addition to providing useful functionality in its own right, the open nature of the various subprojects can be valuable tools for learning how to develop integrations with the TRIRIGA platform.”

Business Process Mix


In general I have come to a realization that every organization needs to have an optimal ‘business process mix’. Firstly, what is a business process ? A business process can be defined as a sequence of elemental steps, which are required to ‘get a task done’. In terms of computer science, a business process is essentially an algorithm, i.e. a well defined sequence of steps which is required to transform an input to a desirable output. 

I believe for that for the ‘de-risking’ of day to day operations of an organization, having well documented business processes is essential. This helps in making the organization less dependent on a particular individual / resource for it’s day to day operations. This helps in increasing employee / management confidence in running a sustainable organization. A sustainable organization is one which is ‘fault-tolerant’, i.e. which has built-in redundancy. This means that the absence of a resource will not overly affect the core operations of the system / organization. A sustainable organization always tries to make itself redundant. It clearly identifies the core-strengths and functions performed by it’s resources, and tries to duplicate / cross-pollinate these functions all throughout the organization.
It seems to me that smaller organizations have a much higher need for documenting business processes, than larger organizations. This is because smaller organizations, by definition, have fewer resources and hence the responsibilities per resource increase. This increase in responsibilities leads to higher risk, per individual resource. This increase calls for a more aggressive business process documentation approach in smaller organizations, than in larger organizations. On the other hand, I have heard that it can take forever to get anything done in larger organizations, due to the highly structured processes. This can also be called as the ‘meeting for a meeting to organize another meeting’ syndrome. In such cases it would seem that it is important for someone at the top ( or the bottom, or at any layer in the hierarchy ), to be able to see through all the layers of management from top-to-bottom, and devise newer / more streamlined business processes. 

Thank You Google - for Google Docs

I just love Google Docs. The primary driving factor, which initially prompted me to use Google Docs was the easy collaboration feature, which has improved over time. Also, it seems to gel well with other Google products as well, which is an added advantage. I have started a flight training course, and after every flight I perform a self-debrief, on what my thoughts were. I began documenting the same via a spreadsheet. Within my ‘paper’ notes, I had drawn a simple line illustration of the pre-flight inspections. I imagined it would not be an easy task to obtain the same in a spreadsheet, out-of-the-box, i.e. without using another tool to do the same. However, I just thought of checking if I can do the same in Google Docs. Imagine my surprise when I discovered, that I can indeed do it, right within Google Docs, without any external program, and with Edit History being accessible as well ! Just wanted to say thanks to Google for making Google Docs.