If they give you ruled paper, write the other way. -Juan Ramon Jimenez
 
March 13th, 2010

Is WordPress Killing Web Design?

Loose notes from SXSW 2010 session: Is WordPress Killing Web Design

Good question – I’ve been asking myself this lately. Unfortunately the session quickly devolved into a lot of platitudes and stating of the obvious. Yes, design has been commoditized and is no longer an “elite” activity. Yes, your site is as creative as you make it, it has nothing to do with the CMS you use. All pretty much goes without saying. Took notes for half an hour, then headed to the HTML5 discussion… which was full and not allowing more people in.
(more…)

November 5th, 2009

Birdhouse 960

960 Blog look different? At first glance, not by much, but I’ve just completed a massive cleanup of the back-end, replacing the old HTML/CSS with the 960 Grid System, starting with the 960bc (blank canvas) WordPress theme. While I was at it, took the opportunity to search/replace out a bunch of old non-semantic code buried in the posts, updated or replaced a lot of plugins, and killed off a few old features that had out-lived their usefulness.

The biggest news: After years of preaching the HTML validation gospel to students, I still hadn’t gotten around to trying to make my own platform validate… but the Foobar Blog finally does! Well, almost. There will always be 3rd party code outside your control that can’t be hammered into shape. The biggest offenders here are embedded Flickr slideshows and Wordpress’ own embedded Gallery feature. Ugh. But aside from that, we’re pretty darn close to clean. Everything I can control validates at least.

The old design had accreted slowly over the years, from a patchwork of parts built and gathered. Original intention was to go for a clean break and adopt a modern 3rd-party theme, but the more I searched, the more I felt like I loved the “Cheap Thrills” design that’s evolved here (not available for download, sorry). So I decided to port Cheap Thrills to 960. It wasn’t all roses, since the divs in this theme hug each other so tightly, while 960 assumes margins everywhere. A lot of fiddling with negative margins, and I haven’t  solved the equal height divs problem quite yet. Will do soon.

New in this pimplementation:

  • Much wider content area. Goal is to be able to show full-width video and slideshows, plus code samples that don’t fold to the next line or stretch out of the content space.
  • Syntax highlighting for code samples (example)
  • Tag cloud (see sidebar) – I’ve been tagging random articles for a long time but didn’t want to display a cloud until there were enough of them to warrant it. Still haven’t gone through and tagged the entire site history, but the cloud is picking up steam.
  • General cleanup. Cruft removal. So. Much. Cruft.
  • Somewhat wider sidebar – more room for Image from Nowhere and Recent Comments. Some of the old Images from Nowhere look a bit stretched but future ones will be generated larger.
  • Replaced my old handmade RSS-based Twitter integration with Twitter for WordPress. Super clean – much better for DIY theme builders than the usual TwitterTools.
  • The old Democracy plugin for polling appears to have been abandoned. Replaced it with the much cleaner WP-Polls, which also meant manually copying all of the old Poll data into the new system (ugh!). See the Pollster section.
  • Replaced the old contact form  in the shacker contacter with the much simpler Contact Form 7.
  • Nips and tucks galore.

Process took way longer than expected of course – everything does – but these things had been gnawing away at me for a long time now. Feels great to have it all done. Haven’t done any cross-browser testing yet – let me know if something doesn’t look right for you.

Can’t say enough good things about 960 Grid. We’ve standardized on it at work, and it really does make life easier. Not without its warts, but much more pleasant than the YUI grid it replaces.

August 17th, 2008

Get Your Twitter Timeline into WordPress

After Twittering for a few months, I started to feel uncomfortable about not owning my data, and wanted an automated way to store a copy of each Tweet for posterity. Another installation of WordPress would be perfect as a Twitter backup repository (alternatively, you could copy all of your tweets to a dedicated category within your main WP installation, but I chose to do it in a separate install, since I wasn’t looking for integration with my main blog.

There were really two problems to solve:

1) Have new Tweets automatically hoovered into the WP backing store.
2) Get all of my older Tweets ported into the system as well.

Here’s the resulting site. It’s not really intended for public viewing – I don’t care if people browse it, but it’s really just a backup system in the form of a WordPress site.

Part 1 is pretty easy; Part 2 was more complicated. Here are recipes for both procedures.

(more…)

April 13th, 2008

WP-Create

My WP-Mass-Upgrade script has saved me countless hours over the past year. Making sure all Birdhouse and J-School WordPress installations are managed via subversion has meant I’ve been able to wrap them all in a single shell script. When new releases emerge, I’m able to upgrade 50+ installs in a few minutes. The most time consuming part remaining was creating new installations when customers needed them. I had the process down to around five minutes, but knew the repetitive steps could be distilled into a script, so recently wrote WP-Create:

Super fast (~30 second) way to install WordPress for clients, via subversion. Yes, users can often self-install via Fantastico or similar programs, but what guarantee do you have that they’ll upgrade as soon as new releases become available? Letting users run old versions of web software is a great way to get hacked. Take control of users’ installations by checking them out via svn (with this script) and managing them with wp-mass-upgrade.

This script performs the following tasks:

  • Gather installation info
  • Create install dir and check out a copy of WordPress
  • Create database, db user, set db privs via external .sql file
  • Create WP config file
  • Create upload dir and set filesystem permissions
  • Generate array line for wp-mass-upgrade.sh

Final setup is done via browser.

Added these tools to the WordPress codex section on managing WordPress via subversion.

Music: The Staple Singers :: For What It’s Worth
April 11th, 2008

Scripts and Utils

Over time, I’ve built up a handful of shell and PHP scripts, written to satisfy various itches with WordPress, Movable Type, QuickTime Streaming Server, hosting performance, etc. I’ve been tossing them into a dorky static site in case they prove useful to anyone else.

I’ve been meaning for a while to drop them into a WordPress installation – a little software library, open for discussion. Finally got around to doing that: scot hacker’s scripts and utils. Not much different from the old site, but now includes commenting, categories, search, RSS, etc. Using the badly named but very clean WP-Candy theme.

One of these days I’ll have to dig up all my old BeOS scripts and utils and give them a permanent home.

Music: Essential Logic :: World Friction
March 16th, 2008

WordPress Patch Committed

Wpicon Woo hoo! Last June, while trying to convert a Movable Type site to WordPress, I struggled to come up with a way to get the site’s existing tags, stored in the MT “keywords” field, converted to native WordPress meta fields during import. Finding no workable recipes in the wild, realized I was going to have to modify WordPress’ MT importer directly. Took a bit of hacking and experimenting, but eventually got it working. Decided to share my mods back with the community by contributing a patch to WP Trac.

Months passed, nothing happened. In WP 2.3, WordPress gained native tagging support and I found myself facing a similar problem, needing to convert MT keywords directly to WP tags. Modified the importer again, re-contributed my patch, and… nothing happened. Then, last night, just a week or two before the release of WordPress 2.5, received notice that my patch has been committed to trunk. Fewer than ten lines of code, but it’s my first tangible contribution to an open source project (beyond helping with documentation and plugins, etc.)

A small deal, but I’m proud.

Music: Talking Heads :: Born Under Punches (The Heat Goes On)
February 7th, 2008

Notes on a Massive WordPress Migration

Cdthome At the UC Berkeley Graduate School of Journalism, we use WordPress heavily as a content management system for student and organization publications, knowledge bases, student handbooks, podcast publishing systems, online magazines, etc. Over the past couple of years, I’ve found again and again that WP is not only up to the task of serving as far more than a blogging platform, it’s a great content management system for many types of sites, once you learn a few tricks.

Just wrapped up a marathon coding session, converting one of the J-School’s most popular sites, China Digital Times (CDT), from Movable Type to WordPress. We launched the new site (with a new design by Devigal) a few days ago. This was by far the most complex WordPress installation I’ve worked on, involving around 16,000 posts and 6,000 tags. As with every site launch, I learned a few things in the process. Thought I’d post some notes here for the sake of others going through a similar process.

Nutshell version: Though SixApart (who make Movable Type) claim that their static page generation approach is great for high-performance sites, we’ve reduced the time it takes to publish a new article from almost 15 minutes to a few seconds by moving from Movable Type to WordPress.
(more…)

February 2nd, 2008

crestmontschool.org

Crestshot-1 Birdhouse Hosting welcomes crestmontschool.org – the web site for Miles’ K-5 cooperative in Richmond, CA. I inherited the site a few months ago, and bid for the opportunity to host it at Birdhouse. Converted the site from Joomla to WordPress a month ago, then got started on a new design. The new look is based on the excellent Mimbo theme (though the end result barely looks related). Even had the opportunity to contribute a few tidbits to the WordPress Codex in the process.

Music: Nellie McKay :: Oversure
January 16th, 2008

QuickTags

Web-based forums/boards have had comment formatting buttons (quote, italic, bold, link, etc.) for years. I have no theories as to why this feature is not present on any major blogging platforms I know of. Even weirder, it’s really hard to find a plugin to implement what would seemingly be a much-requested feature. But went searching for one tonight and eventually found LMBBox.

Quicktags

Not listed in the major plugin repo’s. Doesn’t claim support for anything over WP 2.0, but I’ve got it working in WP 2.3. Required some mods to comments.php in my theme (probably one reason why it’s not a common plugin), but seems to be working nicely (Safari of course insists on showing its usual elegant but un-styled form buttons; not yet tested in IE).

Music: Vicki Anderson :: The Message From The Soul Sister
November 22nd, 2007

Future Post

One of WordPress’ little-used features is its ability to set a “drip date” – to set a post’s timestamp in the future so that it doesn’t go live on the site until that time comes around. Recently I was working on a site for a client who needed an Events section. For various reasons, I didn’t want to use any of the existing events plugins for WP – I just wanted to override the behavior for future-dated posts so that they’d go live on the site immediately, without waiting.

For the past year or so, I’ve virtually never found a case where anything I wanted to do with WP hadn’t already been solved by an existing plugin or tweak to template logic. But amazingly, I couldn’t find anything to override the default future post behavior. Posted on WP-Hackers about the problem and got a few solutions volunteered within a few hours (there’s nothing like a vibrant open source community). By far the most elegant was this one from the magical Ryan Boren (same guy who planted the semi-secret WordPress t-shirt geocache):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function setup_future_hook() {
 // Replace native future_post function with replacement
 remove_action('future_post', '_future_post_hook');
 add_action('future_post', 'publish_future_post_now');
}
 
function publish_future_post_now($id) {
 // Set new post's post_status to "publish" rather than "future."
 wp_publish_post($id);
}
 
add_action('init', 'setup_future_hook');
?>

Stick this in a php document in your plugins folder (remember not to include any whitespace after the closing php tag!), activate it, and create a post with a future timestamp. The post’s status field in wp_posts will be set to “publish” rather than “future” and it’ll go live on the site immediately.

You can also download this as a ready-to-go plugin.

Ryan’s too busy to host this trivial but super-useful plugin himself, but invited me to. I’ve submitted it to WP-Plugins and am awaiting a response – should be available there as well before long.

Music: Daniel Mille :: Les Minots
October 31st, 2007

Suite Matthew

The Red Hot Chachkas are an eclectic Bay Area klezmer group who, once upon a time, played at Matthew and Stacia’s wedding (Matthew is our dearly departed friend whose life was cut short by an inattentive driver in 2003). Soon after the wedding, Matthew joined the Chachkas as a basisst, and played with the group until his death. The Chachkas have written a song for Matthew: Suite Matthew.

I’ve spent the past few nights converting Matthew’s memorial site from Movable Type to WordPress, getting comments going again, fixing old links, re-embedding media, and just sprucing up the place in general. Working on it has made me miss Matthew all over again. He used to send the most hilarious links by day, then make the most intense music by night. He used to give the best hugs. He used to cook the best chicken. I miss you, Matthew.

October 18th, 2007

Hermenautic Circle

Hermenaut In the beginning, there was Hermenaut, an excellent ‘zine out of the Boston area from the mid-90s. Hermenaut hit it pretty big, as zines go, because it was packed with excellent writing and funky topics (issues had themes like “False Authenticity” and “Vertigo”). My old Liberace piece was originally written for Hermenaut’s “camp” issue. Fast forward a decade. Some of the original Hermenenaut authors, including Boston Globe writer Josh Glenn (who was one of Hermenaut’s founders) participate in a free-form (but closed) mailing list for around a hundred writers and gadflies.

Eventually, the “Hermeneutic Circle” realized that many of its subscribers maintained their own blogs, which gave rise to the idea of a “planet” web site that could be used to aggregate new posts from all of the individual blogs (without requiring writers to post in two places). Glenn signed up with Birdhouse Hosting, we registered hermenaut.org, and went looking for a solution.

The rub was that Glenn wanted more than simple RSS aggregation. He wanted posts from scattered blogs made into actual posts on the Hermeneutic Circle, so people could comment directly on the site. Somehow we needed to consume RSS feeds and produce new entries on the new blog, rather than just links. Eventually I stumbled on FeedWordPress – one of the coolest WordPress plugins I’ve tried in a while. Hand it a URL and it will discover all embedded feeds and ask you which one to subscribe. Each new author found in the feeds is made into a genuine author in the local WP system. Each category found in a feed becomes a genuine category in the local WP system. A nice API gives you a new set of template tags you can use to control whether commenting happens on the original author’s site or on the local site. And so on. Really nicely done (and yes, we tipped the plugin developer).

Hermenautic Circle went live today in starter mode; we’re off and running. And once again, I’m just amazed at the amount of work saved by the rich plugin landscape surrounding WordPress (I really thought I was going to have code this by hand).

Music: Angels Of Light :: Black River Song
September 25th, 2007

WP-Digest

If you’re subscribed to Birdhouse Updates and haven’t received a digest in a while, way sorry! Looks like two things were in play: A PHP upgrade sensitized WP-Digest to use of a reserved keyword. On top of that, during debugging one day I lamely left my own email address in place of the list address. Since I was seeing the weekly digests over the past month, assumed everyone else was too. D’oh! I’ll send out a make-up digest now.

Use the Subscribe box on the right to get weekly updates from Birdhouse in your inbox.

Music: Lei Qiang :: The Ballad Of Blue Flower
September 24th, 2007

Upgrading WordPress with Subversion

Hey, cool – the cats at wordpress.org have posted a set of suggestions for people preparing for the upgrade to version 2.3 – due out in a couple of days – and they’ve linked to the documentation I wrote on maintaining WordPress with Subversion.

This kind of upgrade has become a fairly big deal for me, as I now maintain more than 40 WordPress installations on Birdhouse and more than 30 at the J-School. Over the past few months I’ve converted all of them to Subversion checkouts, wrapped in a mass-upgrade shell script I wrote, which steps through the array of all installations and upgrades each in sequence. Takes about three minutes to upgrade 30 blogs – a far cry from the manual work I used to put into this process.

The downside is that upgrades inevitably break a few plugins and/or API calls, which means there’s usually a bit of fallout (always fixable). But there’s more benefit in keeping all installations up-to-date than there is downside in risking having some features break temporarily.

Plugin compatibility for 2.3 looks great so far; don’t see anything on the short list that will cause problems for any of my peeps.

Music: Mavis Staples :: Turn Me Around
August 25th, 2007

The Other WP-Cache

Miles WP shirt WP-Cache easily ranks among the top five of my most-used (and most critical!) WordPress plugins (static site performance with dynamic site behavior, and all that jazz). But last week, heard about another kind of WP-Cache — developer Ryan Boren planted a couple of ammo cans full of WordPress t-shirts in the middle of Almaden Quicksilver Park — and didn’t list them on geocaching.com. In other words, a little insider training :)

Don’t generally like to drive much for a geocache (it kind of taints the enviro aspect), but made an exception today – this just sounded like too much fun. A huge and beautiful park, and plenty of traditional caches in the area too. Made the trip with Miles this morning and ended up spending almost the entire day hiking.

Tracked down the shirts mid-day and there’s still a ton of ‘em. No extra-smalls, so had to drape him in a small. The find was extra special because this was, coincidentally, our 100th find! Happy birthday to us, or something.

Stopped to eat Bunny Grahams and drink the last of the water (when will I learn?). Splashed each other in a creek. Found an entire deer skeleton (and brought the skull home in the bag my WP shirt came in). Dropped off some of the travel bugs we picked up in Minnesota. Ate peanut butter and honey sandwiches in the middle of the woods. Hiked our butts off (Miles did five full miles today!) Amazing views, very few people, great father-son day. Life is good.

Flickr set

June 26th, 2007

Links or Bookmarks?

Ignore this post if you’re not a WordPress user :)

There’s an interminable discussion going down on the WP-Hackers mailing list about one of those little semantic issues that snowballs perniciously into a major debate. WordPress’ back-end lets users manage URLs for inclusion in the sidebar. This area is usually used for the site’s blogroll, but many people use WordPress for non-bloggy purposes. The debate is over whether to title the administrative interface for this external URL manager “Links,” “Bookmarks,” or “Blogroll” (though “Blogroll” isn’t really on the table – that’s what it’s called now, and no one likes it).

There are a dozen good arguments on either side, but we’re trying to take the temperature of the WordPress user community. Helping out a bit by posting a poll here. Which term seems more intuitive / palatable / sensible to you?

Should WP's list of URLs be titled "Links" or "Bookmarks?"

View Results

Loading ... Loading ...
October 9th, 2006

katovichlaw.com

Birdhouse Hosting welcomes katovichlaw.com:

Katovich Law Group assists clients in integrating sustainable, socially and environmentally responsible practices into their businesses at every level.

Katovich Law came to Birdhouse as a Plone site. The Plone CMS embeds its own server, and is therefore incompatible with Apache (without doing fancy port re-routing). Rather than go down that road (and because circumstances were going to make it very difficult to get a raw data dump or even a Plone backup from the old host), I offered to port the site to a more common/compatible CMS (Katovich had no particular attraction to any particular CMS – they were on Plone by circumstance).

Since the site had a pretty straightforward structure, decided to see if I could pull it off in WordPress (it’s what’s for breakfast). There were a few rough edges where WordPress’ blog orientation made things a bit tricky, but overall, the experience underscored my confidence in WP’s flexibility. Had never had cause to dig into the parent/child relationship of WordPress pages, but found them an incredibly easy way to organize hierarchical material and get logically nested URLs and nav sub-menus with zero effort.

Actually wanting to start mastering messing with Drupal, but this was a useful experiment.

Music: Spaceways Incorporated :: Future
January 25th, 2006

Hosting FAQs on WordPress

Overdue for a thorough going-over of the Hosting FAQs, but before I dove in, wanted a clean publishing back-end for them (I’ve been maintaining them through phpMyAdmin out of laziness — the thought of building yet another CRUD back-end fills me with dread). Also wanted to build in a search engine for users. Flirted with the thought of making the FAQs a Movable Type site, but decided to try something new and employ WordPress as a CMS instead.
(more…)

June 8th, 2005

Skookum Tools: WordPress, VideoCue, Dashboard

As WordPress has evolved and grown itself a larger, more supportive community and a larger body of plugins, I’ve become increasingly enamored of it, using it for more side projects. I also love that my hosting customers can install a WordPress blog with literally three clicks from their cPanel interfaces. On Monday I hooked up with Matt Mullenweg (co-creator of WordPress) for lunch, who got me totally juiced up about the advanced capabilities of WP. The biggest thing that’s held me back from a full-scale migration from MovableType is the fact that WP still doesn’t have multi-blog capabilities built in from the ground-up. At the J-School I have about 300 users scattered across 20+ blogs, all with varying levels of permission. WP has nothing like this… or so I thought. Turns out there’s an alpha version of a multi-user WordPress out there. Apparently, WordPress-mu is pretty much production quality despite being listed as alpha. Need to check that out.

Mullenweg, FWIW, is one of the sweetest, most charming guys you could hope to meet. Was very interested to learn that c|net uses WP (with a simple caching plugin) for a huge number of public publishing projects. Last I heard was that c|net had basically invented the massive Vignette CMS. Very interesting to learn they’ve basically abandoned their own baby in favor of simple, lightweight, open source tools.

Yesterday hooked up with Simon Clarke of Vara Software — I know Simon from the Adamation days (can’t believe there’s still a web site there), where he and another engineer were responsible for personalStudio (BeOS video editing application, later released for Windows). Vara is doing some really cool stuff, and I’ve decided to stop using Channel Storm’s LiveChannel for J-School webcasting and switch to Vara’s WireCast. It’s that cool, and won’t result in any loss of functionality. Also got a personal demo of Vara’s VideoCue — teleprompter software that also takes camera input, lets you mix in images and titles, output to QuickTime, and optionally post results directly to a blog. Skookum stuff.

Just emerged from a couple of sessions on building Dashboard Widgets and am totally fired up. Just need to clear a few days (yeah, right) and go for it.