Just upgraded CoffeeBear.net to WordPress 2.6. So this post is partly to make sure all my plugins are working correctly with it.

I’d also like to take a momemt to thank AWelkin & Bryon for the gifts they brought back from Japan for me. I’ve now decorated my cubicle with 3 Tachikoma gashapon. *yeah!* Also a quick thanks should go out to my buddy/ex-coworker Eric, he mentioned more than once I just needed the right motivation to get into programming1.  Well I recently had some slow time at work and wanted a way to parse some badly formatted data; so I wrote a Python script and while doing so certain things that have never clicked in my head about programming started falling into place.  I’ve since started working on another Python script for a different project at the office, so perhaps there’s some hope for my coding-fu yet.

1 I do a lot of computer stuff, but have never been much of a programmer.  Usually I just learn enough to hack somebody else’s stuff together to do what I want in rather ugly hacks.

Ever since upgrading to the latest version of Rob Miller’s Now-Reading plugin, I noticed my single book pages were working but not displaying everything correctly. Specifically books I’d marked having been borrowed from my local library were being displayed as:

  • I borrowed this book fromlibrary

When they should simply have a line reading “I borrowed this book from my local library”. I had spent much
time fiddling with my templates trying to figure out how the upgrade broke them and today I figured it out. The truth is my template was just fine. The problem is the newer version of Now-Reading was applying a new filter to book-meta1. That filter is wpautop and it was wrapping my variable in <p> … </p> tags. Those tags screwed up the display and made my variable checks fail. To correct the problem, I went into now-reading/default-filters.php and commented out add_filter('book_meta_val', 'wpautop');. Now my single book pages look like they’re supposed to again. Yeah!

1 This is a custom field available in the back-end of the plugin and it is where I store the information telling my template if I borrowed the book and from whom I borrowed it.

A recent visitor to the CB pointed out a problem on some of my older entries.  It’s something I was expecting to have to fix but got sidetracked and never got around to.  Basically with the upgrade to WordPress 2.5.x, there are a couple of new settings in the wp_config.php file which have WordPress to use UTF-8 character encoding to better handle non-English langauges/characters.  However as older versions of WordPress automatically converted standard quotes/astrophes to their fancy/curly versions and those fancy versions are dependent upon which character encoding scheme they are written in.  Since I wasn’t sure how many entries I had that are affected by this and I wanted to leave the UTF-8 encoding enabled; I ran this SQL query to fix at least some of the problems: UPDATE wp_posts SET post_content = REPLACE(post_content,''','\'') WHERE post_content LIKE '%'%';

There are probably other characters I need to fix yet, so if you happen to see something like hieroglyphics on this site or other gibberish, let me know what entries you found it on so I can fix them.  And my thanks to Lynsey for prompting me to fix these entries.

I I finally set about upgrading my home server1 from Dapper to Hardy yesterday. I had been hoping for a less traumatic experience then upgrading my desktop computer from Dapper to Gusty2. Unfortunately I once again ran into problems. First off, it’s been nearly a week since Hardy was officially released but when I tried to run the official upgrade tools they all initially told me I was running the latest version. According to the documentation, I should have been able to run either sudo do-release-upgrade or sudo update-manager but neither worked. I was only able to start the upgrade process by running sudo update-manager -d and my understanding is that “-d” tells the program to grab the latest development version. Weird, but oh well. Then the process just dragged on and on and on and on and on…. I eventually went to bed leaving it running. The only reason I stayed up as late as I did with it was the excellent book I was reading.

When I got up this morning, it was still running but was hung up on a question I needed to answer. I clicked through the question and a few more before heading off to work. When I got home, again the upgrade was hung up on a question. I worked my way through answering all the questions and let the upgrader do its job. Unfortunately the upgrader eventually failed on these packages: gnome-applets-data, gnome-applets, ubuntu-desktop and update-manager. I clicked through the errors and then the upgrader said:

Could not install the upgrades
The upgrade aborts now. Your system could be in an unusable state. A recovery will run now (dpkg –configure -a).

I clicked ok to the error, something flashed up and then the upgrader died/vanished/went away. I tried running:

  • sudo aptitude update but it sat there for far too long for my sleep deprived and impatient self.
  • sudo aptitude upgrade, only it said there wasn’t anything to upgrade.
  • sudo aptitude autoclean, *shrug* it's part of my standard script for updating my systems.
  • sudo aptitude dist-upgrade, only it said there wasn’t anything to upgrade.
  • sudo dpkg --configure -a, it said there were unconfigured packages but it couldn’t fix them automagically. It mostly complained about gnome-applets-data.

I ended up running sudo aptitude install gnome-applets-data gnome-applets ubuntu-desktop update-manager and that fixed up those errors no problem. For giggles of insanity I tried running sudo aptitude -s -f install to see what else might be left to update3. It found another 111 packages it wanted to remove but some of them I want to keep, so I’ll have to look into that more closely. Most likely all these errors were caused by my own foolishness, as at one point I was testing some stuff out on the machine and enabled some 3rd party repositories to install unsupported apps. *blech* I don’t think I’ll be doing that again. I was able to reboot the machine and connect to it via SSH and SMB, but HTTP seems to be broken at the moment. *bugger* Apache is one of the packages sudo aptitude -s -f install wanted to remove. I guess looking into that just got bumped up my priority list.

1 An old Dell Dimension desktop with a PII-400 CPU and 256 MB of RAM.
2 Never fear, Fritz (my desktop PC) is next on my list of machines to upgrade.
3 More accurately, I found some instructions when upgrading my desktop from Dapper to Gusty that recommended doing that to ensure all apps got updated.

I use Rob Miller’s excellent Now-Reading plugin to track all the books I’ve read and am reading here at CoffeeBear. After my recent site upgrade I decided to tweak the single book template for my library. I noticed that the latest version of Now-Reading allows you to note who read a given book on multiuser sites. As my wife occassionally posts here I wanted my reads to be marked as mine, but the default output of the function Rob implemented only displays the user’s login name. Seriously Rob, what were you thinking? If you did not want to give end users the option to select how they want their name to print out why wouldn’t you go with display_name?

I looked at the code Rob used and with a little help from the Practical PHP I hacked together my own function based on Rob’s. By default print_reader2 works the exactly the same as print_reader1 but by feeding it an additional parameter, you get your choice of what to use to display as reader’s name:

  • 0: Prints out the user_login aka the username you use to log into WordPress.
  • 1: Prints user_nicename, appears to simply be an all lower case version of the user’s nickname2.
  • 2: Prints display_name, from the “Display name publicly as” field in your WordPress profile.
  • 3: Prints first_name, from the “First name” field in your WordPress profile.
  • 4: Prints nickname, from the “Nickname” field in your WordPress profile.
function print_reader2( $echo=true, $reader_id = 0, $display = 0 ) {
	global $userdata;

	$username='';

	switch($display) {
		case "1": if (!$reader_id) { get_currentuserinfo(); $username = $userdata->user_nicename; } else { $user_info = get_userdata($reader_id); $username = $user_info->user_nicename; }; break;
		case "2": if (!$reader_id) { get_currentuserinfo(); $username = $userdata->display_name; } else { $user_info = get_userdata($reader_id); $username = $user_info->display_name; }; break;
		case "3": if (!$reader_id) { get_currentuserinfo(); $username = $userdata->first_name; } else { $user_info = get_userdata($reader_id); $username = $user_info->first_name; }; break;
		case "4": if (!$reader_id) { get_currentuserinfo(); $username = $userdata->nickname; } else { $user_info = get_userdata($reader_id); $username = $user_info->nickname; }; break;
		default: if (!$reader_id) { get_currentuserinfo(); $username = $userdata->user_login; } else { $user_info = get_userdata($reader_id); $username = $user_info->user_login;};
   }
	if ($echo)
		echo $username;
	return $username;
}

Side note: WordPress 2.5.1 got released today and it includes a security fix, be sure to update your blogs!

1 At least, I think it does. I’m not a programmer and I only know enough PHP to be dangerous to myself.
2 The WordPress Codex does not appear to define what this field is used for or why it exists, so that’s just my guess.