I bought a Mac Mini

I bought a Mac Mini off of Craig’s List about a week ago.  I use a Windows machine for work and run VMware WorkStation with a Windows 7 VM for all of my WordPress stuff.  I love VMware, it makes setting up a specific development environment really simple.  So why did I buy a Mac?  Basically because I wanted one.

I had toyed around with a Hackintosh running under VMware about a year ago but it wasn’t very stable.  It would work fine for a while then freeze up.  I was reluctant to really try anything serious on it.  Since I couldn’t justify the cost of a MacBook (Air or Pro), I started watching Craig’s List for deals on a Mac Mini.  I figured with all of the accessories (monitors, mice, keyboards, cables, disk drives, etc.) I already have laying around, it would be the cheapest way to get one.

I picked up a 2010 Mac Mini with 120GB HDD and 4GB of RAM for $220.  Based on the other Mac Minis I saw on Craig’s List, it seemed like a decent deal, I have no idea if it is or not.  The guy I bought it from had used it as a Home Media PC.  When I first booted it up, I noticed he had partitioned the disk into two 60GB partitions.  I have no idea why he did this, maybe there is some benefit and my lack of Mac knowledge is coming through.

Since I want to do some home video editing and iPhoto work with it, I decided 120GB HDD isn’t going to cut it.  I had a 7200 RPM 500GB WD Scorpio Black drive on my desk at work that wasn’t doing anything so I decided to “upgrade” my new Mac Mini.  Yep, less than an hour after buying it, I started taking it apart.  I figured it couldn’t be too hard.  Well, it certainly is harder than upgrading the drive in a laptop!

With lid removed.

With lid removed.

I found a video on YouTube which explained the process pretty well.  I watched it a couple of times and then decided to crack the Mini open.  It took me a little while to get the case open as I didn’t have a paint scraper at work but I did have the razor blade from a box cutter.  It worked pretty well.  It certainly feels like the Mini will break when you open the case but eventually I got it apart.

Got the two halves separated.

Got the two halves separated.

After that it was pretty straight forward.  There are a couple of tricky things to get the SATA cable apart and the drive out but I got it figured out.  Putting it back together went pretty quick too.

Now to see if it still worked.  I would have been pretty upset if I had just broken my new computer but luckily it powered on and everything seemed ok.  Getting the OS installed took me a little while because the disk still had a Windows partition on it.  Once I actually read the messages the MacOS installer was reporting, I got it figured out.

So now I have a “refurbished” 2010 MacMini running Snow Leopard.  I have more than enough disk space to do some photo and video projects.  I am also in the process of moving all of our Audio CDs into iTunes.  My goal is to have the Mini work in conjunction with my Synology DS212j Home NAS and stream movies and music to the rest of the house.  We’ll see if it works out.

What to do when WordPress Google Form doesn’t work

So you’ve designed a Google Form and you’re happy with the layout of it.  Now you’re ready to integrate it with your WordPress site and you’ve decided to use the WordPress Google Form plugin.  Awesome.  Looks like it will do exactly what you want:  Easily create custom forms and gather data in a Google Docs spreadsheet for easy collection and dissemination of data.

So you install WordPress Google Form and get your shortcode set up and you visit your page to see the result.  In most cases, as long as the short code is properly set up, WordPress Google Forms works as advertised.  98% of the support requests I receive are for help with styling the form using CSS to make it match the host site better.

However, from time to time a user runs into an issue where WordPress Google Form simply doesn’t work.  This usually manifests itself in one of two ways:

  1. The form is never displayed and instead an error message that indicates the form couldn’t be retrieved and try reloading the page.
  2. The form displays properly but doesn’t submit correctly and the form results are never posted to the Google Docs spreadsheet.

Case #1 usually indicates one of two things:

  1. Most frequently the short code isn’t properly formatted.  This takes on all sort of possible problems, the most common one is when the WordPress Visual Editor converts the the URL to the form into a hyperlink.  There are other errors, such as the wrong quote character around attribute values but the hyperlink problem is by far the most common occurrence.
  2. Your web hosting environment doesn’t support the WordPress HTTP API.  This isn’t too common but it does come up from time to time.  It is very common on “free” hosting service packages.  Frequently these plans have fopen() and other remote transports disabled.  The only solution here is to move to a hosting plan which supports the WordPress HTTP API.
  3. A firewall prevents access to Google for remote requests.  I’ve only run into this once but it happened and it was very difficult to find.  In the end, I didn’t find it, the user did but that was after we had done a bunch of debugging to figure out what was going on.

Case #2 usually indicates a problem with Apache’s ModSecurity.

I’ve run into this a couple of times and made some pretty significant changes to the plugin to account for ModSecurity but there is still a chance it can kick in IF the user is being asked for a URL or a similar value which ModSecurity doesn’t like.  Right now there isn’t much that can be done when this happens except to not request URL values or to instruct the user to strip off the “http://” (or other) prefix.

In addition to the Debugging aid I’ve added to the plugin, I recently found the Core Control plugin.  Core Control is a very useful plugin for chasing down the sort of problems I’ve encountered with WordPress Google Form.  It can show which transports your server supports for the WordPress HTTP API and even has the ability to disable some of them to chase problems down.

If you run into problems, you can always use my Help and Support Form but also give Core Control a shot to see if it can help identify where the problem might be.

WordPress Google Form bug fix

In the process of trying to solve the multipage Google Form problem, I found a bug with the “Confirmation” page.  When a custom confirmation page isn’t supplied, the plugin is supposed to use the default Google conformation page.  It currently isn’t, instead the page the form is on is rendered again.  This is incorrect behavior and I’ve fixed it in my development thread and it will appear in the next release.

EX495 WHS Server Recovery Successful

I finally ran through the Server Recovery process on my HP EX495 Windows Home Server over the weekend.  My WHS has been acting up for a while now and I have been unable to fix it.  It was visible on my home network through \\ServerName mapping but WHS Connector wouldn’t work and the Server had stopped backing up the clients.

A WHS that doesn’t do backups isn’t real useful, it is just an expensive media and file server.  After trying to track down a solution several times over the last two months, I gave up and decided I’d have to do a Server Recovery.  I was apprehensive about doing this to say the least.  I have all of our family pictures on my WHS so I needed to copy them to another drive before I could go through the recovery process even though it is supposed to be non-destructive.  I also had some video and a reasonably large music library.  All in all, about 4.5GB of stuff to copy somewhere while I did the recovery.

Thanksgiving weekend seemed like a good weekend to do this since I would be home and could monitor the process I expected to take a while.  Copying all of the pictures took the longest – I have about 35,000 digital pictures spanning about 10 years – they pile up!  Once I got everything copied and felt that if everything disappeared I wouldn’t be completely SOL, I started the recovery process.  I followed the procedure and it went exactly as described.  The whole process took about two hours and left me with a WHS which was working again.  I was thrilled to see that none of my data was gone – everything (pictures, videos, music, etc.) was all there just as it was before I did the recovery.  Whew!

The server was a bit slow throughout the day as in addition to trying to reconfigure all of the clients, of which I have seven or eight, the WHS was also updating itself with the various Windows Updates which have been released since the media was created.

This morning I got up to check on it and was happy to see that my laptop had been backed up and my wife’s PC was almost done.  Yeah.  A level of comfort has been restored.  I am not exactly sure why my WHS went AWOL on me, I added to modules to it:  Tivo and McAfee.  I no longer use a Tivo so there is zero reason to re-install that and I am on the fence about McAfee.  Actually, based on this article, it looks like there is no reason to install McAfee again since it isn’t supported any longer.  Avast appears to be an option, I’ll have to do some digging to see if it will really work.  I have no desire to go through this process again anytime soon!

Hiding a Google Form’s Title

Since a WordPress page or post will have a title, there is a good chance the Google Form’s title is redundant.  If hiding the title from the Google Form is desired, the easiest way to do it is with CSS.  The title on a Google Form is an H1 element  which is assigned the class ss-form-title.  To hide the title, we add the following CSS to either the theme’s CSS or to the CSS overrides available with the WordPress Google Form plugin’s setting menu.

h1.ss-form-title {
    display: none;

Using my Sample Form, here are the results of adding this CSS to the plugin settings.

Form before adding CSS

Adding CSS to wpGForm settings



Form After Adding CSS

WordPress Google Forms include quite a few CSS classes so using this technique, the appearance of the form can be customized quite a bit.

Form Validation Working!

I have required field form validation working.  I haven’t released it yet but in my testing, it appears to catch all of the fields I defined as required.  WordPress Google Form incorporates the jQuery Validation plugin.

When a page loads, the jQuery script runs and scans the Google form for required fields.  For each required field it finds it adds the gform-required class to the input or textarea tag.  When the validator runs, it looks for fields which have the gform-required class and if any are empty, a label is added with the gform-error class.

The gform-error class is defined in the default CSS to display the text in red and float it to the right of the input.

As can be seen in the image, if there isn’t enough room to the right of the field, the error will be shown just below it.  As with most CSS solutions, there are a bazillion ways to customize the output, I have elected to use something real basic and let the plugin user add more CSS if desired.

If you would like to try this early release of the plugin and give me some feedback, you can download it here.  The version in the WordPress repository is still the older v0.9 release.



Child theme or not? That is the question …

Off and on over the past few weeks I’ve been working on a Thematic child theme.  I’ve always had a hesitation with child themes in that you need the parent theme in order for the child theme to work.  Duh.  While it may be pretty obvious to anyone who is familiar with WordPress, it isn’t so for the casual user.

When I was working with Sandbox I figured out a way to essentially build a child theme while ensuring that the parent theme dependency wasn’t an issue by including all of the Sandbox code  using a SVN external reference to Sandbox and some other tricks to include the code.  It worked well and I was able to distribute my themes without concern as to whether or not Sandbox was installed.  It simply didn’t matter.

I was not planning to do that with the Thematic child theme I am working on right now but am having second thoughts.  It turns out that the version of Thematic that I need (0.9.8) is not the version which is in the WordPress Theme Repository and I have no idea when this will change.

If I got the SVN external route again I can ensure that my child theme will work with a known revision of Thematic.  However, it is a fundamental shift in my approach and I don’t know if it will work the same way I did it with Sandbox.  Decisions, decisions.

It looks like there have been some recent commits to the Thematic SVN repository so maybe it will be updated and released soon.  That would help address my dilemma.

WordPress Google Form Plugin

For the past couple of days I have been working on a new WordPress plugin I am calling WordPress Google Form.  This morning I received the approval for adding it to the WordPress plugin repository so I will be doing that over the next couple of days.  I spent much of the last two days on an airplane so the plugin is currently in a state where I have it modified to work offline but I’ve done enough online testing that I am pretty confident I have something working.

My interest in Google Forms stems from the work I am doing on a site for our Middle School.  We have a need to collect information in the form of Booster Club memberships and while there are a number of Membership type plugins, none of them really do what I want.  Ultimately what we need is a spreadsheet of names, addresses, and phone numbers and Google Docs will work well for that.  Putting a Google Form on the front end will allow us to capture the data online.

I thought integrating the Google Form with our WordPress site would be pretty simple, Google offers the ability to embed a form using an IFRAME.  Unfortunately the ability to style the form is pretty limited and the Confirmation page even less so.

I have been using the Google Inline Spreadsheet Viewer plugin to display the data from our Google spreadsheets, I was somewhat surprised to find that there doesn’t seem to be anything similar for Google Forms.  So I decided to write one.  Borrowing some ideas from the Google Inline Spreadsheet Viewer plugin, I have created a plugin that defines the shortcode gform.  The gform shortcode takes a Google Forms URL and extracts the FORM body content, cleans it up, and outputs it for WordPress posts, pages, and widgets.

There are a number of attributes that can optionally control the output, the most significant is the confirmation page which can redirect to a page within the WordPress site instead of the default Google conformation page.

More details to follow soon and I hope to have an example up and running later today.

Moving forward with Thematic

I haven’t had much time to work on any of my theme projects but in the last week or so I’ve been trying spend some free cycles on something I am called “Middle School – High School Boosters Club” theme.

My wife is the president of our Middle School Boosters Club this year and much like the swim team was years ago when I got involved, the Boosters Club has no web presence and just about everything is done on paper.  Bleh.  She has asked me to build a web site for the Boosters Club so I am  using it as an opportunity to choose a new theme framework (I’ve settled on Thematic) and see how much stuff I can leverage from Google Apps to build them a solution that doesn’t require me to babysit it all the time. We’ll see how that goes!

As I noted in a prior post, the Wicked WordPress Themes book has been a good resource to get me going with Thematic.  I also found a Thematic Child Theme called Byty which caught my eye and I decided I wanted something similar.  The downside of Byty is a lot of the nice gradient effects have been achieved with images as opposed to CSS.  That is understandable as gradients were not available until CSS3.  However, I want whatever I build to be fairly modern so I’ve decided to go down the CSS3 route.

I am specifically not building a theme for our school but instead and building one which can be tailored for any school by selecting a color scheme.  We’ll see how well I accomplish that!  These are some of the requirements that I am working against which I suspect would be similar for any other school boosters club that may want a web site.

  1. Online Store with PayPal/Credit Card Payments
  2. Support for Twitter and Facebook Fan Pages
  3. Color schemes
  4. Custom Logo(s)
  5. Calendar(s) for game and practice schedules
  6. Sport specific pages featuring just the posts relevant to that sport

Since Google Calendar is dead simple to use and with so many people using Gmail already, it seemed like the logical choice to base the calendar solution on.  Google Apps is free for organizations like a boosters club to  use to registering our domain with Google Apps was the first thing I did.  This also makes it easy to create e-mail accounts for the various people associated with the club (president, secretary, etc.) so they can perform their task without polluting their personal email.

Once Google Apps was configured, I created a Calendar for each of the sports we will support (Football, Volleyball, Boys and Girls Soccer, Softball, Boys and Girls Basketball, etc.).  These calendars can be viewed separately or combined making it easy to view the whole calendar or just the calendar for a specific sport.  Even better, WordPress supports Google Calendar vias oEmbed turning a Google Calendar URL into a Gcal short code!  About the only downside I have found so far is it is very hard to style the Google Calendar, I’d really like the light blue Google uses to be a different color to match the rest of the site but I will live with it based on how easy managing the calendar will be!

I’ve decided to use Simple Twitter Connect and Simple Facebook Connect, both from Otto, for Twitter and Facebook integration.  I’ve used them before so they were familiar to me.  Based on the recommendation from the Wicked WordPress  Themes, I also tried AddThis but it is a  bit more invasive than I want so I went back to SFC and STC.

For an online shop, I am going with eShop which is a very simple shopping cart plugin.  Since we’re selling just a few items (e.g. t-shirts, sweatshirts, etc.), we don’t need anything complex and eShop looks like it will do what we need.

The site isn’t online yet so there isn’t anything to see but hopefully I will have a demo up and running fairly soon.  I need to do some more CSS work and get the custom page loops I want.  I am impressed with how easy Thematic has been to work with.

Why doesn’t the new iPod Touch have GPS?

Yesterday was the big Apple iPod announcement event for 2010.  There has been oodles of coverage of the event.  I was surprised that the iPad didn’t get an OS update and was pleased to see buttons back on the Shuffle.  The Nano is ok although I am not sure losing the slim rectangular shape and click wheel is a good idea, only time will tell.

The real interesting device was the iPod Touch.  I have a second generation 8GB iPod Touch which I bought off of Craig’s List before I committed to the iPhone.  I was unsure about only having a touch screen key board so a used iPod Touch let me test it out without committing to a two year contract for the iPhone which I eventually did.

I like the Touch and actually use mine quite a bit even though I have an iPhone.  I was looking forward to the new Touch, in particular for the rumored camera feature.  Having an HD video camera would be nice, the camera in my 3GS is so-so at best.

Today I was speaking with my co-worker Nick and we were talking about the Touch and my desire to have one, even though I don’t need it.  Nick mentioned that if it had GPS, the Touch would be perfect.  It got me thinking – why did Apple leave out the GPS?

If the Touch had GPS then it could:

  • Geo tag photos and video
  • Enable navigation with Google and/or Bing Maps (there is nothing worse than using my iPhone for GPS only yo have a call come in)
  • Possibly replace dedicated GPS hardware
  • All the location based services that Apps offer

I am sure there are other uses too but these came to mind.  Lack of GPS is really the only short coming that I could see.

I was hopeful that the rumors about the new Apple TV would be true and it would be a screen-less iPod Touch for the TV.  While the new Apple TV has some pretty cool features, I don’t see much differentiation over comting products from Roku, Western Digital, Boxee and others.  Each of these streaming devices seems to have one limitation or another.  I haven’t seen anything that says the new Apple TV supports UPnP which both my Xbox and WDTV Live do support.

I am disappointed in the Flickr support from the WDTV Live so was hopeful that the Apple TV would be more compelling than it is.  As it is, if I had to buy something right now, I think I’d get the Roku HD for $69.