SEARCH
I’m just putting together a la…
Posted in: Blog by Craig Davis on March 4, 2010 | No Comments
I’m just putting together a landing page for a new website, homescreenwallpaper. This should be a fun little app.
jQuery Animated Borders
Posted in: Blog, JavaScript by Craig Davis on February 21, 2010 | No Comments
This is a small plugin that I’ve put together to allow an animated border on any block level element. This is an initial release, and it still have some quirks. It still needs a page resize event handler.
You can see the sample at here at There4, and you can see the project page and submit issues at http://plugins.jquery.com/project/animatedborder.
Commit integration from bitbucket.org to Campfire chat
Posted in: Blog, PHP by Craig Davis on November 25, 2009 | No Comments
My full time employer recently began to host our projects with Bitbucket.org. I’ve been very impressed so far, and have been enjoying the ease of browsing past revisions and merges. We also use the 37 Signals collection of applications. Bitbucket has some rudimentary Basecamp integration, but we spend time collaborating in Campfire, and I wanted to be alerted when commits were made via chat.
I found a php class called Icecube that integrates with the Campfire API. The documentation for the Bitbucket post data can be found in their help docs for the post payload. I combined this class with a code found at 61924.nl, The script from 61924 can receive the payload from Bitbucket, and process it correctly. I’ve modified the script to present the commit messages with improved formatting, and have added some config options.
Download the scripts
Download Icecube at 61924.nl
Download Bitbucket and Campfire script
Setup the scripts

Place both of the scripts into a web accessible directory, and open bitbucket.php and edit the config section of the file.

Next, open your bitbucket.org repo, choose admin, services, and then add a new post type. Then specify the url to bitbucketchat.php.
Using the script
Join the chat with another account, and make a post!
Questions or suggestions? Leave a comment!
Heft – Is there a corollary in UX?
Posted in: Blog, UX by Craig Davis on November 23, 2009 | No Comments
There has been some really good discussion lately about the ways that we as consumers judge a product. I do believe that quality is fractal. The quality of a product can be felt almost immediately – we can all tell the difference in leather and vinyl, if not immediately by sight, certainly by touch. What elements in an user interface are like this? What can we change in a UX that gives an application a better feel?
I believe that one of the things that affects the way that we feel about a product is it’s heft – the apparent density of a product. Some small electronics devices have extra weight added to them. We’ve all purchased something that looked great, but felt flimsy once it was in our hands. That added heft in this case is not entirely fake – without the added heft it wouldn’t sit on a table correctly, the cables running into it could hold it aloft or twist it around. But beyond that, it’s psychological.
So, with that in mind, what in UX is might be the corollary to heft?
Does your web application have…
Posted in: Blog, Twitter by Craig Davis on November 14, 2009 | No Comments
Does your web application have a visceral quality that you can feel, or a reflective quality that you must realize?
AJAX interaction indications and timers
Posted in: Blog, JavaScript, UX by Craig Davis on | No Comments
I believe that AJAX interactions are still new enough that customers can have a difficult time knowing what to expect from them. I recently completed an interface where we were using jQuery to create and manage lists. In this list interface, we ran into some interesting assumptions that people were making about the way that the application worked based on the interface.
When the user added a new item to the list, the app displayed a spinner, and then faded in the new item from the input box to the list. On the development machines, it was moderately fast. But once it was on the production machines, the ajax was extremely fast – it returned in less than a tenth of a second. This meant that the spinner was displayed for such a short period of time that the users simply didn’t see it. It was never visible to the user.
Because of this, the users didn’t seem to be understanding that the item had become permanent – testing showed that they were actually looking for a “save” button after they had added their items to the app. After some discussion, it became apparent that the speed was confusing them. They believed that web applications have to process for a moment and communicate with a server. Because the process was so snappy, they believed that there was no way it could have been saved on the server, and so they were looking for a submit button to save their items. Because of the speed of the interface, they thought that the changes were only happening locally.
The solution? We added a timer to the application so that the spinner would never show less than three tenths of a second. It was long enough that they felt that the new item had been saved.
Inconsistent Menu Extras
Posted in: Blog, UX by Craig Davis on November 13, 2009 | No Comments
I am surprised that the Google Notifiers for OSX are inconsistent with the system icons in the menu extras. Here’s a screenshot:
Inconsistent colors in the menu extras
I’m usually very impressed with the consistency that Google presents with their UI design, and this bothers me every time that I look at this. I would hate for the icon designers to begin to ignore the simplicity that the monochrome icons present in the menu extras. I believe that the extras icons should only use color for an application that is in an alert state, such as a low battery.
A collection of tools
Posted in: Blog, JavaScript by Craig Davis on October 20, 2009 | No Comments
jQuery slideRemove()
Posted in: Blog, JavaScript by Craig Davis on October 3, 2009 | No Comments
I’ve often run into times that I have wanted to use jquery to fade an element, and slide up the open space, and then remove the element from the page. I’ve written a small jQuery function to handle this.
jQuery.fn.slideRemove = function(callback) {
$(this).blur().fadeTo('medium', 0, function() { // fade
$(this).slideUp('medium', function() { // slide up
$(this).remove(); // remove from DOM
if (callback) { callback(); }
});
});
return this;
};
Flex error: “Waiting for flash player to connect to debugger”
Posted in: Blog, Flex by Craig Davis on April 13, 2009 | 1 Comment
After troubleshooting this problem for several weeks, I finally stumbled upon the solution. It appears that Flash is unable to resolve ‘localhost’ to 127.0.0.1 in Vista. The host file only used IPV6 to map ::1 to localhost.
The resolution to the error is to add a host file entry for 127.0.0.1 to localhost.