I need some help

There is something I am working on that I need a term or short phrase for and I am at a total loss. Some of you are much more creative than I am so I figured I’d post for help. If I end up using your term I’ll give you one of my pens or wine stoppers for free as a token of my appreciation.

Here it is:

“beautiful yet/and functional”

I need a phrase, preferrably 1-2 words that represents this without using the phrase above verbatim It can be in any language (preferrable if it uses the latin character set) and just has to mean this.

I’ve got a stock of pens and wine stoppers that I will let the winner pick from.


Ruby on Rails with Paypal

I couldn’t find a good example of a Ruby on Rails Paypal Website Payments Standard implementation that I could open the hood and dig around in. The majority of the ones I found were partially implemented, geared at Website Payments Pro ($30/month), or were commercial products. So I decided to write a test to see how it all worked.

DISCLAIMER[0]: I am NOT a good Ruby on Rails coder. I am from a Java world and still find the world of closures and dynamically typed variables a little disorienting. That said, things could definitely be cleaned up and made to work better. I am open to house cleaning suggestions.

DISCLAMER[1]: This was done over the past couple months in my spare time only so there are likely bugs. I have only tested this in the Paypal Sandbox and have NOT used it in any production capacity. If you plan on using this in a production environment DO NOT assume that it all works correctly. TEST! Let me know if you find any bugs.

Let’s jump in.

The first thing you should know is that accessing the cart automatically and randomly generates and stores down inventory so you don’t have to worry about it.

This test covers the following scenarios:

  • Basic connection using form variables and posting in the same window.
    This is the most straight forward scenario. The page has hidden fields that contain all the information needed to start the payment process. When the user click the checkout button they are directed over to Paypal for payment. They then have the option of returning to the site after the payment process completes or if they decide to cancel.
  • Return URL order detail validation.
    When the user clicks “Return to Paypal Test Site” on the payment confirmation page within Paypal this site then validates the data submitted from that click in order to ensure payment and order details are correct. NOTE: This is not secure and was just the first step of the test. Don’t do this in real life!
  • Payment data transfer (PDT) order detail validation.
    PDT basically sends an encrypted token back which can then be posted to Paypal to get payment and order details. This allows the server to verify details about the transaction, removing the ability for users to change the validation data. Note that PDT only happens if the user returns to the site from the payment confirmation page within Paypal. All but the first scenario use PDT and IPN together.
  • Instant payment notification (IPN) order detail validation.
    IPN is the same as PDT, only it happens regardless of whether the user returns to the site. All but the first scenario use PDT and IPN together.
  • Page level redirection to Paypal.
    This hides the paypal form tags on a redirect page that is only displayed briefly. This moves the Paypal form variables off the cart page, where they tempt people to try to change them, off into a briefly displayed redirect page. This by no means offers any real security, however it does obscure the process a little bit, making it less tempting to play with. IPN and PDT are in place for this option as well.
  • Controller level redirection – not fully working.
    The idea behind this one is that it passes all the Paypal form fields across at the server level, removing the ability for users to interact with or change them. This uses the Net::HTTP code to do some funky POSTs and redirects but is failing at the moment. I have the code so that it submits via Net:HTTP in the controller and follows the redirects, however it is not transferring cookie or form data correctly (not sure which/either), which causes Paypal to redirect to an error page. I would be very interested to see if anyone can get this one working.
  • DHTML popup window payments.
    This is the same basic concept as the standard flow with page level redirection only the Paypal site is displayed in a centered popup window. Cancelling the paypal transaction simply closes the popup, leaving you still at the shopping cart. Completing the transaction redirects the entire window to the payment confirmation page.

Changes that you will need to make to get this working:

  1. Update models/util.rb to point to your email addresses and Paypal sandbox info.
  2. Update config/environments/development.rb to point to your SMTP server.
  3. Update the controllers/website_payment_standard_controller.rb PDT_IDENTITY_TOKEN variable to point to match your PDT identity token.

NOTE: I removed the Test folders to lighten the load and quickly remove a bunch of SVN folders but didn’t try it out after this. If you are having any errors revolving around tests, create a new project then copy the test folder and its contents over to this one.

The files:  paypal.zip

Enjoy!


Culture for the "A" Players

Many companies have the concept of “A”, “B”, and “C” players, although GE’s Jack Welch made this famous in one of his books. The reason there is no classification for a “D” player is because companies should ultimately get rid of anyone not performing to the expectations of, at the very least, a “C” player.

Characteristics of an “A” player:

  • Challenges the status quo in order to drive positive change
  • Delivers on objectives without having to have someone hold their hand
  • Will largely succeed in their tasks despite the deadlines, politics, and team involved
  • Wins

Characteristics of a “B” player:

  • Does what they are supposed to do
  • Has a good track record
  • Needs guidance sometimes but not hand holding
  • Sometimes goes above and beyond but is not the norm
  • Has the potential to step up to be an “A” player
  • Wins most of the time

Characteristics of a “C” player:

  • Sometimes does what they are supposed to do
  • Has a moderate track record
  • Rarely, if ever, goes above and beyond
  • Needs a fair to high level of hand holding
  • Has the potential to step up to be a “B” player
  • Sometimes wins

Most companies are bottom heavy. That is, they spend a large deal of time working with and fostering “C” players with the expectation that “A” and “B” players are already doing a good job and don’t need attention. Part of what Jack Welch and GE advise is that companies shift their paradigm to focus more on the “A” and “B” players, thus making them more top heavy. The basic idea is that you give “C” players a set goal and opportunity to become “B” players. If they don’t meet the expectations in the given timeframe, send them on their way. This allows management to focus on cultivating “B” players into “A” players and better supporting the already existent “A” players.

Simple enough, right? Just don’t forget about the culture shift that will happen with this and what it means to the company.

The basic philosophy is going to differ between each class of employee. An “A” player will have a different outlook on values, vision, and ethics than a “B” or “C” player will. Each class of player will have different ideas of what they are looking for, what they can contribute, and what being part of the company means to them. What this means is that as a company shifts its weight from the bottom to the top the overall culture of the organization will change.

Don’t get me wrong here – I’m not talking about the core values or the culture that is transcribed in the mission statement and broadcast to the public. What I am talking about is the basic idea of what is important to employees.

Each class of employee will have distinctly different needs, each of which will typically correspond back to Maslow’s Hierarchy of Needs. Maslow’s basic idea is that human needs can be visualized as a pyramid.

  

 Figure 1: Maslow’s Hierarchy of Needs

 Here are the basic steps, from bottom to top, and how they relate to the typical work environment:

  • Physiological
    This is the bottom of the pyramid. This typically relates to physical workplace safety. Construction workers are more likely to be focused on this step than are office workers. Likewise, police and soldiers are likely going to be more focused on this step than even construction. The main concern here will be whether something on the job will prove to be harmful or not.
  • Security
    The security of this phase is more related to peace of mind than physical security. Security generally relates to whether or not the job is stable. Do workers worry about being demoted, not getting a stable paycheck, or getting laid off?
  • Love and Belonging
    The idea that an employee can come into work and feel like part of a team falls into this category. Employees worried about this stage will often feel like they are an outside or loner and not fully part of the team. They may feel that they are moving in their own direction, which is incongruent to the direction of the team or company.
  • Self Esteem
    This is the idea that when a worker contributes something he or she feels that it was of value and important to the organization. Workers stuck in this stage will generally be worried about the quality of their work and whether their peers and superiors view their work in the same light and with the same respect that they do.
  • Self Actualization
    This is the top of the pyramid. This step focuses on creativity, morality, philosophy, and other higher level objectives. The concerns of people in this step are going to be whether they are afforded enough leeway to do things like be creative and whether the actions they take are moral and ethical.

The basic concept here is that as lower level needs are met the person is then able to shift their focus to higher level and more complex needs.  This means that “C” players may be highly focused on the stability of their job and continuing to get a paycheck while “A” players are more worried about autonomy, the ability to be creative, and doing what they feel is morally and ethically right.

The transition from an “A”, “B”, and “C” player paradigm to an “A” and “B” one will almost always include a cultural shift in order to accommodate the different level of needs required by the majority. As the company shifts away from focusing primarily on “C” players to focusing primarily on “A” and “B” players the hierarchy level at which the collective company’s need is at is raised.

For example, lets say the old company was 50% “C” players. “C” players are worried about security and they make up the majority of the organization so there will be a large portion of management that is devoted to holding hands, regimenting work schedules, and looking over employees shoulders. As this 50% of “C” players is either shifted to “B” players or released the new makeup of the company may be more along the lines of 80% “B” players and 20% “A” players.

If the management that is used to dealing with “C” players continues to focus on the same problems they will inevitably miss the mark and alienate “B” and, especially, “A” players. Without shifting the cultural paradigm along with the performance expectations two things will happen. First, a portion of “B” players will fall into a “C” player category. If they are being treated like “C” players regardless of what they do, why not act like them? Second, “A” players will leave. Regardless of the state of the economy “A” players are always in high demand. Even if they are not able to find a job immediately, they eventually will. Either way, they will leave.

In order to successfully rid a company of “C” players the focus must be two fold: performance and cultural expectations. Without this, companies simply shift the bar higher but ultimately still have “C” players in the mix. In addition, and perhaps most importantly, failure to shift cultural expectations will inevitably result in the loss of “A” players, which is corporate suicide.