FACEBOOK SOURCE CODE LEAKED

(0)

We just received a tip that the source code for the Facebook main index page has been leaked and published on a blog called Facebook Secrets. There are at least two possible ways that the source code got out - the first is that a Facebook developer has sent it out, or the more likely option that a security hole or other method has been used on either one of the Facebook servers or in their source code repository to reveal the code. The blog that published the code only has a single post on it, so it was created exclusively to publish this code - meaning that whoever is behind this both isn't taking credit for the hole and doesn't want to be associated with it. While there is no certain way to verify if the code is actually from Facebook, by taking a quick look through the code and by double-checking some paths that have been referenced, we can say with some certainty that this seems to be both real and also a recent version of the main Facebook page.

There are a number of clear ramifications here. The first is that the code can be used by outsiders to better understand how the Facebook application works, for the purposes of finding further security holes or bugs that could be exploited. Since Facebook is a closed source application, without access to the code security holes are usually found through a process of black-box testing, whereby an external party will probe the application in an attempt to work out how the application behaves and to try and find potential race conditions. In closed source applications it is common that developers rely on the closed nature of the application to obfuscate poor design elements and the structure of the application. An attacker getting access to the source code more often than not leads to further security holes being discovered. It is for these reasons that it is often claimed that open source software is more secure than closed source software, since there are many more eyes auditing the code and obfuscation can't be used as a security measure.

The second implication with this leak is that the source code reveals a lot about the structure of the application, and the practices that Facebook developers follow. From just this single page of source code a lot can be said and extrapolated about the rest of the Facebook application and platform. For instance, the structure doesn't follow any object oriented development practices, and it seems that the application is one large PHP file with a large number of custom functions living in the same namespace (they also seem to be using the Smarty templating engine).

This leak is not good news for Facebook, as it raises the question of how secure a Facebook users private data really is. If the main source code for a site can be leaked, then it can be said that almost anything is possible. Facebook has become such a success and has such a high profile that it has become a magnet for attacks against its systems. Most large scale applications suffer a breach at some point or another, since the odds are always stacked in favor of attackers, but companies can respond in a number of ways and the hope here is that Facebook will handle this situation gracefully. I don't doubt that Facebook will pursuit this case with a lot of energy to both find the cause of why the code has leaked as well as to find who was responsible. They will also need to take some very quick short term measures to mitigate the risk to users since you can bet that right this minute there are hundreds of potential attackers pouring through the leaked code and probing their systems. At a quick glance, I know that I can see some obvious things in the code that both reveal certain hidden aspects of the platform and give a potential attacker a good head start.

PER TECHCRUNCH AND FACEBOOK SECRETS HERE IS THE CODE AS SHOWN IN CASE EITHER SITE IS HAVING TRAFFIC OVERLOADS

Facebook Home Page Code

 

include_once $_SERVER['PHP_ROOT'].'/html/init.php';
include_once $_SERVER['PHP_ROOT'].'/lib/home.php';
include_once $_SERVER['PHP_ROOT'].'/lib/requests.php';
include_once $_SERVER['PHP_ROOT'].'/lib/feed/newsfeed.php';
include_once $_SERVER['PHP_ROOT'].'/lib/poke.php';
include_once $_SERVER['PHP_ROOT'].'/lib/share.php';
include_once $_SERVER['PHP_ROOT'].'/lib/orientation.php';
include_once $_SERVER['PHP_ROOT'].'/lib/feed/newsfeed.php';
include_once $_SERVER['PHP_ROOT'].'/lib/mobile/register.php';
include_once $_SERVER['PHP_ROOT'].'/lib/forms_lib.php';
include_once $_SERVER['PHP_ROOT'].'/lib/contact_importer/contact_importer.php';
include_once $_SERVER['PHP_ROOT'].'/lib/feed/util.php';
include_once $_SERVER['PHP_ROOT'].'/lib/hiding_prefs.php';
include_once $_SERVER['PHP_ROOT'].'/lib/abtesting.php';
include_once $_SERVER['PHP_ROOT'].'/lib/friends.php';
include_once $_SERVER['PHP_ROOT'].'/lib/statusupdates.php';

// lib/display/feed.php has to be declared here for scope issues.
// This keeps display/feed.php cleaner and easier to understand.
include_once $_SERVER['PHP_ROOT'].'/lib/display/feed.php';
include_once $_SERVER['PHP_ROOT'].'/lib/monetization_box.php';

// require login
$user = require_login();
print_time('require_login');
param_request(array( 'react' => $PARAM_EXISTS));

// Check and fix broken emails
// LN - disabling due to excessive can_see dirties and sets when enabled.
//check_and_fix_broken_emails($user);

// migrate AIM screenname from profile to screenname table if needed
migrate_screenname ($user);

// homepage announcement variables
$HIDE_ANNOUNCEMENT_BIT = get_site_variable('HIDE_ANNOUNCEMENT_BIT');
$HIDE_INTRO_BITMASK = get_site_variable('HIDE_INTRO_BITMASK');

// redirects
if (is_sponsor_user()) {
redirect('bizhome.php', 'www');
}

include_once $_SERVER['PHP_ROOT'].'/lib/mesg.php';
include_once $_SERVER['PHP_ROOT'].'/lib/invitetool.php';
include_once $_SERVER['PHP_ROOT'].'/lib/grammar.php';
include_once $_SERVER['PHP_ROOT'].'/lib/securityq.php';
include_once $_SERVER['PHP_ROOT'].'/lib/events.php';
include_once $_SERVER['PHP_ROOT'].'/lib/rooster/stories.php';

// todo: password confirmation redirects here (from html/reset.php),
// do we want a confirmation message?

param_get_slashed(array(
'feeduser' => $PARAM_INT, //debug: gets feed for user here
'err' => $PARAM_STRING, // returning from a failed entry on an orientation form
'error' => $PARAM_STRING, // an error can also be here because the profile photo upload code is crazy
'ret' => $PARAM_INT,
'success' => $PARAM_INT, // successful profile picture upload
'jn' => $PARAM_INT, // joined a network for orientation
'np' => $PARAM_INT, // network pending (for work/address network)
'me' => $PARAM_STRING, // mobile error
'mr' => $PARAM_EXISTS, // force mobile reg view
'mobile' => $PARAM_EXISTS, // mobile confirmation code sent
'jif' => $PARAM_EXISTS, // just imported friends
'ied' => $PARAM_STRING, // import email domain
'o' => $PARAM_EXISTS, // first time orientation, passed on confirm
'verified' => $PARAM_EXISTS)); // verified mobile phone

param_post(array(
'leave_orientation' => $PARAM_EXISTS,
'show_orientation' => $PARAM_INT, // show an orientation step
'hide_orientation' => $PARAM_INT)); // skip an orientation step

// homepage actions
if ($req_react && validate_expiring_hash($req_react, $GLOBALS['url_md5key'])) {
$show_reactivated_message = true;
} else {
$show_reactivated_message = false;
}
tpl_set('show_reactivated_message', $show_reactivated_message);


// upcoming events
events_check_future_events($user); // make sure big tunas haven't moved around
$upcoming_events = events_get_imminent_for_user($user);

// this is all stuff that can be fetched together!
$upcoming_events_short = array();
obj_multiget_short(array_keys($upcoming_events), true, $upcoming_events_short);
$new_pokes = 0;
//only get the next N pokes for display
//where N is set in the dbget to avoid caching issues
$poke_stats = get_num_pokes($user);
get_next_pokes($user, true, $new_pokes);
$poke_count = $poke_stats['unseen'];

$targeted_data = array();
home_get_cache_targeted_data($user, true, $targeted_data);
$announcement_data = array();
home_get_cache_announcement_data($user, true, $announcement_data);
$orientation = 0;
orientation_get_status($user, true, $orientation);
$short_profile = array();
profile_get_short($user, true, $short_profile);
// pure priming stuff
privacy_get_network_settings($user, true);
$presence = array();
mobile_get_presence_data($user, true, $presence);
feedback_get_event_weights($user, true);
// Determine if we want to display the feed intro message
$intro_settings = 0;
user_get_hide_intro_bitmask($user, true, $intro_settings);
$user_friend_finder = true;
contact_importer_get_used_friend_finder($user, true, $used_friend_finder);
$all_requests = requests_get_cache_data($user);
// FIXME?: is it sub-optimal to call this both in requests_get_cache_data and here?
$friends_status = statusupdates_get_recent($user, null, 3);
memcache_dispatch(); // populate cache data

// Merman's Admin profile always links to the Merman's home
if (user_has_obj_attached($user)) {
redirect('mhome.php', 'www');
}

if (is_array($upcoming_events)) {
foreach ($upcoming_events as $event_id => $data) {
$upcoming_events[$event_id]['name'] = txt_set($upcoming_events_short[$event_id]['name']);
}
}

tpl_set('upcoming_events' , $upcoming_events);

// disabled account actions
$disabled_warning = ((IS_DEV_SITE || IS_QA_SITE) && is_disabled_user($user));
tpl_set('disabled_warning', $disabled_warning);

// new pokes (no more messages here, they are in the top nav!)
if (!user_is_guest($user)) {
tpl_set('poke_count' , $poke_count);
tpl_set('pokes' , $new_pokes);
}

// get announcement computations
tpl_set('targeted_data' , $targeted_data);
tpl_set('announcement_data' , $announcement_data);


// birthday notifications
tpl_set('birthdays' , $birthdays = user_get_birthday_notifications($user, $short_profile));
tpl_set('show_birthdays' , $show_birthdays = (count($birthdays) || !$orientation));

// user info
tpl_set('first_name' , user_get_first_name(txt_set($short_profile['id'])));
tpl_set('user' , $user);

// decide if there are now any requests to show
$show_requests = false;
foreach ($all_requests as $request_category) {
if ($request_category) {
$show_requests = true;
break;
}
}
tpl_set('all_requests', $show_requests ? $all_requests : null);

$permissions = privacy_get_reduced_network_permissions($user, $user);

// status
$user_info = array('user' => $user,
'firstname' => user_get_first_name($user),
'see_all' => '/statusupdates/?ref=hp',
'profile_pic' => make_profile_image_src_direct($user, 'thumb'),
'square_pic' => make_profile_image_src_direct($user, 'square'));

if (!empty($presence) && $presence['status_time'] > (time() - 60*60*24*7)) {
$status = array('message' => txt_set($presence['status']),
'time' => $presence['status_time'],
'source' => $presence['status_source']);
} else {
$status = array('message' => null, 'time' => null, 'source' => null);
}
tpl_set('user_info', $user_info);

tpl_set('show_status', $show_status = !$orientation);
tpl_set('status', $status);
tpl_set('status_custom', $status_custom = mobile_get_status_custom($user));
tpl_set('friends_status', $friends_status);

// orientation
if ($orientation) {
if ($post_leave_orientation) {
orientation_update_status($user, $orientation, 2);
notification_notify_exit_orientation($user);
dirty_user($user);
redirect('home.php');
} else if (orientation_eligible_exit(array('uid'=>$user)) == 2) {
orientation_update_status($user, $orientation, 1);
notification_notify_exit_orientation($user);
dirty_user($user);
redirect('home.php');
}
}

// timezone - outside of stealth, update user's timezone if necessary
$set_time = !user_is_alpha($user, 'stealth');
tpl_set('timezone_autoset', $set_time );
if ($set_time) {
$daylight_savings = get_site_variable('DAYLIGHT_SAVINGS_ON');
tpl_set('timezone', $short_profile['timezone'] - ($daylight_savings ? 4 : 5) );
}

// set next step if we can
if (!$orientation) {
user_set_next_step($user, $short_profile);
}

// note: don't make this an else with the above statement, because then no news feed stories will be fetched if they're exiting orientation
if ($orientation) {
extract(orientation_get_const());

require_js('js/dynamic_dialog.js');
require_js('js/suggest.js');
require_js('js/typeahead_ns.js');
require_js('js/suggest.js');
require_js('js/editregion.js');
require_js('js/orientation.js');
require_css('css/typeahead.css');
require_css('css/editor.css');

if ($post_hide_orientation && $post_hide_orientation <= $ORIENTATION_MAX) {
$orientation['orientation_bitmask'] |= ($post_hide_orientation * $ORIENTATION_SKIPPED_MODIFIER);
orientation_update_status($user, $orientation);
} else if ($post_show_orientation && $post_show_orientation <= $ORIENTATION_MAX) {
$orientation['orientation_bitmask'] &= ~($post_show_orientation * $ORIENTATION_SKIPPED_MODIFIER);
orientation_update_status($user, $orientation);
}

$stories = orientation_get_stories($user, $orientation);
switch ($get_err) {
case $ORIENTATION_ERR_COLLEGE:
$temp = array(); // the affil_retval_msg needs some parameters won't be used
$stories[$ORIENTATION_NETWORK]['failed_college']=affil_retval_msg($get_ret, $temp, $temp);
break;
case $ORIENTATION_ERR_CORP:
$temp = array();
// We special case the network not recognized error here, because affil_retval_msg is retarded.
$stories[$ORIENTATION_NETWORK]['failed_corp'] = ($get_ret == 70) ? 'The email you entered did not match any of our supported networks. ' .
'Click here to see our supported list. ' .
'Go here to suggest your network for the future.'
: affil_retval_msg($get_ret, $temp, $temp);
break;
}

// photo upload error
if ($get_error) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_PROFILE]]['upload_error'] = pic_get_error_text($get_error);
}
// photo upload success
else if ($get_success == 1) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_PROFILE]]['uploaded_pic'] = true;
// join network success
} else if ($get_jn) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['joined'] = array(
'id' => $get_jn,
'name' => network_get_name($get_jn));
// network join pending
} else if ($get_np) {

$stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['join_pending'] = array(
'id' => $get_np,
'email' => get_affil_email_conf($user, $get_np),
'network' => network_get_name($get_np));
// just imported friend confirmation
} else if ($get_jif) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['just_imported_friends'] = true;
$stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['domain'] = $get_ied;
}

// Mobile web API params
if ($get_mobile) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['sent_code'] = true;
$stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['view'] = 'confirm';
}
if ($get_verified) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['verified'] = true;
}
if ($get_me) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['error'] = $get_me;
}
if ($get_mr) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['view'] = 'register';
}

if (orientation_eligible_exit($orientation)) {
tpl_set('orientation_show_exit', true);
}
tpl_set('orientation_stories', $stories);

//if in orientation, we hide all feed intros (all 1's in bitmask)
$intro_settings = -1;

}
tpl_set('orientation', $orientation);

// Rooster Stories
if (!$orientation &&
((get_site_variable('ROOSTER_ENABLED') == 2) ||
(get_site_variable('ROOSTER_DEV_ENABLED') == 2))) {
$rooster_story_count = get_site_variable('ROOSTER_STORY_COUNT');
if (!isset($rooster_story_count)) {
// Set default if something is wrong with the sitevar
$rooster_story_count = 2;
}
$rooster_stories = rooster_get_stories($user, $rooster_story_count, $log_omissions = true);
if (!empty($rooster_stories) && !empty($rooster_stories['stories'])) {
// Do page-view level logging here
foreach($rooster_stories['stories'] as $story) {
rooster_log_action($user, $story, ROOSTER_LOG_ACTION_VIEW);
}
tpl_set('rooster_stories', $rooster_stories);
}
}

// set the variables for the home announcement code
$hide_announcement_tpl = ($intro_settings | $HIDE_INTRO_BITMASK) & $HIDE_ANNOUNCEMENT_BIT;
// if on qa/dev site, special rules
$HIDE_INTRO_ON_DEV = get_site_variable('HIDE_INTRO_ON_DEV');
if ((IS_QA_SITE || IS_DEV_SITE) && !$HIDE_INTRO_ON_DEV) {
$hide_announcement_tpl = 0;
}

tpl_set('hide_announcement', $hide_announcement_tpl);
if($is_candidate = is_candidate_user($user)) {
tpl_set('hide_announcement', false);
}
$home_announcement_tpl = !$hide_announcement_tpl || $is_candidate ? home_get_announcement_info($user) : 0;
tpl_set('home_announcement', $home_announcement_tpl);
tpl_set('hide_announcement_bit', $HIDE_ANNOUNCEMENT_BIT);

$show_friend_finder = !$orientation && contact_importer_enabled($user) && !user_get_hiding_pref($user, 'home_friend_finder');
tpl_set('show_friend_finder', $show_friend_finder);
if ($show_friend_finder && (user_get_friend_count($user) > 20)) {
tpl_set('friend_finder_hide_options', array('text'=>'close',
'onclick'=>"return clearFriendFinder()"));
} else {
tpl_set('friend_finder_hide_options', null);
}

$account_info = user_get_account_info($user);
$account_create_time = $account_info['time'];

tpl_set('show_friend_finder_top',
!$used_friend_finder);

tpl_set('user', $user);


// MONETIZATION BOX
$minimize_monetization_box = user_get_hiding_pref($user, 'home_monetization');
$show_monetization_box = (!$orientation &&
get_site_variable('HOMEPAGE_MONETIZATION_BOX'));
tpl_set('show_monetization_box', $show_monetization_box);
tpl_set('minimize_monetization_box', $minimize_monetization_box);

if ($show_monetization_box) {
$monetization_box_data = monetization_box_user_get_data($user);
txt_set('monetization_box_data', $monetization_box_data);
}


// ORIENTATION
if ($orientation) {
$network_ids = id_get_networks($user);
$network_names = multiget_network_name($network_ids);
$in_corp_network = in_array($GLOBALS['TYPE_CORP'], array_map('extract_network_type', $network_ids));
$show_corp_search = $in_corp_network ||
get_age(user_get_basic_info_attr($user, 'birthday')) >= 21;
$pending_hs = is_hs_pending_user($user);
$hs_id = null;
$hs_name = null;
if ($pending_hs) {
foreach (id_get_pending_networks($user) as $network) {
if (extract_network_type($network['network_key']) == $GLOBALS['TYPE_HS']) {
$hs_id = $network['network_key'];
$hs_name = network_get_name($hs_id);
break;
}
}
}
//$orientation_people = orientation_get_friend_and_inviter_ids($user);
$orientation_people = array('friends' => user_get_all_friends($user),
'pending' => array_keys(user_get_friend_requests($user)),
'inviters'=> array(), // wc: don't show inviters for now
);
$orientation_info = array_merge($orientation_people,
array('network_names' => $network_names,
'show_corp_search' => $show_corp_search,
'pending_hs' => array('hs_id'=>$hs_id,
'hs_name'=>$hs_name),
'user' => $user,
));
tpl_set('orientation_info', $orientation_info);

tpl_set('simple_orientation_first_login', $get_o); // unused right now
}


// Roughly determine page length for ads
// first, try page length using right-hand panel
$ads_page_length_data = 3 + // 3 for profile pic + next step
($show_friend_finder ? 1 : 0) +
($show_status ? ($status_custom ? count($friends_status) : 0) : 0) +
($show_monetization_box ? 1 : 0) +
($show_birthdays ? count($birthdays) : 0) +
count($new_pokes);

// page length using feed stories
if ($orientation) {
$ads_page_length_data = max($ads_page_length_data, count($stories) * 5);
}
tpl_set('ads_page_length_data', $ads_page_length_data);

$feed_stories = null;
if (!$orientation) { // if they're not in orientation they get other cool stuff
// ad_insert: the ad type to try to insert for the user
// (0 if we don't want to try an insert)
$ad_insert = get_site_variable('FEED_ADS_ENABLE_INSERTS');

$feed_off = false;

if (check_super($user) && $get_feeduser){
$feed_stories = user_get_displayable_stories($get_feeduser, 0, null, $ad_insert);
} else if (can_see($user, $user, 'feed')) {
$feed_stories = user_get_displayable_stories($user, 0, null, $ad_insert);
} else {
$feed_off = true;
}

// Friend's Feed Selector - Requires dev.php constant
if (is_friendfeed_user($user)) {
$friendfeed = array();
$friendfeed['feeduser'] = $get_feeduser;
$friendfeed['feeduser_name'] = user_get_name($get_feeduser);
$friendfeed['friends'] = user_get_all_friends($user);
tpl_set('friendfeed', $friendfeed);
}

$feed_stories = feed_adjust_timezone($user, $feed_stories);

tpl_set('feed_off', $feed_off ? redirect('privacy.php?view=feeds', null, false) : false);
}
tpl_set('feed_stories', $feed_stories);

render_template($_SERVER['PHP_ROOT'].'/html/home.phpt');

FACEBOOK SOURCE CODE LEAKED

(0)

We just received a tip that the source code for the Facebook main index page has been leaked and published on a blog called Facebook Secrets. There are at least two possible ways that the source code got out - the first is that a Facebook developer has sent it out, or the more likely option that a security hole or other method has been used on either one of the Facebook servers or in their source code repository to reveal the code. The blog that published the code only has a single post on it, so it was created exclusively to publish this code - meaning that whoever is behind this both isn't taking credit for the hole and doesn't want to be associated with it. While there is no certain way to verify if the code is actually from Facebook, by taking a quick look through the code and by double-checking some paths that have been referenced, we can say with some certainty that this seems to be both real and also a recent version of the main Facebook page.

There are a number of clear ramifications here. The first is that the code can be used by outsiders to better understand how the Facebook application works, for the purposes of finding further security holes or bugs that could be exploited. Since Facebook is a closed source application, without access to the code security holes are usually found through a process of black-box testing, whereby an external party will probe the application in an attempt to work out how the application behaves and to try and find potential race conditions. In closed source applications it is common that developers rely on the closed nature of the application to obfuscate poor design elements and the structure of the application. An attacker getting access to the source code more often than not leads to further security holes being discovered. It is for these reasons that it is often claimed that open source software is more secure than closed source software, since there are many more eyes auditing the code and obfuscation can't be used as a security measure.

The second implication with this leak is that the source code reveals a lot about the structure of the application, and the practices that Facebook developers follow. From just this single page of source code a lot can be said and extrapolated about the rest of the Facebook application and platform. For instance, the structure doesn't follow any object oriented development practices, and it seems that the application is one large PHP file with a large number of custom functions living in the same namespace (they also seem to be using the Smarty templating engine).

This leak is not good news for Facebook, as it raises the question of how secure a Facebook users private data really is. If the main source code for a site can be leaked, then it can be said that almost anything is possible. Facebook has become such a success and has such a high profile that it has become a magnet for attacks against its systems. Most large scale applications suffer a breach at some point or another, since the odds are always stacked in favor of attackers, but companies can respond in a number of ways and the hope here is that Facebook will handle this situation gracefully. I don't doubt that Facebook will pursuit this case with a lot of energy to both find the cause of why the code has leaked as well as to find who was responsible. They will also need to take some very quick short term measures to mitigate the risk to users since you can bet that right this minute there are hundreds of potential attackers pouring through the leaked code and probing their systems. At a quick glance, I know that I can see some obvious things in the code that both reveal certain hidden aspects of the platform and give a potential attacker a good head start.

PER TECHCRUNCH AND FACEBOOK SECRETS HERE IS THE CODE AS SHOWN IN CASE EITHER SITE IS HAVING TRAFFIC OVERLOADS

Facebook Home Page Code

 

include_once $_SERVER['PHP_ROOT'].'/html/init.php';
include_once $_SERVER['PHP_ROOT'].'/lib/home.php';
include_once $_SERVER['PHP_ROOT'].'/lib/requests.php';
include_once $_SERVER['PHP_ROOT'].'/lib/feed/newsfeed.php';
include_once $_SERVER['PHP_ROOT'].'/lib/poke.php';
include_once $_SERVER['PHP_ROOT'].'/lib/share.php';
include_once $_SERVER['PHP_ROOT'].'/lib/orientation.php';
include_once $_SERVER['PHP_ROOT'].'/lib/feed/newsfeed.php';
include_once $_SERVER['PHP_ROOT'].'/lib/mobile/register.php';
include_once $_SERVER['PHP_ROOT'].'/lib/forms_lib.php';
include_once $_SERVER['PHP_ROOT'].'/lib/contact_importer/contact_importer.php';
include_once $_SERVER['PHP_ROOT'].'/lib/feed/util.php';
include_once $_SERVER['PHP_ROOT'].'/lib/hiding_prefs.php';
include_once $_SERVER['PHP_ROOT'].'/lib/abtesting.php';
include_once $_SERVER['PHP_ROOT'].'/lib/friends.php';
include_once $_SERVER['PHP_ROOT'].'/lib/statusupdates.php';

// lib/display/feed.php has to be declared here for scope issues.
// This keeps display/feed.php cleaner and easier to understand.
include_once $_SERVER['PHP_ROOT'].'/lib/display/feed.php';
include_once $_SERVER['PHP_ROOT'].'/lib/monetization_box.php';

// require login
$user = require_login();
print_time('require_login');
param_request(array( 'react' => $PARAM_EXISTS));

// Check and fix broken emails
// LN - disabling due to excessive can_see dirties and sets when enabled.
//check_and_fix_broken_emails($user);

// migrate AIM screenname from profile to screenname table if needed
migrate_screenname ($user);

// homepage announcement variables
$HIDE_ANNOUNCEMENT_BIT = get_site_variable('HIDE_ANNOUNCEMENT_BIT');
$HIDE_INTRO_BITMASK = get_site_variable('HIDE_INTRO_BITMASK');

// redirects
if (is_sponsor_user()) {
redirect('bizhome.php', 'www');
}

include_once $_SERVER['PHP_ROOT'].'/lib/mesg.php';
include_once $_SERVER['PHP_ROOT'].'/lib/invitetool.php';
include_once $_SERVER['PHP_ROOT'].'/lib/grammar.php';
include_once $_SERVER['PHP_ROOT'].'/lib/securityq.php';
include_once $_SERVER['PHP_ROOT'].'/lib/events.php';
include_once $_SERVER['PHP_ROOT'].'/lib/rooster/stories.php';

// todo: password confirmation redirects here (from html/reset.php),
// do we want a confirmation message?

param_get_slashed(array(
'feeduser' => $PARAM_INT, //debug: gets feed for user here
'err' => $PARAM_STRING, // returning from a failed entry on an orientation form
'error' => $PARAM_STRING, // an error can also be here because the profile photo upload code is crazy
'ret' => $PARAM_INT,
'success' => $PARAM_INT, // successful profile picture upload
'jn' => $PARAM_INT, // joined a network for orientation
'np' => $PARAM_INT, // network pending (for work/address network)
'me' => $PARAM_STRING, // mobile error
'mr' => $PARAM_EXISTS, // force mobile reg view
'mobile' => $PARAM_EXISTS, // mobile confirmation code sent
'jif' => $PARAM_EXISTS, // just imported friends
'ied' => $PARAM_STRING, // import email domain
'o' => $PARAM_EXISTS, // first time orientation, passed on confirm
'verified' => $PARAM_EXISTS)); // verified mobile phone

param_post(array(
'leave_orientation' => $PARAM_EXISTS,
'show_orientation' => $PARAM_INT, // show an orientation step
'hide_orientation' => $PARAM_INT)); // skip an orientation step

// homepage actions
if ($req_react && validate_expiring_hash($req_react, $GLOBALS['url_md5key'])) {
$show_reactivated_message = true;
} else {
$show_reactivated_message = false;
}
tpl_set('show_reactivated_message', $show_reactivated_message);


// upcoming events
events_check_future_events($user); // make sure big tunas haven't moved around
$upcoming_events = events_get_imminent_for_user($user);

// this is all stuff that can be fetched together!
$upcoming_events_short = array();
obj_multiget_short(array_keys($upcoming_events), true, $upcoming_events_short);
$new_pokes = 0;
//only get the next N pokes for display
//where N is set in the dbget to avoid caching issues
$poke_stats = get_num_pokes($user);
get_next_pokes($user, true, $new_pokes);
$poke_count = $poke_stats['unseen'];

$targeted_data = array();
home_get_cache_targeted_data($user, true, $targeted_data);
$announcement_data = array();
home_get_cache_announcement_data($user, true, $announcement_data);
$orientation = 0;
orientation_get_status($user, true, $orientation);
$short_profile = array();
profile_get_short($user, true, $short_profile);
// pure priming stuff
privacy_get_network_settings($user, true);
$presence = array();
mobile_get_presence_data($user, true, $presence);
feedback_get_event_weights($user, true);
// Determine if we want to display the feed intro message
$intro_settings = 0;
user_get_hide_intro_bitmask($user, true, $intro_settings);
$user_friend_finder = true;
contact_importer_get_used_friend_finder($user, true, $used_friend_finder);
$all_requests = requests_get_cache_data($user);
// FIXME?: is it sub-optimal to call this both in requests_get_cache_data and here?
$friends_status = statusupdates_get_recent($user, null, 3);
memcache_dispatch(); // populate cache data

// Merman's Admin profile always links to the Merman's home
if (user_has_obj_attached($user)) {
redirect('mhome.php', 'www');
}

if (is_array($upcoming_events)) {
foreach ($upcoming_events as $event_id => $data) {
$upcoming_events[$event_id]['name'] = txt_set($upcoming_events_short[$event_id]['name']);
}
}

tpl_set('upcoming_events' , $upcoming_events);

// disabled account actions
$disabled_warning = ((IS_DEV_SITE || IS_QA_SITE) && is_disabled_user($user));
tpl_set('disabled_warning', $disabled_warning);

// new pokes (no more messages here, they are in the top nav!)
if (!user_is_guest($user)) {
tpl_set('poke_count' , $poke_count);
tpl_set('pokes' , $new_pokes);
}

// get announcement computations
tpl_set('targeted_data' , $targeted_data);
tpl_set('announcement_data' , $announcement_data);


// birthday notifications
tpl_set('birthdays' , $birthdays = user_get_birthday_notifications($user, $short_profile));
tpl_set('show_birthdays' , $show_birthdays = (count($birthdays) || !$orientation));

// user info
tpl_set('first_name' , user_get_first_name(txt_set($short_profile['id'])));
tpl_set('user' , $user);

// decide if there are now any requests to show
$show_requests = false;
foreach ($all_requests as $request_category) {
if ($request_category) {
$show_requests = true;
break;
}
}
tpl_set('all_requests', $show_requests ? $all_requests : null);

$permissions = privacy_get_reduced_network_permissions($user, $user);

// status
$user_info = array('user' => $user,
'firstname' => user_get_first_name($user),
'see_all' => '/statusupdates/?ref=hp',
'profile_pic' => make_profile_image_src_direct($user, 'thumb'),
'square_pic' => make_profile_image_src_direct($user, 'square'));

if (!empty($presence) && $presence['status_time'] > (time() - 60*60*24*7)) {
$status = array('message' => txt_set($presence['status']),
'time' => $presence['status_time'],
'source' => $presence['status_source']);
} else {
$status = array('message' => null, 'time' => null, 'source' => null);
}
tpl_set('user_info', $user_info);

tpl_set('show_status', $show_status = !$orientation);
tpl_set('status', $status);
tpl_set('status_custom', $status_custom = mobile_get_status_custom($user));
tpl_set('friends_status', $friends_status);

// orientation
if ($orientation) {
if ($post_leave_orientation) {
orientation_update_status($user, $orientation, 2);
notification_notify_exit_orientation($user);
dirty_user($user);
redirect('home.php');
} else if (orientation_eligible_exit(array('uid'=>$user)) == 2) {
orientation_update_status($user, $orientation, 1);
notification_notify_exit_orientation($user);
dirty_user($user);
redirect('home.php');
}
}

// timezone - outside of stealth, update user's timezone if necessary
$set_time = !user_is_alpha($user, 'stealth');
tpl_set('timezone_autoset', $set_time );
if ($set_time) {
$daylight_savings = get_site_variable('DAYLIGHT_SAVINGS_ON');
tpl_set('timezone', $short_profile['timezone'] - ($daylight_savings ? 4 : 5) );
}

// set next step if we can
if (!$orientation) {
user_set_next_step($user, $short_profile);
}

// note: don't make this an else with the above statement, because then no news feed stories will be fetched if they're exiting orientation
if ($orientation) {
extract(orientation_get_const());

require_js('js/dynamic_dialog.js');
require_js('js/suggest.js');
require_js('js/typeahead_ns.js');
require_js('js/suggest.js');
require_js('js/editregion.js');
require_js('js/orientation.js');
require_css('css/typeahead.css');
require_css('css/editor.css');

if ($post_hide_orientation && $post_hide_orientation <= $ORIENTATION_MAX) {
$orientation['orientation_bitmask'] |= ($post_hide_orientation * $ORIENTATION_SKIPPED_MODIFIER);
orientation_update_status($user, $orientation);
} else if ($post_show_orientation && $post_show_orientation <= $ORIENTATION_MAX) {
$orientation['orientation_bitmask'] &= ~($post_show_orientation * $ORIENTATION_SKIPPED_MODIFIER);
orientation_update_status($user, $orientation);
}

$stories = orientation_get_stories($user, $orientation);
switch ($get_err) {
case $ORIENTATION_ERR_COLLEGE:
$temp = array(); // the affil_retval_msg needs some parameters won't be used
$stories[$ORIENTATION_NETWORK]['failed_college']=affil_retval_msg($get_ret, $temp, $temp);
break;
case $ORIENTATION_ERR_CORP:
$temp = array();
// We special case the network not recognized error here, because affil_retval_msg is retarded.
$stories[$ORIENTATION_NETWORK]['failed_corp'] = ($get_ret == 70) ? 'The email you entered did not match any of our supported networks. ' .
'Click here to see our supported list. ' .
'Go here to suggest your network for the future.'
: affil_retval_msg($get_ret, $temp, $temp);
break;
}

// photo upload error
if ($get_error) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_PROFILE]]['upload_error'] = pic_get_error_text($get_error);
}
// photo upload success
else if ($get_success == 1) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_PROFILE]]['uploaded_pic'] = true;
// join network success
} else if ($get_jn) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['joined'] = array(
'id' => $get_jn,
'name' => network_get_name($get_jn));
// network join pending
} else if ($get_np) {

$stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['join_pending'] = array(
'id' => $get_np,
'email' => get_affil_email_conf($user, $get_np),
'network' => network_get_name($get_np));
// just imported friend confirmation
} else if ($get_jif) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['just_imported_friends'] = true;
$stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['domain'] = $get_ied;
}

// Mobile web API params
if ($get_mobile) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['sent_code'] = true;
$stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['view'] = 'confirm';
}
if ($get_verified) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['verified'] = true;
}
if ($get_me) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['error'] = $get_me;
}
if ($get_mr) {
$stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['view'] = 'register';
}

if (orientation_eligible_exit($orientation)) {
tpl_set('orientation_show_exit', true);
}
tpl_set('orientation_stories', $stories);

//if in orientation, we hide all feed intros (all 1's in bitmask)
$intro_settings = -1;

}
tpl_set('orientation', $orientation);

// Rooster Stories
if (!$orientation &&
((get_site_variable('ROOSTER_ENABLED') == 2) ||
(get_site_variable('ROOSTER_DEV_ENABLED') == 2))) {
$rooster_story_count = get_site_variable('ROOSTER_STORY_COUNT');
if (!isset($rooster_story_count)) {
// Set default if something is wrong with the sitevar
$rooster_story_count = 2;
}
$rooster_stories = rooster_get_stories($user, $rooster_story_count, $log_omissions = true);
if (!empty($rooster_stories) && !empty($rooster_stories['stories'])) {
// Do page-view level logging here
foreach($rooster_stories['stories'] as $story) {
rooster_log_action($user, $story, ROOSTER_LOG_ACTION_VIEW);
}
tpl_set('rooster_stories', $rooster_stories);
}
}

// set the variables for the home announcement code
$hide_announcement_tpl = ($intro_settings | $HIDE_INTRO_BITMASK) & $HIDE_ANNOUNCEMENT_BIT;
// if on qa/dev site, special rules
$HIDE_INTRO_ON_DEV = get_site_variable('HIDE_INTRO_ON_DEV');
if ((IS_QA_SITE || IS_DEV_SITE) && !$HIDE_INTRO_ON_DEV) {
$hide_announcement_tpl = 0;
}

tpl_set('hide_announcement', $hide_announcement_tpl);
if($is_candidate = is_candidate_user($user)) {
tpl_set('hide_announcement', false);
}
$home_announcement_tpl = !$hide_announcement_tpl || $is_candidate ? home_get_announcement_info($user) : 0;
tpl_set('home_announcement', $home_announcement_tpl);
tpl_set('hide_announcement_bit', $HIDE_ANNOUNCEMENT_BIT);

$show_friend_finder = !$orientation && contact_importer_enabled($user) && !user_get_hiding_pref($user, 'home_friend_finder');
tpl_set('show_friend_finder', $show_friend_finder);
if ($show_friend_finder && (user_get_friend_count($user) > 20)) {
tpl_set('friend_finder_hide_options', array('text'=>'close',
'onclick'=>"return clearFriendFinder()"));
} else {
tpl_set('friend_finder_hide_options', null);
}

$account_info = user_get_account_info($user);
$account_create_time = $account_info['time'];

tpl_set('show_friend_finder_top',
!$used_friend_finder);

tpl_set('user', $user);


// MONETIZATION BOX
$minimize_monetization_box = user_get_hiding_pref($user, 'home_monetization');
$show_monetization_box = (!$orientation &&
get_site_variable('HOMEPAGE_MONETIZATION_BOX'));
tpl_set('show_monetization_box', $show_monetization_box);
tpl_set('minimize_monetization_box', $minimize_monetization_box);

if ($show_monetization_box) {
$monetization_box_data = monetization_box_user_get_data($user);
txt_set('monetization_box_data', $monetization_box_data);
}


// ORIENTATION
if ($orientation) {
$network_ids = id_get_networks($user);
$network_names = multiget_network_name($network_ids);
$in_corp_network = in_array($GLOBALS['TYPE_CORP'], array_map('extract_network_type', $network_ids));
$show_corp_search = $in_corp_network ||
get_age(user_get_basic_info_attr($user, 'birthday')) >= 21;
$pending_hs = is_hs_pending_user($user);
$hs_id = null;
$hs_name = null;
if ($pending_hs) {
foreach (id_get_pending_networks($user) as $network) {
if (extract_network_type($network['network_key']) == $GLOBALS['TYPE_HS']) {
$hs_id = $network['network_key'];
$hs_name = network_get_name($hs_id);
break;
}
}
}
//$orientation_people = orientation_get_friend_and_inviter_ids($user);
$orientation_people = array('friends' => user_get_all_friends($user),
'pending' => array_keys(user_get_friend_requests($user)),
'inviters'=> array(), // wc: don't show inviters for now
);
$orientation_info = array_merge($orientation_people,
array('network_names' => $network_names,
'show_corp_search' => $show_corp_search,
'pending_hs' => array('hs_id'=>$hs_id,
'hs_name'=>$hs_name),
'user' => $user,
));
tpl_set('orientation_info', $orientation_info);

tpl_set('simple_orientation_first_login', $get_o); // unused right now
}


// Roughly determine page length for ads
// first, try page length using right-hand panel
$ads_page_length_data = 3 + // 3 for profile pic + next step
($show_friend_finder ? 1 : 0) +
($show_status ? ($status_custom ? count($friends_status) : 0) : 0) +
($show_monetization_box ? 1 : 0) +
($show_birthdays ? count($birthdays) : 0) +
count($new_pokes);

// page length using feed stories
if ($orientation) {
$ads_page_length_data = max($ads_page_length_data, count($stories) * 5);
}
tpl_set('ads_page_length_data', $ads_page_length_data);

$feed_stories = null;
if (!$orientation) { // if they're not in orientation they get other cool stuff
// ad_insert: the ad type to try to insert for the user
// (0 if we don't want to try an insert)
$ad_insert = get_site_variable('FEED_ADS_ENABLE_INSERTS');

$feed_off = false;

if (check_super($user) && $get_feeduser){
$feed_stories = user_get_displayable_stories($get_feeduser, 0, null, $ad_insert);
} else if (can_see($user, $user, 'feed')) {
$feed_stories = user_get_displayable_stories($user, 0, null, $ad_insert);
} else {
$feed_off = true;
}

// Friend's Feed Selector - Requires dev.php constant
if (is_friendfeed_user($user)) {
$friendfeed = array();
$friendfeed['feeduser'] = $get_feeduser;
$friendfeed['feeduser_name'] = user_get_name($get_feeduser);
$friendfeed['friends'] = user_get_all_friends($user);
tpl_set('friendfeed', $friendfeed);
}

$feed_stories = feed_adjust_timezone($user, $feed_stories);

tpl_set('feed_off', $feed_off ? redirect('privacy.php?view=feeds', null, false) : false);
}
tpl_set('feed_stories', $feed_stories);

render_template($_SERVER['PHP_ROOT'].'/html/home.phpt');

How Rich Are You

(0)

  I am curious

  http://www.globalrichlist.com/

  me You are the 30,499,287richest person in the world!

 post your rank here

$20,000 a day no kidding wow

(0)

Remember our old pal, Markus Frind? The man who runs a free online dating site Plentyoffish.com that's making $20,000+/day off adsense. Well, he made it on the news again with MSNBC.

Markus is making millions from his site and receives millions of pageviews/day. PlentyofFish has become one the largest dating site on the internet and currently ranking number one in the UK and Canada and number three in the United States.

What surprises me the most in the video is when he told the reporter that he only spends an hour a day managing the website. He makes $20,000/day from the site and only has to spend 1 hour/day working on it? This has to be a job everyone is dreaming of!

RedBox Codes

(2)

 I dont get it

  What do you do with these codes

http://www.redboxcodes.com/

MUSIC. MOVIES, FREE CHECK

(3)

 Discovered this site and its working

  just checked out some jennifer lopez

  http://uzfiles.com/

Protect Your Name On Ebay

(1)

 

Copyright Issues Selling Online Ebay
2007-05-02

: Can you tell me the difference between a copyright and a patent? Also is that something I should let a lawyer handle for me?A: A wise man once said, "The biggest difference between a copyright and a patent is the number of lawyers it takes to do the paperwork." There is a point to be made there, mainly that if this wise man had paid his attorney to copyright that tidbit of wisdom I probably would have had to pay him five bucks to use the quote.

Copyrights, trademarks and patents are similar in that they are designed by law to protect your rights of ownership, but that's where the similarity ends. A copyright protects a creative work; a trademark protects a brand or company identity; and a patent protects an invention or process.

A copyright protects the rights of anyone who creates an "original work of authorship." A copyright owner has the exclusive right to reproduce the work; prepare spin-off works based on the copyrighted work; and to sell, perform and/or display the copyrighted work in public.

Copyright protection is afforded to eight categories of creative works: literary works (the written word); musical works (lyrics, music, melodies); dramatic works (plays, scripts, screenplays); artistic works (pictorial and sculptural), sound recordings (LPs, CDs, audio tapes); choreographic works (dance, pantomime); audiovisual works; and architectural works (blueprints, designs, renderings).

An original work is automatically copyrighted the moment it is put into a fixed format such as a paper copy or recording. In other words, once you put your original story in writing or make a recording of an original song, your copyright is automatically secured. From that moment on your work has copyright protection for your lifetime, plus 50 years after your death.

Registering a work with the U.S. Copyright Office is not required, but since it is relatively simple and inexpensive to do so, I advise that you register a copyright for each work you wish to protect. Also, your copyright must be registered in order to take legal action against someone who might infringe on the copyright in the future.

You can register a copyright without the assistance of an attorney. Simply visit the U.S. Copyright office website at http://lcweb.loc.gov/copyright/ and download the appropriate form. Complete the form and send it in with a $30 nonrefundable filing fee. This must be done for each individual work you wish to protect.

A patent is a form of protection granted to an inventor that protects his invention in the United States for up to 20 years from the date of application. Patent law states that, "whoever invents or discovers any new and useful process, machine, manufacture, composition of matter, or any new and useful improvements thereof may obtain a patent." Owning a patent gives you the legal right to stop someone else from making, using or selling your invention (or one that's very close to it) without your permission. However, proving that someone is infringing on your patent is often difficult and usually requires a trial to settle the dispute.

Since the first U.S. patent was awarded in 1790, more than five million patents have been awarded. The patent office receives more than 230,000 patent applications every year and I can tell you from personal experience that a turtle on Prozac moves faster than the patent process. Patents can take several years, truckloads of paperwork, and considerable legal fees to obtain. The cost of obtaining a patent can run from $500 for a simple design patent to $50,000 and more for a complex utility patent. However, if your company has a truly patentable idea, you would be wise to invest the time and money required to secure your rights. A good patent can be a valuable business asset.

While you can file a patent yourself, I strongly advise that you use an attorney since a naively written patent application often isn't worth the paper it's printed on. Just recently my attorney did a patent search for me only to discover that a patent for a similar product was already in place. However, due to the ineffectual language of the patent application, the patent was practically impossible for the owner to enforce.

Good news for me. Not so good news for the wise man who wrote his own patent.

Here's to your success!

EBAY SHOCKING REPORT

(0)

Ebay Shocking Truth
 

Question from customer

 I have spent hours and hours trying to find suppliers that are cheaper than what is being sold on ebay using your wholesale site , other than importing from China  and many items on EBAY are cheaper then your website!! 

Our Reply 


The reason your not finding a wholesaler that has lower prices then ebay is because Ebay is a wholesalers marketplace. Most items sell for wholesale or below wholesale. The majority sell below wholesale people just liquidating at any cost

The same people that sell items wholesale sell on ebay to clear out stock. They sell to you to make extra money at your expense. I see at least 100 people a month come to my site and ask this. Ive had to reply to similar questions like this every week.

If you want to compete on ebay your looking for the wrong thing.
You want liquidators and bulk wholesalers. The only way your going to get product at a good profitable price is to buy items in bulk.

Many of the deals listed on our site  offer nice bulk discounts and wholesale prices.  But to get volume pricing to compete you must buy in bulk an call to negotiate price 

Yes im sorry, What I just mentioned sounded like work. I guess a few will be giving up now. Because that is just want some of you didnt want to hear.

The reason I know this is because I am have been in the business since 2001 The companies that have sent me pricelists after contacting them have send me lists with much better prices then the ones listed on thier websites. But this in turn means you have to buy some products in mins of $1,000  and up 

Everyone expects that they can just buy the membership to this site and then get instant access to the wholesalers and killer deals.
whip out thier credit card, buy the item, list it on ebay and make tons of profit. It doesnt work that way. Most big sellers on ebay only make a few dollars for each item they sell. But they sell thousands of items a month.

Many of you come here expecting to find big items like xbox360's and playstations at 50-100 less then they are selling on ebay. That kind of deal just doesnt exist. Since the manufacturing costs of these items are around 20 less then the average selling price on ebay. You might find a liquidator trying to clear out some overstock on these items but they will dissapear usually within a couple of hours when 1 wealthy seller sees the deal and buys out everything.

You think you can find better deals just by getting on goole and in 1 min you find a site with way better prices on anything you can think of?

Well I bet in 5 min I can take your list of sites and tear them apart very quickly to find out if those sites are scam sites which there is a unbelievable amount of. And if they have horrible customer service.

I get approximately 50 website requests a week and have found that 98% of them are untrustworthy. And others boast great prices but boost shipping to rates that one would consider stupid.

You know that old saying "If it sound to good to be true, Then it usually is."

I have been in 1 business or the other for 12 years and have seen many scams and bought many lists only to find myself once again broke and wasting my time.

If you want to succeed on a place like ebay you need to spend countless hours on research and constantly working to find your niche.

I found mine and it took me 12 years. How long will you waste wandering around the net trying to find a wholesaler that can beat ebays below wholesale prices?

You need to find bulk supplies and liquidators. They were designed to sell to wholesalers.

Wholesalers are designed for retailers only. If your selling on ebay your a wholesaler not a retailer.

Hope this helps. If you have any questions that I might be able to help you with dont hesitate to ask.   JOE
_________________

0 Comments | Link to This | Back to top
Selling Junk On Ebay
2007-02-19
I hear so much about people who started selling on eBay and eventually turned it into their full time business. Is it really possible to build a profitable business just selling junk on eBay?
- Alex K.

A: If Fred Sanford were alive today, Alex, I'm sure he'd be earning his ripple money by selling quality junk on eBay. While it's also true that one man's junk is another man's treasure (I have a garage full of treasure to prove this point), your chances of building a profitable business selling "junk" on eBay (or anywhere else, for that matter) are slim to none.

While there is a lot of junk/treasure for sale on eBay, it is typically sold by individuals who have "I break for yardsales!" bumper stickers on their cars and not serious business people.

For serious entrepreneurs, however, selling on eBay can be a good way to start a new business if you are willing to put in the time and energy required to make the business a success. eBay is also a good option for existing businesses to expand their reach by selling online.

Everyone from small used car dealers to giant companies like Dell Computers have discovered that eBay is an excellent place to hawk their wares simply due to the huge number of folks who visit the eBay site on a daily basis. Nowhere else on earth will you find such a large pool of potential customers.

Consider these numbers:

  • There are nearly 69 million eBay users who spend $59 million every day.
  • Most eBay sellers are home-based businesses that sell every- thing from porcelain dolls to locks of Elvis' hair to $100,000 Mercedes convertibles to $5 million dollar vacation homes.
  • Every minute of every day more than 150 new items are listed for sale, more than 500 bids are placed, and seven new people register to shop on eBay.
  • At any given moment, eBay is conducting some 12 million auctions, divided into about 18,000 different categories.
  • About two million new items are offered for sale every day, and 62 million registered users scour the site to find them.
  • One company is grossing more than $5 million dollars a year selling brand new pool tables on eBay. Their eBay store is so profitable that they have closed their retail and now sell solely online.

That's right, $5 million dollars from the sale of pool tables: proof that you can sell just about anything on eBay if you know how to do it.

Be aware, however, that eBay is no magic bullet. As any eBay Power Seller (a seller who sells a minimum of $1,000 in goods per month) will tell you, building a profitable eBay business takes hard work and requires long hours, and often the financial rewards do not make it worth the effort spent.

When it comes down to the mechanics of it all, running an eBay business is no different than running a brick and mortar business. You still have the same considerations regarding product selection, inventory purchasing, product pricing, inventory management, order processing, fulfillment, customer service, etc.

You must also consider the legal and accounting aspects of the business. Just because you're selling online does not mean that Uncle Sam won't expect his piece of the pie. Revenue generated by an eBay business is just as reportable and taxable as revenue generated from a brick and mortar store. And if you sell to customers within your state you may also be responsible for collecting city, county or state sales tax.

One of the biggest obstacles to building a successful eBay business may be the stiffness of the competition. Many sellers sell identical items and the price wars often get ugly, but that's to be expected in a free market place, which is exactly what eBay is.

You may be the only store in town that's selling that one of a kind, custom made just for you, broke the mold after they made it, Dale Earnhart Memorial Bobble Head Action Figure (Earnhart fans would string me up if I called it a Doll), but do a quick search on eBay and you'll probably find a hundred others just like it.

So, can you build a profitable business selling on eBay?

Certainly, thousands of people have done it and so can you.

Here are a few tips to help get you started.

Sell Quality Products
Don't sell junk! Leave the knick-knacks and fake leather jackets to the less informed. You should offer only quality products at a fair price.

Research The Competition
Once you have your product in mind, don't invest a dime on inventory until you have spent some time on eBay to see what the competition is doing. If you want to sell motorcycle helmets, for example, you should look at current auctions to see how many others are selling similar helmets and what prices they are charging. This step is vital since you may discover that you can't compete with current sellers on price or there is simply no market for what you have to offer.

Start Slowly
Many people believe that the more items they have for sale on eBay the better. They will invest thousands in inventory and spent hundreds on listing fees (yes, eBay charges you to list items for sale and collects a final fee if the item sells). Those are the folks that usually end up with ten thousand Ginsu knives forever in their garage.

Test, Test, Test
A fair portion of eBay auctions result in no sales, so it's best to test the waters before jumping in with both feet.

List a few items and see how they sell. If an item doesn't sell, list it at least twice more. Some items might not sell the first time, but may the second or third, then sell steadily from then on.

If an item gets no bids the first time, consider adjusting your price or your terms. If an item sells well, keep it in stock and then experiment with another item.

Do Your Homework
eBay is too broad a subject to be covered fully here, but there are a multitude of books available that can help you start an eBay business. In fact, I bet you'll find most of them for sale at this very moment at eBay.

What's my bid...

Here's to your success!

Better Then Ebay/Google

(0)

 Dont miss the article I wrote at

 http://wholesalerwholesaler.shoutpost.com/12575/auctionads-make-more-then-google

Genius Ending To The Sopranos

(0)

HERE IS THE ENDING,...   Like most, I felt totally unsatisfied by the ending... BUT...
theN   I got this email that theorizes the ending. If this is
what David Chase had in mind -- genius.
Here goes...

Tony was killed....

in fact, the ending was genius if you've paid attention to the show or
are just a fan of well developed well thought out plots that all tie
together and have the memory of a champ to remember it all the ending
was simple, he got killed, but let me tell yall why and explain in
detail... There was 3 people in the room total who had a reason to
kill
tony.....

the two black guys, they were paid before to kill tony but he was only
shot in the ear, this was in one of the earlier seasons, also in the
earlier seasons, the trucker who was sitting at the bar stool, who the
camera kept focusing in on, is Nikki leotardo, Phil Leotardos nephew,
he
was in one of the early season episodes where Phil and Tony have a sit
down....

heres where the genius comes in....

When tonys walking in the diner,you see the camera focus on him, then
it
switches to his perspective, and you see him looking @ the booth hes
gonna sit at...

then the camera switches back to tonys face, then it once again
switches
to his perspective, and it shows him looking @ the door and looking @
the people come in..... Everytime the door opens the Chimes
sound.......

Carmela walks in, Chimes, AJ walks in Chimes, this when Meadows
parallel
parking, still trying to get inside the restaurant.. ..

at this point the camera switches back to the trucker who goes in the
bathroom.... ..

Then it goes to a scene where meadow finally parks and starts running
in
the diner....

the doors about to open, Tony looks up....

and No Chimes...... ......... .......

no Music....... .....

everything just goes black....... ........

in one of the early episodes of the sopranos, tonys talking with bobby
bout what it must feel like to die..

Bobby says "at the end, you probably dont hear anything, everything
just
goes black"

part of that was revisited in the second to last episode during the
last
seconds of it, when tonys about to go to sleep and he flashes back to
the memory of him and bobby on the boat... "You probably dont hear
anything everything just goes black"

so in the end, the Journey song was playing, the chimes on the door
sounded but when meadow came in, the guy in the trucker hat came out
and
killed tony...

its the reason you aint hear, or see sh!t when he died.... it was from
his perspective. ... and everything went black, then the credits
rolled.

Want to buy Wholesale On Ebay?

(0)

 You can now!HUGE WHOLESALE LOTS CLICK HERE JUST IN

 

AuctionAds..... Make more then Google

(0)

When AuctionAds kicked off March 6th we had set pretty high expectations. The first goal was to have 1000 publishers by April. Then hopefully 10,000 publishers by the first of the year. Well, I am happy to report that it has grown so virally that we had to completely go back to the drawing board on our goals. Yesterday was the 3 month anniversary of the AuctionAds launch and the growth has been truly amazing. Here is a bandwidth shot from our switch just to give you some idea of our growth over the last 3 months since launch:

AuctionAds 90 day graph

So as of right now we have 17,138 partners.

The one thing we pledge at AuctionAds is to never settle for success. We will continue to always listen to feedback from our publishers and make new features available. Thanks for a great first 3 months!

 

BUY WHOLESALE     DO YOU RUN GOOGLE ADSENSE ON YOU SITE INCREASE YOUR PAY CLICK HERE

Look Like Lindsey Lohan

(2)

Unemployment Check: This Video Contains All Of The Reasons Why Our Society Is Doomed

Posted May 30, 2007

This clip sums up everything that's wrong with America in just under 2 minutes.

WholesalerWholesaler.com Word Of The Day

(0)

Word of the Day

palliate \\PAL-ee-ayt\\, transitive verb:
1. To reduce in violence (said of diseases, etc.); to lessen or abate.
2. To cover by excuses and apologies; to extenuate.
3. To reduce in severity; to make less intense.

I had held a hope that she would take my class, that I would have the chance not only to cope with but to help palliate her pain.
-- Steven Polansky, "Pantalone", Harper's Magazine, February 1997

He was widely praised in both East and West as a humanitarian seeking to palliate the excesses of a cruel regime.
-- Joseph Finder, "The Trade in Spies: Not All Black or White", New York Times, June 22, 1993

The response to industrial decline was to cling even more to the British state, which had the resources to palliate its effects, and ease a transformation to a new economy -- or, indeed, as many hoped, to prop up the declining industries.
-- Allan Massie, "Scotland not so brave in push for home rule", Irish Times, September 4, 1997

Palliate derives from Late Latin palliatus, past participle of palliare, "to cloak, to conceal," from Latin pallium, "cloak."

Dictionary.com Entry and Pronunciation for palliate

fellow bloggers comment on how you would use the word in a sentence?

Mine?

 I wish to palliate the prices many people pay  for wholesale fahion jewelry by providing cutting edge product prices and services......

 

Paris Back To Jail

(3)

The judge said back to the cell you go no more breaks for rich and famous

CASUAL WEAR TO COURT WOW HAH LOCK HER UP!

 

Paris Hilton was just ordered back to jail in Lynwood to serve out the remainder of her sentence! She'll get credit for at least 5 days already served.

Hilton left the courtroom in tears, screaming, "Mom, Mom, Mom." Hilton was also heard saying "It's not right."

One witness said that Paris was "physically escorted" out of the courtroom by a female deputy.

Hilton's mother was later seen pacing the hallways, telling reporters, "I'm paralyzed right now." Paris' father Rick is still in the courtroom.

A Sheriff inside the courtroom tells us that officers are taking Hilton straight from the courtroom to Lynwood. No timetable has been set on her departure.

Paris Hilton Out Of Jail

(6)

LOS ANGELES, California (CNN) -- Paris Hilton was freed from jail Thursday morning, just three days after she began serving what was to be a 23-day sentence for violating probation

TMZ.com quoted what it called "unimpeachable sources" saying Hilton left the Century Regional Detention Facility in Lynwood, California, early Thursday.

 L.A. County Sheriff's Department would hold a news conference at 7 a.m. Pacific time (10 a.m. Eastern) to discuss her release.

Hilton checked into the facility Sunday night to begin serving a sentence for violating probation in an alcohol-related reckless driving case. The sentence, originally 45 days, was reduced to 23 for various reasons, including good behavior....  whats up with that

fast track

(0)

Affiliate Marketing has been called "The Fast Track To Online Success" and with my Amazing Little Website affiliate program you get a turnkey affiliate website loaded with my info products and you earn a WHOPPING 50% commission on all sales made from your affiliate website.

You also get copies of all my info products
to use and enjoy.

That's over $500 in products, and the chance to
earn big affiliate commissions if you act now!

see the blog roll for Fast Track Link

Ebay Silent Sales

(2)

http://www.google.com/search?hl=en&q=how+reliable+is+wholesalerwholesaler.com

 

Creative eBay Selling Newsletter

Brought to you by the top selling author of:
"The Silent Sales Machine Hiding on eBay"

        Exclusively available at:
   http://www.SilentSalesMachine.com

In this newsletter:
=========================================
1. A magazine we think you'll love.
2. Turn your ideas into eBay income
3. Quick tips:
    - Step by step video series
    - Terry Gibbs gift
4. Past issues available & How to subscribe
=========================================
Please pass this newsletter on to a friend!

Tell them it's the most read eBay success newsletter on
the planet!  

========================================
1. A magazine we think you'll love.
========================================

I've been invited to be a monthly columnist for a new
print magazine called "Online Marketing Monthly". They
already have over 10,000 subscribers and growing. I'm
honored to be invited aboard!

If you are a fan of my newsletter I want to get you a
complimentary copy of the first issue of "Online
Marketing Monthly" mailed to your house at O cost!

Visit: http://www.jimcockrum.com/omm.html for details on
the complimentary offer.

The first article I submitted for print is about the
relationship between Google and eBay and how to
capitalize on it. I also gave away some of the creative
ideas behind some successful MySilentTeam.com members.

If you want a sneak peek of my first column (the editor
loved it by the way) do this:

Once you sign up for your free first copy of the
magazine you'll get an email that says: "Welcome to
Online Marketing Monthly".

Forward that email to: webmaster@mysilentteam.com.

Step one - visit: http://www.jimcockrum.com/omm.html
Step two - forward the welcome email to us

As soon as we get 200 email confirmations I'll post my
first article on the blog at
http://www.jimcockrum.com/blog and you can enjoy it a
month early. I'd love your feedback too on the blog.

========================================
2. Turn your ideas into eBay income
========================================

A couple of weeks ago I told you about Nancy.

Nancy read the book "The Silent Sales Machine" and put
the info she learned into action. She's so excited
about her success that she's agreed to give ALL my
customers (not just MySilentTeam.com members) a free
copy of the book that she is now successfully selling on
eBay. We've added a link to the resource page so you
can get it. 

This is a great example of a homemade simple ebook
successfully selling on eBay and it was made by someone
that didn't even know what an ebook was a few months
ago.

The resource is where you'll find Nancy's book. The
resource page is available to everyone that buys (or has
ever bought) the book "The Silent Sales Machine". If
you don't have a copy get over to
http://www.SilentSalesMachine.com now and get it.

The resource page can be found as a link right after the
table of contents in "The Silent Sales Machine".

========================================
3. Quick Tips
========================================
***QUICK**TIPS***
=================
There are a couple of blog posts you'll want to check
out.

I've been asked by readers to make "step by step
videos" for years. I'm finally doing it - I'm
recording DVD's that you don't have to be in front of
your computer to watch. I need your input on the video
series though. I've already recorded several creative
eBay and Internet income strategies. What would you like
to see included in these videos? 

Visit the blog and leave your feedback. Look for the
blog post titled "Jim's Videos". Customers of mine
and subscribers to this newsletter will get a huge
discount when I make them available. I don't want price
to be an issue for anyone on these DVD's.

=================
***QUICK**TIPS***
=================
More importantly...

Visit the other blog post from today that is titled "A
great offer..." to see the neat way Terry Gibbs is
honoring his father that he lost to cancer. He's giving
you a big incentive to make a cancer fighting donation
in memory of his dad.

link to the blog: http://www.JimCockrum.com/blog

========================================
4. Past issues available
========================================
Want to get serious about eBay and Internet profits?

Many subscribers ask us how they can get past issues of
this newsletter. 

Past issues of "Creative eBay Selling" dating back to
Jan. 2002 are made instantly available FREE to customers
who purchase Jim's #1 Top Selling book "The Silent
Sales Machine Hiding on eBay" available *ONLY* at:

http://www.SilentSalesMachine.com

Are you reading this newsletter because a friend sent it
to you? 

You can get your own copy from now on by sending a blank
email now to: 

cesnewsletter@aweber.com

=============================
Thank you for subscribing!
=============================
This email newsletter is never sent unsolicited.
The information we have on file from when you subscribed
is: 

Your name: Joe Richey
Your email: supplyswapsell@aol.com

Note: To change your name or email address please use
the link at the very bottom of this email. 

You'll get an immediate response from us unless the
Spam filters on your email account prevent it.  If you
don't get an immediate response when you attempt to
join please visit: 

http://www.silentsalesmachine.com/currentissue.html

...to learn how to make sure we stay in touch with you.

Please forward this newsletter in its entirety to your
friends, family or co-workers. Thanks for helping us
make "Creative eBay Selling" news the #1 eBay and
Internet Marketing newsletter on the web! 

Finally, be assured your email address will NEVER be
shared or sold! 

We can't stand spam, and we will never send any or help
those who do. Thank you for joining and staying on our
mailing list! 
=====================
Copyright Information
=====================
Copyright 2006 JimCockrum.com

You MAY reprint any of the articles in this newsletter
for any purpose as long as no portion of the article is
modified without permission. You must also include this
tag line at the bottom:  

Jim Cockrum
http://www.JimCockrum.com

Editor-"Creative eBay Selling Newsletter"
The most popular free eBay success ezine on the web!

* Please pass this newsletter on to a friend! *







=========================================================
About the Author:       Jim Cockrum has been
selling on eBay since 1997 and has been helping
others start successful eBay businesses since
2000. He has written multiple articles and done
many interviews about how to run a successful
business on eBay.

He is best known for his top selling eBook titled
"The Silent Sales Machine Hiding on eBay" that
has been a top seller on the top eBooks sales
website clickbank.com for many months. The book
is only available at Jim's site:

http://www.SilentSalesMachine.com

Hand Picked Deals

(0)

  Dont miss our handpicked deals

   http://www.handpickedbyjoe.com/

How To Handle The Occasional Oop-See!

(0)

How To Handle The Occasional Oop-See!

Tim Knox
Copyright © 2005
« More columns

 

Q: My company is really in hot water with one of our best customers. I can't reveal exactly what happened, but suffice it to say that we really dropped the ball and the customer is furious. I'm not even sure we can save the account. What's the best way to get back in a customer's good graces after making such a mistake?
-- Charles W.

A: Without knowing the full story, Charles, I can't give you a specific course of action, but let's start at the sharp end of the uh-oh stick and work our way back to see if we can come with up some advice that might help.

First off, it's important that you understand that the magnitude of your mistake will determine the course of action you take to make amends. If your company's error was such that it caused your customer a significant amount of lost time or revenue, embarrassed them publicly, caused damage to their reputation, or otherwise negatively affected their bottom line, you may face legal repercussions that saying "I'm sorry" will not deter. If that's the case you should consult an attorney immediately and prepare for the worst. Whether or not the worst comes is irrelevant. You must be prepared for it.

Now on to dealing with more minor offenses. As anyone who has read this column for any length of time knows, I'm cursed with daughters. I used to say I was blessed with daughters, then they learned to walk and talk. Blessed quickly became cursed. Now my oldest daughter is an inch taller than me and getting all lumpy in places I'd rather not think about. She's a sad case, really. The poor kid needs an operation. She has a cellphone growing out of her ear. But I digress...

When she was a toddler she coined the phrase, "Oop-see!" Whenever she did something innocently destructive, like knock over a glass of orange juice on my new computer keyboard or shove a Pop Tart in the VCR tape slot, she would look at me with her huge brown eyes and say, "Oop-see!" My wife says there is a reason God made kids cute. Oop-see moments are evidence that she is right.

Oop-see meant, "Uh oh, I didn't mean to do that. I was wrong. I'll never do that again. Forgive me? Love me? Buy me toys... Oop-see worked like a charm every time. Now, I certainly don't expect you to bat your eyes at your customer and say, "Oop-see!" but consider the effect her words had on me. Instead of screaming at the top of my lungs like I wanted to do (hey, have you ever tried to dig a Pop Tart out of a VCR) I immediately softened and found myself actually taking her side. "Aw, it's OK, really, we all make mistakes..."

What my daughter had figured out is that it's hard to stay mad at someone who admits a mistake, sincerely apologizes for it, and vows never to let it happen again. Little did I know this was only one of many tactics she would employ over the years in her never-ending quest to wrap her daddy several times around her little finger, but that's a whole different column.

Dale Carnegie said it best: "Any fool can try to defend his or her mistakes - and most fools do - but it raises one above the herd and gives one a feeling of nobility and exultation to admit one's mistakes."

Carnegie and my daughter were basically saying the same thing: When you (or your company) make a mistake, no matter how large or small, the best thing you can do is quickly admit the error of your ways and face the consequences, come what may.

Here are a few things you can do to help set things right with your customer.

Assemble the facts. The very first thing you should do is find out what went wrong and why. Meet with your key people and gather the facts. Ask specific questions like: What was the mistake? What caused it? Who was involved? What could have been done to prevent the mistake from happening and what can be done to prevent it from happening again in the future.

Put yourself in your customer's shoes. I've been on both ends of the uh-oh stick and neither is very comfortable. My company has dropped the ball on occasion and we have also been negatively impacted when one of our vendors did the same. Put yourself in your customer's shoes and consider what could be said or done to remedy the situation from their point of view.

Take responsibility for the actions of your company. In my role as a company president there have been times when I've had to call up a customer and confess that a mistake was made, and as president it was also my responsibility to take the heat for it. Remember, you're the head cheese, Charles, you get to sit behind the big desk and take home the nice paycheck. You're also the one that gets to mop up when your employees makes a mess. It just goes with the job.

Do not place the blame on specific employees. No matter how tempting it is to put the blame on specific people in your organization (even if that's where the blame lies), do not do it. It is unprofessional, counterproductive and can backfire on you, especially if the person you're blaming reports directly to you. Saying something like "My sales manager is always making mistakes like this!" is not going to make your customer feel any better. To the contrary, such statements will make the customer question your leadership ability and the quality of all your employees, not just the one that made the mistake. If you don't have faith in your company and employees, why should your customer?

Don't deny that a mistake was made, especially when there is clear evidence to the contrary. You're not Richard Nixon, for petesake, so don't try to pretend that the mistake didn't happen or stage some elaborate cover-up to try and dodge the blame.

Admit your mistake. This may sounds trite, but you must admit your mistake before you can move ahead and start to make amends. Don't be so afraid to take this step. I doubt your company is the first one to screw up with this customer and I can guarantee you certainly won't be the last.

Apologize for the mistake. The one thing that could make the situation better is often the thing that companies find hardest to do. I don't mean to sound like Dr. Phil, but simply saying you're sorry is often the best way to get a business relationship back on track. Ensure the customer that it will never happen again. After you have taken responsibility for the mistake and apologized in a sincere and professional manner, you must then start the process of rebuilding the trust that was lost. Promising that such a mistake will not happen again is a good way to start.

Compensate the customer for his loss. Even if your mistake didn't cost the customer a dime, he will appreciate an offer of compensation. This can be something as simple as a lunch on you or a discount on his next order. The size of the compensation offered should be in direct proportion to the size of your mistake. A word of warning: don't let the customer bully you into overcompensating him for your mistake. That can be more detrimental to the relationship than the mistake itself.

As my daughter understood all those years ago, Charles, a sincere Oop-see can help make things all better.

Here's to your success!

Tim Knox tim@dropshipwholesale.net

 


Small Business Q&A is written by veteran entrepreneur and syndicated columnist, Tim Knox. Tim serves as the president and CEO of three successful technology companies and is the founder of DropshipWholesale.net, an online organization dedicated to the success of online and eBay entrepreneurs.

Tim's latest book is "The 30 Day Blueprint For Success!" We asked 58 Top Internet Money Makers: If you lost is all tomorrow and had to start from scratch, what would you do to be back on top in the 30 days? Their answers just might make you rich!

Related Links:
http://www.prosperityandprofits.com/
http://www.smallbusinessqa.com/
http://www.dropshipwholesale.net/
http://www.30dayblueprint.com/
http://www.timknox.com/

 

Use Email Marketing To Keep Customers Buzzing About Your Business

(0)

Use Email Marketing To Keep Customers Buzzing About Your Business

by Tim Knox
Copyright © 2007

 

The other day my radio show cohost, Paul Finley, mentioned that he had received an email from his dentist. The point of the email was to let Paul know that his office would be closed for a week and included instructions on what to do in case of a dental emergency.

Obviously Paul's dentist reads my column because I've been preaching about using email to keep in touch with customers for years. OK, maybe he doesn't read my column and is just a brilliant guy in his own right. Either way, the point is clear: using email - no matter what type of business you're in - is an excellent way to keep the lines of communication buzzing between you and those folks who keep you in business.

You'll notice that I didn't say to keep the lines of communication "open." I said to keep the lines of communication "buzzing," as in active, as in constantly communicating messages that will entice them back into your business.

The difference is huge. "Open" simply means that you're there if and when your customers happen to think about you. "Buzzing" means that you proactively do things to keep your business in the forefront of your customer's mind. Instead of waiting for them to come in only when they need something, you send emails that give them reasons to come in as soon as possible. You don't wait for Mohammed to come to the mountain; you send the mountain to Mohammed via email.

It's called "email marketing" and every business - including yours - should be doing it. Don't confuse email marketing with spamming. The emails you send your customers are never unsolicited or intrusive. You get their permission to send them occasional emails that are of benefit to them. And by benefiting them you increase your business and solidify your relationship with the customer.

Ideally you should collect email addresses from everyone who walks through your door, whether they buy something or not.

Offer them the opportunity to sign up for your free email newsletter or announcement list and offer them an incentive to do so, maybe a $10 discount off their first purchase if they sign up today.

The allure of saving $10 not only entices them to give you their email address, but to also make that first purchase while they are there to save the $10. See how that works? You got them added to your email list and they made an immediate purchase. You can now use email marketing techniques to turn them from a one time customer into a repeat customer.

Remember the number one rule of sales: it's easier to sell to current customers than to sell to new customers. The first sale is always the hardest. You should concentrate on building a legion of repeat customers and email marketing can help you do that.

Email should be a part of every business's marketing strategy. If you own a hair or nail salon you could email customers on slow days and offer a special discount if they come in by a certain time. If you own a clothing store you could email your customers every time a new clothing line comes in or if you're having a sale. If you're in the furniture business can email your customers about excess inventory and offer them a discount if they come in by a certain date.

Email marketing works for professional service providers, as well. Accountants can email their clients with special bulletins about changes in the tax law or to remind them when it's time to file forms. Stockbrokers can email clients about changes in the stock market or to tell about a hot new IPO that's on the horizon.

Doctors and dentists can use email marketing to notify patients that it's time for their annual checkup, to remind them of impending appointments, to inform them of new office hours, or to let them know about new services. Or perhaps you're in practice building mode and you want to offer a referral bonus for current patients who refer their friends and family to you.

You get the idea. Email marketing can increase your business's revenues, solidify your reputation, and keep you fresh on your customer's mind.

If you have questions about putting email marketing to work for your business just shoot me an email and I'll point you in the right direction. Or if you've successfully used email marketing to increase your business let me know about it and I'll share the news.

I'm sure others would love to hear about how smart you are

Is Business Ownership In Your Future?

(0)

Is Business Ownership In Your Future?

by Tim Knox
Copyright © 2007

 

The last time we met I told you about the U.S. Department of Labor's prediction that within the next ten to fifteen years fifty percent of the American workforce will consist of home workers, independent contractors, consultants, telecommuters, freelancers, and of course, entrepreneurs.

Think about that for a moment, especially if you are a diehard nine-to-fiver who can't imagine yourself leaving the comfort of a regular job to try something different.

The workplace of the future is either going to be an exciting or dreadful place, and it's up to you which side of the coin you fall on.

You see, what the Labor Department doesn't say, but I believe to be true, is that those who find themselves earning a living in non-traditional careers will do so for one of two reasons: they either freely chose to throw off the shackles of the traditional nine-to-five or they were forced to do so because they were casualties of the future's changing work models.

Layoffs, downsizing, outsourcing, work force reduction, and position elimination: all very nice politically-correct terms that mean one thing: you had better be open to changing the way you think about work because, my brothers and sisters, the times they are a' changing.

The point of our discussion last time focused on those of you who may one day choose the entrepreneurial path.

There is a process for going from worker bee to entrepreneur wannabe and it begins with a healthy dose of self-assessment (look inward to determine if you have what it takes to be an entrepreneur) followed by the determination of what kind of business best suits your situation and personality, how you will fund the business, and the writing of a solid business plan.

Now let's talk about the nuts and bolts of the process: finding a , lining up vendors, hiring and managing employees, dealing with customers, creating a marketing strategy ... hmm, this could turn into a very long column. Let me see if I can abbreviate the process in four paragraphs or less.

If your business will be a brick and mortar, nothing is as important as .

What might be a great for a shoe store might be a horrible for a donut shop.

What may appear to be a busy in the morning might be a ghost town in the afternoon. You should rely on experts for this important piece of the process.

Work with a commercial realtor or business broker to find a that meets your specific needs.

Next, if yours will be a product-driven business, your success could hinge on the quality, price, and availability of the products you sell.

You must establish strong relationships with reliable vendors who can provide an ample supply of the products your customers demand.

Always be cultivating relationships with new vendors. Never rely on a single source for products because sources have a tendency to dry up over time.

Next comes the hiring and managing of employees. Like your and product, employees can make or break your business.

Knowledgeable employees who know the value of - and deliver - exceptional customer service are like nuggets of gold. Unfortunately, they are also as hard to find.

Don't hire your wife's brother or your best friend's son. It's easier to find a new best friend than a new customer.

Hire based on experience and expertise and train every employee well. Set expectations high and most important of all, lead by example, not by the book.

Finally, the big question: if you build it will they come? Afraid not, my new entrepreneur friend. You must have a killer marketing plan that will bring the world - or at least your piece of the world - to your door.

You can have the best product in the world, but if you don't tell anyone about it, you won't sell a thing.

Creating a killer marketing plan really isn't that hard. Just ask yourself questions like: who is my target customer and what is the best way to reach them? What can I do to stand out from the crowd? What can I do differently? How can I get noticed? And how can I do that without spending an arm and leg on advertising?

Two great books on this topic are Purple Cow by Seth Godin and There's A Customer Born Every Minute: P.T. Barnum's Secrets To Business Success by Joe Vitale.

Of course there's far more to going from employee to entrepreneur than I can cover here in just a couple of columns, which is why I wrote a book on the topic called Everything I Know About Business I Learned From My Mama.

Shameless self-promotion aside, I hope this will help you decide if future entrepreneurship is for you.

No matter what path you choose remember this: the workplace is changing.

You must be prepared and willing to change with it or you'll end up a statistic on another government list, this one stamped: Unemployed

PAY PER POST

(1)

Long Overdue Praise For PayPerPost    BY JOHN REESE

Posted: Wed, 09 May 2007 08:08:32 +0000

  As many of my longtime ezine subscribers already know, I love to travel.

Well, in the past 10-12 months I've done a lot of traveling.  I took trips to Japan, Scotland, England, France and Italy.

 And I finally made it to China for the first time.  Unfortunately, I got really sick and it ruined the trip.

I went on all those trips because I was feeling a bit burned out from all the business projects I had going on.  I desperately needed to get as far away from the computer as possible.  So I did.

While I was away I had a lot of time to think...  to figure out what was and wasn't making me happy in my life.  I did some serious soul-searching.  And as I previously wrote in my ezine, I decided to pick just one project and get out of the rest - to keep from going insane and to be able to focus on doing one thing great rather than several things fair.

As a serial entrepreneur this is something I have battled with my entire life.  There's never a shortage of opportunities and it's just too easy (especially online) to try and conquer multiple projects at the same time.  But it rarely turns out as well as it would have to just focus on ONE project.  So I had to make a major change...

That decision process led me to take my 'side business' of teaching Internet Marketing and to focus on helping as many people as I possibly could with it.  And that's exactly how Income.com came about.

But while I was traveling around the globe I still took time out to check email here and there as well as catch up on my favorite blogs and other news sources.  (Internet cafes rule.)

During the time I was away a major FIRESTORM of controversy hit the ‘Net.  Blogs all over the world were going crazy.  People were getting fired up.  Mainstream media outlets got involved.  It was nuts.  And it was all concerning one little startup company...

PayPerPost.

If you're not familiar with them, PayPerPost is an advertising network that pays bloggers to post ‘reviews' of products and services on their blogs.  Products and services that belong to the other side of PayPerPost's system, their advertisers.

I believe there were essentially TWO things that got people really heated over the launch of this new company...

1.  It was encouraging people to post ads within blog posts.  Many hardcore blog readers think of blog posts as pure content written by the author(s) that run that specific blog.  There are plenty of other places to display ads on a blog layout - on the sidebars, headers, and footers.  At least that's what the popular reaction was to this new business model.  Many said it was another form of "blog spam" regardless of point #2 below.

2.  The blogger was not required to disclose that they were being compensated to post the review.  It was left up to the blogger to decide if they should disclose that they were getting paid to post their review, or to just post the review and let their readers decide for themselves if they thought it was a regular content post or not.

Shortly after PayPerPost's launch, BusinessWeek ran an article titled, Polluting The Blogosphere.  In the article, Jon Fine basically rips PayPerPost a new one and more or less implies that the whole process is DISHONEST and poisonous for the Internet.  His harsh stance was based around the lack of required disclosure.

Many other bloggers chimed in and expressed their negative thoughts neck-snapping-reactions about how EVIL PayPerPost was for creating such a business model.  The majority of this negativity also focused on the disclosure (or lack thereof) issue.

Some of these bloggers were some of the most respected (and most visited) bloggers online - like Michael Arrington and Jeff Jarvis.

Once these "A-List" bloggers started bashing PayPerPost it couldn't get any worse for this little company.

Or could it?

Introducing... Jason Calacanis.  The self-appointed PayPerPost Bash-Fest Commander-In-Chief.  More on that in a moment...

Jason is an old school ‘Net guy.  He was the founder and editor of a magazine called the Silicon Alley Reporter.  It covered Internet and other new media companies in the NY area.  It was actually pretty solid stuff.  In the late 1990s, if you read SAR, Business 2.0, Wired magazine, and a few other trade journals, you had the entire Internet Universe well covered.

Jason co-founded Weblogs Inc. and sold it to AOL for $25 million.  He was also the GM of Netscape at one time.

I actually have a lot of respect for Jason.  As many of my ezine readers know, one of the traits I respect most is hard work.

The true hard workers are few and far between.  Most people just want to do the bare minimum.  And this is no exception when it comes to entrepreneurs - many of which never actually take much actionThey spend most of their time planning and dreaming.

Jason has worked very hard and has made some important contributions to the Internet industry.  I respect that.

But don't let Dr. Evil fool you.

Jason pretty much took it upon himself to try and rid the Internet of PayPerPost - and he set his sights on Ted Murphy, the Founder/CEO of the company.

Jason has bashed Ted Murphy and PayPerPost at every opportunity he could find.  And he was downright brutal at times.

He was yet another blogger that had a huge issue with the optional disclosure policy of PayPerPost - i.e. their bloggers were supposed to police themselves and decide if they should or shouldn't add a "Disclosure Statement" on their blogs to clarify that their ‘review' posts were paid advertisments.

For the record, I believe these bloggers should have to post a disclosure statement if they are making posts that they are being compensated for.

And I actually side with Jason in his opinion that each of these paid posts should start with some sort of disclosure, even a small one, at the top of the post.  It's similar to the fine print "ADVERTORIAL" you often find in a magazine.

You know, that full page ad that looks just like the articles in the same publication; yeah, the hundreds or thousands you've probably glanced at and never even noticed that tiny "disclosure" and still to this day think it was a legit article.

If it's not perfectly clear that a blog post is a paid ad (or ‘review') then that actually could be a form of deception - because blog readers naturally expect to be reading content that isn't a paid ad.  And if their natural expectations aren't being met (especially without them knowing it) they are essentially being ‘tricked'.  It's a very fine line.

PayPerPost eventually changed their policies and now requires their bloggers to have a disclosure policy on their blogs.  It's not necessarily a disclosure within each post (unless the blogger chooses to do so) but it is a required, published disclosure on the site that states they are being compensated for some of the posts they are making.

Part of me (through this entire 'saga') wished that PayPerPost had launched their company with the disclosure thing in place to start with.  Then they wouldn't have had to deal with the huge backlash and negativity, right?

 BZZZZZZZZZZ WRONG.

I would bet anything that they still would have experienced the massive backlash and negativity.  It might not have been on the same scale, but it still would have happened.

Why?

Because many of the ‘complainers' were primarily pissed about...

...the concept of ADS APPEARING IN BLOG POSTS.

Or worse, an advertisement actually taking up an entire blog post.

Think about it... phrases like ‘polluting the blogosphere' and ‘the last thing we need is more blog spam' have absolutely, positively nothing to do with disclosure.

NADA. ZILCH. NOTHING.

It's a mindset, and a reference (even if a subconscious one) that screams...

"I Don't Want To See A Bunch Of Advertisements In The Form Of Blog Posts All Over The Internet!"

Can anyone honestly say that if PayPerPost (from the beginning) had all their bloggers start each post with the small text, "ADVERTORIAL" or "PAID REVIEW" that there still wouldn't have been a backlash against them?

A backlash was inevitable.

This is exactly what happens when someone creates a Disruptive Business Model.  And this is what PayPerPost did.  They shook up the blogosphere.

Hahahaha.  I'm sorry, I have to actually laugh outloud...

Blogosphere.

I crack up when I read or hear that term.  A lot of the blogger purists like to throw that word around... these are the bloggers that actually think they somehow live online in their own controlled universe

It reminds me of a great quote from Shawshank Redemption... when Red is facing the parole board at the end of the movie...

Red: Rehabilitated? Well now, let me see. You know, I don't have any idea what that means...I know what you think it means. To me, it's just a made-up word, a politician's word so that young fellas like yourself can wear a suit and a tie and have a job.

I think the same thing when I hear certain people (not all) throwing around the world blogosphere like it's this thing they govern or have ownership over.

Here's a little secret for those folks... it's just a made up word.

There's another major issue with some of the anti-capitalists and purists that were so quick to bash PayPerPost and their model... and here's a major NEWSFLASH they all need to realize...

IT'S NONE OF THEIR BUSINESS WHAT SOMEONE ELSE CHOOSES TO PUT ON THEIR BLOG!

Someone can make every post an advertisement AND have a non-stop Flash animation of donuts bouncing around their nav menu.  It's THEIR BLOG.  How dare they try and tell them they can't post paid reviews of product