Displays the most recent (x) blog titles on the user profile page. (x) is set in block configuration admin section. A 'View more' link will appear at the bottom of the block that links back to the users blog page (Ex. /blog/3). Copy and paste the following code to the specified files within the custom_site_specific module folder.

custom_site_specific.info

; $Id$
name = Custom Site Specific
description = Custom site specific code
package = Custom

custom_site_specific.module

<?php
// $Id$
/**
 * Implementation of hook_block().
 *
 * Displays the most recent (x) blog titles on the user profile page. (x) is set in block configuration admin section.
 */
function custom_site_specific_block($op = 'list', $delta = 0, $edit = array()) {
  global $user;
  switch ($op) {
    case 'list':
      $block[0]['info'] = t('Custom recent blog posts');
      $block[0]['title'] = t('Recent Blog Posts');
      return $block;
      
    case 'configure':
      $form['custom_site_specific_blog_num_posts'] = array(
        '#type' => 'textfield',
        '#title' => t('Number of blog posts to display'),
        '#default_value' => variable_get('custom_site_specific_blog_num_posts', 5),
      );
      return $form;
      
    case 'save':
      if ($delta == 0) {
        variable_set('custom_site_specific_blog_num_posts', (int) $edit['custom_site_specific_blog_num_posts']);
      }
      return;
      
    case 'view':
      if (user_access('access content') && $delta == 0) {
        $num_posts = variable_get('custom_site_specific_blog_num_posts', 5);
        $current_user_profile = arg(1);
        $result = db_query_range("SELECT n.nid, n.title FROM {node} n WHERE n.type = 'blog' AND n.status = 1 AND n.uid = %d ORDER BY n.created DESC", $current_user_profile, 0, $num_posts);
        if (db_num_rows($result)) {
          $items = array();
          while ($blog_posts = db_fetch_object($result)) {
            $items[] = l($blog_posts->title, 'node/'. $blog_posts->nid, array(), NULL, NULL, FALSE, FALSE);
          }
          $block['subject'] = t('Recent Blog Posts');
          // Theme our array of links as an unordered list
          $block['content'] = theme('item_list', $items);
          if (db_num_rows($result) == $num_posts) {
            $block['content'] .= '<div class="block-view-more">'. l(t('View more'), 'blog/'. $current_user_profile, array(), NULL, NULL, FALSE, FALSE) .'</div>';
          }         
        }
      }
      return $block;             
  }
}
?>

Now we need to override the default blog.module items that get added to the user profile page.

template.php

<?php
/**
 * user.module - theme_user_profile override
 * 
 * Theme a user page
 * @param $account the user object
 * @param $fields a multidimensional array for the fields, in the form of array (
 *   'category1' => array(item_array1, item_array2), 'category2' => array(item_array3,
 *    .. etc.). Item arrays are formatted as array(array('title' => 'item title',
 * 'value' => 'item value', 'class' => 'class-name'), ... etc.). Module names are incorporated
 * into the CSS class.
 *
 * @ingroup themeable
 */
function phptemplate_user_profile($account, $fields) {
  $output = '<div class="profile">';
  $output .= theme('user_picture', $account);
  foreach ($fields as $category => $items) {
    // Don't display the History category on user profile pages
    if (strlen($category) > 0) {
      $output .= '<h2 class="title">'. check_plain($category) .'</h2>';
    }
    $output .= '<dl>';
    foreach ($items as $item) {
      // Don't display blog.module Blog category items
      if ($item['title'] != 'Blog') {
        if (isset($item['title'])) {
          $output .= '<dt class="'. $item['class'] .'">'. $item['title'] .'</dt>';
        }
        $output .= '<dd class="'. $item['class'] .'">'. $item['value'] .'</dd>';
      }
    }
    $output .= '</dl>';
  }
  $output .= '</div>';

  return $output;
}
?>

Finally, after you enable the custom_site_specific.module go to admin/build/block and configure the block settings for 'Custom recent blog posts' by clicking on the 'configure' link. Scroll to the bottom and click the radio button with: Show if the following PHP code returns TRUE (PHP-mode, experts only).

Add the following code to the Pages: section:

if (arg(0) == user && is_numeric(arg(1)) {
  return TRUE;
}

Enjoy.
v1nce