Skip to content

Posts from the ‘Internet Applications’ Category

5 Rules to Becoming a Better Email User

EMail has undoubtedly become a very important part of our connected life in this information age. As such, we are challenged with learning the new ways of interacting with others for business or pleasure. Where a conventional letter may have taken nearly 2-3 weeks to receive a written reply from the recipient, we can now receive replies usually within 2-3 minutes. Sometimes, you may not even receive a reply at all.

Through a bit of frustration, sometimes people consistently do not reply to their emails unless they have been confronted or badgered about it. Usually these people only reply to those people they need something from or who give in to the badgering. If you tend to be one of these people, please review the following unwritten email rules.

1. Any response is better than no response – Understandably, Emails are not intended as a replacement for chat or a phone call. However, if you receive an email but cannot tend to working on the task until later, please at least reply with a notice that you received the email and provide an ETA on when you will be able to take a look at said item or provide a reply for that email. This is just common courtesy to insure that the sender does not feel ignored.

I just ran into an issue today, where I sent two co-workers an email last week. At the most I personally give people a max of 2 days before I have to start picking on them for a reply. I saw the guy in the hall, and he told me that he had a follow up flag on it and that he was working on it. How was I supposed to know that? It’s really just a matter of simple communication to insure both parties are on the same page. He simply could have just replied to let me know that he was thinking about me.

2. Reply in a timely fashion – Although, you may follow the first rule but you do it after the acceptable time limit has elapsed. It used to be, the rule was 48 real hours when I first started back in the 90s. However, with the nature of the fast paced world we live in, for business emails consider a respectable 4 business hour window for a response. Start that clock from scratch for the very next day that you are in (say if the email was sent over the weekend), whip a reply out before your lunch hour on Monday morning.

If you are running your own business, use this same rule working with your clients. Clients absolutely love communication, and with internet based businesses you can potentially stretch this out to a 24 non-business hour period. The internet never sleeps but you have to at some point and you cannot be expected to wake up during the middle of the night answering questions to a bunch of drunk people coming home with the itch to shop.

3. Use Auto responders or Out Of Office Assistant – Within a business, if you are out for the day, setup an auto responder to let the other party know so they are not waiting around all day for a reply. Sometimes people will setup an out of office message on their voice mail but not within their email system. Microsoft Outlook with Exchange makes this pretty easy to do.

If you are an entrepreneur, customers are the lifeblood of your organization. You should already have auto responders setup for your customers so adjust those in the event that you decide to take a vacation. Be proactive with your business contacts and let them know you will be unavailable or setup an out of office assistant in your email client as well.

4. Follow Up – The first rule established that you should definitely make an attempt to complete a communication with a first confirmation email. Do not forget to follow up on an email once the task is complete. This may sound like common sense, but it happens quite frequently where I’ll have to go follow up with somebody and they tell me that it is already taken care of.

To really show you care about the party you are working with on the other end, once a task has been completed, schedule a follow up with that person in the future to check in with them to insure that they are still satisfied.

5. Make a System - Develop a system to make this become second nature to you. There are also times that after your initial reply, you will have to provide follow up emails. Some emails systems make this easy by adding a follow up flag to an email or dragging the email to your calendar. The most basic system of course is the fact that if an email is unread, if it merits a reply, provide one right away.

If you have a basic email system, create a folder or a label (like in GMail) “follow up” or “reply” and put those emails in there. At work in Outlook, I use categories and assign a color category to emails I need to follow up on and sort my inbox by categories. In my GMail or Google Apps account, I assign labels. In places like my cell phone where this functionality is limited, I mark the email unread until I can get to a computer to reply.

Becoming a better email user will make you an email superstar and a great communicator in the information age. Following these simple rules will increase trust in your clients and a better team player at work.

28 Sep 2010

Liferay Enterprise Tomcat 6 Upgrade for Linux

We recently ran into an issue with our Liferay Enterprise install where the version of Tomcat they had bundled in was falling behind security wise. Currently Tomcat 6.0.29 is available and their bundle is currently holding fast at 6.0.18. When we first set out to install Liferay for use with some internet applications, it was my original intent to start off with a separate installation of Tomcat that we maintain and install the Liferay components on top of that. The consultant that was working with us strongly discouraged that so despite my gut feeling I made the mistake of giving in to the our customer’s demands to get the project underway and installed the bundle. Liferay is pretty well integrated with the various bundles that they support so this is not just a simple drop in and replace upgrade of Tomcat. Word from another department integrating it with JBOSS encountered a similar struggle.

At some point in time, if you began using the bundle, you should have unzipped/untar’d it to a given location, for our servers we used /opt. For simplicity sake, I will just state that liferay is rolled out to a directory called “liferay” beneath /opt. Your directory may be “liferay-portal-5.2.3-ee-sp4″ or something to that effect. Beneath /opt/liferay, you should have 4 directories, “deploy”, “ee”, “data” and the tomcat directory encoded by default with the specific version number that was bundled with your install.  For the purposes of this update will refer your current directory of the bundled Tomcat install $TOMCAT-OLD and the one you want to upgrade to $TOMCAT-NEW.

Download the latest version of Tomcat 6 here: http://tomcat.apache.org/download-60.cgi

Stop the current running version of Liferay/Tomcat.

Unzip apache-$TOMCAT-NEW to the same directory as your Liferay bundle “/opt/liferay” then rename to the same naming convention (removing “apache-”).

Edit $TOMCAT-NEW/conf/catalina.properties
Search for the line:

common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar

Replace the line with this:

common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/lib/ext/*.jar

Edit $TOMCAT-NEW/conf/server.xml
change each instance of

redirectPort="8443" />

to

redirectPort="8443" URIEncoding="UTF-8" />

(three instances, one of which is commented out)

Copy setenv.sh from $TOMCAT-OLD/bin to $TOMCAT-NEW/bin

Delete all contents of $TOMCAT-NEW/webapps

Copy the contents of $TOMCAT-OLD/webapps to $TOMCAT-NEW/webapps

Create directory $TOMCAT-NEW/lib/ext

Copy the contents of $TOMCAT-OLD/lib/ext to $TOMCAT-NEW/lib/ext

Create directory $TOMCAT-NEW/conf/catalina/localhost

Copy the contents of $TOMCAT-OLD/conf/catalina/localhost to $TOMCAT-NEW/conf/catalina/localhost

Review the $TOMCAT-OLD/bin/catalina.sh, you may have custom environmental variables. This is a sample chunk of what gets moved to $TOMCAT-NEW/bin/catalina.sh

CATALINA_HOME=/opt/liferay/$TOMCAT-NEW/tomcat-6.0.29/  
 export CATALINA_HOME  
 PATH=/usr/java/jdk1.6.0_18/bin:$PATH  
 export PATH  
 JAVA_HOME=/usr/java/jdk1.6.0_18  
 export JAVA_HOME

and append with

CATALINA_BASE=/opt/liferay/$TOMCAT-NEW/  
 export CATALINA_BASE

(Be sure to make sure all instances of $TOMCAT-OLD have been replaced with $TOMCAT-NEW).

Test the new install of tomcat by running

/opt/liferay/$TOMCAT-NEW/bin/catalina.sh

If you are starting Tomcat automatically, copy the new catalina.sh over to /etc/init.d/ and the existing symlinks from the proper run levels will be updated as well.

If you have any issues with this process, please feel free to comment below.

1 Sep 2010

Virtuemart 1.1.5 class jfactory not found for Joomla 1.0.15

In a recent effort to migrate an overdue Joomla 1.0.x installation to Joomla 1.5, I hit a snag where the Virtuemart shopping cart needed to be upgraded to be compatible with the migration script. In doing so, this broke the shopping cart checkout on my Virtuemart 1.1.5 instance.

When a user fills their shopping cart with products, then proceeds to the checkout it dumps to a completely blank screen with this error:

Fatal error: Class ‘jfactory’ not found in /var/www/xxx/administrator/components/com_virtuemart/html/checkout.index.php on line 28

Searching around, I did not find too much help with this one other some related posts with other Joomla components which were considered “compatible” with Joomla 1.0.x. This error occurs when the Virtuemart code attempts to use a component that comes with Joomla 1.5 called “jfactory”.

if( file_exists(CLASSPATH . 'payment/ps_paypal_api.php'))
 {
 $lang = jfactory::getLanguage();
 $name= $lang->getBackwardLang();
 if( file_exists(CLASSPATH ."payment/paypal_api/languages/lang.".$name.".php"))
 include(CLASSPATH ."payment/paypal_api/languages/lang.".$name.".php");
 else
 include(CLASSPATH ."payment/paypal_api/languages/lang.english.php");
 
if( file_exists(CLASSPATH . "payment/ps_paypal_api.cfg.php"))
 {
 include_once( CLASSPATH . "payment/ps_paypal_api.cfg.php");
 }
 require_once( CLASSPATH . 'payment/ps_paypal_api.php');
 $paypalActive = ps_paypal_api::isActive();
 $ppex_checkout_details=ps_paypal_api::ppex_getCheckoutDetails();
 }
 else

Carefully looking at the jfactory portion of the code, it becomes a bit more clear. It first fills the $lang variable, then uses that to concatenate a variable for $name. Which, for most of us is simply going to end up as “english”. I looked for a way to install jfactory on the 1.x.x Joomla site and I did not find squat.

What I simply ended up doing is removing the $lang and $name lines, and simply removed the if/else clause to force it to use English. The code should end up like this:

if( file_exists(CLASSPATH . 'payment/ps_paypal_api.php'))
 {
 include(CLASSPATH ."payment/paypal_api/languages/lang.english.php");
 if( file_exists(CLASSPATH . "payment/ps_paypal_api.cfg.php"))
 {
 include_once( CLASSPATH . "payment/ps_paypal_api.cfg.php");
 }
 require_once( CLASSPATH . 'payment/ps_paypal_api.php');
 $paypalActive = ps_paypal_api::isActive();
 $ppex_checkout_details=ps_paypal_api::ppex_getCheckoutDetails();
 }
 else

I hope you can breath a sigh of relief as I did when this end up working properly to allow orders to start flowing again.

11 Aug 2010