Change is good, but show your work: Here’s a WordPress revisions plugin

A couple of weeks ago I posted a manifesto. I said Web publishers should let themselves change published articles and posts whenever they need to — and make each superseded version accessible to readers, the way Wikipedians and software developers do.

This one simple addition to the content-management arsenal, known as versioning, would allow us to use the Web as the flexible medium it ought to be, without worrying about confusing or deceiving readers.

Why not adopt [versioning] for every story we publish? Let readers see the older versions of stories. Let them see the diffs. Toss no text down the memory hole, and trigger no Orwell alarms.

Then I asked for help creating a WordPress plugin so I could show people what I was talking about. Now, thanks to some great work by Scott Carpenter, we have it. It’s working on this blog. (You can get it here.) Just go to the single-page form of any post here (the one that’s at its permalink URL, where you can see the comments), and if the post has been revised in any way since I published it, you can click back and see the earlier versions. You can also see the differences — diffs — highlighted, so you don’t have to hunt for them.

The less than two weeks since my post have given us several examples of problems that this “show your work” approach would solve. One of them can be found in the story of this New York Times error report over at MediaBugs.

An anonymous bug filer noticed that the Times seemed to have changed a statistic in the online version of a front-page story about where California’s African Americans stood on pot legalization. As first published, the story said blacks made up “only” or “about 6 percent” of the state population; soon after it was posted, the number changed to “less than 10 percent.” There’s a full explanation of what happened over at MediaBugs; apparently, the reporter got additional information after the story went live, and it was conflicting information, so reporter and editor together decided to alter the story to reflect the new information.

There is nothing wrong with this. In fact, it’s good — the story isn’t etched in stone, and if it can be improved, hooray. The only problem is the poor confused reader, who saw a story that read one way before and now reads another way. The problem isn’t the change; it’s the failure to note it. Showing versions would solve that.

Another Times issue arose yesterday when the paper changed a headline on a published story. The original version of a piece about Tumblr, the blogging service, was headlined “Facebook and Twitter’s new rival.” Some observers felt this headline was hype. (Tumblr is successful but in a very different league from the vastness of Facebook and Twitter.) At some point the headline was rewritten to read “Media Companies Try Getting Social With Tumblr.” Though the article does sport a correction now fixing some other errors, it makes no note of the headline change.

I don’t know what official Times policy is on headline substitution. Certainly, Web publications often modify headlines, and online headlines often differ from print headlines. Still, any time there’s an issue about the substance of a headline, and the headline is changed, a responsible news organization should be forthright about noting the change. Versioning would let editors tinker with headlines all they want.

I do not mean to single out the Times, which is one of the most scrupulous newsrooms around when it comes to corrections. Practices are in a state of flux today. News organizations don’t want to append elaborate correction notices each time they make a small adjustment to a story. And if we expect them to, we rob ourselves of the chance to have them continuously improve their stories.

The versioning solution takes care of all of this. It frees writers and editors to keep making their work better, without seeming to be pulling a fast one on their readers. It’s a simple, concrete way to get beyond the old print-borne notion of news stories as immutable text. It moves us one decent-sized step toward the possibilities the Web opens up for “continuing stories,” iterative news, and open-ended journalism.

How the plugin happened: I got some initial help from Stephen Paul Weber, who responded to my initial request to modify the existing “post revision display” plugin so as to only list revisions made since publication. Weber modified the plugin for me soon thereafter (thank you!). Unfortunately, I failed to realize that that plugin, created by D’Arcy Norman, only provided access to version texts to site administrators, not regular site visitors.

Scott Carpenter, the developer who’d originally pointed out the existing plugin to me, stepped up to the plate, helped me work up a short set of requirements for the plugin I wanted, and set to work to create it. Here’s his full post on the subject, along with the download link for the plugin. We went back and forth a few times. He thought of some issues I hadn’t — and took care of them. I kept adding new little requirements and he knocked them off one by one. I think we both view the end-product as still “experimentally usable” rather than a polished product, but it’s working pretty well for me here.

As the author of a whole book on why making software is hard, I’m always stunned when things go really fast and well, as they did here. Thanks for making this real, Scott!

If you run WordPress and like the idea of showing your work, let us know how it goes.


 

Help with a WordPress plugin for published versions

My “versioning for all news stories!” manifesto inspired lots of feedback. A good amount of it was along the lines of, “What are you talking about? How would this work?” I’ve been pointing people to Wikipedia’s “view history” tabs, which are a great start. (I also notice that the Guardian UK now posts, on each article, a story history, which tells you that the article was modified, but doesn’t actually show you the different versions.)

What I’d like to do now is pursue this at the level of a live demo right here on this blog. So I put out a call on Twitter for help in creating a WordPress plugin that would let me expose every version of each post. I only want to show the versions since publication — a rough draft pre-publication should remain for the author’s (and editor’s, if there is any) eyes only.

Scott Carpenter helpfully pointed me to this existing plugin, which outputs a list of all versions of each post.

This is a great start. All I need now is to add a little code to the plugin that gets it to show only the post-publication versions.

I know just enough about PHP to mess around with templates and cut-and-paste code snippets, but not enough, I think, to do this right. Anyone interested in helping out on this little project?

Someday, when this versioning thing catches on and becomes a universal practice, you’ll be able to say to yourself, with a little smile of satisfaction, “I was there when it all began.”


 

A geeky problem with Mac scripting

Here’s what turns out to be the most intractable problem I’ve encountered in my move to OSX as my primary work platform:

For years I used a programmers’ text editor tool in Windows called Ultraedit. It worked great and allowed me to record macros. The most indispensible one, which I used constantly, was for automating the creation of HTML links. I would store the link-to URL in a clipboard, select some link text and start the macro. The macro would magically surround the link text with the proper HTML code to link it to the URL in the clipboard.

I achieved this by
(a) copying the link text to a second clipboard;
(b) typing the <a href=”

(c) pasting in the URL from the first clipboard;
(d) closing the tag with “>
(e) pasting the link text from clipboard #2;
(f) ending the link with </a>

It sounds kinda complicated but it worked beautifully, and Ultraedit’s macro recorder simply “got it.” I created the macro years ago, and its keyboard shortcut became hardwired in my memory.

Now I’m using TextWrangler and, alas, AppleScript doesn’t seem to get it at all. The AppleScript recorder seems to grab the actions at too specific a level — i.e., it doesn’t capture “switch to next clipboard” but records the specific clipboard number; it doesn’t capture “current active document” but records the specific document name that I happen to be using while I’m recording the script.

I was gearing myself up to learn enough AppleScript to try to write the script (or edit a recorded script well enough to make it work). Then I discovered that, perhaps thanks to Snow Leopard upgrade, the entire AppleScript recorder in TextWrangler doesn’t seem to work at all. When I record a script and try to save it I get the following error message: (MacOS Error code: -4960). As far as I can tell, I can’t save any scripts at all, making any AppleScript solution to this problem seem hopeless.

I know, I know, if I had learned emacs years ago I wouldn’t have any of these problems. But I didn’t. I welcome any tips/suggestions! Is there a text-editor for Mac that will make my life easier? (I used to use the full version of BBEdit, and, back in those days, it wasn’t any easier to script than Textwrangler.) Is there some obvious solution I’m missing?


 

Mac life after Ecco

For years I organized my life with the wonderful, now-orphaned and somewhat antiquated Windows outliner Ecco Pro. For me Ecco was versatile enough to function effectively as both a todo-list manager and a repository for random information, scattered ideas and research. It really could do it all.

I’ve always used both Macs and PCs but this year I’ve migrated my main workspace over to OS X. There were many compelling reasons to do this, but I’ve had to struggle with finding an Ecco replacement. (Yes, I could run it on my Mac in a Windows virtual machine, but it’s a bit kludgy, and it’s time for me to move away from this program that, despite the efforts of many devotees, doesn’t look like it will ever be fully modernized.)

So far, it’s looking to me like there is no one Mac application that can serve in both roles (todo list and information organizer). OmniOutliner is a pretty good all purpose outliner, and it has a companion, “Getting Things Done”-based todo list program called OmniFocus. Though I’ve made my peace with OmniOutliner, I have not fallen in love with OmniFocus. It follows the David Allen GTD approach a little too rigidly for me, it has various features I don’t need and it’s missing some that I do want (as far as I’ve been able to tell, for instance, it lacks the ability to make some item vanish until a certain date when it reappears–what I call the “out of my face” tool).

So I’ve begun exploring various combinations of other tools. Right now, it’s Evernote for research/information and Things for todo management. I’m also going to look into Tinderbox, Yojimbo and some other applications that look promising. I know the Mac ecosystem is full of great products that sometimes have only small followings, so if there’s one you’re especially enamored of, do let me know.

I’ve also been playing around with Thinklinkr, a new Web-based outliner. It has one huge plus: It’s got an absolutely top-notch browser interface (it’s the only browser-based outlining tool I’ve found that is as responsive and fast as Ecco on the desktop — bravo for that!). At the moment, though, it’s a somewhat rudimentary tool; it lacks various features one might want, and it looks like it’s being aimed at the (important but different) market for collaborative outlining rather than personal information management. But it’s definitely worth a look if you’re into outlining.


 

iBank failure: reporting problems

Besides Ecco, Quicken is really the last app that I still need Windows for. (Quicken for the Mac is way inferior.) So I thought I’d finally figure out which of the Mac personal-finance contenders would best suit my needs: simple budget and expense tracking on several checking accounts and a credit card or two. All evidence pointed to iBank. I downloaded the program on free trial and checked it out. The register worked nicely, the interface was smooth, and it seemed like importing my 12 years’ worth of Quicken data could be accomplished. So I plunked down the not inconsiderable charge for the program, spent an hour or two figuring out how to avoid having transfers appear twice after the import, and thought I’d solved my problem.

Then I tried to create a report. And the program that had until that moment seemed well-built and -designed turned to sand between my fingers. Report? iBank basically says. What’s that? Oh, you have to create a chart and then you can generate a report? That seems silly — I don’t need a pie chart, it doesn’t tell me what I need to know, but if I have to pay the pie chart tax before I can get to my report, OK! I’ll make some pies! So finally I click the button to make a report and wait for the program to ask me some questions about, you know, which categories and dates and accounts I want to include in the report. But there is no dialogue box. The program grinds through its data and a minute later it spits out a clumsily formatted PDF. Wait a minute; I can customize the chart, and that should then change the report, right? But no, that would be too logical. Whatever I do to the chart, the report is still the same useless, largely unreadable junk.

This is a problem, because, really, the only point to the tedium of entering all these transactions is that at the end of the labor you can click a few buttons and actually gain some insight into where and how you are spending your money. iBank is like a financial-software roach motel: you can get your data in easily enough, but just try getting useful information out the other side!

My guess is that coding up a useful report generator must’ve fallen off the developers’ feature list somewhere along the way and keeps dropping off the upgrades list. Obviously I’m hugely disappointed, particularly since the trial version of iBank doesn’t let you enter more than a handful of transactions, so you never really have the chance to test out the report quality.

I think the next step is to give up on this category altogether and experiment with the online/cloud-based alternatives. Of the available choices, Wesabe, which I’ve begun playing with, and Mint appear to be the likeliest contenders. I’ll let you know how it goes, and welcome any tips and experiences you may have.


 

Ecco in the cloud with Amazon

Late last night — because late night is the time to tinker with software! — I decided to test drive Dave Winer’s recent crib sheet on setting up an Amazon Web Services cloud-based server. Dave called it “EC2 for Poets” (EC2 is the name of Amazon’s service), and I’ve always been a fan of “Physics for Poets”-style course offerings, so — though I do not write poetry — he lured me in.

For the uninitiated, Amazon has set up a relatively simple way for anyone to purchase and operate a “virtual server” — a software-based computer system running in their datacenter that you access across the Net. It’s like your own Windows or Linux box except there’s no box, just code running at Amazon. If you’ve ever run one of those arcade video-game emulators on your home computer, you get the idea: it’s a machine-within-a-machine, like that, only it’s running somewhere else across the ether.

Dave provided crystal clear step-by-step instructions for setting up and running one of these virtual servers. (Writing instructions for nonprogrammers is, as they say in software-land, non-trivial. So a little applause here.) The how-to worked hitch-free; the whole thing took about a half-hour, and by far the longest part was waiting for Amazon to launch the server, which took a few minutes.

But what should one do with such a thing? Dave’s sample installation runs a version of his OPML editor, an outlining tool. That gave me an idea.

Regular readers here know of my dependence on and infatuation with an ancient application called Ecco Pro. It’s the outliner I have used to run my life and write my books for years now. It has been an orphaned program since 1997 but it still runs beautifully on any Win-32 platform; it’s bulletproof and it’s fast. My one problem is that it doesn’t share or synchronize well across the Net (you need to do Windows networking to share it between machines, and I just don’t do that, it’s never made sense to me, as a one-man shop with no IT crew).

But what if I were running Ecco on an Amazon-based server? Then I could access the same Ecco document from any desktop anywhere — Macs too. So I downloaded the Ecco installer (using a browser running on the Amazon-server desktop, which you access via the standard Windows Remote Desktop Connection tool), ran it, and — poof! — there it was, a 12-year-old software dinosaur rearing its ancient head into the new Web clouds:

eccoincloud

What you see here in the innermost window is Ecco itself (displaying some of the sample data it installs with). Around that is the window framing the remote desktop — everything in there represents Windows running in the cloud. The outermost frame is just my own Windows desktop.

This remains very much in Rube-Goldberg-land at this point. Accessing this remote server still requires a few more steps than you’d want to go through for frequent everyday use. (To me it felt like it was about at the level that setting up your own website was in 1994 when I followed similar cribsheets to accomplish that task.) And the current cost of running the Amazon server — which seems to be about 12.5 cents per hour, or $3 a day, or over $1000 a year — makes it prohibitive to actually keep this thing running all the time for everyday needs.

On the other hand, you have to figure that the cost will keep dropping, and the complexity will get ironed out. And then we can see one of many possible future uses for this sort of technology: this is where we’ll be able to run all sorts of outdated and legacy programs when we need to access data in different old formats. Yesterday’s machines will virtualize themselves into cloud-borne phantoms, helping us keep our digital memories intact.


 

Chandler 1.0 ships

When I first began reporting on Chandler for Dreaming in Code at the very start of 2003, there was talk of shipping a 1.0 version within a year. Then, in following years, the project got so bogged down that at times it was hard to imagine it ever arriving at such a milestone.

Well, on Friday, the OSAF team released a 1.0 version of Chandler. At the moment I am too deep in the swamps of blog history circa 2001 to do full justice to this news, but must take note nonetheless.

Chandler, of course, is the personal-information-management application whose story sat at the center of my first book. I last checked in on the project at the start of this year, when OSAF and Kapor parted ways.

It’s been close to six years since Mitch Kapor first announced plans for Chandler, and the application today is quite different from what was envisioned then. But it does fulfill at least a portion of the ambitious agenda Kapor set: It’s fully cross-platform, and, from the user side, it takes a very flexible approach to data. The program was once positioned as a calendar with email and task capabilities, and it’s still got those features, but it’s now presented as a notebook program — it’s “The Note-To-Self Organizer.” You store information free-form and then can organize it according to now/later/done triaging, turn items into tasks and schedule them on the calendar, group data in multiple collections, and share it across the web via the Hub server. I’m looking forward to experimenting more with it.

The OSAF blog post announcement includes some more detail. And James Fallows has a good post up at the Atlantic.