Clippy wasn't so bad...
Clippy wasn't so bad...

Clippy was ahead of his time.

I'll let that sink in.

Clippy, the infamous Microsoft Office assistant,  was introduced in November 1996. He was refined three years later, in Microsoft Office 2000. He went into retirement two years later, when he was turned off by default. And he finally departed this digital veil in 2007, when Microsoft Office dismissed him all together.

While he was eventually consigned to the dustbin of failed software, like Microsoft Bob, at the time, his novelty spun off a wave of "conversational agents." I worked on "Seemore the Sock Puppet" - a conversational agent for Payless ShoeSouce back in the 90s who you would click to "See more" - get it?  He waggled his eyebrows, and danced around the screen.  In a juvenile Easter Egg, there was one pixel on the screen that would make him pass gas, if you knew where to find it.

Clippy is famous for being one of the worst user interfaces ever deployed to the mass public. He stopped users to ask them if they needed help with basic tasks, like writing a letter or making a spreadsheet. In user experience terms, Clippy was “optimized for first use”: amusing the first time you encountered him, and frustrating after that. He was a puppet who only knew one script and kept repeating it, at you, throughout the workday.

Today, we have Conversational Agents again!  Apple's Siri, Amazon's Echo and Google Home, not to mention all manner of chatbots on the web are all examples of the evolution of the conversational agent. A conversational agent is a software program which interprets and responds to statements made by users in ordinary natural language. It integrates computational linguistics techniques with communication over the internet.

Why are these agents so much more successful than clippy? - I have a few hypotheses:

  1. They are user-invoked. Instead of interrupting your work or conversation with proactive suggestions, these agents do not speak until spoken to. Can you imagine the chaos that would ensue if Siri were to interject "You seem to be having an argument with your spouse - would you like me to read emails relevant to the situation?"
  2. They demonstrate semantic learning and artificial intelligence. Technology has developed to the point that these agents are much more flexible and "conversational." Google Home can keep track of context and respond correctly to unclear pronouns.  For example, while playing music, you can ask, "Hey Google, who is this?" and Google will accurately interpret you are asking about the artist for the music currently playing.  In addition, you can ask Google about a nearby sushi restaurant, and then ask "How far away is that?" and Google will understand you are referring to the restaurant you were just asking about.
  3. They are often voice-controlled.  With the exception of chatbots, these conversational agents are triggered with voice cues, respond audibly and can be used hands-free.  The ease of being able to wonder out loud who played the Joker in the 60's Batman series (Cesar Romero), and have Google tell you without pulling out a phone or laptop or reading and parsing text is a game-changer.
  4. They have personalities, but not overwhelming personalities. Each of the conversational agents have fans and Easter Eggs of questions you can ask to get funny answers programmed by developers.  They tell jokes, play games and sing songs, but only when explicitly requested.  Otherwise, they are all business.  
    Personalities have been added to chatbots as well. Students at The Centre for Psychology at Athabasca University developed the Freudbot, with whom a student can engage in an online conversation with a simulated Sigmund Freud.  Freudbot is capable of discussing a range of personal and psychological topics.

Conversational agents only work when they are truly conversational.  They require the semantic awareness and ability to follow a conversation that has only been recently possible in technology.  Poor Clippy was just a victim of timing (and poor animation). has returned to Joomla. started as hand-written HTML, and as my knowledge grew and I looked into content management systems, it moved to Joomla.  This was a good fit and I used Joomla for years.  After a while, though, a few things bothered me about the platform.  Each time there was a major upgrade, I had to migrate things by hand.  There were few options for automatically updating the site to the latest version, and a lot of my extenstions and templates broke between the versions, so I had to either sit on obsolete technology or spend a weekend upgrading my site and finding replacements for the parts that no longer worked.

I moved to WordPress in 2014, and thought I had the world by the tail.  It was an incredibly powerful and popular platform and I was learning a lot of things about their template system.  The upgrade paths were good and they had a lot of extensions available.  Unfortunately, being the most popular platform makes you the largest target for malicious actors.  I was hacked twice in the past two years, with my traffic being redirected and my site being blacklisted from Google and Bing.

After the second hack, I decided to come back to the familiar turf of Joomla, while upgrading to the latest version, including things like two factor authentication.  I have a nifty new responsive design and was able to preserve the Elsblog archives.

I think if I had more time and were more interested in the back end of security and databases, I could have made things work in WordPress, but I now prefer the comfort of a secure, familiar and powerful platform, even if it isn't the largest one out there.

Have you ever tried justifying hiring an artist for a project? In this age of the Internet and nearly limitless clip art, it can be daunting to ask for more money to create one-off imagery for your app or site. Why should you purchase bespoke images for your project?

Remember “Who Framed Roger Rabbit?” In that 1988 movie, Roger Rabbit hires Eddie Valiant, a real world private detective, for a job in Toontown. While the groundbreaking interaction between the live and animated characters was visually compelling, the styles clashed. The toons were overly bright, flattened and followed different rules of physics than the real-world characters.

When you mix clip art styles, you get much the same effect, without the wonder and enjoyment. Flat active tabs next to overly rendered, gradient tabs with shadows look like an obvious mistake. Icons with flat graphics interspersed with images drawn with perspective lend different meanings to the buttons that are unintended. Even things like using solid silhouettes for your icons along with outlines is setting you up for misunderstanding. People will always assign meaning to their cognitive dissonance, and usually their mental models have little or nothing to do with the developers’ intent.

Spending the time or money to have a consistent look and feel to your interface provides the polish and experience that allows the interface to fade into the background and the activity to come to the forefront for the user.

For more information on mental models, check out my blog entry about superstitious users.

An analogy that caught the industry interest recently is a comparison of IT delivery styles with how we treat pets versus cattle.*  In a nutshell:

  • Pets are owned in small numbers, uniquely named, hand reared and lovingly cared for — they are, by all considerations, members of the family. They are unique, lovingly hand raised and cared for. When they get ill, you nurse them back to health.
  • Cattle are owned in large numbers, tagged using a standard system, identical, managed in herds, and bought and sold as a commodity — they are, in effect, food. When one gets ill, you replace it with another one.
  • Many traditional IT departments are pet owners. Servers and applications are designed from an enterprise perspective — services are tightly coupled, relying on scale-up systems and relational databases. They are lovingly and expensively cared for, with great attention and affection.
  • Modern commodity server users are cattle ranchers. Applications are designed to require little maintenance, to handle failure and to scale out. Services are loosely coupled and stateless. If a server fails it is easier to replace than fix — there is no emotional attachment.  Moving from pet owners to cattle ranchers would allow us to be more nimble and focus our efforts more on writing application code that makes us different.

I was feeling pretty good about myself for proposing moving to commodity servers, until I realized I am guilty of the same thing.

In my CSS files, I often write a quick patch for a specific use, and name it with something that seems relevant at the time.  I sometimes ignore the larger applicability of the style, or flexibility within SCSS, or neglect to migrate these larger style patterns to common repositories.  These styles are pets, and lead to anarchy and redundant CSS.

Going forward, we are adopting the BEM standard for CSS naming. BEM stands for Block, Element, Modifier. It is a method used to construct CSS class-names so they are consistent, isolated, and expressive.  The naming convention follows this pattern:

.block {}

.block__element {}

.block--modifier {}

.block represents the higher level of an abstraction or component.

.block__element represents a descendent or dependent of .block that helps form .block as a whole.

.block--modifier represents a different state or version of .block.

This standard focuses us on global uses for styles and makes it easier to find a style than guessing what unique name was chosen at a given time.

A few good resources for learning more about BEM methods are:

• CSSWizardry

• CSS-tricks

• Smashing Magazine


*This analogy was developed by Bill Baker at Microsoft, and expanded on by presenters at CloudScaling and CERN


Gary Elsbernd

Sometimes I get an idea that won't leave me alone. The elsblog is where I put my ideas and hopefully share them with the world.

Web Development

I enjoy working with modern frameworks like Twitter Bootstrap and AngularJS and tools like WordPress and Joomla.

Mobile Apps

I work with my friends to design and develop mobile applications for Android and iOS.


I’m developing an autonomous robotic platform with sensors, but don’t worry – no weapons. I’ve seen too many movies.

Go to top
JSN Boot template designed by