Archive for September 29th, 2009

The basics of Neuro-linguistic Programming

September 29th, 2009

The basics of neuro-linguistic pro­gram­ming and how to incor­po­rate it into a mar­ket­ing strategy

Neuro-linguistic pro­gram­ming (NLP) can be defined as a sys­tem of com­mu­ni­ca­tion regard­ing rela­tional behav­ior pat­terns and the sub­jec­tive expe­ri­ences asso­ci­ated with them. There are meth­ods used by ther­a­pists based on NLP  which seeks to enlighten peo­ple in com­mu­ni­ca­tion and self-presence while attempt­ing to change pat­terns of men­tal and emo­tional behavior.

NLP is widely regarded as a sub­jec­tive sys­tem and lacks solid, sub­stan­tial evi­dence to speak to it’s reli­a­bil­ity and cred­i­bil­ity. How­ever, there is enough sug­ges­tive the­ory to enter­tain the sys­tem with some mea­sure of prac­ti­cal­ity. You’ll have to judge whether NLP tech­niques are valid and right for your mar­ket­ing strategy.

Basic NLP Techniques

Dif­fer­ent sources on NLP will describe these tech­niques in much larger detail but I’ll inten­tion­ally keep it short and simple.

Rap­port / Reflection

In it’s most sim­plest form is mim­ic­k­ing or copy­ing the phys­i­cal and vocal inflec­tions of some­one or some group (or the per­cep­tion of some­one or some group) in order to put your­self on the same level as that per­son or group so as to be accepted by and iden­ti­fied with. Some may describe this as, ‘blend­ing in’. When the Pres­i­dent of the United States goes to speak to work­ers on a dock he takes off his suit coat, rolls his cuff’s a bit, loses his neck tie, unbut­tons the col­lar but­ton on his shirt and makes more casual ges­tures and walk­ing strides. This is because he wants the work­ers to iden­tify with him; when a lis­tener iden­ti­fies with a speaker he or she is much more inclined to receive, recall and sup­port the mes­sage that the speaker is delivering.

Anchor­ing

Think of anchor­ing like con­di­tion­ing or train­ing. You have to teach your audi­ence what to respond to by asso­ci­at­ing action with rec­og­nized and dis­tin­guished cues. A very pop­u­lar blog­ger can get his read­ers to share/syndicate his or her blog posts (the action) by sim­ply post­ing the blog (the cue) because the blog­ger is very pop­u­lar (the anchoring/conditioning/training). The blog­ger estab­lishes him/herself as an expert author­ity and con­di­tions the audi­ence to rec­og­nize that the blog posts are author­i­ta­tive. When the blog­ger makes a new post, it trig­gers the audi­ence to read/share it because the audi­ence per­ceives it to be authoritative.

Swish

This tech­nique allows for fast, re-directed think­ing and in NLP is used to divert focus from unwanted thoughts/behavior to more desired thoughts/behavior by attempt­ing to dis­rupt the pat­tern of behav­ior that leads to the unwanted thoughts or behav­ior. The Swish starts by visu­al­iz­ing the trig­ger that starts the pat­tern of unwanted behav­ior and then switched sev­eral times with visu­al­iza­tions of more desired thoughts or behavior.

Refram­ing

Not unlike Anchor­ing, refram­ing deals with stim­uli and asso­ci­ated action. In con­trast to anchor­ing how­ever, refram­ing attempts to alter the action asso­ci­ated to the stim­uli by chang­ing the per­cep­tion of the stim­uli. By chang­ing the way some­one thinks about or sees some­thing you can poten­tially alter the way they react to it. I know that cig­a­rettes are bad for me but when I see happy peo­ple hav­ing a good time with friends while hav­ing a cig­a­rette in their hand, I may per­ceive that cig­a­rettes aren’t as bad as I once thought because happy and good thoughts have been asso­ci­ated with cig­a­rettes. Cig­a­rettes may not be the great­est exam­ple because so much neg­a­tiv­ity sur­rounds them that I don’t think any amount of refram­ing could offset.

Proven or not, these tech­niques are already in play in many dif­fer­ent busi­nesses for many dif­fer­ent uses, regard­less if you label them NLP or not.

I feel that a suc­cess­ful mar­ket­ing strat­egy can greatly ben­e­fit from the strate­gist being well versed in con­tem­po­rary under­stand­ings of the human mind.  If one can bet­ter under­stand how we think then he/she can bet­ter serve us on a deeper more sat­is­fy­ing level.

The Code­Tree rec­om­mends iCon­tact for mar­ket­ing list management

Cre­ate dae­mon child processes with PHP

September 29th, 2009
/**
 * System_Daemon turns PHP-CLI scripts into daemons.
 *
 * PHP version 5
 *
 * @category  System
 * @package   System_Daemon
 * @author    Kevin 
 * @copyright 2008 Kevin van Zonneveld
 * @license   http://www.opensource.org/licenses/bsd-license.php
 * @version   SVN: Release: $Id: logparser.php 215 2009-04-25 10:10:18Z kevin $
 * @link      http://trac.plutonia.nl/projects/system_daemon
 */

/**
 * System_Daemon Example Code
 *
 * If you run this code successfully, a daemon will be spawned
 * but unless have already generated the init.d script, you have
 * no real way of killing it yet.
 *
 * In this case wait 3 runs, which is the maximum for this example.
 *
 *
 * In panic situations, you can always kill you daemon by typing
 *
 * killall -9 logparser.php
 * OR:
 * killall -9 php
 *
 */

// Allowed arguments & their defaults
$runmode = array(
    "no-daemon" => false,
    "help" => false,
    "write-initd" => false
);

// Scan command line attributes for allowed arguments
foreach ($argv as $k=>$arg) {
    if (substr($arg, 0, 2) == "--" && isset($runmode[substr($arg, 2)])) {
        $runmode[substr($arg, 2)] = true;
    }
}

// Help mode. Shows allowed argumentents and quit directly
if ($runmode["help"] == true) {
    echo "Usage: ".$argv[0]." [runmode]\n";
    echo "Available runmodes:\n";
    foreach ($runmode as $runmod=>$val) {
        echo " --".$runmod."\n";
    }
    die();
}

// Make it possible to test in source directory
// This is for PEAR developers only
ini_set('include_path', ini_get('include_path').':..');

// Include Class
error_reporting(E_ALL);
require_once "System/Daemon.php";

// Setup
$options = array(
    "appName" => "logparser",
    "appDir" => dirname(__FILE__),
    "appDescription" => "Parses vsftpd logfiles and stores them in MySQL",
    "authorName" => "Kevin van Zonneveld",
    "authorEmail" => "kevin@vanzonneveld.net",
    "sysMaxExecutionTime" => "0",
    "sysMaxInputTime" => "0",
    "sysMemoryLimit" => "1024M",
    "appRunAsGID" => 1000,
    "appRunAsUID" => 1000
);

System_Daemon::setOptions($options);

// Overrule the signal handler with any function
System_Daemon::setSigHandler(SIGCONT, array("System_Daemon",
    "defaultSigHandler"));

// This program can also be run in the forground with runmode --no-daemon
if (!$runmode["no-daemon"]) {
    // Spawn Daemon
    System_Daemon::start();
}

// With the runmode --write-initd, this program can automatically write a
// system startup file called: 'init.d'
// This will make sure your daemon will be started on reboot
if (!$runmode["write-initd"]) {
    System_Daemon::log(System_Daemon::LOG_INFO, "not writing ".
        "an init.d script this time");
} else {
    if (($initd_location = System_Daemon::writeAutoRun()) === false) {
        System_Daemon::log(System_Daemon::LOG_NOTICE, "unable to write ".
            "init.d script");
    } else {
        System_Daemon::log(System_Daemon::LOG_INFO, "sucessfully written ".
            "startup script: ".$initd_location);
    }
}

// Run your code
// Here comes your own actual code

// This variable gives your own code the ability to breakdown the daemon:
$runningOkay = true;

// This variable keeps track of how many 'runs' or 'loops' your daemon has
// done so far. For example purposes, we're quitting on 3.
$cnt = 1;

// While checks on 3 things in this case:
// - That the Daemon Class hasn't reported it's dying
// - That your own code has been running Okay
// - That we're not executing more than 3 runs
while (!System_Daemon::isDying() && $runningOkay && $cnt <=3) {
    // What mode are we in?
    $mode = "'".(System_Daemon::isInBackground() ? "" : "non-" ).
        "daemon' mode";

    // Log something using the Daemon class's logging facility
    // Depending on runmode it will either end up:
    //  - In the /var/log/logparser.log
    //  - On screen (in case we're not a daemon yet)
    System_Daemon::log(System_Daemon::LOG_INFO,
        System_Daemon::getOption("appName").
        " running in ".$mode." ".$cnt."/3");

    // In the actuall logparser program, You could replace 'true'
    // With e.g. a  parseLog('vsftpd') function, and have it return
    // either true on success, or false on failure.
    $runningOkay = true;
    //$runningOkay = parseLog('vsftpd');

    // Should your parseLog('vsftpd') return false, then
    // the daemon is automatically shut down.
    // An extra log entry would be nice, we're using level 3,
    // which is critical.
    // Level 4 would be fatal and shuts down the daemon immediately,
    // which in this case is handled by the while condition.
    if (!$runningOkay) {
        System_Daemon::log(System_Daemon::LOG_ERR, "parseLog() ".
            "produced an error, ".
            "so this will be my last run");
    }

    // Relax the system by sleeping for a little bit
    // iterate also clears statcache
    System_Daemon::iterate(2);

    $cnt++;
}

// Shut down the daemon nicely
// This is ignored if the class is actually running in the foreground
System_Daemon::stop();

Tweetie 2 Takes The Best iPhone Twit­ter App And Ups The Sex Appeal

September 29th, 2009

There is absolutely no short­age of Twit­ter apps avail­able for the iPhone. But in my mind (and the minds of many oth­ers) one stands above all the rest: Tweetie. And while the app has under­gone sev­eral small tweaks since it was first released last year, a big time revamp is about to hit: Tweetie 2. []

» Read more: Tweetie 2 Takes The Best iPhone Twit­ter App And Ups The Sex Appeal