Friday, May 04, 2018

Feedbacks and Enhancements to Azure Functions for Azure Analysis Services

I am happy to report that after I released the Azure Functions to perform operations on Azure Analysis Services early March 2018 (as my first GitHub projects), it has been tried out and used in several places and I have received lots of feedback.

Based on that I have been able to make several fixes and enhancements to solution including integration with Azure Data Factory.

Today, I added a more significant feature which the client can specify multiple tables to be processed in a single request in synchronous or asynchronous manner.

Thanks to suggestion to one of the users, it made the change quite easy.

Endpoints For Multiple Table Process

The new signature for processing table is:

GET /ProcessTabularModel/{Database}/tables/{tableList}

GET /ProcessTabularModel/{Database}/tables/{tableList}/async


Example:
https://azf-processtabularmodel.azurewebsites.net/ProcessTabularModel/AdventureWorks/tables/DimAccount, DimProduct?code=vxdmfmm45esfau3ddjffd


https://azf-processtabularmodel.azurewebsites.net/ProcessTabularModel/AdventureWorks/tables/DimAccount, DimProduct/async?code=vxdmfmm45esfau3ddjffd


Looking forward to more users and feedback. The Github repo is available at - https://github.com/codepossible/AzFunctions-AASOperations


Wednesday, April 04, 2018

Azure Functions and Azure Redis Cache - Making integration Simpler

Introduction

Azure Functions provides integration out of the box with several Azure components such as Azure storage - Queues, Table and BLOBs, Event Hubs and has support for CRON timers. It also has an extensibility SDK, which allows many more providers of first and third-party service such as Cosmos DB, Twillio, SendGrid to integrate with Azure Functions as either triggers or bindings.

Having used Azure Redis Cache with Azure Functions in couple of projects, I missed the ease and code reduction and cleanliness that binding provides. So, I decided to use the extensibility SDK for Azure Functions v2 and build one myself and share it with community.

Caveat

At the time of writing this blog entry - April 2018, the Azure Functions v2 SDK is currently in beta and may encounter breaking changes. Not recommended for production yet.


Visual Studio Tooling 

To be able to use the code successfully in Visual Studio, you must have Azure Functions and WebJobs Extension version 15.0.40405.0 or higher.

Code Repository

The code for this WebJobs Extension is available on GitHub  https://github.com/codepossible/WebJobs.Extensions.AzureRedis

Usage

Azure Redis Cache as Async Collector

The Async Collector is the most common use for most target bindings. In the case of Azure Redis Cache, that would be updating the cache - adding or updating existing keys.

The extensibility SDK provides a simple way to achieve this using interface. - IAsyncCollector, which requires implementation of two methods - AddAsync and FlushAsync.

The most common efficient of writing items to a store and cache being no exception is to write it in batches (or buffered writes).

The implementation of the Async collector can include an internal collection to support buffered writes, where AddAsync method would write to a internal collection and performed a buffered/batch update, once the item count reaches a certain limit (for example 100 items) or other event such as a timer. User can also perform a forced write as FlushAsync method.

In most cases for cache, values to be updated immediately.

So to simply things, I chose to create two constructs - interface called -IRedisCacheItem and a class called RedisCacheItemsBatch which is just a wrapper generic list of IRedisCacheItem instances. (The beta version of SDK support does not support nested collection for Async Collectors).

    public interface IRedisCacheItem
    {
        RedisKey Key { get; set; }
        RedisValue Value { get; set; }
    }

    public class RedisCacheItemsBatch
    {
        private List _items = new List();
        public List Items
        {
            get { return _items; }
        }
    }

It is the RedisCacheItemsBatch class which is bound to Collector. An example signature of the Azure Function would be.

public static async Task Run(
  [BlobTrigger("%SourceBlob%", Connection =  "BlobStorageConnection")] Stream myBlob,
  [AzureRedis] IAsyncCollector redisCache,
  TraceWriter log
){ ...

In the sample code, the Azure Function is triggered by update to a CSV file stored in a BLOB storage, which is assumed to contain a comma-delimited key-value pair.

Azure Redis Cache as IDatabase

To use more richer native functionality to the Redis Cache, the extension also allows binding to an instance - StackExchange.Redis.IDatabase interface as the Redis Cache client.

Though not required, IRedisCacheItem can help simplify the code. The sample Azure Function code uses the IDatabase Binding to accomplish the same updates.

An example signature of the Azure Function would be.

public static async Task Run(
  [BlobTrigger("%SourceBlob%", Connection =  "BlobStorageConnection")] Stream myBlob,
  [AzureRedis] IDatabase redisCache,
  TraceWriter log
){ ...


Azure Redis Cache Configuration

The Azure Redis Cache binding requires a connection string to the Azure Redis Cache instance to work. This can be specified inline in the function or enclosing the name of AppSettings key within the "%" signs.

If not specified, the code looks for a value for the Redis Cache connection string in AppSettings under the name of - "AzureWebJobsAzureRedisConnectionString"

Feedback and Sharing

If you find the code useful, please share it with your fellow developers, Twitter followers, Facebook groups, Google+ Circle and other social media networks.

Since this is built on a beta release of the SDK, updates and breaking changes are expected. If that happens, please raise an issue in the GitHub project - https://github.com/codepossible/WebJobs.Extensions.AzureRedis

Noteworthy

Another colleague of mine at Microsoft - Francisco Beltrao in Switzerland, has also written WebJobs Extensions which include one for Redis Cache. Do check out Francisco's work at https://github.com/fbeltrao/AzureFunctionExtensions 

Thursday, March 22, 2018

Azure Functions: Updating Azure Redis Cache from BLOB storage

Background

Couple of weeks back, one of colleagues specializing in Data Platform was working with a customer, who uses Azure to support many of their customer facing applications. They use Azure cache for one of application and the scenario the challenge they were facing was to keep the cache updated with part of the information coming from a legacy mainframe application.

The data was being exported as CSV file. The challenge was speed up the initial upload of the large file containing ~120 million records into cache. This process was taking nearly 10 hours based on the a console application built from a sample code found on the Internet which was running on their local network..

Then, there were also subsequent updates (smaller files), which were expected to run multiple times a day.

Upon evaluating code, we determined that the program was only writing one key at a time and had an over-engineered the use of threading. They also had a slow outbound network to Azure to contend with. 

So we decided to address these limitations in a single solution using Azure Functions. 

Solution 

Using Azure function and BLOB trigger, the cache update process is started as soon as new extracted file is available on BLOB storage. 

When the Azure Function detects the change, the BLOB is provided as a file stream, which the function:
  • Reads line by line 
  • Converts the line into key-value pair,
  • Batches up the key-value pair into a configurable set.
  • Writes the batch to Azure Cache. 

Result

The result was quite encouraging. With a batch size of 2000 items, 120 million items was processed under 20 minutes. 

Code

Considering this a common scenario for applications using Azure Redis cache and solution that others may find useful, I have made the code available in GitHub.


Saturday, March 10, 2018

Combining Analytics and Serverless - Azure Functions and Azure Analysis Services

The "Serverless" computing is one of the term catching lots of attention. Linked with the advent of microservices and cloud computing, serverless probably represent the smallest unit of pay-for-use consumption model, scale on demand and code to meet a well scoped and limited purpose.

AWS, Azure and Google all have their implementation of serverless computing with support for various languages and runtime.

As a practical application of the serverless computing paradigm, I had the opportunity to automate operations for an Analytics application built on Azure Analysis Services.

As part of building a quick turnaround reporting and analytics platform for multi-national beverage company, the tables in Azure Analysis Services (AAS) tabular model had to be processed as soon as the ingestion step was completed.

The limitation we ran into was that the orchestration engine used in this case was running on Linux and could not launch Microsoft Windows native executables.

So in comes, Azure Functions with HTTP triggers to the rescue, which allow processing of the tabular model - tables and partitions on demand. Additionally automate creating and merging of partitions as the business requirement demanded.

There are other examples of a similar approach being taken, but they use Timer triggers to perform the operations. (Orsolya Gal's Azure Blog, SqlDusty) or have HTTP Triggers with specific example (Ust Oldfield's Blog)

I believe, this Azure Function App code is more comprehensive and flexible combining the approaches above and has been production tested.

It would be quite useful for developers who find themselves in this situation, so I decided to open source the foundational code which can used to build more complex operations.


The project is titled - Azure Function App for Azure Analysis Services Tabular Model Operations.


Find the source code on GitHub.

Feel free to download, fork and comment. Looking forward to hear back from the community.


BlogSpot - 10 years later

Wow, it is amazing (and sad) to realize that I have not blogged in this spot for almost 10 years.

My last post being in October 2008. Just before I was made to realize another fragility of human life. It was in November 2008, that I was made aware that my father - Dr. Luxmi Kant Banerjea, the tough man of my life, was suffering from an aggressive form of lymphoma. For a person, who had never been in hospital bed other than when he was born, it was big change. Even bigger change, as he rapidly bed ridden by this debilitating disease.

As things played out for good, bad and ugly, he passed away, less than three months later in February 2009. I was not there by his side, I was back in US trying to see if I get second opinions from doctor's here. Maybe balance my time throughout the year with my sister who lived in the UK and me take turns helping out in his treatment. But it was not to be. Now with after nine years, I still miss him. But I also feel his presence never left me. I do wonder, if I can half as good parent has he was, my own kids would turn out just fine.

What was amazing to see was his legacy. After his passing, it seems people came out of the woodwork to help our family. They claimed my father had helped them when their chips were down and sometimes gone above and beyond to make sure they were taken care of, while staying within the bounds of honesty and the law. My father being a quite, reserved man never shared these stories of kindness or empathy with us, but it did seem to have rubbed off a little bit on me.

I also noticed an unfinished post from May 2009, I started writing about my father's life. But I guess that will be for another time.

Now that that I am well past grieving and life has moved on. I had my second daughter in December 2009 which completed the circle of life, so as to speak. I went full time on my own venture and then joined my dream company - Microsoft in July 2011.

Last seven years at working at Microsoft has been has been an interesting experience. I remember sending out my resume by post (aka snail mail) in 1999 as soon as I graduated from my masters to Microsoft in Redmond, WA. Now I did receive a post card back from HR saying they would consider me for future position. Boy, it took them - 12 years but I was there, finally. Well, I would hope that is how it played out... :)

Microsoft as awesome as it is, was different from what I imagined it to be. As big corporations are it has it fallacies. Probably back in 2011, too complacent in past years success, at one time considered an evil empire, dark side (for Star Wars fan), but you could feel the winds of change. Humbled by the tenuous and smart competition - Google, Amazon, Apple, who had customer mindshare, we were the big white drunk mad elephant. But as we know from Louis V.Gerstner Jr.'s book - "Who say's elephants can't dance? (Harper Collins, November 2002)", we know the mad elephants still has some tricks up its trunk".... :)

Fast forward into 2018, under leadership of Satya Nadella (since February 2014), Microsoft is forging new grounds into Cloud Computing, Artificial Intelligence, Mixed Reality and Quantum Computing. Well, Satya even wrote a book about it - "Hit Refresh (Harper Collins, September 2017)", if you have not had a chance to read it.

The biggest change at Microsoft - emphasis on openness (not just open source, that work started before the CEO change, but has new vigor now), leveraging work of others - within and outside Microsoft and most of all empathy - toward customers, partners and colleagues. I cannot say for sure if the change has come to every part of the organization but the new attitude is contagious.

One word to catches my attention - empathy and to that I go back to my late father, as evidence by people who came to help us, after he passed way, he had lots of it.

I think he applied a great deal of empathy and compassion to his work everyday. As a person responsible for lives of hundreds of people who reported to him and those his reports effected, he went through his daily rigors without much worry about how is legacy would be perceived, just how best it would make the lives he touched better.

All I can hope is that some of it rubbed on me as well.

Tuesday, October 21, 2008

Adventures in Virtualization and Sun's Virtual Box

Virtualization has been around for a while and of recent has gathered lot of interest due to "GO GREEN" initiatives and reduction in total cost of ownership. I had written in note in 2003 of a War of Third Kind about - on demand computing and later posted on this blog in 2007. (See- http://codingunknowingly.blogspot.com/2007/04/war-of-third-kind-reflection-4-years.html)

Now, it looks like my prediction on grid computing on top of virtualization is manifiesting itself as what we know as - CLOUD Computing. Sure, not in the most accurate description, but to achieve services through the cloud, an organization will need to maximize the processing power of its physical machines powering the cloud and then in comes the virtualization. There are already specialized tools and dedicated applicances to enable cloud powered services. But what is needed is a mindset shift for IT and software development community.

My own experience is virtualization started with VMWare Workstations and then went on to the ESX Server. More recently, I have been playing around with Windows 2008 and Hyper-V, as well a free open source option from Sun Microsystems called - Virtual Box. Check out - http://www.virtualbox.org/ for details.

Sun does have its more commerically tragetted offerings to build and manager virtual server infrastructures but virtual box is a good playing ground for enthuisants like me. Given a reasonably powerful desktop/laptop (really what I mean is non server class) machine, it provide a decent simulation for servers and virtual machines. So far, I installed Windows XP, Windows 2003 and Ubuntu Linux Server on Windows Vista host and had good success.

Couple of caveats on this free version of virtualization software, you cannot duplicate machines by simply copying the virtual hard drive image. (That would be strict no-no under Microsoft Licensing anyway.) and you need to plan for drive space on the virtual machine. You cannot increase the maximum size for the virtual hard drive. (It can be increased dynamically, in the sense, it only uses the space being used by the Guest OS. There are obvious downsides to that in terms of performance.)

My experience with Hyper-V has not been that pleasent. Though, it looks to be more polished and enterprise ready than Virtual Box. Using it on machine with a single NIC (network interface card) has been quite a challange. Inspite of reading multiple blogs and visit Microsoft support site, I have not been able to get the virtual machine and host to be on the Internet and local network on the same time. I am still researching the problem.

Saturday, April 12, 2008

Remembering My Grandma - Mrs. Anima Banerjea

This is a post... is personal, took a long time coming and it took me lot of courage to put my words together for it. But I felt it would be nice, if I put it out there, if not for any one's sake but mine.

My grandmother - Mrs. Anima Banerjea passed away on August 4, 2007, in New Delhi, INDIA. To be joined with her departed companion, my grandfather late Mr. Subimal Chandra Banerjea after about 16 years and few weeks to the date of his passing. I was as disconnected from her passing away as can be. Sitting in my home in metro Atlanta, (GA, USA), praying as hard as I could, calling up every day and night trying to find out if she was doing better in the hospital. Sometimes glimmer of home and sometimes not so much. I was probably hoping against hope that my prayers would make a difference this time. (In 1991, when my grandfather had died in Lucknow, I was not told about his sad demise, till I got to Lucknow and was praying all the way as I only knew that he was seriously ill). But as inevitable as it was, she passed away and as I was told for her own good as her physical self was enduring a lot of pain.

This blog entry is about what I learned from her life.

I learnt to put - your family, your loved ones before self. Dadima worked tirelessly to make sure everybody in the family was well fed and safe in the bed when night came along. Her speciality was - the Indian desserts and snacks. Home made and in bulk. There was always some personal touch to what she came up with. Near the festive season, the efforts doubled and tripled because guests were expected.

Techniques she learnt from generations before her she tried to pass down the cooks and orderlies in the family. She also was constantly updating her skills with new recipes which she learnt from reading magazines or saw on television. I remember one particularly was chili panner, which has been my favorite for years. Note: I did not like Panner till that culinary delight prepared by my grandma came along.

Dadima grew up in the 1920s, in pre-independent India. India where was caste system was very prevalent and more strict than what I have come know as I turned teen. Lucky enough to be born in a high caste (in fact the highest - Brahmin's), she had some reservations on certain things but overall she was a kind hearted person. Always open to helping out people in distress and treated everybody with respect.

She insisted on asking anybody who came to our door for a glass of water or some drink. Be it a postman delivering mail or a labourer working on some project at home. Any guest visiting us would get his or her share of the home made dessert or snack. There was always plenty of it go around. If not, you can be sure, she would have saved some her favorite grandchild!

Her father was a Superintendent of Police in pre-independent India. Not a easy post to have in colonial India for a man of his skin color. So, not only it was an envious position to have back then and somewhat privileged but maybe today - 60 years after India's independence, it may be looked down upon as being aiding the British rule the country. However, Dadima was proud of her father public service.

She did have stories on her father chasing down hardened criminals but may be sometime miscreants who would damage public property and risk their lives and others. But never did I hear say any ill words about the independence fighters or swadeshi's. I have a feeling deep down even then she was deeply patriotic even then but little afraid to show it. I am also sure in those days - my late great grandfather (paternal-maternal) would have seen that a job, a means to get by and take care of the family. Being good and hard working at what he did, he got promoted and deserved the privileges. I guess - "One man's freedom fighter is another man's militant." The same holds true today too. But the lesson learnt here was that you always look up to hands that feed you and arms that shelter you. She maintained her father legacy with great pride.

Dadima got married to my grandfather (Late Shri Subimal Chandra Banerjea) in her early teens and was settled in Lucknow. A house built by my great grandfather (paternal - paternal) "Purimal Kutir" or 15, Nazarbagh, Lucknow, Uttar Pradesh was where she would spend most of her life. It is now the older part of Lucknow's neighbourhood. Close to Hazartganj, Lucknow's business district.

From then on, the most dominant person in her life became her mother-in-law. A person whom I came affectionately remember as Deeli-ma. In Dadima's admittance, she was very afraid of Deeli-ma. However, my memories of Deeli-ma (my late great grandmother (paternal-paternal)), somewhat faint, of a frail loving woman, nothing like what Dadima would have known in her younger years. (Deeli-ma passed away in a stormy night in May 1984 in New Delhi, INDIA. Unfortunately, that's a night I remember too well and also recall some of the suffering that old age can bring, even in the best of circumstances.)

But back to Dadima, from her I learnt to respect her elders and absorb the advice like a sponge. There is always wisdom, years of experience and most of all care for you when they speak.

Yes, I will truly miss her. There will also be a regret (among tons of others) I will carry more than anything is that Dadima could not meet Mishti (aka Akriti Banerjea)- her great granddaughter, my daughter - in person. Dadima only knew Mishti through the pictures, phone conversations, VoIP and web cam encounters.

It is for me to now to make sure that Mishti would learn about her great grandmother more than what she sees in old pictures. I will not be able give the half the selfless love that Dadima would have showered on Mishti, but I hope to still teach Mishti what Dadima's life represented to her off springs and beyond...

Wednesday, December 26, 2007

Sponge-Worthy: Tips for obtaining Free PDUs for Continuing PMP Certification

Lo and Behold... People... I'm PMI re-certified (or almost there at least).

I completed my PMI certification in April 2004 and was expected to collect 60 PDUs in next 3 years to remain a PMI certified. Happy to share with you that I managed to acquire, report and obtain approval for 64 PDUs for the period of 2004 - 2007 and I get to carry over 4 PDUs for the next cycle. Only just I should say... razor thin gap and in time for my annual appraisal.

Next part is most important and free loader like me really enjoy - all the PDUs were obtained without spending any money other than time and fuel to travel. Honestly I did learn quite a few things on the way, which I would not have, if getting the PDUs were not a goal. So, thank you PMI for motivating me. (and of course, my employer - Software Paradigms International)

Also, getting PDUs is not very hard. It's matter of tracking it properly and then remembering to report it correctly.

In the next few paras, I'll talk about how I went about doing it and then in the next section, I will offer more avenues, I plan to explore for next cycle (and you can too!)

Being what you are: 15 PDUs

Good news... if you are project manager or play a role in managing projects. One-quarter of your work is already done.

Being a PMP certified Project Management Practitioner, I earned 5 PDUs every year. So from year 2004 - 2007, I earned 15 PDUs.

Report that under category - 2H (Practitioner of Professional Project Management Services)


Sharing your knowledge: 30 PDUs

Become a trainer, a mentor and/or a speaker on Project Management and PMP certification. You get high marks for this. Sharing and spreading the skills and knowledge of Project Management is important part of being a PMP.

I earned that as :

(a) A guest speaker on Project Management Professional training class
I spoke on how I prepared for PMP exam and took up the topic of Project Scheduling and Critical Path Calculation with the participants. (Special Credits to my colleague - Jitendra Ram here inviting me to be a guest speaker) - 10 Points

(b) Trainer for Microsoft Project 2003
I extensively use Microsoft Project for planning and tracking project resources and schedules, in addition to my employer's own Enterprise Project Management tool - spiProject. But I was surprised to learn not many project managers use MS Project effectively or if at all.

So, using some real life examples that I use on my project and armed with some advanced techniques in Microsoft Project, I trained my peers in use of MS Project. - 10 points

(c) A presenter on Project Management topic at the company strategy meeting.
My employer is in strategic partnership with several channel partners and it place special level of responsibility on end customer facing resources. My topic was the common pitfalls, I faced during my assignment and how I overcame that and specifically highlight how being a PMP and specific project management techniques helped. - 10 points


Reading and sharing - Self Learning: 15 PDUs
It helps if you are a avid reader and a good notes taker.

Over the past of couple of years, I read on project management and business. Notable of there being
- World Is Flat: A Brief History of the Twenty-first Century by Thomas L. Friedman
- Reimagine!: Business Excellence in a Disruptive Age by Tom Peters.

Both are excellent reads and deservingly best sellers. It is possible to relate these books to several key areas in project management especially communication, resource management and risk.


Free Seminars and Local PMI Chapter Dinner Meetings: 4 PDUs

Both these events are excellent sources of earning PDUs.

I must admit about PMI Atlanta dinner, I did get lucky. My employer was the gold sponsor for the PMI monthly dinner and I got the benefit of that to attend one of most interesting seminars (How to be a better consultant/Carl Pritchard ) and show off my sales acumen. - 1 PDU.

The second seminar I attended was sponsored by Dekker Ltd. It was a half day course on Earned Value Management and how to apply MS Project and software tools from Dekker to it. It was long drive to south side of Atlanta for me, but it was worth it. Check out their website for more half day seminars.

The ones, I missed

Now, these are events, I missed reporting because I did not keep good notes on them.

I guess that is lessons learned for next time.

Other Avenues to try
I plan to explore these avenues this cycle as well the tried and tested ones too.

  • Free Webinars: Nothing better than to learn sitting at your desk. There are several vendors offering these free webinars in order to entice new customers for their products or services.
  • Volunteering Opportunities: Find some at your local PMI chapters.

Of course, as always... .START EARLY.... !!!

That always helps to cut down on the last minute rush. Of course, you would know the benefit of planning, after all you are PMP...:)

Hope you find this blog entry shared something useful for you and should get you started on the PDU hunt...

GOOD LUCK!


Sunday, December 02, 2007

WAMPing now: My First Pure Open Source project

I have been working with Microsoft .NET technologies for a while (6 years now), so it is easy for people to assume that that live and breath... in CLR (Common Language Runtime) world... :D and probably despise the JVM (Java Virtual Machine) planets and all the revolves around OSS (Open Source Software) planet systems.

Well the truth is, I do... do lots of my day-to-day work using .NET because that's the assignments I have been put on to win my "daily" bread. I use lots of Open Source .NET technologies like NAnt, NUnit, NHibernate to name a few, which has their in the Java/OSS world. Add to the fact, I did lots of J2ME and J2EE work before moving over to Microsoft's .NET platform.

Besides, it always pays to keep an eye out to the "dishes on the other table".

Dishes on the other table being - Java and J2EE being the obvious choice, but there are lot of open source technology to watch out for including dynamic languages and their associated frameworks like Ruby, PHP, Perl etc.

So, late last week - I delivered my first production ready - xAMP product, which I hope will go live in next couple of weeks.

xAMP stands for:

x - OS of choice.
A - Apache Web Server
M - MySQL database
P - PHP language

The two most known flavors of xAMP - LAMP (Linux based AMP) and WAMP (Windows based AMP). Honestly, about two weeks prior to completing the project (Delivery date: Nov/30/2007) I did not know much about MySQL and had limited knowledge on PHP. But Being a Linux enthusiast, I have played around Apache technologies since college (1997-98).

Anyway the point being I was amazed at how mature the tool set around xAMP platform is and how easy it is pick up.

The development environment I used was Microsoft Vista Home Premium Edition. I feel that Home Premium is more ideal of the Vista platforms as it did not have the IIS Server installed. So, I had to install "A" of the xAMP platform - Apache Web server. Of course, it is not as dysfunctional as Home BASIC and that is just my humble opinion. Also, add to the fact that I did not have much choice. All the other computers at my disposal had issues of HDD space or were just not powerful enough support development tools.

The Vista platform comes with a caveat though and that is its famous User Access Control feature (UAC), which is incorrigibly mistrusting and highly irritating. After much bruises and cuts fighting UAC, I was forced to turn it OFF.

So note to self: Real developers don't need UAC unless you are developing for the Vista box.

That was probably the only glitch I faced in setting up the development tools. (Touch wood!)

The development tool of choice - Eclipse Europa (v3.2 + Goodies in September/October 2007). Downloaded from a link on the IBM website. Additionally downloaded - PHP Development Tools (PDT) add in.

The next step was to download PHP and configure it with the Apache server. Thankfully again this step is well documented on the web. Tons of site offering advice and troubleshooting guidance. Fortunately, I had to face none and nothing in Vista OS conflicted either.

Now for the missing "M". No James Bond story here. (Read "M" is 007's secretive boss). MySQL website was the place to go. I recommend downloading the Community Edition as well as the GUI tool for it.

Also required is the glue between MySQL and PHP - the MySQL PHP connector. That is also available on the MySQL website.

With my limited knowledge of MySQL, I went with default settings. But by the time I got around to building the third table (the first two being lookup value tables), I realized that ISAM engine for the tables will not be correct as it did not support foreign key constraints (FK).

Coming from a SQL Server and Oracle background, I had taken the FK constraint for granted in all databases. Now MySQL does support FKs but only in certain Engines.

Also the idea of being able to use different engines to access and store the table was new to me. It really depends on the type of application that is being planned but this is another level of optimization available to the users in MySQL. I still have to research if MySQL can have tables stored with different engines interact. (Any answers from readers are welcome). But once I shifted the tables to InnoDB Engine, I was in a familiar world.

So off I went developing the application in about 5 -6 days. Honestly, I had made it hard of myself as I had been procrastinating and sidetracked on the project for over 6 weeks and started working on it very close to the deadline.

All said and done, the project was up and running, the user acceptance testing and the demo to the stakeholders went really well.

The application has been delivered with installation instructions from ground up. Just waiting for the application to go live in next couple of weeks and get the mullah... :D

Just to keep the record straight, knowledge of legacy ASP (Active Server Pages) and JSP (Java Server Pages) did help in learning PHP faster as it follows a similar syntax and embedded HTML layout.

I would recommend xAMP platform anybody who is transitioning from a non web background to a web based development. Tools are easy and free to obtain and lots of readily available Internet resources being the major reasons.

Please feel free to drop line, if you have any questions/comments/suggestions/brickbats.

Till next time...hopefully with a story on Ruby...



Footnote - Some Important Links:


Wednesday, November 21, 2007

Two technology sparks - Android and Kindle

The two technology buzzword which are catching my attention are - Android - Google's mobile computing platform, API or much media hyped - "G-Phone" concoction and Kindle - the e-book tool from Amazon.com.

On Android...

What excites and has been much written about and spoken about Android is that it is truly a mobile platform from ground up.

Think about it, mobile tools or even platforms bring what you can do on your desktop/laptop PC to a device which fits in your hand. Android a fresh approach, it is offering access to specific mobile device capabilites like - SMS messaging, placing a call etc. and challanging the developers to build applications on them.

Of course, the motivation from Google is worth a cool USD 10 million, of course to be shared with multiple application developers who qualify for their challange of bringing the most compelling applications built using Android. Boy... I am definetly going to try out for that one... Now if only an idea of a killer application would just KINDLE.... :)

Yep, KINDLE it is... that's the name of Amazon's new e-book device. Priced at a USD 399.00, it is an expensive Christmas gift to ask my wife for, but it will be true geeky gift.

After 3 years of research and development (R&D), here is a device which seamless integrated book reading and Internet wireless connectivity. Hold the library of books in palm of your hand but of course make sure it is charged up. Order the books right from KINDLE. And it features - e-Paper... the truly revolutionary concept where the ink on the paper is re-arranged in the blink of an eye.

What you save on is the cost of the books. While a hard cover version of a New York Time best seller costs - anywhere from $30 - $40. The same version is e-book is typically available for $10 or less.

Sunday, October 28, 2007

Bot Nets and Application Security

I have been an avid reader of science fiction. Issac Asimov and the Foundation Series has been my most favorite author and series. Now how is it related to this blog entry... because what I read in an e-Week today is literally out of science fiction...

The story titled.... "Storm Worm Botnet Lobotomizing Anti-Virus Programs" (Click here to read the article on e-Week)

The part which was scary enough was what the bot net called the "Storm" is able to do to Antivirus applications and other background processes like P2P programs but the scarier part was its ability to change is own signature every 30 minutes and its ability to detect intrusion by researchers and invoke attack against them!!!

If you ever imagined of virtual mafia,,, this is it. The trouble is that most of the owners of the machines participating in the botnet are innocent victims who fell prey to promise of free software or other incentives.

From the e-week article, I judge (hopefully correctly) that the botnet machines are primarily Microsoft Windows based machines but all machines are vulnerable to the Distributed Denial of Service (DDoS) attacks the Botnet unleashes.

There are few documented cases of e-extortion against popular websites and the e-Week article talks about a take down of an Israel based security company.

Now this has been an eye opener to what an application can face once it is put out in the wild. Thankfully, most ISPs today are equipped to handle DDoS attacks to some degree.

Application Security to most software designers today is an after thought. With composite applications and mash-ups becoming the corner stone of Web 2.0 applications in next few months, I believe application security deserves another look and should become one of the primary consideration with performance and usability while architecting any new applications.

Sunday, September 30, 2007

Challanging Status Quo and Execution...

It is always nice to hear words like - "Challenging status quo..." in a mission statement, not many organizations actually take on the feat. Understandably so. There is always a risk in venturing into uncharted waters and success in one market does not always guarantee success in another.


The difference in having a grand vision and failed vision is really the - EXECUTION.



Let's turn to some successes in a field which I am not really familiar with but I am intrigued because the business model is dependent on the goodness of human nature. Hard to come by huh...?



The industry is - MICRO CREDIT or MICRO FINANCE. I started reading about its success in the possibly one of the poorest countries on earth - BANGLADESH. You expect with the scarcity of financial resources, there will be the obvious human nature to grab and run.



Well, that's what everybody thought, till Prof. Muhammad Yunus and Grameen Bank came along. Grameen bank serves the poor of the poor in rural Bangladesh. Uses an unheard of strategy - "Lending without collateral". Well, I can safely assume that since the individual loans were not very large, it would be less risky and the chances are the borrower would not have anything put as collateral anyway. But add up several thousands on those loans... the risk becomes enormous.



There are other strategy which Professor Yunus applied, which were so different from conventional banks, like focusing on women as borrowers than men... [Read more...]



So that was Bangladesh, but would the same hold true for some other market. I recently read in Atlanta Constitution Journal, about a success of Micro lending in Guatemala.



Ok... Ok... now where is the catch? You know, I will extend this example to IT field.


The points - I carry over from Micro Credit is - trusting the goodness of human nature and applying success from one market to another.

Offshore/Near shoring has proved beyond doubt that it is possible to perform software development work anywhere and anytime.



But it is also a sad truth is the same industry that lot of people have to work long hours. Some of it to obtain experience, gain customer confidence and business and explore new technologies but some because of lack of better term - "projects that could have been better managed". Having said that, it is nature of software development. Progressive elaboration is the inherent gene. The more people see, the more people want to make it better. So it is not always in the control of the stakeholders that software developers directly interact with.


The industry has worked hard to find solution for this issue as the software systems get more and more complicated. Instead of being an monolithic application in control of a single organization, we are now looking at the age of mish-mash, landing pages and composite applications. But that is a topic for a different day.


So back to the mantra of "work life balance". One of the enabler for work life balance is - "Telecommuting". There is no work in the world better suited for this enabler than - Software Development.


Now, back to my argument goodness of human nature. The belief more often than not, people will try to do the right thing.


The argument, if it works in western countries, it MAY not WORK in an offshore environment. My argument - is to believe in the GEEKy nature of software development. A Geek is a geek not matter where s/he is let loose. A geek takes pleasure in getting things accomplished and doing it well.



Software Development is a field of knowledge workers. It is in the interest of the a software development organization willing to grow to attract and retain the best of the lot and for the right reasons.


Now that we have a VISION of a global diverse and dispersed network of technology gurus, let's looking a possible execution model. Strangely enough, it is nothing new and is not alien to companies with ISO:9001 and CMMi level compliance.



It is the use of METRICS. Establish performance metrics and clear guidelines for telecommuting employees. For example:



  • The employee must a proven and establish record of on time delivery and accurate reporting.

  • The employee already must have high speed Internet access at home which s/he is willing to use for business purposes.

  • The employee must possess a computer capable of remotely accessing the employee's desktop at work. The actual work will be done on the desktop at work.

  • If the developer running late on a task on a weekly basis, s/he is prohibited from telecommuting.

  • Allow limited days in a week for telecommuting as a starter.
So on and so forth...


On the flip side, there is a investment on the side of the organization in terms of raising the level of infrastructure. But what is gains is more productive employees in return.



From end of the employee, it is ability to save on a long commute time and ability to address family needs at times. The caveat is that the individual has to see this an incentive and not as a way to make the employee work longer hours. Also, the individual has to drop the sense of entitlement like getting company provided Internet connection just for telecommuting purposes.

All deals are based on give and take as long both sides understand the benefits.

Has it been done before? Yes, absolutely.

IBM touts of an global workforce which is built on flex hours and telecommuting. Read about the success at BestBuy.com, the online division of the electronics retailer in the US. (Read more on... "Smashing the clock"; Cover Story; Business Week - Dec 11, 2006)



If not true, anywhere else... true in India. Most women have tendency to take a break work in life changing situation like - marriage or having a child.

Though, whole premise of "work life balance", is giving priority to the family. But what if the organization is able to bring the talent back on no matter wherever in the world she is. It is a win-win situation for the employees and the organization.

Finally, a statistic recently published on concentration of IT/Software Development in India on rediff.com in the article - IT in India: Big successes, bigger gaps

  • Seven cities accounted for a whopping 95 per cent -- Bangalore (33 per cent), the National Capital Region (15 per cent), Chennai (14 per cent), Hyderabad (13 per cent), Pune (10 per cent), Navi Mumbai (8 per cent) and Kolkata (2 per cent).


The state of infrastructure in some of these cities may be something to write home about. But I can guarantee, if organizations based in these cities have probably already established telecommuting options for their workforce.

So for organizations, who haven't I would say wake up, before the heat gets turned on and this benefit becomes so... 2007.

Thursday, September 27, 2007

Sliverlight and Google Gears and AIR

Once again, it seems to the battle of the giants. Two fronts - Google vs. Microsoft. Competing technologies - Google Gears vs. Silverlight.

Both being browser based plug-ins to enable rich and compelling cross platform client experience. The grand vision is to use the web and desktop so seamlessly that the boundaries get blurred. But looking closely that's where the commonality ends.

Microsoft Silvelight(tm) seems to be more targeted towards delivering the rich client interface, a easy programming paradigm offered by Windows Presentation Framework (WPF) to the browser. Currently version 1.0 and 1.1 in pre-alpha, the vision is expected to be delivered to early 2008. Having said that, the developer tools available to enable Silverlight comes with Microsoft Visual Studio 2008 or a separately licensed tool as Microsoft Expression. Of course, this being true as I understand it now. Things may change as we get closer to release.

Google Gears on the other hand is shot at the basic limitation of a web hosted/delivered application. The limitation being, that web application DO NOT work offline. Google Gears provides components such as LocalServer, Database and WorkerPool to make the experience of being online or offline indistinguishable.

There is a third front too... from Adobe. While Microsoft Silverlight is intended to launch attacks into Adobe Flash (or latest avatar Flex) niche of compelling graphic content on the web, Abode has its eyes set on helping their loyal user base capture the desktop with AIR (Adobe Integrated Runtime).


All of these technologies use AJAX in some form or another and are founded on delivering updated content from the web.

It remains to be seen if any one of the destined to dominate the web or the developer community will find a way to leverage all these technologies to benefits the user. I can very well imagine an application which will user XAML to deliver content to AIR and where Google Gears is used to store local information which syncs with the backend when connected. But can the competitiors?

Tuesday, May 08, 2007

Windows Vista and Slow Internet Connections

On April 24 2007, I brought a new laptop (Acer Aspire 5100) pre-loaded with Microsoft Vista - Home Premium edition from my local Circuit City store for $669.00 + 6% tax. There was a $100.00 mail-in-rebate to make the deal sweeter.

As a previous owner of a Acer products (Acer Aspire 3000 laptop in 2005 and 19" LCD monitor this February), I found the products to have good performance.

I must admit, I see to have the incredible (bad) luck of being stuck with a lemons first time around when it comes to buying Acer laptops. Fortunately for me, Circuit City readily exchanged them with some inspection and replacements have worked very well. (Let me know, there is anybody out there that shares the same experience.)

First time, it was hard disk crash within 24 hours after the purchase. This time around it was the Wireless Ethernet Card. It kept dropping connections several times within span of a minute or so. Finally after a week of fighting the beast with replacing drivers, configure settings, I gave up and got a replacement from Circuit City, this weekend.

The wireless connection in the new laptop stayed strong but the internet connection was dragging its feet like a snail bearing a 2-ton iron core. Some websites just did not come up at times - like google.com or msn.com. Both IE and Firefox exhibited the same behaviour.

Add to frustration the machines with Windows XP and Linux ran just fine. After much research on the web the blame game continued on the cause. Possible suspects: the preloaded Norton AntiVirus and Internet Security because of phishing filters and double firewalls and IPv6 configuration conflicts. Turning them off including Vista's own security features did not help.

Though the problem looked like a typical DNS issues but I was not willing to accept reasoning as a cause for this. Two different machines with two different OSes on the same network were working just fine.

After two long nights, I decided to take the route to configure DNS server entries manually. I looked at the auto configuration DNS provided by the router and it included just the IP address of the gateway (or the router itself).

I decided to manually configure the DNS entries which were provided by ISP on the laptop itself and Voila !!! It started to working like a breeze.

So in summary -

Symptoms:
Slow Internet connection on Microsoft Vista (in my case Home Premium Edition).

Possible Cause in my case:
My wireless router was overloaded with DNS requests and could not service them all.

Additional causes
Multiple Phishing filters and firewalls.

Solution:
Check using ipconfig/all command on Vista command prompt to check the DNS server entry. If you only see an single entry for the wireless router, it is time to manually configure the DNS entries for the Wirless Card. You can do that by configuring the TCP/IP v4 settings.

I have additionally disabled the IPv6 support on the Wireless card and have the Norton Phishing filter off. They did not make any difference without the DSN entries.

This worked for me and hopefully, it should work for you as well.

Tuesday, April 03, 2007

War of the third kind - Reflection - 4 years later

I don't consider myself much of a technology prophet, but I found this document which I shared with the top management of my employer about - 4 years back...

Dated: July 14, 2003

Wars of the third kind

The signs

Though it may not be so evident today, may be not in coming weeks, but it’s in the horizons. All signs point to another war of computer architecture. The common factor as it has been in most of times, in the recent – Microsoft (and few others) vs. rest.

This time, it will be in the area of “on-demand” computing.


One Microsoft way, server virtualization

Microsoft (recent acquisition products from Connectix Corp) and VMware are pushing the concept of server virtualization. The concept is one powerful machine (usually multi-processor system); many servers.

Bring up servers with blink of the eye. Need a mail server, Boom! It’s there. Need a web application server, Boom! It’s there. To naked eye one machine. To the network monitor different two servers each with its own network stack, it own resources – memory and hard disk.

The reason, the powerful machine, if used as a single server, is under utilized. Why not just more applications on the server? What happens when you want the reliability of Linux for your web server and ease of Microsoft Active directory services to manage users? What about some legacy application so critical to the organization running on Windows NT?

Think! Grid computing

The idea is “super computing power at the cost of peanuts” from IBM, PolyServe and others. The method, several machines networked to give the feeling of a single all powerful mega-server. The concept has been around for a while and implemented to varying success. But selling MIPS as commodity on demand is a slightly new one. With increased supports for more operating systems and protocols this looks now looking as viable option.

The conclusion

War as it is… the front lines yet to be drawn, pitches yet to be made. But one size does not fit all as many would let us believe. Soon, we as users will make choices and it may well be combination of both. How about a grid computing network supporting server virtualization? Now that’s triple sundae with cherry on top.

Thursday, March 08, 2007

Ahh..Power of Dual Monitors

It was long, hard fought battle, but finally I persisted. I managed to buy a 19" LCD monitor. I had to guilt my significant other after buying her a diamond earrings set for Valentine's day.

Consider it a Valentine's gift. Besides, the price for the monitor - Acer AL1916 was pretty affordable - $159.99 (+ 7% Sales Tax = $171.18) from Staples (on Feb 18/2007). Most online sites on that day were selling the same monitor for $215+.

Add to that most online reviews gave a two thumbs up to this monitor and I must say, I am pretty pleased.

Oh...for those who know me (and who will sooner or later), I am a laptop user (IBM Thinkpad T41 loaned to me by my employer, FTR - For The Records i.e ). So how do I enjoy power of the Dual Monitor.

Fortunately Windows XP makes it pretty easy. It was literally plug and play.

As I type this, I use the external monitor as the primary monitor at 1280 x 1024 resolution and the monitor of the laptop as an extension at 1024 x 768.

I must admit, I sometimes have to tweak the configuration to make the external monitor the primary one, but is worth the struggle.

Has it made me more productive? Only time will tell.

Has it increased my coolness factor... sure by 10 folds... :)

... Enjoy people !!!

Saturday, November 11, 2006

Sponge-Worthy: Life Changes

People ! I'm back well sorta...

Oh well, I have been off blogging for a while. I could use the excuse of being SUPER-BUSY, but honestly, I have been a BEET lazy. I still haven't completed the second part of the coaching seminar that I attended in July 2006... about 4 months back. I promise to complete that this week.

Life changes, as the title says. I am a D-A-D now and that sure is a change. For all the dads (and mums) out there, who have been doing a great job with their kids, I salute you because it IS HARD work and as I realize, the rewards are tremendous. Well... borrowing for the MasterCard ads... PRICELESS. That's another factor why there is a delay in updates here,, as I am also proxy writing her blog, till she takes over maybe a few years down the line.

I was also encouraged by - CARL PITCHARD, "pitching" in comments on my blog on the article that I written about his seminar. So, thank you Mr. Pitchard !

No techno or management stuff but... just a thought, I want to articulate...

Having all the dreams come true is a double edge swords, because we have nightmares too.

So, I would like to thank the higher being (yes, I do believe in God, Baghwan, Allah etal...) for not letting all my sweet dreams come true, for there are nightmares would follow too.

Sunday, July 30, 2006

Sponge-worthy:Coaching Employees for Better Performance: Part II

In my last entry, I started describing some "nuggets", I picked up from a seminar on coaching employees, organized by Carol A. Hacker, in Atlanta (Offices of Matrix Resources) .

This entry is concluding part of the salient points, I picked up during the seminar.

But before that, here are some quotable quotes from the presentation -

"When you do things yourself, you are a technician;
When you get things done by others, you are a manager."
-- Lawrence Appley, Past President of American Management Association.

"Let people know what is expected of them to the same degree as their degree to succeed."
-- Dr. Curt Einstein, Behavioural Psychologist.

"Nobody succeeds or fails in vacuum."
-- Dr. Curt Einstein, Behavioural Psychologist.


Role of the Coach in Coaching

The primary goal of a coach should be to achieve results and excellence through others. A good coach must:

  • Avoid personally taking charge of everything or micro-manage.
  • Must create an environment that foster learning, independent thinking and opportunity to contribute.

Three Level of Performers

A team can have three level of performers:

  • Super Stars
    You found them, if they excel in the assignments given to them. Also looking for more more work and lot of initiative.
  • Average Performers
    Happy to meet the expected goals and complete the tasks set to them. Not really looking for new challenges.
  • Below Average performers
    Struggle to meet up with the tasks assigned to them. Not eager to take on any new tasks.

It is very likely super stars may end up being abused by asking to take on tasks of average and below average performers, simply because they are good at it.

Coaching Super Stars

The ideal way to coach Super stars would be get them involved in new tasks, recognize and reward them and let them know the y are important.

Since these are employees who have already proven themselves, delegate and avoid micro managing them. Provide them with a forum for sharing information, offer plenty of training and groom them for promotion.

Finally, don't hold them back when they want to be prompted. That is probably the hardest part, as it might mean losing a a super star to another team.

Coaching Average Performers

Average performers on the team may not be performing beyond the desired goals because of several reasons. These may include - obstacles in gaining understanding of the tasks and lack of clarity manager's expectations, or lack of training and honest feedback.

To motivate an average performer:

  • Increase responsibilities to build confidence.
  • Teach them how to set goals and make the accountable.
  • Praise what you want to raise.
  • Offer meaningful rewards
  • Get Superstars as Mentors.

Coaching Below Average Performers

It is important to understand that a below average performer in one team can a super star in another team. It is decision of the employee to maintain good performance not the managers. Keep in mind to refer to company guidelines for discipline and discharge.

But before it comes to all that, it is important to conduct a performance improvement session.

Performance Improvement Session

(1) Pre-Steps:

  • Gather all the facts; include specific examples
  • Write down what you plan to say.
  • Practice via role-playing
  • Find the right place and time and do not allow interruptions.
  • Be prepared to discuss possible solutions.
  • Get right to the point.

-- Source: Presentation Slide provided by Carol A. Hacker


(2) During the Session:

  • Get agreement that there is a problem.
  • Discuss Consequences
  • Ask for action plan from the employee
  • Focus on the problem, and not the employee
  • Ask for a written summary of the session.
  • Schedule the follow up meeting

-- Source: Presentation Slide provided by Carol A. Hacker

(3) After the session:

  • Monitor the action plan and provide feedback.

-- Source: Presentation Slide provided by Carol A. Hacker

Finally, if that does not work out, coaching leads to discipline.

A fair and balanced Discipline Process

The three prerequisites for a fair and balance discipline process:

  • Rules and Regulations
    Intended to inform the employees ahead of time what is acceptable and what is not. Usually in a employee handbook.
  • A system of progressive penalties
    Ranging from Oral warnings to written warnings, from suspension to a final discharge depending on the type of offense and the number for the offense.
  • Appeals process
    This is required to help to ensure that the discipline is handled fairly and equitably.

Well, that concludes another edition of the blog entry on the Matrix Seminar, but wait we are not done with this topic yet. Yes, Yes, lot more nuggets to dispense.

In the next bunch, read about Carol's tips on - feedback process, additional tips on coaching and what to do when going gets tough for the would-be-coach.

Till then, enjoy... (Hope to get that out, before we say goodbye to 2006... umm 3 days to go.)

Thursday, July 27, 2006

Sponge-worthy:Coaching Employees for Better Performance: Part I

Well, after being encouraged by my company's CEO to write more - "technical" weblogs, I took the cue to at least write more regularly. Honestly, being in a project management role for a remote team in day to day work, I use technical work (software design and coding for me) , is more therapeutic than second nature, which I can write about. (So, my apologizes to the big guy in my company, but I will keep trying...)

In this blog entry, I write about couple of things. The main topic being the recent seminar I attended about coaching employees.

The second being tip to all the employers (US based only) in Atlanta (GA), Dallas (TX), Houston (TX) and Charlotte (NC) area, who want save on some training budget...:)

First the tip, Matrix Resources (http://www.matrixresources.com) organizes free executive seminars one several management and human resource topics. These are half day seminars and organized after lunch. (Yes, there are free sodas and snacks). The feedback, I have from people who have attended has been very positive and I am told that most of the speakers are very knowledgeable and impressive. And did I mention it was - FREE ! (Umm... yes I did)

Click here to to find about Free seminars in your area from Matrix Resources -

The coaching seminar was conducted by Carol A. Hacker (http://www.carolahacker.com). Carol, is NOT a hacker, as her name suggests...:) (but she may have married one...)

In fact, she is very inspirational person with a great sense of humor and accommodate nature. She has overcome serious medical condition in her life and has become a successful business consultant. She has held many interesting positions including a tasting expert on advisory board of Miller Brewing Co. (Makers of Miller and Miller Lite). (You can't get "higher" than that, can you?)

Her approach to conduct the seminar was very participative, where in she divided the audience into team of minimum 4 and maximum of 5 members in a group. Standing rule, no two members should be currently working together. (Umm... Honestly, we (me and my partner in crime) broke this rule...).

During the course of the seminar, she involved the audience in several exercises and asking the team to pick a different team leader for each exercise on some interesting rules (person wearing the newest pair of shoes, person with most pets, person with maximum number letters in their name are examples)

Here are some salient points (or nuggets as Carol will call it) :

  • Coaching (def.): is a manner of communicating that keeps the conversation positive and focused on successful outcome. It presupposes that the employees have the answer and the coach is simply the person who "holds the mirror" while the employee re-adjust the behaviors based upon the truth they see now.

    (Source: Presentation Slide by Carol A. Hacker )

  • When should a manager consider coaching?

    (a) When the manager wants the employee to challenge status quo.
    (b) When the manager detects a sense of frustration in the employee
    (c) When the manager feels that the employee is not performing well.

    (Source: In Team discussion)

  • Coaching takes commitment, time and practice.

    No surprises here. Both the coach and the person being coached should be ready to spend the time and effort related to coaching. Also, as any other applied skill, it takes practice to perfect the process.

  • Caveats abound...

    Because of an employee - manager relationship, true level of trust required for coaching may never be achieved. (That does not mean, that one should stop trying).

    Use of emotion free language (verbal/non-verbal) is a must. Most managers are not trained in this or accustomed to this.

    Managers have a tendency to fall back on old management techniques, under pressure.

  • Common characteristics of good coach as described by the audience - patience, knowledgeable, good humor, aware of his/her limitation, flexible and persistence.

  • Role of a coach

    Achieve results and excellence through others rather personally taking charge of everything.

    Focus on developing employees in order to achieve business results than micro-managing them.

    Create an environment that fosters learning, independent thinking and opportunity to contribute.

    (Source: Presentation Slide by Carol A. Hacker )

The seminar was a half day seminar (about 4 hours long including 3 breaks). So I believe I should cover it in 2 blog entries.

Next time, some more from the seminar... Coaching behavior, different level of performers and coaching approach for each of them and some more coaching tips...








Tuesday, July 18, 2006

Sponge-worthy: Consulting Tips from Carl Pritchard

To an unassuming onlooker, Carl Pritchard would be a ordinary soul, working his 9-5 shift in a big city air conditioned office. Until, you happen to hear him speak.

I had that opportunity last night (Monday - July 17, 2006) at dinner for PMI Atlanta Chapter at Hotel Crown Plaza.

The topic of discussion was - "How to be a better consultant ?" Seemingly boring topic, but with Carl at the microphone, time seemed to keep flying and the audience still seems to be wanting more.

Tying it with examples from his own experiences, he brought out the following salient points:


  • A good consultant always has a "TOOL KIT". A tool kit include high value credentials - such as PMP, MSCD, Sun certified and ways to add visibility such as website or a blog, publishing articles in trade magazine and speaking in conferences.

    Having been in the media business, prior to making a transition into management he hinted that August is usually the "slow" month and publishers and editors often ponder about taking out a August issue...:)

    For certifications, Carl mentioned that he was one of early adopters of the EVMP (Earned Value Management Professional) certification, which allows him access to exclusive government projects.

    Some other ways to get noticed - weekly/monthly newsletters and best customer awards.

  • A good consultant acts like "SPONGE". The important characteristic - not only easily absorb information but just as easily share that information.

  • A good consultant "KNOWS HIS/HER WORTH". If you are working for a consulting company, helpful to have good "relationship" with the accountant. The chances are that you may be in for a "sticker shock" learning what the company charges for your time!

    Important things to consider while setting the price - Prep time, Years of experience, credentials and on going support.

  • A good consultant realizes that - "MEETINGS MAKE OR BREAK CAREERS". Treat every meeting as important meetings. Show up on time and take efforts to forge relationships. Set expectations early on, in the meeting.

    Jobs and profiles may come and go, relationships last.

  • A good consultant use CONFORMITY to his/her advantage. The consultants should not try to be so different such that it takes attention away from what they are doing.

  • A good consultant should approach his/her work with lot of "ZEAL, ENTHUSIASM, INTENSITY AND FOCUS".

    Carl remarked to the audience when was the last time did they heard a project manager talk about Work Breakdown Struture (WBS) with any perkiness.

  • A good consultant "ASKS FOR FAVORS". This is not to take advantages of others, but in fact to make the person being asked, feel NEEDED.

  • A good consultant offers "HONEST EMPATHY AND RESPECT". These are specifically helpful in building relationship and trust.

    Take real life examples, Carl cited that there are lot of times at work, when a person may approach you and ask, if you had minute to talk, the first thoughts are - "Oh, Oh here goes couple of hours..."

    Instead, the recommended approach is to give the person the full attention. Try to NOT TO MULTI-TASK. In fact, if you are front of a PC, turn off the monitor or/and place the phone of the hook, if possible.

  • A good consultant "CHOOSES A SPOKESPERSON", if s/he is not the best person to market her/his skills and experience.

  • Finally, a good consultant always tries to add "VALUE" and renders a "COMMITMENT TO DELIVER."

QUOTABLE QUOTES IN THE PRESENTATION:

There is no "I" in TEAM, but there is always a "ME"


Hope you folks out there enjoyed reading this BLOG entry, as much enjoyed writing it and listening to Carl Pritchard.

For more information about Carl Pritchard and Pritchard Management Associates, visit - www.carlpritchard.com

On a side note, Carl also mentioned he was consultant who was available at cost of a e-mail and he tries to respond every e-mail within 24 hours.