WordPress Usability Issues

After moving from s9y to WordPress, I encountered a few usability issues that I’d like to highlight. While WordPress has a very neat color scheme, large letters and in general does quite a good job of keeping everyone happy, there were a few issues that I stumbled across.

  • The “Save” button is only available at the right side of the post. When entering text in a post, the Save/Publish buttons are placed just to the right of the text field where you write your post. This is fine if I only were to save my post and be done with it, but usually I go through several sets of plugins, tags, categories etc. for the post. After doing this, my eyes and focus are on the bottom of the post column, and I have to searching for how I’m going to get my post posted. This still happens after writing several posts in wordpress.

    How about having just a save and publish button that replicates the function in the rightmost column on the bottom too?

  • After logging into the admin interface, the “Right now!” header with “write a page” and “write a post” is in a reddish (dark orange) background. Red should indicate errors, not “start here, do this!” as the current meaning is. I also wrote a post as a page once, as my eyes just read “write a post” for the first button. I’ll admit that that was me, but as I’ve learnt over the years, if I’m having trouble doing stuff, others will have too. “They’ll figure it out” means they never will.

    How about changing the color of the bar, and instead making the “Write a new post” link to a button all by itself?

    The “Write a Page” button could instead be moved beneath the other button to signify lesser importance. (just noticed that in the “create a new post” page, the bold button is to the right, the opposite of the first login page. Inconsistency is never good.)

  • I registered for an account at WordPress.com to receive my Akismet API key. After entering my details, I got a page with really large text telling me what my username and password was. If I were sitting at a computer lab or at work, people three rows behind me could probably see both my password and my username. I know my password, that’s why I’m writing it two times when registering (.. and then it only shows as ****** as usual…).

    Remove the password from the display page, and we nerds won’t be scared.

    (Am I the only one who finds it a bit akward to see their own password in clear text?)

  • When setting up the text on the right side of this blog, I used a simple “Text” widget from the regular wordpress repository. Works great, but it also have a few usability quirks. I entered my text, and clicked “Change”, and went happily along with my usual business. But the text never changed. Turns out there’s a “save” button further down (which was not visible when the Text widget was expanded). Unless you also press save, the text is actually not changed (even though pressing “Change” indicates that it should be changed).

    You already have a “cancel” link in the upper right corner, but that should probably be placed where “remove” is placed now. “Change” and “Cancel” has opposite meanings but work together, so they should be placed close to each other. Now you have two functions (store the post, don’t store the post) which are shown diagonally across from each other, in completely different context.

    Make the “Change” button actually change the text, and if needed, add an undo mode instead.

  • The last issue is an issue I had with the WordPress.org website. Yet again they use red buttons to indicate “download this!” links. While they do stand out neatly, a friend of mine had trouble actually finding the download link. But it’s right there, in the middle of the page with large red letters. But red isn’t a good color to indicate something we want, and it signifies more “HELP HELP EVERYTHING HAS GONE BANANAS!” than “eeyh! i want to start a new and better blogging life!”.

    My problem was something similiar, but I were lucky enough to already have downloaded WordPress. When trying to install the Highlight Source Pro Plugin for WordPress, I couldn’t for the love of <insert your choice of higher power> find the download link. Guess why? It’s placed as a red button, out to the right over the information about the plugin. I think my mind expected to find passive information there, not a download link. I searched the page visually four or five times trying to find a way to download the plugin, but my mind simply wouldn’t get it. I ended up going to the homepage of the plugin and clicking the “download” link there, which simply triggered the download from wordpress.com.

    Add a download-link in the menu at the top about the plugin and add a download button/link at the bottom together with the tags for the plugin.

    (after reading about the plugin, you usually want to download it or move away, the last option you’ll just use your back button for or scroll to the top to find something else on the same site).

I’m by no means an usability expert, but these were just my small annoyances when trying to use WordPress from scratch. I’ve tried it out a couple of times before, but this is the first time I’ve installed the 2.5 branch.

The Story of Migrating From Serendipity (s9y) to WordPress

As I posted a couple of days ago, I’ve moved the blog from Serendipity to WordPress. The reasen for this was detailed in the other post, as I simply weren’t too happy about how s9y worked in regards to pingbacks/trackbacks and the general quality of the code. Anyways, this is a general post for those who wish to make the same move, and are wondering about how.

After installing WordPress, delete all the existing posts in the database and reset the AUTO_INCREMENT value (needed if you want to keep your old links working). If you do not do this, your ID values may be skewed by 2 or more. Download and install the Serendipity importer for WordPress. After installing it you’ll have a new option under “Manage” -> Import that enables you to import your posts from s9y. Do the import, and check that your posts got the same IDs as they had under s9y.

Then you’ll have to do some fiddling with the .htaccess file, so that mod_rewrite knows about your old URL scheme. These rules worked for my installation of s9y, your milage may vary (and please, if you find any problems, post a comment or a pingback to your fixes). Add the following lines together with the existing WordPress rules:

RewriteRule ^archives/([0-9]+)\-[a-zA-Z\-_]+.html$ /index.php?p=$1 [L]
RewriteRule ^feeds/index.rss2$ /feed/ [L,R=301]
RewriteRule ^feeds/index.rss1$ /feed/ [L,R=301]
RewriteRule ^feeds/index.rss$ /feed/ [L,R=301]

This should also keep most of the RSS-readers out there happy, but you might want to change the feed addresses if you have several different formats of the RSS available. This does not include the category/ etc. links from s9y, but those will be reindexed at a later time by any search engine anyways. The most important thing is to ensure that people who are looking for your old posts still are able to find them.

PHP 5.2.6 Released!

Ilia just noted that PHP 5.2.6 was released yesterday! Lucky for me, as I have been away for a couple of days at a trackday in Sweden (pictures coming to my flickr page within the night). Among notable fixes are added metadata for the reflection API in the DOM classes and a few PDO-fixes for PostgreSQL. Several security vulernabilities were also fixed, and a complete list can be seen in the PHP 5.2.6 Changelog.

Moving to WordPress from Serendipity (s9y)

Oh well, I spent the last evening moving my blog from Serendipity (s9y) over to WordPress. The reason for this is that after Christer and I talked a bit, we discovered that something wasn’t working as it should with the trackbacks and pingbacks. As every good programmer does, I headed into the source instead of reading anything sensible about the subject, and well.. I wasn’t really impressed. As s9y is still catering to those who need PHP4 support, the code was a mess of functions here and functions there and no real separation, including Global variables and other messy things. WordPress isn’t much better in the “silly amount of functions” area, but I’ll leave that for the next blogpost or two about WordPress issues that’s getting on my nerves.

Anyways, after seeing their XML-RPC implementation .. which was a couple of large preg_match statements trying to look for the XML-RPC request, I called it a day and decided this wasn’t fixable to bring it up to my need. I’d very much like to patch it up and submit my own XML-RPC server for them to use, but it’s based on PHP5 and the reflection API, so no go there. All that frustration ended in installing wordpress yet again, so here we are, after spending the night of getting everything up to speed and looking like it was again. I’ll create a post later for those who want to take the same route, and I’ll include the RewriteRules to make all your old links still work in WordPress.

Orto – A Java VM Implemented in Javascript

Meant to publish this earlier, but it’s just been sitting in a tab in my browser for a day now. Anyways, John Resig (hm, familiar domain name / real name combination there…) has a post about Orto from Japan, a compiler that transformers Java bytecode to JavaScript statements . The end result is Java applications that do not depend on Java, but can be run with just JavaScript available in a browser. Not quite sure what I’d want to use this for, but on a scale for awesome, this ranks pretty high! John’s page has screenshots and links to several more interesting sources about Orto and is well worth the read.

77 Things To Do With Your iPod (.. other than just listen to music on it)

Travelhacker has an ingenious list with 77 alternative things to do with that old iPod you’ve just been ignoring for a while. If you’ve ever wondered how to convert your iPod into a sex toy, create an iPod Taser (iTaser?) or create your own iPod based pirate radio station, this guide is for you.

Marco’s Five PHP5 Features You Can’t Ignore

Marco has a neat list up with five different features about PHP5 which people are still not quite catching on to , and I agree with every single item that made it to the list. I’ve been using SimpleXML myself, and except for a few cryptic issues regarding namespaces and iterators (SimpleXML does quite a bit of magic..) it’s a breeze to work with. For simple .. XML .. parsing, it’s ingenious.

For PDO, we’ve already moved all our projects to PDO, and it’s been my preferred method of accessing databases for at least a year and a half already. Great stuff. We’ve also used the json module for quite some time, which neatly ties into jQuery , mootools and other JavaScript APIs. I still haven’t used SPL that much, but that might change soon. Anyways, a good read for anyone who still live in the PHP4 world..

Mikko Posts About Imagick in PHP and Fill Patterns

Mikko is quite active with the development of the Imagick-extension in PHP, possibly the best thing to hit PHP since it’s birth over ten years ago. There’s nothing like the Imagick-extension to make you realize how much you’ve been missing from the GD extension (kindly reworded for Pierre) :-) Anyways: Mikko has a new post up about how to use an image as a fill pattern in Imagick under PHP . Well worth a read!

You should also check out all the other interesting Imagick related posts Mikko has made.

Christer Puts on His Problem Solver Hat

I’m not sure how much sugar Christer got into his system today, but he’s been completely on fire with his blog posts. This one shows how to write a custom Zend_Form_Decorator_Label , which he wrote after someone asked a question about how to do something in particular on the Zend MVC mail list. That guy is amazing.

XRPC_Server – A PHP XML-RPC Server Class

XRPC_Server is a simple as possible XML-RPC server component I wrote for a project a year or two ago, and is a good alternative if you want to try to stay away from large frameworks or complex components. The component is license under the MIT License, so you’re pretty much free to do whatever you want with it. All patches are welcome! The server requires PHP5 and reflection enabled.

Usage is as simple as requiring the php-file into your "gateway" page (the URL you’ll be calling from your XML-RPC clients), and then creating the server object with the functions you want to expose as the argument to the constructor:

$server = new XRPC_Server(array(
    'multiply' => 'test_xmlrpc_multiply',
    'dateTest' => 'test_xmlrpc_date_test',
    'assoc' => 'test_xmlrpc_assoc',
    'array' => 'test_xmlrpc_array',
));

A simple file illustrating the usage is also included, XRPC_Server_Test.php.

You can see the source code of the server at XRPC_Server.phps .

The class can be downloaded from this site: XRPC_Server.tar.bz2