Tag Archives: wordpress

My current WordPress plugins

Because I have a friend who is kick­ing off a new WordPress-powered blog (Hi, Substitute!), I thought I’d list the plu­g­ins I use here at Netninja.com.  I have a whop­ping 32 of them, but many are sim­ple single-purpose things that are likely not of gen­eral inter­est.  My plu­g­ins can be be bro­ken down into a few cat­e­gories:


  • After The Deadline — A spelling and gram­mar checker when writ­ing posts.
  • Akismet — Spam blocker
  • Categories to Tags Converter — I some­times get enough posts with a given tag, that I decide to pro­mote that tag to a cat­e­gory.  This plu­gin lets me do that.
  • Dashboard Links — This is just a sta­tic block of arbi­trary HTML you can put on your admin­is­tra­tive dash­board.  I use it to hold links to met­rics (Google Analytics, FeedBurner, etc.)
  • FeedBurner FeedSmith — Route your RSS through FeedBurner
  • Google Analytics for WordPress — Automatically inserts the magic JavaSript for Google Analytics with­out mess­ing directly with your theme files.
  • Google XML Sitemaps — Generates XML sitemaps for bet­ter Google index­ing
  • Maintenance Mode — Out to lunch, back in 5.
  • OpenID — I use netninja.com as an OpenID server.  This pro­vides that func­tion­al­ity.  It also pro­vides OpenID client func­tion­al­ity, like if some­one wants to leave a com­ment under their Blogger/LiveJournal/Yahoo/whatever account.
  • RSS Footer — A bit of boil­er­plate at the bot­tom of each RSS item, used to help pre­vent spam­mers from har­vest­ing my RSS for link farms.
  • WP Super Cache — A WordPress site with­out this will not hold up after being linked to by Digg, Slashdot, Reddit, etc.
  • Get Comments Count — Comment count as an updat­ing image, so that RSS always has the cor­rect num­ber of com­ments.
  • Sociable — Buttons for folks to like it on Facebook, dig it on Digg, etc.
  • Subscribe to Comments — Allows peo­ple to sub­scribe to com­ments on a given post via email.  This is a lot eas­ier than try­ing to dig up the comment-specific RSS feed.
  • Twitter Tools — Tweet your posts, pull your recent tweets into the blog.
  • Twitter Tools Shortcode — Automatically short­ens the links when you tweet your posts.
  • Twitter Tools nja.me short­ener — I wrote this to over­ride Twitter Tools’ default short­code and instead us my own nja.me ser­vice.
  • Wordbooker — cross-post to Facebook
User Interface
  • Flickr Gallery — I use this to show recent Flickr posts on the home­page
  • Gravatar Hovercards — Fancy dis­play of Gravatar infor­ma­tion
  • Hipster PDA Shortcode — I wrote this to insert some boil­er­plate text at the top of all my Hipster PDA pages
  • List Pages Shortcode — I use this to show recent page updates on the home­page
  • Netninja Custom Meta — I hacked this together to stuff some spe­cific meta tags in all the head­ers
  • New Tag Cloud — The tag cloud on the home­page
  • NuRealm Get Posts — I use this to show the recent blog posts on the home­page
  • Popular Posts — I use this to show the most pop­u­lar posts in the side­bar
  • Post-Plugin Library — Prerequisite for Popular Posts and Recent Comments
  • Recent Comments — Show the recent com­ments in the side­bar
  • Snazzy Archives — Fancy graphic archives.  This cur­rently has a lot of left/right scrolling on the new theme; I’m work­ing on it.
  • WPTouch — All the magic CSS bet­ter iPhone access
  • Yet Another Related Posts Plugin — If you liked this post, you might also like...
At one point, I was using wp-typography and Extra Sentence Space.  The for­mer did some really nice hyphen­ation (though at the expense of cut-and-paste time­times hav­ing weird unprint­able junk in it) as well as con­vert­ing em-dashes and turn­ing reg­u­lar amper­sands into fanci­ness in alter­na­tive fonts.  The later enforced two spaces after a period.  They both sort of ate up a lot of CPU and as much as I liked them, they weren’t worth the extra bump in host­ing costs required to keep them run­ning.  The default WordPress install han­dles smart quotes and con­vert­ing space-hyphen-hyphen-space to an emdash fairly well.
I would also like to point out the new theme I am using.  I finally dropped Thesis as my theme and went with the default twen­tyeleven with a cus­tom CSS.  I’m not 100% happy with it yet, but like its visual and admin­is­tra­tive sim­plic­ity.

One week with the iPad

Please bear with me as I type this review directly on the iPad — on Pages to be copied into WordPress — while reclin­ing on the sofa. Although I have used it in a num­ber of other ways, my intent right now is to get a good feel for using it in this par­tic­u­lar real-life sce­nario. (The result of this test should be toward the end of this report.)

First of all, let me get the obvi­ous out of the way. OMG! It doesn’t mul­ti­task! It’s just a giant iPod touch! The bezel is huge! There’s no key­board! What good is a machine in-between a phone and a lap­top? Netbooks are more use­ful! So these are the var­i­ous crit­i­cisms out there about the iPad — well, besides the dumb name. None of them really mat­ter to me. The size is just fine. In fact, in post-iPad times, my iPhone feels ludi­crously tiny — almost unus­ably so. The mul­ti­task­ing becomes less impor­tant when the inter­face is designed to only show one app at a time (with one excep­tion — I *really* miss not being able to run Pandora in the back­ground, bit I hear that will be fixed later this year). I find that I now only use my lap­top for cre­ative endeav­ors: pro­gram­ming, edit­ing graph­ics, typ­ing long-form text (except for just now), down­load­ing large files, reverse engi­neer­ing, net­work mon­i­tor­ing, and so on. The iPad cov­ers every­thing else now: access­ing Google reader, email, Twitter, con­trol­ling other machines (via SSH, VNC, and VPN), watch­ing video pod­casts (some­thing I never even did on other machines), web brows­ing, and so on.

Lots of peo­ple are ask­ing “what’s an iPad FOR?” With the iPhone, it was pretty obvi­ous: cell­phone, iPod, and Internet com­mu­ni­ca­tor. With the iPad, the answer is less clear. In fact, it’s almost akin to ask­ing what your lap­top or desk­top com­puter is for. My answer may be dif­fer­ent from yours, which may be dif­fer­ent from some­one else’s. My main (orig­i­nal) use-case for the iPad is as a Kindle replace­ment, with a few casual games, video, and audio thrown into the mix. Getting the Kindle last year, for me, was a huge game-changer. I greatly enjoy read­ing, but have never done as much as I wanted to because many of the books I want to read are huge (see also: Anathem). Carrying such books around has been too much of a pain, so I only got to read for short spells at home. The Kindle allowed me to carry such books around in my tiny satchel with­out a sec­ond thought about size and weight. My intent for the iPad was to be a bet­ter Kindle. You see, the Kindle is great for straight­for­ward lin­ear texts like nov­els, but any sort of skim­ming, brows­ing, or cross-referencing (e.g. tech­ni­cal doc­u­men­ta­tion) is not speedy enough to be use­ful on Amazon’s device. For more of my iPad vs. Kindle thoughts, see my pre­vi­ous arti­cle on the iPad, Kindle, and DRM.

I can hap­pily say that the iPad exceeds my expec­ta­tions as an ebook reader. My ini­tial worry was that the back­lit LCD screen, com­pared to the Kindle’s e-ink dis­play, would be too harsh on the eyes over long peri­ods of time. This turned out to not be the case. It is just fine, espe­cially when you adjust the screen con­trast (which is avail­able directly in the reader appli­ca­tion). Admittedly, I no longer have the nos­tal­gic “read­ing under the cov­ers with a flash­light” that I had with the Kindle’s screen, but I think I can live with that.

I find that I can prop it up in the kitchen and watch short video pod­casts while prep­ping din­ner. I never really did any­thing like that before and am glad to be doing it now. I have a big back­log of TED Talks videos that my com­puter has been col­lect­ing, but which I have just never got­ten around to watch­ing. The iPhone felt too small and the lap­top just did not feel like the right place — I kept want­ing to mul­ti­task and would stop pay­ing atten­tion to the video.

The games are great, Netflix stream­ing is amaz­ing, and I found I could (very awk­wardly) build up a spread­sheet a few nights ago for Kim’s com­pany. Building the spread­sheet was a lit­tle too awk­ward to be pro­duc­tive, but I can cer­tainly pic­ture a sce­nario (prob­a­bly not in my life, but in someone’s) in which a com­plex spread­sheet is imported and then spe­cific num­bers are plugged into it in the field. Writing long-form text really is quite com­fort­able, I now real­ize. The key­board in land­scape mode is just a tad smaller than most lap­top key­boards and (with the assist of auto-correction) I can touch-type pretty darn fast.

Now, the bad. The iPad does not feel like its own minia­ture stand-alone com­puter. It feels like it *should be* and is really try­ing hard to do so, but it really can­not be used with­out being fre­quently teth­ered to a desk­top or lap­top com­puter. I don’t mean teth­ered in the cool wire­less con­nec­tiv­ity way that you can tether a lap­top to a cell­phone to get wire­less Internet. Nor do I mean teth­er­ing in the way that you can pair wire­less head­phones to a com­puter or media player and walk around the room. I mean teth­er­ing in a bad way, as in the only use­ful way to get the files you have edited in and out of the iPad is to hook up the USB cable. Not only that, but before you can even use it, it has that famil­iar iPhone “con­nect to iTunes” graphic to acti­vate — so for­get being able to send one to Mom or Grandma as a replace­ment for a pri­mary com­puter. It needs a pri­mary com­puter to turn it on for the first time.

Getting files in and out of the iPad is awk­ward at best. Some apps do sync­ing “to the cloud” and sync against servers on the inter­net. For instance, Evernote and the Amazon Kindle app do this. This cer­tainly seems the eas­i­est route, but very few apps sup­port this kind of sync­ing because it typ­i­cally requires a big infra­struc­ture behind the scenes. Other apps require you to run a lit­tle server on your desk­top or lap­top. When you launch the iPad app, it sees the server and let’s you sync against it. For me, this works out extremely well. It allows me to sync against *any* local machine run­ning the server app. Examples of this include Comic Zeal, iAn­no­tate (a PDF reader), and 1Password. Many oth­ers require you to use an awk­ward fea­ture built into iTunes that lets you drag-and-drop files into and out of a nearly hid­den bit of the iTunes win­dow. They then trans­fer in and out of your iPad when you sync it to the com­puter. This requires you to use only the one machine you are sync­ing your iPad appli­ca­tions against to trans­fer files. You can use no other machine on the planet to copy files into and out of the iPad for appli­ca­tions that syn­chro­nize only via iTunes. This includes iBooks, Numbers, and Pages. iBooks is a lit­tle unique in that you can buy books from the iTunes store (how I imag­ine most peo­ple are fill­ing up their book­shelf), but there is no easy way to trans­fer in a per­son­ally cre­ated epub book or inde­pen­dently pur­chased one (e.g. from O’Reilly) with­out teth­er­ing to your main iTunes machine. Now, some files you can play the email game with. Mail.app will detect word pro­cess­ing doc­u­ments and spread­sheets and lets you import them into Pages and Numbers. Those two apps will even let you email doc­u­ments (under 10 megs in size), which I guess is a sort of export. It even sort of works, but feels more like the old-school “who has the lat­est ver­sion of this doc­u­ment?” game from back when LANs were rare and you kept around 20 ver­sions of the same doc­u­ment with names like report.doc, report2.doc, report2-latest.doc, report2-latest-newer.doc, report2-final.doc, report2-final2.doc, and report2-final-latest.doc. Things get out of hand if you don’t man­u­ally keep track of doc­u­ment revi­sions. This email scheme does not work at all with epub files. They just won’t open iBooks. There is no way to pur­chase a tech­ni­cal book directly from O’Reilly and down­load, email, or oth­er­wise get it into the iPad with­out sync­ing against your one-and-only iTunes.

Something tells me that in the full­ness of time, these wrin­kles will get ironed out by enter­pris­ing devel­op­ers and/or by Apple itself. Although I have used up some big para­graphs describ­ing them, and they are awk­ward when they appear, the truth is that these com­plaints arise very rarely. They are a minor blem­ish on an over­all expe­ri­ence that is absolutely fan­tas­tic. I started out in the “there is pos­i­tively no place for that thing in my life” camp when the iPad was first announced and, in recent weeks, migrated through “that’s kind of a cool idea” to “I use it all the time.” Is it the right device for you? I can’t answer that any more than I can say which lap­top or desk­top is best for you. That is a deci­sion you must make for your­self.

P.S. It looks like i can­not copy from Pages and paste into the WordPress iPad client. For some rea­son, I just can­not get the paste bub­ble to pop up. I can paste it just fine into the web-based edi­tor, though. It’s not as speedy as the native app, but also not as buggy.

Posted in: Dear Diary Gadgets

The simplicity of WordPress upgrades

One of the com­plaints I have heard about not run­ning your own WordPress instal­la­tion ver­sus going with a man­aged ser­vice like Blogger or LiveJournal is that it is dif­fi­cult to main­tain. Specifically, that it is dif­fi­cult to upgrade. This is why, about six months ago, a worm went around and took down a bunch of people’s blogs. They failed to upgrade and the virus took advan­tage of a known secu­rity hole in an old ver­sion of WordPress. Admittedly, MUCH older ver­sions of WordPress required more man­ual work to upgrade, but ver­sions from about the past year or two (plenty of time for those out-of-date folks to have upgraded and pro­tected against the worm) have had two-click upgrades.

I upgraded over the week­end and took video of it. The whole process took 23 sec­onds — and that is only because I paused to look at a plu­gin I did not want to upgrade yet. (I have made man­ual changes to one plu­gin, so an upgrade of that plu­gin takes a bit more work — but my sit­u­a­tion in this regard is atyp­i­cal).

From WordPress 2.9.1 to 2.9.2 in 23 sec­onds! The moral of the story is to not fear the main­te­nance of WordPress. Once installed, it is a won­der­ful flex­i­ble con­tent man­age­ment sys­tem capa­ble of blog posts, sta­tic pages, and just about any­thing else if you can find the right plu­gin.

Posted in: Code Dear Diary

Snazzy-Archives, Filtered

Note that this post is a dupli­cate of the Snazzy-Archives, Filtered project page, here at Netninja, and copied into the blog. It has been inserted here to make it part of the blog time­line, RSS, and what­not so that it gets noticed. Comments are dis­abled on this post but enabled on the project page, so go there to com­ment.

Earlier this year, I got seri­ous about the post archives here at Netninja.com. I added meta­data for sev­eral years worth of posts. Partly this was me being anal-retentive and partly this was to facil­i­tate bet­ter search­ing, brows­ing, and match­ing related posts. This was a suc­cess­ful project, but exposed what I believe to be a defi­ciency in WordPress: Although search­ing and serendip­i­tously falling into related posts is easy, there is no easy way to browse sev­eral years worth of posts.

I ini­tially used Clean Archives Reloaded for brows­ing old posts. As I under­stand it, Clean Archives Reloaded was writ­ten by a Portland local. This worked fairly well, but didn’t play well with the wp-typography plu­gin I use. Wp-typography takes text and replaces reg­u­lar quotes with smart quotes, pro­motes com­bi­na­tions of dashes to fancy em– and en-dashes and what­not. With the size of my archives, the web server croaked due to mem­ory usage. I patched wp-typography to ignore this page, but every time I upgraded the plu­gin, my changes would get over­writ­ten and I would inevitably for­got to re-edit the rel­e­vant files, leav­ing my archives bro­ken.

I finally gave up and started explor­ing other options. Snazzy Archives looked rather nifty. I tried it out and it... mostly worked. Due to the size of my archives, it took for­ever to gen­er­ate the page. The browser chugged along try­ing to dis­play it. I would often get Error 500 from my web host due to the server load of gen­er­at­ing the page.


This plu­gin uses a short­code to invoke: [ snazzy-archive ] (with­out the spaces — I did not want to invoke the archive here). You sim­ply cre­ate a page, add that short­code to the page, and it gets replaced by the fancy archive.

What I ended up doing was hack­ing the plu­gin so that the short­code takes an optional “fil­teryear” argu­ment. If miss­ing, all years are dis­played. If present, the results are fil­tered to just that year. In this way, I can cre­ate sep­a­rate pages for 2001, 2002, 2003, and so on. This makes the ren­der­ing, dis­play, and pre­sen­ta­tion much more man­age­able. It can then be invoked with: [ snazzy-archive filteryear="2008" ]

The patch is down below, for those that care. I will be sub­mit­ting it to the author soon. My next step is to fig­ure out the CSS enough so that the miss­ing right-hand mar­gin on the archive pages can return.

For the exact patch and to leave com­ments, please go to the project page at http://netninja.com/projects/snazzy-archives-filtered/.
Posted in: Code Projects

Pardon our dust –or– Netninja on Thesis

constructionAs you can tell by the ubiq­ui­tous ‘90s-era non­trans­par­ent ani­mated shov­eler graphic at right, Netninja.com has been under con­struc­tion this week­end. Everything looks fine now, but this is a warn­ing that there may still be some loose cov­er­plates hid­ing spark­ing wires. You see — today, I installed the Thesis theme engine for WordPress. What does this mean? For most folks, it means almost noth­ing. There is a slightly new look with a bit more spit-and-polish. Blog posts were shuf­fled to the /blog sub­di­rec­tory (http://netninja.com/blog/) and the website’s root (http://netninja.com/) serves as a bet­ter table of con­tents. Beyond that, lit­tle has changed.

“So, then, why’d you change?”

For this, we need to take a lit­tle his­tory les­son. Back when I started exper­i­ment­ing with WordPress in lieu of LiveJournal, about 3 years ago, I found a theme I liked. The term “steam­punk” was not in pop­u­lar use yet, but I liked the style and found a great free wood-and-brass WordPress theme. As WordPress matured over the years, releas­ing bet­ter ver­sions with more fea­tures and fancier user inter­faces, I dis­cov­ered the dirty secret of most free themes:

The major­ity of free themes are aban­don­ware, cre­ated once by a web designer for a one-off site or to expand her port­fo­lio and are never looked at again

As WordPress matured, the free theme that I was using did not. The fail­ure mode for this theme, and most oth­ers, was non-graceful. Each newly added fea­ture brought more quirky behav­ior from the theme. I finally aban­doned it, unable to find a suit­ably themed replace­ment, in favor of cre­at­ing my own. I started with the theme that came with WordPress and mucked around with its stylesheets using Firebug until I arrived at some­thing that looked rea­son­ably like the theme I had pre­vi­ously used.

This, too, worked great for a while. Then WordPress released a newer ver­sion with a newer base theme. As I recall, the biggest dif­fer­ence was with nested com­ments, but there were a sig­nif­i­cant num­ber of minor dif­fer­ences as well. I once again had to go through the exer­cise of migrat­ing my CSS changes from the old style to the lat­est. I had used that for a while and have been happy, but I now under­stand that ver­sion 2.9 is on the hori­zon and do not wish to repeat that exer­cise.

With that his­tory, I can now answer “why did you change to Thesis?” I run a num­ber of plu­g­ins on this site. Several of them have PayPal dona­tion links. I have even donated to a few of them. And yet, I see no themes with such dona­tion links and few (if any) free themes with an active, sup­port­ive, user­base. I have peeked at a num­ber of for-pay themes out there, but Thesis seemed the most robust and upgrad­ably hack­able (that is, hack­able with the least amount of effort each time WordPress and/or Thesis gets updated). Given the choice between spend­ing a lot of time fix­ing my theme each upgrade, not upgrad­ing, or shelling out some money for a pro­fes­sional theme, I chose the pro­fes­sional theme.

P.S. I know a lot of peo­ple hype the SEO aspects of Thesis. I appre­ci­ate that out of the box Thesis does its due dili­gence like putting the post key­words in the HTML key­word meta tag (some­thing that the default WordPress theme, sur­pris­ingly, does not do). However, I am not an SEO nut and am not excited by all the SEO options attached to each post.

P.P.S. One of the most vocal Thesis sup­port­ers in the PDX com­mu­nity is Aaron Hockley of Social Photo Talk. I am not a pho­tog­ra­pher, but I have fol­lowed his posts on Social Photo Talk because many of them make good blog­ging sense for non-photographers. If you click over to that blog and get Thesis through his yel­low affiliate-link ban­ner over there, I’m sure it will make him happy.

The psychology of WordPress upgrades & plugins

WordCamp Portland was last month. Although WordPress 2.8 has made upgrad­ing one-click easy, there was a lot of shared sen­ti­ment about upgrades and plu­g­ins. These beliefs boil down into two groups and are sum­ma­rized with the fol­low­ing state­ments:

  • I don’t run WordPress with any plu­g­ins what­so­ever because an upgrade to the core of WordPress could break a plu­gin and mess up my site.”
  • I don’t upgrade WordPress because I am not sure which plu­g­ins will break.” This includes the unspo­ken corol­lary that the site is left vul­ner­a­ble to attack if any given upgrade is security-related.

I do not know what other folks are using plu­g­ins for, but on my site, they are grouped into “must-haves” and “fluff.” If any of the must-have plu­g­ins break, the upgrade is a deal-breaker. I won’t do it. If any of the fluff breaks, I could prob­a­bly deal with it. I would not be happy, and would anx­iously be await­ing an upgrade to the bro­ken plu­gin (or research­ing alter­na­tives that do work), but the site would not be down. The trick is to run very few must-have plu­g­ins and make sure they are from reli­able sources that seem to have enough devel­op­ment resources to test against betas and upgrades. That last bit is a tough call for a new­bie — how do you gauge a source’s reli­a­bil­ity? — but it becomes eas­ier with time and expe­ri­ence.

To demon­strate this, let me share with you my must-haves as well as the col­lec­tion of every­thing else. You will see that there are really only two plu­g­ins that, if bro­ken, would badly mess up my site. Those plu­g­ins come from, what seems like to me, trust­wor­thy, reli­able, hard-working sources — sources that would not be a let-down dur­ing big upgrades.

My Must-Haves

These are the must-have plu­g­ins I am run­ning on my site. Your list may vary.

  • Akismet — This is the canon­i­cal spam blocker.
  • OpenID — This allows me to log into other sites using my Netninja login.

Basically, my site (and my access to other sites) would not be func­tion­ing opti­mally with­out either of these two plu­g­ins. I am not wor­ried about Akismet break­ing in an upgrade because the pub­lisher is WordPress. I am also not wor­ried about the OpenID plu­gin break­ing dur­ing an upgrade because it seems to have an active devel­oper com­mu­nity behind it. There are fre­quent bug­fixes and fea­ture enhance­ments, such that I feel they are keep­ing on top of the WordPress 2.9 beta test­ing.

My Must-Haves With Workarounds

These would have gone in the must-have group, but they auto­mate tasks that I am con­fi­dent enough in my skills to man­u­ally per­form, if needed. Of course, I would pre­fer the auto­mated way.

  • Bad Behavior — Another spam blocker. This one is less WordPress-specific and is just a WordPress-plugin-wrapper around a more generic spam-bot catcher. If I had to, I could just fall back to using only Akismet.
  • Maintenance Mode — This plu­gin shows a nice lit­tle mes­sage stat­ing that the site is down for main­te­nance. Previous to this, I would man­u­ally tweak the .htac­cess file to enable HTTP-auth pass­word secu­rity, with the mes­sage “down for main­te­nance,” but this plu­gin is more clean.
  • Twitter Tools — New posts get tweeted. I could always do this man­u­ally or not at all.
  • WP Super Cache — I do not expect to get Slashdotted or Dugg-effected any time soon, but if I did, I can always fall back to the good ol’ .htac­cess redi­rect to a sta­tic file rou­tine. A bit of a pain, yes, but do-able. If you run a higher-traffic site than I, you would prob­a­bly want this in the above sec­tion.


Everything in this sec­tion is icing on the cake. It is UI fluff that makes me happy, but does not func­tion­ally effect the site.

  • After The Deadline — This plu­gin checks spelling and gram­mar. Firefox itself has an inte­grated spellchecker, and I often find my gram­mar is okay.
  • Breadcrumb — This pro­vides a nav­i­ga­tional set of bread­crumbs across the top of “pages” (as opposed to “posts”), show­ing the cat­e­gory hier­ar­chy back to the top.
  • Clean Archives Reloaded — This is a fancy way to get to the archives, but I find peo­ple typ­i­cally arrive at archived pages via search.
  • Extra Sentence Space — I am often anal about print, includ­ing text pub­lished on the inter­net. Something that has always bugged me about HTML is that mul­ti­ple spaces get coa­lesced into a sin­gle space. A sen­tence ends in two spaces! Period! Space-space! This plu­gin pre­vents that double-space-coalescing, tak­ing the two spaces I type into the WordPress edi­tor and mak­ing them two spaces when you read the post.
  • FeedBurner FeedSmith — This plu­gin pro­vides sta­tis­tics for the RSS feed. It’s nerdy and nice to have. I should prob­a­bly review the stats more than I do.
  • Get Comments Count — This plu­gin dis­plays a dynamic image con­tain­ing text like “3 com­ments” in the RSS feed. The RSS con­tent itself stays the same, but the linked image updates to dis­play the num­ber of com­ments. This is mainly a nicety for when the feed gets syn­di­cated to LiveJournal.
  • Google Analytics for WordPress — This inte­grates the blog to my Google Analytics account. That’s another thing I should prob­a­bly be check­ing more often.
  • Google XML Sitemaps — This pro­vides Google with a nice lit­tle con­cise descrip­tion of the web­site, so it does not have to crawl the entire site as often.
  • RSS Footer — To dis­suade con­tent from being stolen by spam­mers and posted on a fake linkblog, this plu­gin pro­vides attri­bu­tion and a link back at the end of each RSS arti­cle.
  • StatPress Reloaded — You would think I had enough stats already. This is a sta­tis­tics plu­gin I actu­ally (some­times) use, pro­vid­ing inte­grated stats and real­time view­ing of traf­fic. It is not as com­pre­hen­sive as Google or Feedburner, but this one I actu­ally remem­ber to check occa­sion­ally.
  • Subscribe To Comments — This allows com­menters to receive email fol­lowups.
  • Wordbook — Most of my LiveJournal and MySpace friends have moved on to Facebook. This updates Facebook with a lit­tle blurb each time I post some­thing new. I may actu­ally drop this soon. At one point in the past Wordbook would include an excerpt and thumb­nail (if your post con­tained a pic­ture), but it is strictly the post’s title now. Twitter-Tools informs Twitter using just the title and a link to the blog post, and my Twitter posts get pushed to Facebook, so Wordbook in its cur­rent form pro­vides very lit­tle any­more.
  • WPtouch iPhone Theme — This is a dynamic theme for the iPhone. If some­one con­nects with their iPhone, this theme auto­mat­i­cally kicks in and makes the user expe­ri­ence opti­mized for that screen and input method.
  • Yet Another Related Posts Plugin — Do you see those “related by key­word” links below? This plu­gin auto­mat­i­cally gen­er­ates those.


I really have very lit­tle expe­ri­ence with themes and upgrad­ing. I started with WordPress 2.6 or 2.7 and a slight cus­tomiza­tion to a free­bie theme. When WordPress added threaded com­ments, they were not prop­erly reflected in my theme, so I just took the basic crappy theme (you know: black text on a white back­ground with that rounded blue rec­tan­gu­lar header at the top, that screams “I did not spend any time cus­tomiz­ing WordPress”) and played around with the CSS file until I got some­thing resem­bling what you see now. Presumably, when WordPress 2.9 arrives, if there are any UI changes, I would have to do the same, which is going to suck.

I would imag­ine if you shelled out money for a pre­mium theme like Thesis, then you should expect a level of qual­ity and ser­vice such that upgrades will “just work.” But again, I have lit­tle expe­ri­ence in this realm and will have to yield to oth­ers’ opin­ions.


To reit­er­ate what I said above, make a list of your plu­g­ins. Cross out any­thing that is not a must-have. You are then left with a list of “if this breaks I’m screwed” plu­g­ins. Is there any­thing on that list that WordPress could not do before, but now includes as inte­grated func­tion­al­ity? Do those plu­g­ins come from reli­able sources or can you not tell? Perhaps stop by Beer & Blog and ask. (Ironically, I’m pimp­ing Beer & Blog here, but have never been there myself due to my Friday sched­ule.) If they do come from less reli­able sources, are there alter­na­tives with sim­i­lar fea­tures but do come from reli­able sources?

Posted in: Code

Tagging the 2001 archives

I have had a blog for a while — since 2001, to be exact. It was not always WordPress, but started out hosted on LiveJournal. In April of 2007, I migrated the posts (but not the com­ments, unfor­tu­nately) to the new sys­tem. The migra­tion went as best as could be expected, but I later learned that a lot of for­mat­ting was busted. Arbitrary line­breaks were inserted through­out posts. Paragraph breaks were miss­ing. There was not even a 1:1 map­ping between the two sys­tems. LiveJournal had per-post user icons that WordPress does not under­stand. WordPress has cat­e­gories, which are absent from LiveJournal. Since that import, both sys­tems added tag­ging capa­bil­i­ties, but none of the older posts con­tained tag data.

Overall, this is a minor back­ground annoy­ance — but I found it resur­fac­ing more fre­quently. Specifically, every so often I would go back to look at the [pre­ten­tious and awk­ward] first post so that I could tell peo­ple how long I’ve been blog­ging. The whole lack of para­graphs and for­mat­ting in that post kept eat­ing at me, espe­cially con­sid­er­ing it should have been for­mat­ted like a mock screen­play. So I fixed it. And then I went to the next entry and fixed that one. And so on.

This week­end, I fixed up all of 2001 (which is only a few months because I started blog­ging in August). It is entirely anal-retentive. The for­mat­ting and adding of tags and cat­e­gories is not much of a value-add to the site, but it does make me happy know­ing that they are prop­erly orga­nized and cat­a­loged. Now that I have done 2001, I guess I should prob­a­bly con­tinue onward into 2002.

Randomness: The Goth Bus, Bad Bologna, DTV, Mice, and my new WordPress theme

GOTH Bus. The photo is a lit­tle blurry, but every time I see “60TH” on the bus mar­quee, I see it as “GOTH.”


Fake Bologna. Last night we had some soy bologna out as an hors d’oeuvre’s spread amongst cheeses, greek olives, apples, and crack­ers (actu­ally, diges­tive bis­cuits, if you want to get fancy.) The fake-bologna smelled a lit­tle nasty and never got touched. It acci­den­tally got left out all night and was so nasty that not even the cats touched it as a mid­night snack. I like soy and tofu prod­ucts, but really dis­like when they pre­tend to be meat.

Digital Television. Earlier in the week, we got the DTV coupons from the FCC for a dig­i­tal TV con­verter box. If the gov­ern­ment is hand­ing out free money, I may as well take advan­tage. Sure, a $40 coupon is not quite a billion-dollar bailout, but it’s some­thing. We have a top-of-the-line TV. Well, it was top-of-the-line back when I bought it in the late 80s or early 90s. The 32 inch screen was about as big as you could get with­out going to pro­jec­tion. It was one of the first with picture-in-picture (which, I believe, got used exactly once–during the Y2K New Years Eve.) It, of course, does not have a dig­i­tal tuner.

People that know me know that I’m [prob­a­bly a lit­tle too] fond of say­ing that I don’t have the TV hooked up to any broad­cast medium. The Mac Mini goes to the TV and serves as the DVD player and video file player. There’s no cable and not even an antenna. To get this DTV box hooked up, I’d have to get an antenna. That’s pretty low on my pri­or­ity list. I’m not fond enough of com­mer­cial tele­vi­sion to want to go out and buy an antenna. So the prac­ti­cal upshot of all this? The con­verter will prob­a­bly remain in its card­board box and col­lect dust for a few years. But at least I’m ready for the DTV switchover!

Meeses. Yesterday, Ebenezer got a toy mouse that’s a bit more real­is­tic than most other toy mice. While he gen­er­ally liked it, he really dis­liked it when I made it ride him like a jockey.

IMG_5314 IMG_5312 IMG_5309

Later in the evening, when Kim let Norman in, we didn’t notice he car­ried in a lit­tle friend. When he was in the cor­ner growl­ing to him­self, I didn’t see that he was alone–I fig­ured he was play­ing with other cats. It was only a lit­tle later that I noticed some­thing was a lit­tle off. The toy mouse he was car­ry­ing did not look familiar–it was not the bright color of most of the other toy mice. It was only after he dropped it, it ran across the liv­ing room, and he caught it again that I real­ized he brought in a real mouse.

WordPress Theme. I’ve been sport­ing the same WordPress theme since before ver­sion v2.6. It still works, but had become a bit crusty in places. For instance, it did not under­stand the thread­ing that came about in v2.7. I ended up re-implementing it by mak­ing CSS tweaks to the default WordPress style. This should mean that I’m about as future-proof as I can be. Hopefully, you won’t notice much dif­fer­ence or any major issues. Like many things, it remains untested under any ver­sion of IE. I just do not have the resources or incli­na­tion to test against it; my main blog “audi­ence” is friends and fam­ily, and they use Firefox and Safari.

Posted in: Dear Diary

Migrating from LiveJournal to WordPress

corporate AmericaAs many peo­ple no doubt are aware: LiveJournal laid off over half their staff. 20 out of 28 peo­ple were let go. Consequently, I have read a lot of people’s LJ blog entries that are hys­ter­i­cal freak­outs. I’m not sure it’s time for peo­ple to freak out yet, but it prob­a­bly is time to think about a pos­si­ble Plan B. The LiveJournal sit­u­a­tion isn’t like JournalSpace’s sud­den and instant clo­sure because they for­got to keep back­ups. If any­thing, it will be a slow spi­ral toward death. They’re likely to cut fea­tures to min­i­mize band­width and resource uti­liza­tion. They’ll likely increase the vis­i­bil­ity and inva­sive­ness of ads to increase rev­enue. They may get bought by some­one who can fig­ure out how they can make a profit (though it didn’t hap­pen with Six Apart nor the Russian com­pany.) It won’t be a sud­den clo­sure, but a slow tran­si­tion to being less and less usable.

It used to be that only peo­ple who are a lit­tle more techie could get a domain name and install a blog such as WordPress. These days, most hosts (I know of Dreamhost and GoDaddy for sure) have one-click installs that do all the techie work for you. I might also add that, once installed, WordPress has an option to import all your posts from LiveJournal. This makes a good backup of your con­tent (if not the com­ments them­selves.) The com­ments take a bit more techie work to import.

Once you’re sit­u­ated on your WordPress blog, there is a great lit­tle plu­gin that lets you cross-post new blog entries on your WordPress site over to LiveJournal. It is quite con­fig­urable and lets you enable com­ments on LJ or dis­able com­ments (forc­ing peo­ple to fol­low the com­ment links back to your home jour­nal for post­ing.) I ran this plu­gin for a lit­tle while, but gave up on it for esthetic rea­sons.

Migrating from LiveJournal to WordPress is quite easy. I did it back in April of 2007 when every­one was hys­ter­i­cal over LiveJournal for polit­i­cal (as opposed to the cur­rent finan­cial) rea­sons and haven’t looked back. I’ll gladly answer any migra­tion or gen­eral WordPress ques­tions folks might have.

Alternately, I’ve seen peo­ple start blog­ging over on social-networking sites like Facebook and MySpace because they have the pri­vacy and friend-lock func­tion­al­ity sim­i­lar to LJ, but these are plat­forms that are even less open than LiveJournal. With your own blog, you have own­er­ship of the data and can use and export it how­ever you want. LiveJournal has gen­er­ously added an export func­tion that lets you grab your entries and com­ments. Facebook and MySpace, on the other hand, leave your con­tent trapped on their servers. There is no easy way to extract it. Caveat emp­tor.

Posted in: Dear Diary

WordPress Problems

I thought I had acci­den­tally blocked myself from post­ing on my very own site, mainly because I had recently done some wmapping of a cor­po­rate site (hi, Phaedra!) and thought I got my IP on a black­list because of it. The Bad-Behavior plu­gin I use on this WordPress instal­la­tion does a great job at block­ing spam­mers, but was also block­ing me! I added my IP to the whitelist and promptly for­got until this morn­ing when Substitute pointed to a new release of Bad-Behavior. I guess one of the sites BB checks was return­ing a con­stant false-positive, so *every­one* run­ning it was get­ting locked out of post­ing. I just upgraded and removed myself from the whitelist, so assum­ing this posts cor­rectly, then all has been fixed.

So if any­one was unable to com­ment in the last few days because Netninja thought you were a spam­mer, that’s why.