4 Tips To Help Find the Root of a Bug in an Open Source Project

General Blogs January 29, 2014 By Ken Dong Staff

A few months ago, a friend came over to borrow my car. Since I hadn’t driven the car in a while, when he set the key in the ignition and turned, nothing happened. The engine had died. For most mechanics, this is where they begin diagnosing the problem. Using the process of elimination, and having already established the obvious checkpoints like whether gas is in the tank, they begin to listen to the sound of the car when it tries to crank.

Much like a car, an open source project comprises many components. Since source is readily available, it is easy to begin modifications to make it your own. The biggest frustration comes when you’ve built your engine, added all the bells and whistles and it just will not start up, or there’s something that is not performing right. As such, the key to finding the root to any problem in an open source project or code is to be able to peel back the many layers until you are left with the least amount of components that can be causing the problem.  

As you go through your diagnostic steps and begin debugging, here are a few tips to keep in mind:

1) Roll out your project in stages

Rolling out the project in stages creates layers that can be peeled away. In a Liferay project, these different stages can be your custom plugins, your portal-ext, authentication, cluster and web server setup, database and jvm settings. Each time a stage is completed, you can test for functionality. Once things are all put together, and you happen to run into an issue, you can isolate and test individual components. For example, should you try using one node instead of a 4-node cluster? Start undeploying hooks to see if the issue still exists. If you take something off and the issue disappears, then you know where to begin looking.

2) Document everything

It is crucial to provide detailed documentation of code that is changed as well as the order that things were performed. This will play a role in knowing where to put things back once you take the engine apart to find your root cause.

In many open source projects, you need to modify the code directly in order to make changes.  Documentation can be tedious and lengthy. With Liferay, modifying the source directly should be the last thing you do. Using hooks, plugins and the portal-ext.propeties file, you can create customizations that can be easily undeployed at a moment’s notice. This helps make it so that you don’t have to document every single line of code that you want to modify.

3) Have a repeatable test case

Be sure to have a specific step-by-step test case that can consistently replicate the issue observed. Every time you make a modification, you will want to go through the exact test case. If you have a documented test that is too general, you may not see the issue occur but might have still missed a step. Having the test case can require extra time in the beginning, but it will ultimately save you time in the end.

With Liferay programs like Selenium can be used to create automated test cases that will replicate the issue.  In this case you would build the test and run it everytime you change something.  This is beneficial because it can also be used in your QA environment to ensure that the bug does not resurface after development is complete.

4) Peel off or layer on

When does the bug occur exactly? To find out, you can either begin peeling layers off the entire system or start from scratch and begin layering on. Understanding common symptoms will allow you to peel multiple layers at a time and start from a strategic spot.

When you employ these four tips, along with the help of a good developing team, you will be able to identify the location of your bugs and get one step closer to a successful project.

Why I Have No Idea If Other Coffee Shops Are Good

General Blogs October 21, 2013 By Ken Dong Staff

I must admit, I am a Starbucks loyalist. The reason is that on top of having flavors to tickle my palette, I know I will be treated with great service, and that if anything goes wrong, it will be handled as if I were a premium customer. I could get the cheapest drink on the menu and occupy space at the store for a few hours, but that doesn't change the way they serve me--I am served based on my value rather than my worth. As a result, whenever I'm thinking about where I should go to work or meet up with a friend, Starbucks is always first on my list.

This little distinction can mean all the difference. When a customer is based on their worth, bigger clients will receive better service while smaller clients will be captive to the strict law of “policy.” However, this is short-sighted thinking. Customers should be regarded for their greater value rather than worth because you never know where they will end up in the future. Just think about this: if their small-scale, short-term project experience with your company was positive, what might happen when those individuals move onto a bigger company or project? The same small-bit players can become your biggest promoters within their company--without even the need for you to market to them.  

Customer Loyalty in a Portal World

Liferay desires to add value to our customers by offering both relevant information and fantastic service. For example, Liferay’s customer portal was built to provide an array of helpful information that is available for our enterprise subscribers. On this site, users gain access to extra information that will help them set up their environment. We offer official documentation on clustering, upgrades, and other common issues that our customers come across. This is also a central repository where our clients can locate and download patches, current Liferay versions, request licenses, and interact with the Liferay Support Team.  It is a one-stop shop that provides all necessary support content for any Enterprise subscriber.  

Yet, if we come across people who do not have a support account, our support engineers will likely direct the callers to other available resources in the public. Here, most of them will be able to find their answers or ask the experts in our community. When we receive tickets that may not be within the scope of our official support, our team would often say, “What can we give them to point them in the right direction?” It is this sort of "extra-mile" attitude that my team members possess, and I would like to think that we have labored to provide platinum service to gold subscribers and (what’s above platinum ... adamantium?) service to our platinum subscribers.  

How Do You View Your Customers?

So, how do you deliver true value to your customers who are worth more than their worth? Certainly, it is not merely enough to know about these principles, but you also need to apply them in the real world. Without further ado, here are three ways to deliver stellar customer service:

1. Set expectations - Your customers should be fully aware of what they should expect from you on a regular basis. If there are no clear boundaries defined, then this could be a cause for undue disappointment or unrealistic demands.  

2. Know your limits - In as much as you value your customers and desire to give them everything they need for success, there is only so much you are capable of doing. You need to know how far you are able to go for customers, so that you can tell them early on what you will be able to do for them. Customers that understand what to expect from you during a dire situation will be able to plan accordingly.

3. Act quickly - Time is of the highest value. Having the ability to act quickly not only prevents tension, but also creates fans who will root for you. Once you have a fan, you basically have a walking advertisement.

Remember, when opportunity presents itself, make a friend.  The effort will go a long way.


5 Customer Service Tips I Learned From Running a Marathon

General Blogs October 9, 2013 By Ken Dong Staff

Twenty-twelve was the year I ran like Forrest Gump. In April, I began my quest by training for a 10k. Two weeks later, I tackled a half-marathon. Eight months later, I found myself geared up at the starting line yet again, only this time to run double the distance for my first ever marathon. After six and a half hours (yes, it took me that long), I had finally finished my journey. All the relentless training and labor pains proved a sweet triumph. I proudly seized my membership into the small, elite group of marathon finishers.

Recently, I’ve been reading customer service articles and I realized that most of them--while providing keen, insightful principles--are almost always geared toward retail customers. In the retail world, the interaction between the customer and the representative is normally temporary and characterized as a sprint. Conversely, in the enterprise world, you are working with customers for a much longer stretch. You are building a relationship with them--you are running a marathon.

Upon pondering these things, I discovered 5 tips on how to apply my knowledge of crossing the marathon finish line to excelling in enterprise customer service.

1. A good start is essential

I learned this painful lesson during my first 10k. Overeager and naïve, I started out way too fast and my energy began to drain quickly. When you’re going a long distance, you want to start out slowly and gradually build up to your pace.  You cannot worry about the speed of those around you, but rather know and cling to the pace you’ve practiced.  

Likewise, a strong first impression with your client is essential. Cementing this positive impact will set the tone for the entire business relationship. Finding out facts like how these individuals work and their preferred communication helps set predictable expectations for your interactions--much like establishing a training plan. Start thinking like a coach and teach clients how to correctly utilize the services you offer.

2. Finding your stride with the customer will create a rhythm

Like most people I know, I  do not enjoy the initial minutes of running. The first half an hour of any run is always absolutely miserable. But if I start off slow and gradually increase my pace, I begin to develop a steady rhythm and my body conforms to my activity. After about three miles, my running becomes natural and my feet are free and unhindered.

Similarly, after a good first meeting with a customer, you need to begin developing a unique stride.  First, learn how to best communicate with them by understanding the customer’s personality and how they function.  Do they prefer to be on the phone?  Do they want daily email updates?  Are they going to reach out to you when they have a problem or should you be checking in regularly with them?  These are all critical questions that need to be answered so that you can serve them better.

Secondly, you must build trust. Solidifying trust may seem daunting, but it is quite simple. Keep your word and follow through quickly, and the clients will realize that they can depend on you. While you may not be able to answer your client’s questions every time, you should have the resources within your company to find an answer, and learn to navigate those systems. Once you understand the nuances of your client and gain their trust, you will be able to go far and perform well without being burdened by exhaustion and stress.

3. Training is the only way to get across the finish line

There are countless numbers of marathon training schedules available. When I decided to commit to a marathon, the first thing I did was look for a training program. It was important to find one that would harmonize with my schedule and physical ability. I stuck to my chosen training schedule because I knew that if I did, I would not need to worry come race day.

It is essential to identify the skills that you will need to succeed in the beginning. Customer service within a tech field will require much more than solely being able to relate well with your customer; it will also require a degree of technical understanding. You will need to figure out the necessary skills and make sure you undergo as much training as possible to develop those skills. Strong preparation will provide you with the tools needed to face any unforeseen obstacle that might cross your path.

4. Find yourself a good cheering squad

There is a reason why people prefer to run in larger marathons over races that are less populated--it's the crowd.  Hearing the cheers and applause is an unexplainable force that gives runners the extra energy they need when they feel on the brink of giving up.

No matter how strong your relationship is with your client, there will be times when environments go down and everything goes wrong. You may be pulling countless hours of overtime just to restore stability because many unpredictable roadblocks will emerge during a crisis. For instance, when a problem erupts, company executives will emerge who you have never encountered before. These are the times when your cheering squad is indispensable.

Just as a weary runner needs extra encouragement to finish that last mile, so we also desperately need cheerleaders who will reassure us after difficult calls. They are the ones who will grab you food and water when you’re on an 8-hour call. They are your peers who will pick up the extra work when your strength is gone. They are your supervisors who will stay late to make sure you have the resources for success. These are the people that you want to have around you. The key to gaining this resource of inspirational people is to first model and lavish it upon your colleagues.

5. When you cross the finish line, you should celebrate

As I came up on mile 25, my friends were getting worried because most of the other runners had already finished. They decided to send a singular search party with one of our group's  best runners. He found me about a mile from the finish line and ran with me the rest of the way. I remember him saying, “Once you finish this thing you can eat whatever the heck you want!” What a delectable and sustaining hope that was!

When you have a win with a client, you must give yourself permission to celebrate. After exhaustively delivering a customer from a strenuous issue, you must go out and revel in the win. Share about your experience with your team and management. Since they were your cheering squad, they will be overjoyed at your success as you figuratively plant your foot across the finish line. Crossing the finish line and great rejoicing go hand in hand!

Remember that in this marathon you are not alone.  You and your partners (clients) are interdependent, and I promise that there is no greater feeling than that moment that you cross that finish line together and realize what you have accomplished.

Liferay Gives Back

Company Blogs November 27, 2012 By Ken Dong Staff

Some of you who may have been to this year's North American Symposium you may have heard Bryan Cheung share about our partnership with an Inner City Organization called World Impact.  Here's a story of our last outting. 




Last month a number of Liferay employees had the privilege of heading out to Los Angeles to partner with the World Impact staff for their Pancake Breakfast fundraiser.  The breakfast is used to raise funds to help costs of their schools.  We all arrived about half an hour before the breakfast started.  We had various assignments from setting the tables to making pancake mix or cracking eggs and everything in between.  We quickly got to work!

JR mixing the pancake mix

Chris Lui going to town manually to get out the lumps


Once time was close we manned our stations in anticipation for the crowd to come in.  Martin Yan was our designated bacon man.

Dustin Ryerson was the face of scrambled eggs!

One by one they came, hungry and happy.  And one by one we put food on their plates! 



Until.....We realized the the people were coming faster than the food was ready!


One of the World Impact missionaries thought quickly and soon there were a number of us scrambling eggs and frying bacon in the back kitchen to keep up with the masses of people that were coming through!



We "scrambled" to keep the food coming out so that we could keep our happy customers!

We ended up going through gallons of Pancake mix and hundreds of eggs.  The staff told us that they had at least double or triple the amount of people this year than last!  They had to return to the store twice to get more supplies!  Luckily we were able to feed everyone (including ourselves!).


As some of us were handling the food others headed out to the yard to hang out with the kiddos!  Chris Lui spent a good amount of time getting pulled around and Shannon Chang even spent some time in "jail"!



This allowed time for the parents to sit back, relax and enjoy time together.


It was a great time interacting with the community, the World Impact Staff and to get to know each other better! 

Group Picture of all of the volunteers.

Liferay Picture

Showing 4 results.