How to Access Your iCloud Drive Folder in the Terminal App

iCloud Drive is available as a folder in the Finder on Mac OS X Yosemite (10.10) and later. However, iCloud Drive doesn’t act like a normal Finder folder, which is problematic when you want to work with iCloud Drive in the Terminal app:

  • iCloud Drive is not listed as a folder in your home folder
  • You can’t drag the iCloud Drive icon at the top of a Finder window onto the Terminal to copy and paste its path

Troubleshooting Twitter API Application Authentication Failures

All developers know the frustration of finding out that once functioning code no longer works. This can happen when your previously working Twitter API application no longer connects to the Twitter API because of an authentication failure. In this post I’ll show you how to solve a common cause of Twitter API application authentication failures.

A Test for Identifying Categorical Data

This post describes a method for identifying whether a data set is composed of categorical values. Automatically identifying whether a data set contains categorical values enables applications to make use of such data without requiring users to supply this information.

A Responsive YouTube Plugin for Jekyll

This post introduces a plugin I developed to embed responsive YouTube videos in Jekyll websites. Jekyll is a static website generator that is extended with plugins written in Ruby. Responsive videos automatically adjust their dimensions to fit the HTML element in which they are embedded, even when the size of that element changes. Furthermore, the dimensions of responsive videos always maintain the aspect ratio.

Designing a User Interface for Credit Card Expiry Dates

Designing a user interface for capturing credit card expiry dates is an interesting, multifaceted problem. To work though this problem, we need to ask three questions:

  1. What default values should be used for the expiry date?
  2. What are the opportunities for users to make errors when transcribing the expiry date from the card to the user interface?
  3. How can we support data entry by reducing the cognitive load on users to help prevent errors?

Using Transparency to Visualise Information Density

This posts explains how to use transparency to visualise information density. When visualising geocoded data points on a map, for example, it’s common to plot each location with a marker. When many data points are located in the same geographical area, the markers drawn later will overlay the markers drawn earlier. When the markers are opaque, it’s difficult to tell at a glance how many data points are located in each region. The following example shows geocoded tweets authored about the Boston marathon.

Use Animation to Help Users Notice User Interface Changes

This post explains why you should use animation to help users notice changes in your user interface. When interacting with software, users focus on the task they want to perform, not on the software itself. As a result, some users just don’t notice UI changes that occur in one descrete step, even if they caused those changes. For example, I’ve been at usability tests where users didn’t realise that a sidebar pane was opening or closing even when those users repeatedly clicked on the toggle button to open and close the pane.

The Hidden Functionality of Elevator Toggle Buttons

It’s always nice to discover new functionality in interactive systems, especially when watching people use such systems in the wild. When travelling in an elevator, I recently saw a nice solution to the main problem with elevator user interfaces: how to deselect a mistakenly pressed floor button.

Learning Through Natural Feedback on the London Underground

One of the best ways of teaching users how a software or physical product works is through feedback. Some types of feedback are explicit, such as a well-placed error message presented when we fill out an online form field incorrectly, or a supportive tick when we fill out the field correctly. Other types of feedback are implicit and require us to learn a connection between the feedback and the correct way to use an object or system. Regardless of type, the best feedback occurs naturally and at just the right time.