Another fond farewell to Cody

It has been a while since we originally said goodbye to Cody. He has been back for a month or two now from college, and will be moving to Seattle on Friday to make games and be awesome. We’ll keep in touch, though–he has agreed to help me with Project AwesomeSquirrel.

The tone of this blog is going to change some over the next few weeks, or at least that’s my goal. There will be more of a focus on writing–that is, on style and tone, how to write, and observations about writing. I look forward to stretching and working.

But not today, because I wrote this last night around 10:15 p.m. after a very long day of work followed by wishing Cody a happy trip. Instead, let me share with you an iPhone 4 review I found inspiring. I couldn’t read this style for too long (this article pretty much hit my limit), but I enjoyed it in this context.

SilverPen Goes Mobile With WPTouch

As you may or may not know, I’ve been going ’round about mobile browsing on the web for some time. I was almost convinced once that I had found a mobile solution for my WordPress sites, but it just didn’t work that well. The main problem was caching: WordPress, for those unfamiliar with it, can become bloated pretty easily, which makes loading a site very slow. Using a plugin to cache your pages helps compress them to speed up load time. Unfortunately, sometimes the regular version would be cached and served up to mobile devices, and sometimes the mobile version would be displayed on the desktop. Admittedly, this was more an issue with the caching plugin I use, but if it’s got to be one or the other, caching is necessary and a mobile view is not.

And then I stumbled upon WPTouch. This WordPress plugin came completely out of left field for me. I had been looking, trying out, beta testing, and giving feedback on different mobile solutions for a while before I gave up, but I had never even heard about WPTouch. All of a sudden it was there, I installed it, and it worked. No real configuration needed, no tweaking, no fiddling with cached pages or having the mobile view show up in desktop browsers. Everything Just Worked.

So I’ve been using it for several months now. It’s on both my site and on our work site, and I am confident enough in it to recommend it to you. If you self-host WordPress, there is absolutely no reason your site shouldn’t have a mobile view, and WPTouch provides that free of charge and very simply. Now that I’m finally comfortable with it and settled, I’ll be making a donation to the fine folks at Brave New Code for their great work. Give WPTouch a try, and if it works for you, I encourage you to do the same.

A Bit More About WPTouch

SilverPen Publishing on an iPhone in Mobile Safari

Mobile plugins for WordPress have one primary function: serve up a different theme to cell phones than to regular web browsers. This means that if you visit my site in Firefox on your computer, you see one thing, but if you visit on your iPhone or other smart phone, you’ll see the mobile version. The mobile version is much simpler than the regular one, which makes it much smaller. This means it loads faster, which is important on mobile connections like Edge. Even on 3G, you’ll have significantly faster load times with a mobile version of a site. In addition, text and such is reformatted to fit better on a smaller screen.

The previous plugin I tried, WordPress Mobile Edition, is built on the Carrington framework. Though very shiny, I found it to be too much. It was bigger than necessary, which slowed load times. In addition, it slowed down my site overall. I’m not a programmer and can’t claim to know how, but WordPress Mobile Edition contributed .5-.7 seconds to my site’s load time by itself. Half a second might not seem like much, but it can make a lot of difference in perception of a site’s functionality and reliability.

WPTouch doesn’t negatively impact my site overall, and it’s very quick to load on mobile browsers. It also has a very polished menu system that can be customized through the WordPress Admin Panel. It should be said that the developers are very responsive as well–there was a problem with the menu a month or two ago where it wasn’t loading right, and they had it fixed pretty quickly even though this problem wasn’t happening on all sites. They seem very committed to this product and doing a good job, hence the donation.

Check it out. It’s free and available at BraveNewCode.com.

Google Calendar for PAX 2009

Late last week a fellow Penny Arcade Expo (PAX) attendee asked on Twitter about Google Calendar. She was having trouble figuring out how to organize a lot of different information in that interface, and since I use Google Calendar (GCal) extensively both for work and personal organization I asked what she was working on and how I could help. As it turns out, she was wanting to make a calendar for the Expo in GCal to make it easier for people and I jumped on the idea. I thought it brilliant and asked her if I could contribute.

Subsequently I have filled in all of the PAX events I know of on two separate calendars, one for official events and the other for unofficial. At its simplest, I like Google Calendar for this sort of thing because a standard calendar is how my brain likes to see dates/times. I have trouble looking at an agenda, itinerary, or gantt chart to figure out what is happening and when. Seeing it on a calendar is much easier for me.

You can do a lot more with these calendars than just look at them, though. Allow me to demonstrate how these can really help you in preparation for PAX.

Subscribe to Calendar

If you have a Google Calendar account (and if you don’t, might I suggest getting one?), you can simply add these calendars to your own account by subscribing to them. First, under Other calendars, click on the Add button and then Add by URL.

Add Calendar

For the URL, copy and paste the following for the [PRIME] PAX 2009 Official Events Calendar:

http://www.google.com/calendar/embed?src=7ms9oarv06gp6pgrsau2lea8js%40group.calendar.google.com

And for the [PRIME] PAX 2009 Unofficial Events Calendar, you can use:

http://www.google.com/calendar/embed?src=quut4pcs63oajm9jpf9m52pg14%40group.calendar.google.com

url

You can also use those URLs to just see a web page with the calendar, if you prefer to avoid Google.

Update:: Not sure how I missed this originally, but an even simpler method of adding the calendar is to use the button on the calendar web pages. Just click on one of the links above and then the +Google Calendar button at the bottom right of the calendar.

Add Calendar Button

Add an event to your own Calendar

Now that I have the primary calendars in place, my plan is to go through and add the events I actually plan to attend to my personal calendar. For instance, I’ll go through and click on the panels I want to see, then copy them to my own calendar, a la:

Copy to my Calendar

Just click on the time bar (rather than the actual name of the event, which is a link) to pop up this box.

See Everything

Want the full details of an event? I’ve got everything in for official events and will add more to the official events as I read more. Just click on the name of the event to open up the full details.

Full description

Got an iPhone?

Google has very nice iPhone views for most of their applications and the Calendar could be quite helpful at PAX. A warning about relying on this though: the wireless, 3G, and Edge networks are sure to be pushed to their maximums and beyond during PAX as 75,000 of us descend upon Seattle, so it would be best to sync all this with either your iCal or Outlook calendars to have locally on your phone. Still, the web interface can be quite nice (if it’s working).

Check your schedule…

IMG_0120

or see the details of a specific event…

IMG_0121

Note about Time Zones

The time zones of the calendars are set to (GMT -08:00) Pacific Time. If you do not modify your Google Calendar time zone to match that, you will be seeing events in your local time zone. Therefore, for me in (GMT -06:00) Central Time, I see events happening at 9 a.m. as beginning at 11 a.m. I plan to just change my GCal time zone before flying out, much as I might update a watch upon arrival to match the local time. You ought to do the same.

Questions?

Just leave a comment and I’ll do what I can to help 🙂

The Evolutionary Process of Mobile Browsing on WordPress

Two Calls

My first rant, though certainly not my first try

A couple of months ago, I wrote about the trials and tribulations I had encountered and failed to overcome in regards to making WordPress a little more mobile-friendly. I’m not a coder or even a web developer/designer (though I sometimes pretend to be at work), so beyond using the tools and guides provided and tweaking some code, I’m at a loss for how to redo everything and make it work myself. Unfortunately, the tools that existed didn’t play well together and therefore didn’t serve my purposes for providing a fast site that also worked on mobile browsers.

When I wrote about my failed attempts, I learned that the coder, patrias familias, and maintainer of WP Super Cache, Donncha O Caoimhm, modified the plugin to allow mobile developers to add a filter to their code that would tell WP Super Cache to cache and serve data differently depending on certain variables, but no one quite picked up on it or modified their plugin to work in conjunction with WP Super Cache. And since WordPress almost isn’t worth running without WP Super Cache, it was sort of a wash.

A New Hope, Another Failure

As you may recall, I thought I had found a solution in the form of the WordPress Mobile plugin earlier this month, but it too failed. The problem is that you don’t just want a different stylesheet for mobile content; if that was all, there’d be no issue because WP Super Cache doesn’t cache styles, just content. But on mobile devices, you don’t have room or time to load everything, so you really only want to serve the content that is pertinent (blogrolls, for instance, might be nice, but you don’t want to have to scroll past that on a tiny mobile screen). Therefore, plugins that serve content to mobile devices also use a different theme for those devices, and when that theme gets cached, it then ends up being displayed to regular web browsers. WordPress Mobile, like all the other mobile plugins, weren’t using the filter in WP Super Cache to cache and serve their content appropriately.

Eureka! At last!

Donncha has just released version 0.9 of WP Super Cache, however, and this one takes into account user agent strings to identify mobile browsers by using the detection code from Alex King’s WordPress Mobile Edition. I began testing this on SilverPen yesterday using developmental versions of both WP Super Cache and WordPress Mobile Edition, and after identifying and working out a single bug (Donncha worked it out, of course, not me!) it appears to be working great! We ran into a snag where Safari on Mac was being identified as a mobile browser, but Donncha had that fixed before I could even get him the log files.

A new version of WordPress Mobile Edition has not yet been released, and I’m not entirely sure it needs to be. The caching and UA checks are being handled by WP Super Cache now to decide what to cache and serve, so not only should your choice of mobile plugin be irrelevant, it should also Just Work™.

Give it a try and let me know what you think!

Download WP Super Cache

Download WordPress Mobile Edition

Image by: lusi

Genius Review — iTunes Automagic Playlist Generator

It's like Pandora, but with music you already know you like.
It's like Pandora, but with music you already know you like.

Having recently purchased an Apple Macbook, I thought I’d give iTunes another shot. The last time I had used iTunes was about three years ago following my first iPod purchase. Beholding the shinyness that all the cool kids had been using for years, I poked around, marveled at the quick downloads of podcasts and music, and generally enjoyed the experience. There are, of course, some things about iTunes that absolutely infuriate me (DRM, poor file management, duplication of tracks, etc.), but it’s obvious that this product demands you drink the Kool-Aid, and if you do, it’ll be a wonderful, magical ride.

Part of my impetus for purchasing an Apple computer was because I want an iPhone sometime in the future, and if I’m going to drop that much cash on a portable device/phone, I want to get all the functionality I can out of it. Therefore, I transferred my 12+ gb of music to the Macbook and imported it into iTunes to see how it worked, as well as to prepare for iPhone syncage when that glorious day comes.

Immediately following import, I decided I wanted all the cover art for my discs, so I told it to pull those down. Of course, iTunes demanded I register an account with the iTunes store (requiring my address, credit card number, and a vial of blood from our first born), but then happily opened its vault of artwork to me. It then asked me if I’d like to turn Genius on.

Genius is a relatively new feature in iTunes that looks at your music collection and compares it to the collections and playlists of other people. This means that you have to send information about your music library to Apple, which made me a little nervous (though I do not pirate music, or anything else as a general rule), but I went ahead and agreed to the ToS so I could find out what this thing does. Like any proper geek, my curiousity grabbed me by the throat and drug me along.

Overall, it’s been an extremely pleasant experience. When listening to a song, you can hit the Genius button (located in the track information pane at the top or at the bottom right of iTunes) and iTunes will instantly generate a playlist for you of songs similar to the one you were listening to when you hit the button. These playlists are usually about an hour and a half; I’m not sure if that’s because there’s a preference somewhere that dictates the length of the list or because I don’t have much music, but it’s sufficient for my purposes. If you like the playlist Genius produces, you can listen away, or you can run it again and again to generate slightly different lists.

Mix, match, and re-arrange, and you can also save these as permanent playlists. Of course, Apple also displays the Genius sidebar with recommendations of other albums similar to those you’re currently listening to in a bid to get you to buy some music. But it’s not really in my face, doesn’t pop out or anything, and all-in-all, I’m liking Genius. It’s like Pandora, but with only music I already know I like.

Genius doesn’t supplant Pandora, and I don’t view them as being in competition. Pandora allows me to listen to a lot of bands I either haven’t heard of or wouldn’t otherwise hear, and I’ve bought a few albums through Pandora of bands I just fell in love with after hearing a few of their songs. But Genius is a wonderful compliment to Pandora, and the fact that it’s local (requiring no Internet connection) and isn’t streaming (so there’s no buffering) is really nice.

No, iTunes isn’t the greatest music player ever (it’s probably not even in the top 5-10), but Genius is a great feature that will keep me opening it time after time.

WordPress not quite ready for mobile browsing

Instead of redacting this entire entry, I’ll let you know that mobile browsing for WordPress does work now. See my updated article on The Evolutionary Process of Mobile Browsing on WordPress for more details.


One of my design goals for revision 3 of SilverPen Publishing was to make the site more accessible. I’m not a web developer by trade and didn’t really know how to do this, but I knew that I didn’t want to exclude people from visiting my corner of the web. To me, this didn’t just mean making SilverPen more friendly to screen readers and other assistive technology devices, but also to make the site work well on mobile devices.

To this end, I found yet another great plugin by Alex King that queries the user agent of the browser trying to access the site. If it’s a mobile web browser, the plugin serves up a custom template that’s very lightweight and fast to load on mobile devices. It worked very well, but unfortunately it only worked in a vaccuum, and even then had some serious repercussions.

WP Super Cache

First off, it simply does not work with WP Super Cache, and in fact, no mobile browsing solution does. For those who haven’t heard of Super Cache, I’ll explain what it does and why it’s necessary very briefly. Every blog post and page that WordPress serves up is dynamically generated on the fly when you access the site. Putting all the pieces together to make a web page puts a lot of load on the server, and it makes the page load a lot slower for you. Caching allows the server to create static pages, rather than dynamic ones, of the same content and therefore serve it up faster. This reduces load on the server and makes the page load a whole lot fast for you.

Because of how WordPress works, this caching is pretty much vital to running a site on WordPress. My traffic’s not that high yet, but it has more than doubled in the last few months, and I expect it to continue increasing at a similar rate. The last thing I need is Bluehost freezing my site temporarily due to a sudden spike of traffic, so like all good WordPress bloggers, I use WP Super Cache.

To make a long story short, WP Super Cache creates a copy of a page the first time someone visits it. Each subsequent visitor is shown that copy, and this is what breaks WordPress Mobile Edition. Since you’re viewing a static copy of the page that has already been generated, you don’t see the mobile theme, rendering the mobile plugin useless.

If it’s a choice between having the page load more quickly for most everyone and reducing the load on my server vs. having the site more accessible on mobile devices, I’m going to have to go with the former. Especially as data plans move towards 3g and faster mobile browsing.

Search Engine de-Optimization

The second reason that mobile browsing fails for WordPress is because it kills SEO, which harms your ranking in search engines. By its very nature of essentially serving a different set of pages to mobile devices, plugins such at WordPress Mobile Edition fool search engine robots into thinking there’s a second website with duplicate content on it. Such duplicate content is ranked down by search engines, which means your pages are less likely to turn up in searches and you’ll get less traffic.

The mobile plugins and solutions for WordPress all admit that it’ll kill your SEO and recommend you “do something” about it, but don’t offer many solutions. I thought I had found an elegant work-around yesterday in the form of themed multiple domains in WordPress, which would allow me to have multiple domains pointing at a single instance of WordPress, wich each domain triggering its own theme. In this instance, you can easily redirect robots that hit those other domains to a separate robots.txt file, which would tell them “don’t index this site.” For example, if I had silverpenpub.net and m.silverpenpub.net (for mobile browsers), I could have the main site indexed and tell the robots not to index the mobile site.

But I don’t want to register a separate domain for mobile browsers, and I couldn’t get it to work with a subdomain for some reason. Maybe I was doing something wrong there and will figure it out eventually, but it’s not going to happen today.

Not worth my time

In the end, trying to twist WordPress into working on mobile devices doesn’t give a  lot of return for the investment, and I’m beginning to think it will be a non-issue before too long. Even I am beginning to dream nightly of acquiring an iPhone, and browsing with a 3g connection means that, even over a cellular data plan, you can load a site quickly. And newer phones have a lot larger screens, which means that my theme displays fine all on its own.

I know that WordPress now has a iPhone-friendly administrative interface, and I hope that they include more features in the future to help their platform run better on mobile devices. Accessibility is still important to me, but I can’t justify 5-10+ hours of work to make the site more accessible to 0.5% of readers by introducing “features” that degrade or break the site for the other 99.5%.