Recent Bloggers

Andrea Di Giorgi

3 Publications
26 décembre 2014

Jorge Ferrer

Staff
59 Publications
23 décembre 2014

Olaf Kock

Staff
90 Publications
18 décembre 2014

David Kubitza

2 Publications
14 décembre 2014

Meera Prince

19 Publications
4 décembre 2014

James Falkner

Staff
100 Publications
2 décembre 2014

Juan Fernández

Staff
17 Publications
28 novembre 2014

Gregory Amerson

Staff
26 Publications
25 novembre 2014

Cody Hoag

Staff
6 Publications
25 novembre 2014

Duke H

Staff
2 Publications
24 novembre 2014

Engaging the Heart to Enhance the Employee Experience

General Blogs 21 janvier 2014 Par Ivan Cheung Staff

 

Last week I saw a musical that took my trip to Disney World to a whole new level, and I learned a lesson in taking my own employee experience to a whole new level. I saw "Finding Nemo - The Musical" at Disney World's Animal Kingdom theme park. Here's how it played to my heart:

  • I loved the original movie, Finding Nemo
  • I appreciate creative story telling. Disney's mastered the art of transforming an animated movie with no singing, into a stage act with huge puppets, live actors, and lots of singing.
  • The musical reminded me of my heart-felt connection with Marlin (the wise, but overly cautious and protective fish) and Nemo (the naiive son of Marlin who is ready to take on life without boundaries). Sometimes in life, I am Marlin, and at times I am Nemo...and the interplay between the Marlin and Nemo is a microcosm of how life happens between family members, coworkers, and friends.

This got me thinking, we spend at least 40 hours a week working, and many of us enjoy our jobs already. But what if there are ways in which we can engage one another in the workplace that would take our own employee experience to a whole new level? Similar to how Finding Nemo Musical's heart connection enhanced my Disney World experience, your workplace experience will rise if there is a heart-felt connection within the company. Clarification: When I talk about "heart-felt connection", I am not referring to anything romantic between two people! I'm referring to those non-romantic things that add meaning and purpose to life. Imagine work being a place where you are not only working toward a common goal of serving your customers, but a place where you also share other passions, common interests, or causes with coworkers. 

The best thing about this is that every person, regardless of role or title, can search for that heart-felt connection within your company.

  1. Start by examining your own interests and passions. It can be anything! Even getting tasks done can be a passion, but I bet you can find one more thing besides that. ;P
  2. Put feelers out there to your coworkers, to your bosses (even customers!) by engaging in small talk with the appropriate boundaries and timing. You don't want to be seen as unproductive or unprofessional. But you have to start somewhere
  3. Be prepared for failures and successes. All you need is one connection!
  4. Be open to share a heart-felt connection with someone you may not know very well and be open to exploring new interests or passions.
  5. Make it a habit to continue engaging the heart-felt connection with at least one other person one time per week. As humans, we can grow disinterested or tired, so it's essential that we help each other out through encourgement and reminders.
  6. Take it to the next level. If there are two of you who have a common connection, take action! Invite others to lunch discussions or after-work activities related to the connection.

For #1, I guarantee that you have a passion or interest. If you can't think of any, by all means, whether you're a Liferay Staff or Community Member, let's get in contact! (email me and we'll talk about it after work) I just want you to have a great employee experience at your company and finding that heart-felt connection is just one of many ways to do that.

What types of heart-felt connections has enhanced your employee experience?

Some clients are just far away

Company Blogs 11 septembre 2009 Par Ivan Cheung Staff

Most of the client (and potential client) locations I've visited in China have been in big, crowded, metropolitan cities.  This particular one was different since it was located on the outskirts of one of the largest southern cities.  We were visiting their headquarters which was strategically located next to their manufacturing plants. 

I won't mention how long it took door to door to get from Liferay's  Dalian office to this place, but it was certainly a breath of fresh air away from busy civilization.  The countryside was quaint, taxis were sparse, and people were super nice.  Steven commented that it seemed like everyone was happier and more friendly, which was apparent through their attitudes while helping us find where the client's site was.

 

The driver was trying to convince us we could fit inside.  Hmm, I wonder..

 

We took up ALL the space.

 

Check out the video!

5.1 Overhaul of Personal Communities

Company Blogs 11 juillet 2008 Par Ivan Cheung Staff

One of the most widely used features of Liferay is the Personal Community, aka My Community, aka Personal Space. It's a feature that allows users to have their own set of web pages, both private and public, to manage and update as they please. It's also a feature that has been challenging for developers to deal with. For example, you would like to grant certain users a Personal Community, but you want to be able to customize how it looks and what it does before you give it to them. These are the issues that were taken into consideration when version 5.1 was created!

One major update has to do with who gets a Personal Community. 5.1 jump kicks the Power User role out the window, so by default ALL users get a Personal Community. What if I want to be restrictive about who gets a Personal Space? I'm a control freak, how do I regain control over who gets a Personal Community!

Here is one quick way to do it in ServicePreAction.java.
First I have decided to overwrite the ServicePreAction class, so I've put this in my portal-ext.properties:

servlet.service.events.pre=com.ext.portal.events.CustomServicePreAction

I basically copied over the original ServicePreAction to my EXT environment and renamed it. Search for "// Layouts" inside ServicePreAction. Notice how the portal checks if you are signed in first, if you are then it checks to see whether layout.user.private.layouts.enabled is true. If layout.user.private.layouts.enabled=true, then it executes addDefaultUserPrivateLayouts(). Let's try putting in some logic that will also check if the user has the Power User role:

if (signedIn) {
               if (PropsValues.LAYOUT_USER_PRIVATE_LAYOUTS_ENABLED && 
               /* check if user has Power User role */
               UserLocalServiceUtil.hasRoleUser(RoleLocalServiceUtil.getRole(companyId, "Power User").getRoleId(),        user.getUserId()))  

                { 
                                   addDefaultUserPrivateLayouts(user);
                }
                else {
                                   deleteDefaultUserPrivateLayouts(user, companyId);
                }
               if (PropsValues.LAYOUT_USER_PUBLIC_LAYOUTS_ENABLED) {
                                   addDefaultUserPublicLayouts(user);
               }
              else {
                                   deleteDefaultUserPublicLayouts(user);
               }
}

Also make sure to modify the logic for deleteDefaultUserPrivateLayouts() to be consistent with the portal's default behavior!


protected void deleteDefaultUserPrivateLayouts(User user, long companyId)
     throws PortalException, SystemException {
         if (!PropsValues.LAYOUT_USER_PRIVATE_LAYOUTS_ENABLED && user.hasPrivateLayouts() ||
         /* if user does not have Power User role, and has a Private Community with private pages, delete the private pages */
        !UserLocalServiceUtil.hasRoleUser(RoleLocalServiceUtil.getRole(companyId, "Power User").getRoleId(), user.getUserId())&& user.hasPrivateLayouts()*/)

        {
                 Group userGroup = user.getGroup();
                 LayoutLocalServiceUtil.deleteLayouts(userGroup.getGroupId(), true);
         }
    }


Please refer here for more information on Personal Communities: http://wiki.liferay.com/index.php/Personal_Community

Turn Liferay into a Blog Service - Part 1.1

Company Blogs 12 juin 2008 Par Ivan Cheung Staff

I've been playing around with Liferay portal version 5.0.1 and have found some new features that make it easy to create a community driven website.  When I hear good news, I just wanna share it, so here it is.  Enjoy!

Part 1.1 is meant for beginner Liferayers to get familiar with some of the cool out of the box settings Liferay portal has that may help you in other projects. The footnotes provide details for more curious folks!  At the end of Part 1.1, you will have configured Liferay so that strangers can sign up for an account on your website.  In this section, we won't do ANY programming. 

Installation
- Download Liferay + Tomcat bundle: http://downloads.sourceforge.net/lportal/liferay-portal-tomcat-5.5-5.0.1.zip
- Unzip the bundle to a directory of your choice.
- Let's browse to where you unzipped the Liferay Tomcat bundle; I will refer to this location as $TOMCAT_HOME.  Go to $TOMCAT_HOME\bin and double click on startup.bat.
- Open a web browser and browse to http://localhost:8080

Checkpoint
If you are having trouble with installation, refer to: http://www.liferay.com/c/portal/flash?movie=http://docs.liferay.com/4.4/videos/1001.swf

Default Account Creation
At the upper right hand corner of the screen, you should see a dock menu.  Hovering over it will produce a Sign In button.
- Click the Sign In button.



 

- Click on Create Account.  Notice the different fields on the registration screen. 

I've indicated the required fields (1):


- Fill in the required fields and click Save.
- You get redirected to the Login screen where it will also mention an autogenerated password.
- Use the password and email to Login to the portal.  Notice the Terms of Use that you must Agree to before proceeding.
- You finally land on a page with a bunch of default portlets.  This is called a user's personal community or "My Community" (2). 

Checkpoint

Now you know the default account creation process.  Let's modify some of this process by changing portal-ext.properties (3).  Remember, no coding during in this section!

Custom Account Creation
- Browse to $TOMCAT_HOME\webapps\WEB-INF\classes\.  If it doesn't exist, create a file called portal-ext.properties.
- Inside portal-ext.properties append the following and save:

    admin.default.role.names=Power User\nUser

    field.enable.com.liferay.portal.model.Contact.male=false
    field.enable.com.liferay.portal.model.Contact.birthday=false
    field.enable.com.liferay.portal.model.Organization.status=false   

    captcha.max.challenges=-1

    terms.of.use.required=false

    auth.forward.by.last.path=false

- Restart Tomcat (4) and go through the Account Creation process again.  Did you see the differences? 

Checkpoint
You've set up a website that will allow strangers to register for accounts and get their own set of personal web pages.  You also know how to utilize the portal properties to customize Liferay to behave differently than the default.  You should try exploring other portal settings (5).  Stay tuned for the next Part in this series, which will cover customizing a user's personal web page.

------------------------------------------------------------
Footnotes
(1) user account creation required fields
By default, Liferay requires at the very minimum a first and last name, screen name, and email address to create new user account.

(2) My Community
A personal community is simply a special set or group of web pages for a specific user.  Does every user get a personal community?  No.  Only user's with the Power User role get their own "My Community".  By default, newly created users get the Power User and User role as specified in this portal.property setting:

    admin.default.role.names=Power User\nUser

(3) portal-ext.properties
All of Liferay's portal specific settings are stored in a file called portal.properties.  So naturally, we'd want to modify portal.properties if we want to change any settings right?  Wrong.  Liferay was created in a way so that folks like you and me could modify ANYTHING, but the best way was to create an Extension environment where we make our changes.  If we modify the source code directly, it will make it difficult to do upgrades in the future.  What's the Extension equivalent of portal.properties?  It's portal-ext.properties.

(4) Modifying portal-ext.properties
You must restart the server in order for your modifications to take affect.  Also, your modifications don't change old data; they only affect new data.  This means that if you changed the portal's settings so that new users get the 'Power User' and 'User' role, the setting will not affect users who were created prior to your modification.

(5) Properties explained:
The Birthday, Gender, Text Verification (captcha), and Terms of Use are now hidden because of:
    field.enable.com.liferay.portal.model.Contact.male=false
    field.enable.com.liferay.portal.model.Contact.birthday=false
    captcha.max.challenges=-1
    terms.of.use.required=false

Since we want all users to receive personal communities we want to make sure to include this setting:
    admin.default.role.names=Power User\nUser

We can ensure that a user always get forwarded to their peronal community's web pages when they login with this:
    auth.forward.by.last.path=false

You can download Liferay portal 5.0.1 source code to see more details for these settings: http://downloads.sourceforge.net/lportal/liferay-portal-src-5.0.1.zip
Just unzip and browse to $SOURCE_HOME/portal-impl/src/portal.properties

Changes

June 17, 2008:    captcha.max.challenges=0   -->     captcha.max.challenges=-1

 

Clustering Liferay + Tomcat + Mysql on Windows XP.

Company Blogs 11 mars 2008 Par Ivan Cheung Staff

Recently I set up a clustered environment using three servers, two with liferay-tomcat-4.4.2 bundle and one with apache 2.2 http server.  Here are my steps:

STEP 1:
Download and install the following, each on a different server:
Server A - Apache 2.2
Server B - Tomcat1 (Liferay-tomcat-4.4.x bundle)
Server C - Tomcat2 (Liferay-tomcat-4.4.x bundle)

At this point you should have unzipped the liferay-tomcat-4.4.x bundle to two different servers and Apache 2.2 to a third server.  You shouldn't have changed any of the configurations.

STEP 2:
Create a new Liferay schema on Server B on Mysql and connect Tomcat1 and Tomcat2 to the new database. 
Assuming you have Liferay core compiled, or our sql script pack, execute this in windows command window, in the mysql prompt:


mysql> create database portal442 character set utf8;

Modify the ROOT.xml of Tomcat1 and Tomcat2 so that they connect to 'portal442' database. Liferay will automatically populate the database with tables and some minimal data when I start either one of the servers up if I don't run any of the sql scripts availabe in the portal source.

STEP 3:
Download and install the mod_jk shared object file into Server A - $Apache_2.2_HOME/modules/

I renamed my mod_jk file so now I have a mod_jk.so in $Apache_2.2_HOME/modules/.  After you've installed mod_jk into the Apache server, you can continue to the next step.

STEP 4:
Create httpd-mod_jk.conf in $Apache_2.2_HOME/conf/extras.  Paste these contents into httpd-mod_jk.conf:

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkLogLevel info
JkShmFile logs/jk-runtime-status


Note:
"LoadModule jk_module modules/mod_jk.so" -  loads mod_jk.so so that you could use mod_jk arguments.
"JkWorkersFile conf/workers.properties"  - specifies location of workers.properties file where the load balancer and any servers involved with the cluster are defined.

STEP 5:
Create workers.properties in $Apache_2.2_HOME/conf/.  Paste these contents in there:

worker.properties:
worker.list=portal-01,portal-02,loadbalancer

worker.portal-01.port=8009
worker.portal-01.host=<IP-address of Server B>
worker.portal-01.type=ajp13
worker.portal-01.cachesize=10

worker.portal-02.port=8009
worker.portal-02.host=<IP-address of Server C>
worker.portal-02.type=ajp13
worker.portal-02.cachesize=10

worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=portal-01,portal-02
worker.loadbalancer.sticky_session=1


Note:
I've designated Server B and Server C to be my Liferay servers, an in worker.properties I've given Server B a symbolic name (portal-01) as well as Server C (portal-02).  You can give your servers any symbolic name so long as they are consistent! 
Also make sure that the port and host for each server configuration in workers.properties is consistent with the server itself.

STEP 6:

Modify $Apache_2.2_HOME/conf/extras/httpd-vhosts.conf
Make a backup of httpd-vhosts.conf.  The contents of httpd-vhosts.conf should now just consist of:

NameVirtualHost *:80

<VirtualHost *:80>
  JkMount /* loadbalancer
</VirtualHost>


This makes it so that anytime the localhost url of Server A is hit, the load balancing mechanism will control whether the user will actually go to Server B or Server C.

STEP 7:
In Apache's httpd.conf we need to include our new httpd-mod_jk.conf and our modified httpd-vhosts.conf. 

Uncomment the following in $Apache_2.2_HOME/conf/httpd.conf:
#Include conf/extra/httpd-vhosts.conf

Append the following in $Apache_2.2_HOME/conf/httpd.conf:
Include conf/extra/httpd-mod_jk.conf

Restart Apache.

STEP 8:
Paste this into portal-ext.properties for Tomcat1 and Tomcat2:

net.sf.ehcache.configurationResourceName=/ehcache/hibernate-clustered.xml

ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm-clustered.xml

comm.link.properties=UDP(bind_addr=127.0.0.1;mcast_addr=231.12.21.102;
mcast_port=45566;ip_ttl=32;mcast_send_buf_size=150000;
mcast_recv_buf_size=80000):PING(timeout=2000;num_initial_members=3):MERGE2(min_interval=5000;
max_interval=10000):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(gc_lag=50;
retransmit_timeout=300,600,1200,2400,4800; max_xmit_size=8192):UNICAST(timeout=300,600,1200,2400):
pbcast.STABLE(desired_avg_gossip=20000):FRAG(frag_size=8096;down_thread=false;
up_thread=false):pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;print_local_addr=true)

web.server.display.node=true

Restart both Tomcat1 and Tomcat2.
 

New UI for Roles (Define Permissions)...ahhh nice

Company Blogs 3 décembre 2007 Par Ivan Cheung Staff

Recently I happened across a thread where Carlos Santos Sáenz was asking about how to best set up Roles and permissions.  As I attempted to duplicate Carlos' efforts, I realized that the root cause of his (and probably so many other people's ) difficulties had to do with Liferay's UI.  I have to admit that it is confusing at times for me too, which is what motivated me to help both the community and myself out. 

Exhibit A

To get to this screen you would venture inside the Enterprise Admin portlet -> Roles Tab -> (Action) 'Define Permissions' -> click on Bookmarks link.  Let's dissect how the old way of defining permissions for a role. 

You might find Exhibit A in the dictionary illustrating the word 'Ambiguity'.  Although there is clearly an instruction at the top, the first thing that jumps out at me is "Resources".  What the heck is a resource?  If I click one of the resources and remain there, I would completely miss the area to assign permissions for the Bookmarks Portlet 'Configuration' action. 

Furthermore, if I did read the instruction, I would still end up saying, "what the heck is a resource?"

The old way also forces you through up to 4 precarious steps, which means 4 refreshes..and 4x the time/effort.

The old way also never shows you a "Finish" or "Save" button. 

Exhibit B

 

Exhibit B is the new look of defining permissions for Roles. 

  • Notice there are two total steps and the nice 'save' button at the bottom.  We just increased efficiency by 200%! 
  • Now it doesn't really matter what a resouce is, although it's a bit more clear now. 
  • See all possible permissions in one central location.
  • If you select 'Community' from the dropdown, the 'Select' button will appear.  Upon clicking 'Select', you'll get a pop up window where you can choose multiple communities
  • Dynamic "tag" style list of communities you choose

 So how did I go about implementing all these improvements?  Not much...  I opened up an LEP ticket,...and that's about it.  :P  Thanks Jorge!  You can track us bouncing ideas off each other here: LEP-4315

I can tell that Liferay's UI is going through a growth spurt and I look forward to seeing more of it.  People don't put new wine into old wineskins...keep up the awsome work guys!!

Job Fairing in China

Company Blogs 6 novembre 2007 Par Ivan Cheung Staff

Remember the days of yore when the big annual college job fair came around?  Hundreds of anxious students gather, holding a stack of resumes under left arm while keeping their right hand dry for greeting potential employers.  The sight is humorous to behold, at least from an outsider's perspective, but from a student's point of view it's nerve wrecking! 

Recently, Liferay Dalian attended it's first job fair at Dalian University of Technology, one of the top ranking school's in China.  Mark, Steven, and  I manned our table along with a good friend from DUT.  I believe we were the only english speaking foreign company that was there so we definitly stood out. 

Many of the english speaking students were pretty astonishing, although a few of them were shaking and sweating from the forehead.  The ones that impressed me most were the students that took the initiative in introducing themselves and explaining the highlights of their resume.  I had to wonder, do Chinese employers value the same type of positive attitude and confident demeanor as American employers do?  How does one grab the attention of an employer that has seen scores of students before them?  I sure remember some of the students who's first line to me was, "I am sorry, my english is poor..."  I felt that I had the responsibility to help them with a better interview technique, so I told them they should just speak and not admit their english is poor.

All in all, my impression of students in Dalian are similar to my sentiments to students in the states.  Here are a group of individuals who still have that spark of idealism that many have lost, most of whom will go through phases of discouragement from the same world they so very want to change.  I mean, here are our leaders for tomorrow!  By the end of the day I felt like helping everyone finding a job even outside of Liferay. 

We'll see what comes out of the standouts with Mike Han's interview!  In the meantime, enjoy the pics!

 

IMG_1906

Mark, DUT Friend, Me with display poster

 

Job Fair Job Fair Job Fair Job Fair

The bright students of DUT / Mark and Steven working hard!

Liferay Dalian

Company Blogs 19 octobre 2007 Par Ivan Cheung Staff

What is Liferay? Liferay is the reason I'm here in Dalian.

 

What is Dalian? It's the city that has welcomed us to the Middle Kingdom, but it's also a place with interesting geography. This second tier city is a peninsula boasting clean water and blue skies. Mounds of green hills scatter the city, a remarkable addition to the scenery you'd enjoy out of our twelfth floor office view. From our window, you could even see a bit of older China before old is replaced with the new. Dalian is beautiful!

 

What is Liferay Dalian? It's a group of talented individuals from different parts of the country as well as from across the Pacific, coming together to contribute to the success of the company. If you're familiar with "Heroes", a popular American TV show, you'll know that the characters in the show are destined to save the world from impending evil. The first season focused on the characters discovering their unique abilities, I feel that we're in the same chapter here in Dalian...and yes with Liferay setting the tone we are fighting different evils of this world...hunger, poverty...I love the bigger picture! Now enjoy these pictures of Liferay in Dalian.

Views IN and FROM Liferay Dalian Office

 

View from my window View from my window
View from my window View from my window



Heroes Need To Eat

View from my window View from my window View from my window View from my window

Embarrassment Spawns a New Blog

Company Blogs 26 septembre 2007 Par Ivan Cheung Staff

Here I am in Dalian, China, an area which I hardly know. I want to be open and excited about new experiences in a city not as documented as Beijing on the internet, but I can’t help but feeling helpless in many ways. I have one friend here (coworker),..my wireless router isn’t working properly..i haven’t found a bus schedule or foreigner friendly map…and the worst thing is that I have the chinese language level of a preschooler. Heck I can’t even write my own name yet!


The other day I went to the Bank of China to exchange my weakening dollar for chinese currency (RMB) which seems to be strengthening every day! There was only one other customer handling a transaction with a teller, so I stood behind awaiting my turn. Some other folks trickled in behind me so I was glad I had gotten there early. The first customer stood up and this lady jumps in front of me and talks to the teller before I could say anything! Ok, I’m in China, I have to remember that initiative is important, especially when waiting in lines. I’ll keep cool. The lady leaves and I make my way to the front and another lady cuts me off! My mind starts going berserk because I really wanted to say something this time but didn’t know how. I finally came up with my best sentence “bu shi yao pai dui ma?” which was my rough way of saying “you don’t need to stand in line?” There was not a flinch or acknowledgement from the lady that I had said anything; it felt as though I was invisible and mute yet I could feel other people boring a hole through my skull with their stares. I shook my head in disgust and laughed it off filling my head with snide remarks I would’ve wanted to say.


The moment the lady gathered her papers I observed another guy making his move so I quickly put my documents in front of the teller. Triumph!? …NOT! The teller tried telling me something I painfully couldn’t understand and the next customer was so kind to show me what I had been missing. He led me to this machine where you get a ticket to wait in line for your turn to be called. It dawned on me that there was in fact a well established system which beat the heck out of waiting in line. All of my bitter thoughts transformed into red pigments that sunk down to my face.


After some thought, I decided that more of these incidents would happen. I thought I came prepared to be a student of the culture to learn the nuances of living in a foreign land. But I feel that I will inevitably run into countless learning experiences which I want to record on this blog. My goal in China is to learn from the people and culture. And if I’m fortunate enough, I will have something for them to learn from as well.

Affichage de 9 résultat(s).
Items 20
de 1