scot hacker’s foobar blog
Never miss a good chance to shut up.
May 30, 2008

Notes on Twitter

Twitterrific Icon Twitter (microblogging in general) is changing the way I communicate and consume. With ever-shrinking windows of available free time, the self-imposed expectations/pressure to blog something every night, or even a few times a week, melts away. Instead, I drop quick thoughts and notes into the ether as they occur. The 140-character length limit means there’s never any expectation that thoughts be fully formed. Maybe that’s yet another sign of cultural acceleration and the cheapniss of snack-sized media, but it works for me.

Twitter has also become a partial cure for my ongoing failure to actually read anything. Hundreds of feeds in the RSS reader, thousands of bookmarks, and I rarely look at anything that doesn’t find its way into my inbox. But for some reason, I actually take time out to consume what’s going down in the Twitter stream — it’s become a partial cure for bad media consumption habits. Twitter has become a 2nd inbox, perhaps more playful than the first, but essential nonetheless. Twitter has clicked for me in a way no other social network has.

In the few months I’ve been on the service, Twitter has found my phone, I’ve been able to follow one of our J-School students as he was jailed (and then freed) in Egypt for covering riots, I’ve gotten music and software recommendations, watched as journalists experimented with new ways to reach their drifting audiences, gotten to listen in on conferences there would be no way I’d have time to attend…

At times it almost feels like Twitter should have its own internet protocol, like it’s something new altogether. Not quite IRC, not quite IM, not quite blogging, not quite RSS. It’s all of those things synergized, yet still http-based.

Twitter-holics deal constantly with Twitter’s outages, which have become a near-daily occurrence. Talk about a killer app — what other service’s userbase would remain so loyal with such consistently bad uptime?

Twitter is built on Ruby on Rails, which has taken a lot of heat in recent months as a result - much buzz about how Rails doesn’t scale. But remember: “Languages don’t scale, architectures do.” And that’s the rub - Twitter was built quickly, with all the wrong assumptions, without foresight into the complexities that would be brought on by massive popularity 18 months later.

The issue is that group messaging is very difficult to achieve at a grand scale.

Excellent article at Hueniverse on Twitter’s scalability challenges. Summary: Rails is a framework used primarily for building content management systems. But Twitter isn’t a CMS at all - it’s a messaging system and an API. While most web apps read from the database hundreds of times more frequently than they write, Twitter is writing constantly, which creates a whole different kind of strain. And while most web apps depend heavily on caching to maintain performance, Twitter is cache-resistant, since every single user has a unique view, and each user’s view needs to be refreshed constantly. Caching need not apply. And since the API is both public and powerful, multiply the strain x dozens or hundreds of external desktop clients and filtering sites and services.

Twitter is currently being rebuilt piece-by-piece, and things are slowly getting better. There are rumors that the rebuilt components are all written in PHP, though the company denies the rumors.

Tip: To make Twitter work for you, you need a desktop client. I use Twitterific. And don’t be afraid to follow strangers. Check out who you’re following are following.

Music: Minutemen :: No Parade
April 2, 2008

Spam J-Curve

Weblog comment spam rates continue to surge. This chart is from one installation of anti-blog-spam tool Defensio, showing an insane uptick through the last part of March, 2008:

(Thanks ViperBond). Akismet’s charts show more than 5 billion blog spams identified in the past two years. I’ve personally noticed a dramatic increase in hand-written blog spam recently. Knowing that tools like Defensio and Akismet are going to get spammers banned from blogs net-wide within minutes, the method is now one of social engineering - getting bloggers to consciously allow spammy comments to go live by making them highly relevant to the post they’re attached to, and plausibly written. All that distinguishes this latest form are the author URLs — which no longer point to cialis and poker sites, but to tile shops, beauty parlors, commercial art galleries, pool-cleaning supply houses, etc. Human blog spammers have been around almost as long as bots (to defeat captchas, etc.) but this latest form amazes me because it’s written so carefully. I really have to puzzle over some of these recent ones to decide whether to push them through or not.

Because Akismet is less likely to have identified these as spammy, the moderation burden falls back onto blog authors. It’s no longer possible to identify spam at a glance - we now have to study each message carefully to ascertain sincerity.

March 27, 2008

Notes on WordPress 2.5

Secret: This weblog has been running off the as-yet unreleased WordPress 2.5 for a few weeks now, via subversion checkout. For those not following along at home, WP 2.5 features a radically redesigned back-end that seems almost intentionally designed to piss off people who are resistant to change (but to delight the purists). Funny how we get with our tools - once usage patterns become entrenched, even huge improvements in usability start to seem like blasphemy (cf: people raging about Microsoft’s new “ribbon” interface in recent versions of Office, even though they’re an obvious improvement).

Have to admit, my first experience with 2.5 was disorienting and not altogether favorable. But after a couple of weeks of regular use, I’ve come to appreciate the wisdom of the focus groups; separating out commonly used functions from uncommon in the UI was long overdue. And while the new colors still felt washed out and pallid, a recent Profile page option to re-enable the old colors on top of the new UI compensated.

Birdhouse Hosting keeps all WP installations up to date automatically when new versions are released with a simple script. The system has been fantastic from a maintenance and security perspective, but puts me in an interesting position - when I run the next automated update, I’ll be changing the UI out from under a whole lot of users. Fortunately, my early experience has users reacting positively and not being confused at all - a few minutes of exploration and they’re off to the races. The good news is that there have been almost no API changes in this version that break plugins or themes. In fact, the upgrade from 2.2 to 2.3 broke a lot more stuff than this version will. There’s a plugin compatibility list in the codex if you’re interested; out of the 70+ WP-based publications I manage, only two will be affected by anything on that list (we’ll hold those back for a while).

Loving the new media manager - upload multiple files at once, handle image alignment at insert time, insert multiple images into a post simultaneously as a gallery (with automatic thumbnails, intermediate size, and full size versions - and independently commentable sub-posts for intermediate versions). Full-screen editor. Brand new tag manager. Much improved comment management. The visual editor no longer breaks embedded media like YouTube videos. A ton of subtle improvements that make life easier all around.

There are bound to be bumps, but progress is good.

Update 3/29/07: WordPress 2.5 has been released - go get it! Need a WordPress host with lots of experience/expertise? Contact me through Birdhouse Hosting.

Music: The Mekons :: Robin Hood
March 16, 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)
March 8, 2008

Twitter: I Succumb

A year ago at SXSW2007, I made a conscious decision not to do the Twitter thing. Can’t take another distraction/interruption, no matter how fun it sounds. This year I succumbed and decided to go for it. Couldn’t get shacker (thanks to always being about a year late to any given party), so I’m waxwing (a backup login I’ve left underutilized for long enough).

There’s something perniciously sticky about Twitter… what is it? Hard to stop looking. Like blogging without the pressure to write anything truly substantial. Blogging mashed up with IM. Feels like it should be its own internet protocol or something — a new form of communication altogether. People using Twitter at SXSW as part notepad on panels, part, “Where y’at?” Still finding my way with it.

Follow me. I’ll follow you.

March 6, 2008

Can BuddyPress Break Down the Garden Walls?

Obviously, it makes more sense to implement a social network on your organization’s own web site rather than sending users off to Facebook or MySpace — but does it still make sense if users have to re-create their relationship networks on each new SN they visit? A new project from Automattic - who run Wordpress.com and have a ton of experience leveraging the power of “the hive mind” - appear to have an ace up their sleeve that could address the problem. Will BuddyPress give organizations the social networking tools they need while mitigating the “walled garden” effect?
(more…)

January 16, 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 26, 2007

Gravatar

Headshot Fur Bulletin board readers are accustomed to using icons/avatars to represent their identities in online discussions. But because blogs are scattered to the wind across a bazillion servers, this capability is not generally available on weblogs. What is consistent across your participation in multiple blogs is your email address (even though it’s never displayed publicly, it’s usually required for comment posting). Gravatar leverages this consistency by letting you create a (free) account with them. Your avatar then appears automatically when you participate on any Gravatar-enabled blog.

All a blog owner has to do is add a few lines of code to their templates (or install a plugin), and the right avatars show up in the discussion automatically.

Auttomatic (the hippy/corporate entity behind WordPress) has acquired Gravatar, giving the the service the juice it needed to keep performance up. I’ve enabled Gravatar on Birdhouse — set yourself up a free Gravatar account and watch all of your historical posts on this site grow a magic tumor avatar.

Aside: WordPress now powers almost 1% of the web. Don’t tell me it’s just a blogging tool.

Music: Van Morrison :: Madame George

Depends on What “Is” Is

After the initial glow of playing with social networking again wore off, I (predictably) reverted to ignoring Facebook. Except that every time someone friends me or begs me to add the app for their pet cause, I get an email ping reminding me that Facebook exists and that I, apparently, have unmet social obligations. Which reminds me that I really need to update my profile so I don’t look like an abandoner. 99% of my Facebook activity over the past month has been relegated to obligatory updating of my “Is” status.

Scot is contemplating Joomla.
Scot is digging the new William Parker disc.
Scot is no longer contemplating Joomla.

and so on. Not much, but it keeps my crackers from getting too stale. In so doing, I’ve been flummoxed that the “is” part is required. If I want my profile to say “Scot digs the new William Parker,” it comes out as “Scot is digs the new William Parker.” Lame. But Machinist says Facebook has dropped the “is” requirement, and that the verb is now free-form. Thank god for small miracles. But did the “is” play an important linguistic/artistic role?

What Flaubert meant was that it is precisely an artform’s constraints — and not the lack of constraints — that juice people’s creativity; the Facebook “is,” no differently from Shakespeare’s iambic pentameter, forces people to look for interesting ways to say things.

Nevertheless, the new API lets the user control “is,” not the API. But hold the phone… that’s all lovely, but apparently not yet in play.

Scot is wonders when Van Morrison jumped the shark.

Standing by…

Music: William Parker :: Corn Meal Dance
November 22, 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):

<?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
November 5, 2007

Iconography of Boing-Boing

For the Boston Globe, Hermenaut’s Josh Glenn got Boing-Boing’s Mark Fraunfelder to decode some of the icons that frequently appear on the world’s most popular blog. Hey, any video stream that can display the face of J.R. Bob Dobbs without going to snow is champ in my book. Hmmm… would love to hear Dawkins or Hitchens comment on the Church of the Subgenius sometime.

October 18, 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
October 10, 2007

Darkwater

Been itchy for some reason to totally scrap the WordPress theme I’ve been using and start from scratch. Tweaking occasionally on versions of the previous theme (which I called “Cheap Thrills” but have never released) for about five years, came across this Darkwater template a few weeks ago and it’s been pecking away at my subconscious since. Made a few tweaks last night and put it up. Just a few more kinks to work out. I’m also going to gradually start using the tagging features built into the WP 2.3 core.

Funny, I’ve been wanting to simplify simplify simplify. Darkwater actually is less complicated visually than Cheap Thrills was, but isn’t exactly the stark white thing I thought I wanted. Ever since reading Joseph Campbell back in college I’ve thought of watery scenes as metaphor for the unconscious. Which is maybe why I found this one irresistible - kind of a dreamtime descent.

Let me know what you think - be honest.

Music: Miriam Makeba :: L’Enfant Et La Gazelle

WP-mass-upgrade

I’ve released the simple shell script I use to batch-upgrade dozens of WordPress installations at once, both on the Birdhouse server and at the J-School. It requires that all WP installations you want to track be subversion checkouts. Probably not useful for very many people, but the topic came up on the uwebd list, so thought I’d put it out there.

Get it here.

Music: Stereolab :: Rainbo Conversation
October 5, 2007

WP -> Facebook

After several years of trying in vain to ignore the Facebook phenomenon, I’ve finally given in and created a profile. Way to go early adopter! After having done the LiveJournal thing for years, and experimenting with Friendster and Orkut and every other new social network that emerged, finally came to the same conclusion pretty much everyone else did - after the thrill of each new SN wore off, it started to feel like there was no there there, and the whole pursuit started to seem pointless. Not to mention the time suck. But I’ve got to admit that Facebook is a different kind of beast. The UI is incredibly clean, the API is wide open and there’s a thriving ecosystem of interesting plugins and custom widgets going on. And it seems to have a staying power the others didn’t have. No guarantees I’ll remain active there, but enjoying playing with it for now, and have already hooked up with an old high school friend I hadn’t talked to for years (classic story, eh?)

Just installed the WordBook plugin for WordPress, which installs a WordPress importer into your Facebook profile. Didn’t seem to pick up any existing posts; let’s see whether it picks up new ones. [Later: Ah yep, creating a new post caused the FB profile to pick up the last 10 or so from Birdhouse - nifty.]

September 25, 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 24, 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
September 5, 2007

Blackmail

The creativity of spammers never ceases to amaze me. Received this overnight, smack in the middle of a dozen spammy comments that made it through Akismet (but not through the moderation layer):

Hello , my name is Richard and I know you get a lot of spammy comments , I can help you with this problem . I know a lot of spammers and I will ask them not to post on your site. It will reduce the volume of spam by 30-50%. In return Id like to ask you to put a link to my site on the index page of your site. The link will be small and your visitors will hardly notice it, its just done for higher rankings in search engines.

I feel so vulnerable, so helpless. I don’t know who to turn to for help. OK Richard, you’ve got a deal!

Music: Steely Dan :: Black Cow
August 25, 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

July 20, 2007

New WordPress Sites

This is becoming (for me) the summer of pushing the envelope with WordPress - bending it to become a full content management system, rather than just a blogging tool. Between work and home, have been converting a couple of sites over the past few weeks - one from an old-school static site, and another from Movable Type to WordPress.

landwater.com represents the environmental and historic preservation law firm Rossmann and Moore - I’ve been working with them since forever. Their old static site (originally designed by baald, who comments here sometimes) has stood up to the years amazingly well, but it was time to move on. Now in WordPress, office assistants there can finally update the site without having to learn Dreamweaver or FTP. I love the way WP pages can become children of other pages. By nesting them, you get a hierarchal URL structure automatically, and can use the workhorse wp_list_pages() function to generate structured HTML lists, which in turn can be styled as CSS fly-out menus. Throw in the My Page Order plugin and non-tech editors can rearrange the hiearchy (and thus the menu system) via drag-and-drop. So elegant.

At work, have been on a mission to get all Movable Type sites converted to WordPress by the end of summer. The first of the two largest projects is pretty much done. North Gate News Online is the publishing arm of J-200, the journalism bootcamp all first-year students endure. The site has been a CPU-sucking Movable Type hog with a hideous design (my fault!) for years; as of today it’s majorly multimedia-enabled WordPress site with its own podcast feed (nothing there yet). This is a soft-launch; all the tech is ready and waiting for the next crop of J-200 students. OK, we’re showing too much roof, but the design is leaps and bounds beyond the old site. Using a ton of plugins to handle Flash, QuickTime movies, embedded audio, image pop-ups, etc. But most impressive is WP-Cache, which gives you the static page performance of MT combined with the dynamic page behavior of WordPress. Poetry.

The biggest WP challenge of the summer starts on Monday - total rebuild of China Digital Times, which has much more sophisticated needs. Looking forward to the challenge.

Music: Leo Kottke :: Blimp