February | 2009 | arfore dot com

So in the process of applying the new SSL cert here at work, I discovered an issue with the reCAPTCHA service.

The problem was that I was getting errors saying that my forms were only partially encrypted.  This was due to my use of the reCAPTCHA library, which by default doesn’t use an SSL connection to grab the challenge HTML.

The documentation at the reCaptcha site has a section on this.  Specifically it says:

In order to avoid getting browser warnings, if you use reCAPTCHA on an SSL site, you should replace http://api.recaptcha.net with https://api-secure.recaptcha.net.

Ref: http://recaptcha.net/apidocs/captcha/client.html

The example it uses shows how to change the Javascript itself.  While this was nice to know it really didn’t help too much in my particular case. To solve this when using the reCAPTCHA PHP library, all you need to do is change the value of a single variable.  In the file recaptchalib.php look for the function recaptcha_get_html then change the declaration to read as follows:

function recaptcha_get_html ($pubkey, $error = null, $use_ssl = true)

This will force all calls to be transmitted over an SSL connection, thus eliminating the dialog box in Internet Explorer and the slashed-lock in Firefox.

However since I am not encrypting the entire site by default, yet due to an issue with our website editing/management system, Adobe Contribute, I had to do a bit more than just updating the boolean variable.  Since some of my forms are encrypted and some are not, I added the following code to the function referenced above:

if ($_SERVER[‘SERVER_PORT’] == 443) { $use_ssl = true;

}

This needs to be added just above the check for the value of the variable use_ssl in the function recaptcha_get_html.  Once you do this you can use the same copy of the recpatchalib.php file for both secure and non-secure forms.

May | 2008 | arfore dot com

Jennifer Nettles and Kristian Bush won the ACM 2008 Song of the Year award for their song Stay.

For those of you who don’t know, Jennifer Nettles is a former Georgia 4-Her and a former member of the Georgia 4-H performing group, Clovers and Company.

Congratulations, Jennifer, from a fellow Clover.

Well for today’s music, we are featuring some nice work with bottles.

The first video is of a Chinese group that is playing the theme from Mario on partially filled glass bottles. However, they are playing is via an RC car.

The second video is of a trio playing the theme from Tetris using partially filled bottles. I like they way that they appear to have performed it fairly slowly and sped it up for the final video cut.

So, a friend of mine was setting up a Linksys WRE54G Range Extender on her wireless network to eliminate a dead spot in her house.

She had issues with the Windows-based setup utility because it hardcodes the TCP/IP settings on the computer due to the fact it assumes that your network won’t be setup to work with the device out of the box.  After that failed, and spending a while on the phone with a hapless Linksys tech support person, we finally got it configured via the web interface.

So everything is going fine until she notices that the MAC filter that was configured on the WRT54G was no longer effective.

It turns out that when you setup the WRE54G to work it invalidates the purpose of your MAC filtering.  All traffic sent through the range extender is automatically flagged as OK.

From a Linksys forum post:

As a result, Wireless MAC Filtering on the main wireless router or access point will have no effect on clients connecting through a WRE54G Range Expander.

You have to wonder who makes the decisions on options with stuff like this.  The Linksys tech I was chatting with online about this said that the best solution would be to enable WPA security, but their user guide for device specifically recommends doing MAC address filtering in addition to the encryption, except for the fact that you can’t.

Good game Linksys.

July | 2012 | arfore dot com

imac_al_w_disc-150x150-6347969Editor’s Note: This article is part of the Tales of A Linux Switcher series.

As part of my on-going switch to Ubuntu 12.04 from Mac OS X, I ran into an issue where my cdrom device was not being mapped properly in the OS.

Everything works as desired except for one little thing: the eject key on the Apple Aluminum USB keyboard was not triggering the eject sequence of the built-in slot loading SuperDrive.

I assumed that there would be a device mapped to the actual drive using a link to /dev/cdrom.  This didn’t turn out to be the case.  When using the eject command from a terminal I received the following:

$ eject
eject: unable to find or open device for: `cdrom'

When I did a directory list to find any applicable cdrom device entries in the udev root (/dev) I got the following:

$ udevadm info --root
/dev
root@foreandy-iMac:~# ls -l /dev/*cd*
ls: cannot access /dev/*cd*: No such file or directory

In order to determine exactly which device was being used for the optical drive, I looked at the output from system’s cdrom device entry:

$ cat /proc/sys/dev/cdrom/info
CD-ROM information, Id: cdrom.c 3.20 2003/12/17

drive name: sr0
drive speed: 24
drive # of slots: 1
Can close tray: 1
Can open tray: 1
Can lock tray: 1
Can change speed: 1
Can select disk: 0
Can read multisession: 1
Can read MCN: 1
Reports media changed: 1
Can play audio: 1
Can write CD-R: 1
Can write CD-RW: 1
Can read DVD: 1
Can write DVD-R: 1
Can write DVD-RAM: 0
Can read MRW: 0
Can write MRW: 0
Can write RAM: 1

The next step was to create the symbolic link in the device root to map cdrom to the appropriate device as listed in the above output:

$ sudo ln -s /dev/sr0 /dev/cdrom
$ ls -l /dev/*cd*
lrwxrwxrwx 1 root root 8 Jul 30 09:58 /dev/cdrom -> /dev/sr0

Now I can use both command line utilities to work with the optical drive as well as the built-in eject key on my keyboard.

If you want a lot more detail on this issue check out this bug comment.  While not specifically dealing with a Mac, the issues and solution are the same.

gimp_logo-150x150-2767809Editor’s Note: This article is part of the Tales of A Linux Switcher series.

If you are a graphic designer or developer, or you just have a need to edit images, a mainstay of your Linux toolbox is likely to be the Gimp.

If you are coming from the Mac or Windows world, it is probable that you have used Adobe’s Photoshop program to achieve your image editing needs in the past.  Having used Photoshop and Gimp extensively over the past decade, I can tell you that one of the features I liked about the Photoshop environment on Windows has been the unified window.  All the palettes, toolbars and editing windows exist inside a single, unified window.

I always missed this when using Gimp on Linux (or the other OS as well, since Gimp is available for all three icon_smile-6836010 ).  One of the main feature draws for me to the latest Gimp release, version 2.8, was this single line in the release notes:

GIMP 2.8 introduces an optional single-window mode.

Awesome! Of course, Gimp 2.8 is not in the current Ubuntu 12.04 repository (Note: Ubuntu 12.10 has version 2.8 listed in the repository!) :

$ apt-cache policy gimp
gimp:
 Installed: (none)
 Candidate: 2.6.12-1ubuntu1
 Version table:
 2.6.12-1ubuntu1 0
 500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

Not to fear! Using the following set of commands you can successfully obtain the Gimp 2.8 software as well as a compatible version of the plugin registry:

sudo add-apt-repository ppa:otto-kesselgulasch/gimp
sudo apt-get update

As you see from a policy check, after adding the repository and updating the cache, you will now be receiving the Gimp package and the updated plugin-registry from the new PPA:

$ apt-cache policy gimp
gimp:
 Installed: (none)
 Candidate: 2.8.0-1ubuntu0ppa6~precise
 Version table:
 2.8.0-1ubuntu0ppa6~precise 0
 500 http://ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu/ precise/main amd64 Packages
 2.6.12-1ubuntu1 0
 500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
$ apt-cache policy gimp-plugin-registry
gimp-plugin-registry:
 Installed: (none)
 Candidate: 5.20120523-2ubuntu0ppa9~precise
 Version table:
 5.20120523-2ubuntu0ppa9~precise 0
 500 http://ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu/ precise/main amd64 Packages
 3.5.4-1 0
 500 http://us.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages

To install it now enter the following:

sudo apt-get install gimp gimp-plugin-registry

Now you have the most recent release!

web-safe-fonts-150x150-8323203

Editor’s Note: This article is part of the Tales of A Linux Switcher series.

One of the things I have always hated about using Linux is the difference in the base font collection.  Many web designers still use the defaults of Arial, Verdana and Georgia.  The reasons for this are that these fonts are available on the two main commercial operating systems, Mac OS and Microsoft Windows.

Until the majority of websites support webfonts like Google Web Fonts or Monotype’s fonts.com service, we still need access to the standard MS fonts. For more on this situation, check out the article A Web Designer’s Guide to Linux Fonts by Six Revisions.

Fortunately, these fonts are available for installation on Linux.  You can download them directly from the Sourceforge repository or look for the package in your particular distribution.

In Ubuntu you can install them from the Ubuntu Software Center by searching for the package named ttf-mscorefonts-installer or by using the following on the command line (Note: if you install from the command line then you will be prompted to accept the license aggreement in an ncurses interface.):

sudo apt-get install ttf-mscorefonts-installer

Either way, you will end up with the following additional fonts:

  • Andale Mono
  • Arial Black
  • Arial (bold, italic, bold italic)
  • Comic Sans MS (bold)
  • Courier New (bold, italic, bold italic)
  • Georgia (bold, italic, bold italic)
  • Impact
  • Times New Roman (bold, italic, bold italic)
  • Trebuchet (bold, italic, bold italic)
  • Verdana (bold, italic, bold italic)
  • Webdings

To see the difference in the display of websites after the installation, check out the following screenshots from this website.

mscorefonts_before-150x136-1938182mscorefonts_after-150x147-2638559

As you can see the use of these fonts definitely make a difference.  Happy surfing!

I have been updating my wallpaper to a new monthly desktop wallpaper from the Smashing Magazine site for several months.

With earlier versions of Mac OS X it was easy to update all spaces at once because the default change action affected all the spaces. With the advent of Mac OS X 10.7 (aka Lion) each space is capable of having a unique wallpaper. While this is a neat feature, there is no option to apply the change to all the spaces. One workaround is to manually change each space.  Another workaround is remove all your spaces, make the change then add the spaces back.

Neither of these options is suitable to me. The first option is fairly cumbersome, and the second will undo my application-to-space bindings. To solve this problem I have written a script than handles it.

Here’s the script:

#!/bin/bash

# Simple Script to update the desktop wallpaper
# background for all desktop spaces in Mac OS X 10.7
#
# Usage: update_desktop_wallpaper.sh old_wallpaper_path new_wallpaper_path
#
# Andy Fore
# http://arfore.com

# Check for command line arguments
if [ -z "$1" ]; then
    echo "Usage: update_desktop_wallpaper.sh old_wallpaper_path new_wallpaper_path"
    exit 1;
else
    # Change location to the active user preferences directory
    cd ~/Library/Preferences

    # Backup the original plist file
    echo "Making a backup of the original plist file..."
    cp com.apple.desktop.plist com.apple.desktop.plist_backup

    # Convert the desktop plist from binary to xml
    echo "Converting plist file to text format..."
    plutil -convert xml1 com.apple.desktop.plist

    # Update the desktop wallpaper file location/name
    echo "Editing the file..."
    sed -i "" "s/$1/${2}/g" com.apple.desktop.plist

    # Convert the desktop plist back to binary format
    echo "Converting plist file back to binary format..."
    plutil -convert binary1 com.apple.desktop.plist

    # Killing Dock process
    echo "Sending the kill signal to the Dock process to force reload of plist"
    killall -HUP Dock

    # Display completion message
    echo "Operation now complete."
fi

Example

$ ./update_desktop_wallpaper.sh June2012_Calendar.jpg July2012_Calendar.jpg

Note that I only used a filename in the example. This is because all of my calendar wallpapers are saved in the same directory path, making the unique part just the filename itself.

December | 2008 | arfore dot com

Over Thanksgiving break I bought an Apple TV.  Like any good geek I wanted to expand the capability of the unit beyond the default setup.

After installing Firefox and getting USB keyboard and mouse support going, I realized that it would be tremendously cool if I could control it from my iPhone instead of using a wired keyboard.

To begin with I installed OSXvnc.  The only problem was that I needed to store a password.  After reading a the VNC post on the aTV Flash forum, I successfully conquered that.  However, I had the same problem that iMattUK had: you had to use an ssh connection to start it.

To conquer this I wrote a launchd plist to launch OSXvnc for me at system startup.  Read on for the process I used to get it all working.

Continue reading

November | 2008 | arfore dot com

As some of you might have noticed, I have just recently moved my WordPress installation into a subdirectory of arfore.com.

There are several reasons for this, the main one being that I would like for my blog to become a component of my website rather than the blog being the entire site.

Moving the WordPress installation itself was quite simple, and there are many pages out there describing the process as well as the pitfalls of doing it incorrectly, so I won’t repeat them here.

What was less easy to find was the proper changes to put in the

file to ensure that any existing links would get redirected to the proper location in the moved WordPress setup.

I have my permalinks configured to create a URL like follows:

http://arfore.com/blog/2008/10/12/foo-bar-baz/

In order to add the subdirectory blog to the front of the URL I used the following rule in my

file:

RewriteRule ^([0-9](.*))$ http://arfore.com/blog/$1 [R=301,L]

Similarly, to redirect the categories I used the following:

RewriteRule ^category/(.*)$ http://arfore.com/blog/category/$1 [R=301,L]

Now this may not be the most correct method to accomplish the goal, so if it needs correcting by all means let me know.

My last two posts, Starting NRPE via launchd and Nagios NRPE on OS X Server 10.5, concerned getting NRPE to run on OS X Server 10.5 and having it startup at system boot.

However, this is only part of the battle.  Once you have Nagios monitoring setup on your server you also need to have some nice options for checking the availability of your running services.

Tim Wilson from the Savvy Technologist, wrote an NRPE plugin that helps out with this.  The plugin check_osx_services does an excellent job of checking on the status for many services running on 10.5 Server.

The documentation on the plugin at the NagiosExchange site is pretty thorough.  One thing that is not mentioned is that you will need to run the check_osx_services script as superuser since it calls the system level command serveradmin which must be run as root.

February | 2008 | arfore dot com

This week’s selections are two live performances from Canadian artists, Allison Crowe and k.d. lang.

The first video is a performance by Allison Crowe of River by Joni Mitchell. It is part of a yearly broadcast that she produce.

The second video is a recording of k.d. lang performing Leonard Cohen’s Bird on a Wire. The performance took place at the Sydney Opera House. It was part of her Hymns of the 49th Parallel album tour. The performance was broadcast on the show The Max Sessions on the Australian station MaxTV.

Quite frequently I run across music videos on YouTube, AOL Music, Yahoo! Music and other places done by artists that I really like. This week I am going to begin a new feature on arfore.com – Music Video Friday.

Corinne Bailey Rae singing Like A Star from her self-titled album.

Gary Jules performing his cover of the Tears for Fears song Mad World live on SWR3 Ringfrei.

Do you ever use a phrase that you heard growing up as a child that no one else around you understands?  Frequently I find myself having to explain the meaning behind a phrase to my student assistants.

One of the latest ones is the phrase bar pit.

Now, I don’t recall whether I heard this from my parents or someone else growing up, but the explanation is quite simple.  And the explanation itself includes a colloquial corruption of a word as well.

Often when you are driving down the highway, at least in South Georgia, you will see large tracts of land where large pit have been created by removing dirt for DOT projects.

These are the bar pits and this term comes from the fact that it is a pit where they are barrying the dirt from.  Now the word barry is itself a corruption of the word borrow.

March | 2007 | arfore dot com

Recently I ran into a situation where I had to change the username and password that Contribute uses for the SFTP operations.

I don’t have my stuff setup to use individual SFTP logins, since I am doing away with direct shell access to the webroot and dislike manually updating permissions for people.

I found out that there is a hidden password policy in the Contribute Publishing System with regards to what it will pass as the SFTP password.

I tend to use mixed-case as well as punctuation and numbers in my passwords. When I put the new password in, the system seemed to take it. Unfortunately, this was only an appearance, since it borked when I closed Contribute and opened it back up.

Apparently it doesn’t like the use of an ampersand in the password. And since the password is stored in an unusual encryption scheme I was unable to recover from this without recreating my entire connection to the particular webserver I was managing.

Stay tuned for a post on the steps to recreate the connection without losing all you data, as well as a utility to help in case of problems.

May | 2013 | arfore dot com

So one of the things that you probably ought not do is to link directly to a script on github or another development service, especially not directly to someone’s webiste.

In our internal corporate employee site, the devs have used a jQuery Easing plugin by George Smith Graphic Design in the UK.  Apparently they missed the notice on his plugin website about using a real CDN instead of hotlinking to the script on his site.

And even though they ignored that, you would think they would have seen the banner that comes up on the internal site itself.

use_cdn-150x150-5653308

So you have a RedHat/CentOS host that has just been handed off to you.  The host has been configured by the previous admin to mount some storage from a SAN. How do you find out what is mapped where?

Normally to determine what is mapped where and the relevant usage you could use:

This would give you something like the following output:

Filesystem Size Used Avail Use% Mounted on
/dev/sda3 233G 98G 124G 45% /
/dev/sda1 251M 46M 193M 20% /boot
tmpfs 48G 0 48G 0% /dev/shm
/dev/mapper/datasan_vg-datasan_lv 1.0T 218G 807G 22% /datasan
/dev/mapper/pglog_vg-pglog_lv 300G 193G 108G 65% /pglog
10.30.197.250:/vol/onesc_pglog/pg_dumps 238G 223G 15G 94% /backups/pg_dumps
10.30.197.250:/vol/onesc_pglog/pitr_backup 238G 223G 15G 94% /backups/pitr_backup

That’s all well and good. It shows you that you have two logical volumes datasan and pglog that are mounted on the root, but what if you needed to know more about those volumes?

To get more info on the volume groups, use the vgdisplay command:

— Volume group — VG Name pglog_vg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 11 VG Access read/write VG Status resizable Clustered yes Shared no MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 299.99 GB PE Size 4.00 MB Total PE 76798 Alloc PE / Size 76797 / 299.99 GB Free PE / Size 1 / 4.00 MB

VG UUID SrVfEk-e5fx-0x0i-WhXb-uqsM-Uh5S-FDcNeP

— Logical volume — LV Name /dev/pglog_vg/pglog_lv VG Name pglog_vg LV UUID wZBCcO-jGWW-LdkQ-Mbhl-Et8a-1sqC-5Ednj5 LV Write Access read/write LV Status available # open 1 LV Size 299.99 GB Current LE 76797 Segments 1 Allocation inherit Read ahead sectors auto – currently set to 256

— Segments — Logical extent 0 to 76796: Type linear Physical volume /dev/mpath/pglogp1

Physical extents 0 to 76796

Now that you know the physical volume(s) in the logical volume you can find out some details on the physical volume itself:

— Physical volume — PV Name /dev/mpath/pglogp1 VG Name pglog_vg PV Size 300.00 GB / not usable 4.03 MB Allocatable yes PE Size (KByte) 4096 Total PE 76798 Free PE 1 Allocated PE 76797

PV UUID CwxWYc-SjKX-KvPj-vJoq-i4dZ-2jzm-rHGNd1

One of the pains that come with kernel updates in Linux is the necessity to rebuild vendor kernel modules or custom written kernel modules.

As time goes by many vendors are adding support for the Dynamic Kernel Module Support (DKMS) framework.  Recent releases of both the ATI Catalyst and the NVIDIA drivers support DKMS at some level.  VMWare is currently exploring this and you can turn it on (if you have DKMS support installed) however, it is still marked as experimental.

On my production servers we don’t encourage widespread use of experimental features so this has not been enabled with the VMWare Tools installation.  Unfortunately this means that during the patching process it is possible to lose network connectivity due to the need to rebuild the VMWare Tools configuration after a kernel update.

I found one solution to this on the LinuxDynasty site.  The problem with this particular method is that the file that is being checked for “not_configured” only gets written in a small set of circumstances.  In my case, the VM was partially configured, so this file wasn’t written.

Here is my alteration of the solution linked to above.

Update the code in the vmware-tools startup script

In the following file:

Add the following line after the vmblockfusemntpt variable declaration

rebuild_tools=”/etc/vmware-tools/rebuild_needed”

Then add the following line in the end of the start case for the service (around line 1370)

Add the check code to the rc.local startup script

In the file

Add the following to the end of the file

 rkernel=`uname -r`
if [ -e /etc/vmware-tools/rebuild_needed ]; then
echo “vmware-tools not configured for running kernel $rkernel”
echo “running vmware-config-tools.pl”
/usr/bin/vmware-config-tools.pl -d
echo “vmware-tools now compiled for running kernel $rkernel”
echo “restarting vmware-tools”
/etc/init.d/vmware-tools restart
echo “vmware-tools restarted”
echo “restarting networking”
/etc/init.d/network restart
echo “network restarted”
rm /etc/vmware-tools/rebuild_needed
exit 0
fi

Now the next time you reboot your Linux box after updating the kernel, the vmware tools will be properly reconfigured and the appropriate services restarted automatically.

Like many system admins, I don’t want to install any applications that I don’t absolutely have to have on a regular basis.  In many cases this includes the graphical internet application group.

Today I found a need to copy and paste from an eLinks browser session.  It turns out that in the regular terminal in CentOS GNOME, you can’t just select and copy because of the way that eLinks renders the page content.

In order to copy and paste from an eLinks browser into, say, gEdit, you have to hold down the SHIFT key while using the mouse to select the text.

This also applies in a text-only (no X11) setup, assuming that you have gdm installed and running.  Unfortunately, eLinks doesn’t support selecting content with only the keyboard.

Today when I needed to copy some text on my CentOS server, I ended up grabbing a bunch of whitespace at the end of each line.  Normally this wouldn’t be a problem, since I would have copied from a regular browser.  In this case I was copying from with eLinks since I don’t have a graphical browser installed yet.

Sure, I could have just navigated to the end of each line and then used shift + C to delete, but I this was a 25 line block of text and that would have been too tedious.

Here’s the quick search and replace syntax to handle this for you:

March | 2010 | arfore dot com

As some visitors to arfore.com will have noticed I feature a list of recent etree.org downloads on my Listening page.  The files from etree.org are live shows recorded by dedicated fans and concert goers.  Many, if not most, of these recordings are posted in one of two lossless file formats: SHN and FLAC.

Both of these file formats are used for compressing audio files.  The reason they are used is due to the fact that they are lossless formats.  Lossless compression allows for the expansion of the of the file into an exact duplicate of the original recorded audio stream.

iTunes supports a different lossless format: Apple Lossless.  Unfortunately, iTunes does not support playback of either FLAC or SHN files.  So what is an audiophile to do?  Using two different free programs you will be able to easily convert both FLAC and SHN files to a format that iTunes can use, thus giving you the ability to take those awesome concerts with you everywhere on your iPod or iPhone. Continue reading

As many of my friends are aware I am a big fan of honey.  As the son of a second-generation beekeeper, I grew up eating honey in many varieties.  I learned early on that all-natural peanut butter mixed with honey was a great combination, and I have eaten it that way ever since.

I use honey in my tea, I cook with it, and often eat it plain.  In short, I really like honey.

With the major peanut butter companies getting on the bandwagon over the last few years, I am disappointed to see that almost all of them insist on mixing sugar, corn syrup or cane sugar with the peanut butter in addition to honey.  Today while in Wal-mart I noticed a new variety of peanut butter on the shelf and picked it up.  I was drawn to the product labeling which featured a stylized honeybee on the label.  The product was “The Bee’s Knees” by Peanut Butter & Co.  Upon reading the ingredients list, however, I was saddened to see that while the list was short compared to many others, it still included sugar.

I am continually amazed by all the products that use honey and yet insist on adding additional sweeteners to the ingredients.  Of the four different varieties of peanut butter for sale in Valdosta, I found that all of them included sugar, molasses, cane sugar, natural honey flavor (this is NOT real honey) or some combination thereof, in addition to honey itself:

  • The Bee’s Knees – Peanuts, evaporated cane juice, honey, natural honey flavor, palm fruit oil, salt
  • Skippy Peanut Butter Roasted Honey Nut (Creamy and Super Chunk) – Roasted Peanuts, Honey, Sugar, Molasses, Hydrogenated Vegetable Oils (Cottonseed, Soybean and Rapeseed) to Prevent Separation, Salt
  • Peter Pan Honey Roast (Creamy and Chunky) – Peanut Butter [Roasted Peanuts, Sugar, Hydrogenated Vegetable Oils (Cottonseed And Rapeseed), Molasses, Salt, Partially Hydrogenated Cottonseed Oil], Sugar And Honey. Contains: Peanuts
  • Smucker’s Natural Peanut Butter with Honey – Peanuts, Honey, Sugar, Salt.

Now I must admit that the Smucker’s choice is much closer to what I ate as a kid than the others, however it still has that extra sugar involved.  It seems to me that if Smucker’s has been selling natural peanut butter for so many years with the only ingredients being peanuts and salt, then it would have been a snap to just add the honey in and leave it at that.  Why add the extra sugar?

Come on Smucker’s!  Everyone else has joined the “natural” bandwagon that you have been on for years, so why not pave the way to a variety sweetened only with honey?

May | 2009 | arfore dot com

Due to a problem with the grid-cluster at MediaTemple, the site was down for well over a day.  They still don’t have everything up and running 100% yet, so their are at least two posts that are missing images.

Hopefully they will get everything finished today.  According to the latest update on the status entry for Incident 754, they have approximately 155 sites to restore out of the almost 2500 that were hosted on gs cluster 2.  Fortunately this didn not affect the database cluster, so none of my actually posts, pages or comments were lost.

The affected content at the moment is: