November 21, 2009

Subject to Change

Filed under: Design, learnings, life, storytime — Lindsay @ 9:24 pm


While in Southern California this past week, I made my way over to Hennesy + Ingalls in Santa Monica at the behest of my friend Nate. The store is packed with books on creativity, architecture, graphic design and photography; basically it was amazing!

There, we picked up Adaptive Path’s “Subject to Change: Creating Great Products and Services for an Uncertain World.” This was the first time I had a chance to hold the book in my hands and check out the bibliography in the back.  Lo and behold, there was my name (along with the primary author, Professor Bob Glushko from Berkeley’s School of Information) for a paper I helped author called “Bridging the Front Stage and Back Stage of Service Design”.  To be honest, it was pretty amazing to see the citation, and my name in print.  It’s also great to know that someone else read what I had to say on a topic, and found it thought-provoking enough to share it with others in their own publications.

Here are a couple of pictures Nate took to capture my “moment”!

IMG_0438IMG_0437

October 8, 2009

Avoid Using Flash: The jQuery Cycle Plugin

Filed under: Design, learnings, programming — Tags: , — Lindsay @ 11:02 am

Alexandra TabasMy cousin Alexandra ran into an entertainment industry snafu earlier this year when an uncredited appearance on Lost gave the tv show’s internet fans free reigns to guess her name.  Unofficial credits began appearing on the photographer’s flickr photos, then TV Guide and, finally, on Lostpedia entries in English, and Spanish.  When she realized that a search of Alexandra Tobas wielded more content than a search of her correctly spelled name, Alexandra Tabas (with an ‘a’), she called me for help.  We did a bit of troubleshooting on her IMDB page, and on each Lostpedia entry.  I then did a ‘whois’ on her domain name.  She owned her domain name and didn’t have anything up yet!  This is a tidbit for everyone out there – if you do not like your search results, you only have yourself to blame if you do not have a site up under www.yourname.com.

While I do not have time to build her an entire portfolio right now, I went ahead and put up a simple page using the jQuery Cycle Plugin.  This plugin is an excellent way to mimic Flash objects without having to actually use Flash.  I never learned to use Flash seriously because it is a black box to search engines, although I’ve heard this has changed in recent years.  If this is old news, the new headlines are reporting that Flash uses unregulated cookies and is invading our privacy, which means I’m still staying away from it with a ten foot pole.  Many web designers hate Flash on similar principles, if not just for the sole reason that there is this misnomer that your website, brand or image is somehow cool because you use a Flash intro on your site.  Flash is fun to play with, but not necessarily the tool you want to use for heavy lifting.

That being said, jQuery Cycle Plugin is about the easiest thing you can use to add some pizzazz to your site.  In about three easy steps:

  1. Reference the jQuery library, and the Cycle Plugin in your header.
  2. Create a <div class=”pics”> and list your <img> within that div tag.  Make sure to specify each images height and width, and include an alt value, not just to be xhtml compliant, but because you want to add extra, search-able text, to your site.
  3. Set the height and width of your .pics class in your css.  Make sure they are big enough to hold each image.
  4. Add the following script to your file:

$(document).ready(function() {
$(‘.pics’).cycle({
fx: ‘fade’
});

The plugin’s demo site is super easy to follow for any beginner, and if you want to get fancier, you can change your transition type in your script. I will definitely be using this plugin for my own portfolio in the future!

View AlexandraTabas.com here!

October 6, 2009

The Heuristic Evaluation Project

Filed under: Design, usability — Tags: , , , , , — Lindsay @ 3:13 pm

The project detailed here was created and designed by me, Lindsay Tabas, in Fall 2008.  It is based on Jakob Nielsen’s Heuristic Evaluation methodology that I learned while taking Marti Hearst’s class titled “User Interface Design & Development” in Spring 2006.

Summary


A Heuristic Evaluation is a usability inspection method performed systematically; it is traditionally part of an iterative UI development process and an alternative to user testing.  For this project, an evaluation was performed with all employees within the company.  We used the heuristics more loosely to guide discussion around the major functional areas of the product.

The goals of a heuristic evaluation are:

  • To find usability problems, both major and minor
  • To judge the software’s compliance with recognized usability principles

The discussion elicited many ideas and visions for how the product can accommodate its vast client needs.  The largest benefit was the consensus building and idea trading taking place between colleagues from different departments within the company.

Why Perform a Heuristic Evaluation of Your Product?

A Heuristic Evaluation project is the first step in evaluating an existing product’s strengths and weaknesses, and will support brainstorming within a company on improvements for the next version. The primary outcome of the project is a compiled design evaluation that includes new feature proposals and high level design principles. The secondary outcomes of this type of project is to unite the different business units of the company, promote creativity and forward thinking, and build a shared sense of team and common goals. A tertiary benefit, which should be part of every company’s knowledge management efforts, includes hard-coding employee domain expertise so that in the event of anyone’s departure, this knowledge remains an asset to the company, and does not walk away with the employee.  We may also include education as a benefit, in that more team members grasp basic usability principles that they can carry with them as they embark on features and bug fixes that don’t have time to be reviewed by a designer or analyst.

Background

In April 2008, I was the first trained “any role”* that sat between the client and the software development team. The product has sailed by for the previous 5 years because it was the only web-based SAAS product on the market in its industry. When you have that type of advantage, little effort is required to retain customers. That means that features were poorly implemented and based on only a few loud clients’ requests, the sales team was allowed to oversell the product, and the customer support team was left to handle dissatisfied users. All of this, after five years, left the majority of development resources stuck fighting fires, rather than building a world-class, scalable application. It was also clear that there was a breadth of domain expertise from all parts of the company, but little time to share that knowledge, nor build up from it.

After the first 6 months at work, I lobbied the CTO and the rest of the management team to allow me to collect our company’s knowledge by running a Heuristic Evaluation on our out-of-the-box product. Not only would I be able to hard-code this knowledge as a company asset, I would be able to learn more from my co-workers in order to build better features and modules, as well as work towards Product 2.0.

Heuristics


The ten usability heuristics are listed here:

  • Visibility of System Status
  • Match Between System and the Real World
  • User Control and Freedom
  • Consistency and Standards
  • Error Prevention
  • Recognition Rather than Recall
  • Flexibility and Efficiency of Use
  • Aesthetic and Minimalist Design
  • Help Users Recognize, Diagnose, and Recover from Errors
  • Help and Documentation

Methodology

Over a two week period, I held 8 team meetings. The company was divided into 4 groups for the first week, and a different 4 groups for the second week. Each group (for each week) was made up of participants that had varied roles and expertise within the organization. For example, one group had a junior and senior programmer, a customer support associate, a trainer, and a sales associate. The idea was to build groups with employees that may not normally trade ideas about the product.
Preview
During each 1 hour meeting, a different functional area was the focus. One group looked at scheduling, while another looked at invoicing, and so on. At the beginning of each meeting, we reviewed Jakob Nielsen’s 10 Usability Heuristics (listed below). We then went through 4-5 major user tasks within the assigned functional area; for example, Create a New Patient. Everyone would have a few minutes to perform the task and take notes, then I would choose one person, usually the one least likely to know how to perform the task, to guide us through the steps they took to complete the task.

As one teammate discussed their frustrations, another would offer tips, while another would chime in with why the feature was implemented in such a way. Teammates from customer support would let us know if this was particularly frustrating for the users that they spoke to on a daily basis, and new programmers would detail how they may have implemented such a feature. After frustrations were aired within the context of the heuristics, I would ask everyone to tell me how the feature would operate in a “perfect world” with “no strings attached” to lead into brainstorming.

Final Report

After the 2 weeks of meeting, I prepared a final report for the management team in two versions – one detailed report and one executive report. Here are some of the components of the detailed report:

  • Most often violated heuristics
  • General Pain Points (ex: button placement, help information, data pages and forms)
  • By Functional Area:
    • Table of Pain Points with Examples and Design Opportunities
    • Specific features with suggested design changes
    • Customer Support Statistics (ex: 30-40% of our support issues deal with reports)
  • Business Goals (ex: Reduce the effort to train current users)
  • Design Goals
  • Design Ideas (high level)
  • Structural Guidelines (ex: maintain a multi-user system)
  • Special Considerations
  • Risks
  • Opportunities
  • Next Steps

* “Any Role” = Product Manager, UI Designer, User Experience Researcher, Requirements Analyst, etc. Any role that participates in translating customer needs to software requirements and functional specifications.

September 14, 2009

Bad Usability Calendar 2009

Filed under: Design, fun, geeks — Lindsay @ 5:13 pm

I’ve had this calendar hanging in my office for the majority of this year. It has 48 “classic” design mistakes, and I find each one wildly entertaining. My favorite month is July because I like the idea of playing shoots and ladders with my days. Did you roll the die wrong today? Go back to last week!

Bad Usability Calendar 2009

Bad Usability Calendar 2009

Select the image to visit the source site.

August 27, 2009

The UI/UX Sandwich

Filed under: Design, User Interface, programming — Lindsay @ 10:04 am

Two or three years ago, it seemed that while universities were churning out students who had taken classes in Needs and Usability Assessment, User Interface Design and Development, and Social and Organizational Issues of Information, industry was still denying the benefits of such expertise on their products.  These roles were confined to corporate research labs, and only the bleeding edge companies (at the time) like Google and Yahoo.  In the past few years, more companies seem open to the idea of having designers on their development teams, but still not being able to quantify their benefit in terms of Return on Investment (ROI) figures, they are trying to sandwich User Interface Design and User Experience Research between other roles.

UI/UX != Graphic Design

Graphic Designers are artists and extremely creative.  They have amazing visual talent, and most likely honed their art through other mediums, then realized years later that the foray into technology meant more money.  User Interface and User Experience designers should have a technical background complimented with expertise or familiarity in psychology, sociology and cognitive science.  It’s not necessary they have a degree in computer science and a degree in psychology, but one or the other, with familiarity in each is necessary.  In simplest terms, Graphic Designers make things look cool, UI/UX designers make things functional and usable for the user.

Looks Cool, But Doesnt Work

Looks Cool, But Doesn't Work

I use this analogy to highlight my point:  My mom is an interior decorator.  She makes homes look beautiful for our family and all of her customers.  She has a good eye for patterns, fabrics, and colors, and is familiar with feng shui for organization.  While my mom understands the purpose of the room, and can arrange it to succeed the goals of the room (for cooking, for leisure, for games), she’s not designing the fabric patterns, the tchotchkes, and the furniture herself.  There are experts for each of these things.  My mom is a UI/UX designer for homes, the pattern experts are graphic designers for the things she puts in the homes.

To employers and product managers out there – hire a UI/UX person to work with the users to understand the problem and design the product to solve that problem.  This person (if they are good at what they do) will build you excellent activity diagrams, interactions diagrams, wireframes, and, if they are awesome, the beginnings of data and functional specifications.  They will understand the difference between radio buttons, checkboxes, and drop-downs, and be able to give you a 360 degree view of the application in its design phase.  In the wireframes, they reserve space for content, forms, and graphics.  They won’t design the graphics themselves because there are trained professionals (i.e. Graphic Designers) for this, and you can hire them on freelance and save yourselves (and your company) lots of money.  Besides, you will want to free-up your UI/UX person to move to the next project, or to work with the software developers through implementation.

UI/UX != UI Engineer

When Software Developers are Left to Design Error Messages

When Software Developers are Left to Design Error Messages

In absence of a real UI/UX designer, the role of UI Engineer is perpetually confusing for me.  I have to say first that UI Engineers are no different than other software engineers.  Just because they know how to write JavaScript, PHP, HTML and CSS does not mean that they are better suited than other software engineers for working with the users to design a better solution.  That being said, for years experts in the industry have been saying that software developers should not be handling user feedback.  When software developers are left to their own devices without user interface designers to give them guidance, we get open source projects.  Firefox aside (because they had UI/UX people come help), how many open source consumer applications are used by more than a few percentage points of the population?  I myself forayed into Ubuntu and Mepis, backed out 4 months later, and ended up buying a Mac.  OpenOffice maybe has 11 mm active users in the US, which would be roughly 4% of the population.The operating system and applications were not intuitive or easy to use, and when they crashed, they crashed so hard that I had to use the terminal to get anywhere (but usually ended up no where).

Rarely is an excellent software developer (front or back end) particularly good at connecting with, interpreting, and responding to other people, let alone are able to translate what those people’s goals are to usable interfaces.  These are all traits demanded by a good UI/UX designer. Furthermore, those of us that take a UI Engineer position expect to have more input into the UI design while still contributing some code to the application.  Often what happens is that the UI Engineer is stuck with a crappy design from a Project or Product Manager not trained in UI/UX or Usability, and is expected to do much more development than they ever planned.  The company and application/product suffers from not first understanding what skills they needed, and, second, finding the right talent for the job.

(more…)

August 21, 2009

Training is Not an Excuse for Poor Design

Filed under: Design, tools — Lindsay @ 7:48 am

In my old office I had a sign behind my desk that said “Training is Not an Excuse for Poor Design”.  It was a bold statement to make to my new company that had never had any trained professional mediating between the software developers and the clients.  I had decided one day that it was necessary when I heard on a conference call one of my teammates say “Yes, we can do that.  We’ll plan our training to take this into consideration.”  He said this to one of our clients, and my draw dropped.  Let me explain.

When a client, customer, or user requests a feature, they tell you what they want, thinking this will help them with what they need.  We, as designers, need to know what they need and why they need it in order to provide the best solution to satisfy them.  In Human Computer Interaction, where the user is king, we must always balance “The customer is always right” with “The user never knows what they want”.  More often than not, software developers and salesmen back themselves into a corner because they don’t know how to deal with feedback and this delicate balance.  The developers either give the user exactly what they ask for, or worse, give the user what the developers themselves think makes sense.

For those of us that don’t work on consumer web applications that can interact with their users through tools like UserVoice, usability studies and surveys, we often have to listen to the customer instead of the user.  The customer is the person paying for the development, such as a VP of some division in an organization, and the user are those people working below the VP.  Often we can perform more formal requirements collection with the VP and stakeholders, but with very little access to the actual user.  Without good feedback, we’re left to our expertise and experience to build good usability into our products.

On one project, I was repeatedly denied access to the users, and in an interview with one manager, I asked how we were going to address user adoption if we didn’t know anything about nor did we design for the users’ preferences.  He said to me unequivocally that “They’ll use the application because it is their job, and if they want to keep their job, they will do what I say.”  This was clearly the wrong attitude.  Last I heard (I had been cut from the project because they didn’t want to put more money into user adoption) the roll-out and subsequent use fell flat on its behind.  And we still have the gall to ask “Why Are Enterprise Applications Underused?

More recently, in conversation with a customer, he suggested a solution based on unfounded assumptions about the user.  When I pointed out that it was unclear how much time would lag between when a user was finished with one step in the business process and would start the next step he said “Oh we can train them to do both sequentially.”  Since we have an ongoing relationship, I paraphrased a line from a recent CIO interview of Harold Hambrose from Electronic Ink:   “Good design means not having to train, and not having to invest in user adoption, so lets figure out the best solution before moving forward.”  I think Cindy Alvarez (Product Manager at Loomia) simplifies this by saying “If something is difficult to do, people will not do it” in her recent article arguing for better usability in business processes.

The solution is very simple.  When the user tells you what they want, ask them first what they are trying to accomplish.  With detailed goals, the designers and architects can propose a solution that will help the user achieve those goals without inconveniencing them.  Then we can extend the statement that “The user never knows what they want until they see something” which is a primary argument for agile development, rapid prototyping, and iterative user-interface design.

Training is not an excuse for poor design.  And poor design is a result of misinterpreting user feedback.

August 17, 2009

Unfortunately, Jon, that’s what Health Care is Like

Filed under: Design, health care, tv, videos — Tags: , , , — Lindsay @ 8:47 am

In the past year, for my full-time job, I have been working with my coworkers to upgrade our electronic claims processing capabilities to the ANSI X12 837 data format, which is in EDI. Most of you know that I’m a big fan of XML over the legacy data formats, and in agreement, my team has bemoaned this project as a necessary evil. Unfortunately, the data format isn’t the worst part of working within the health care system. The worst parts of the health care system are the business processes and rules, which are never 100% true, meaning that a software system has to always be flexible enough to handle the exceptions. This is a problem when you are trying to enforce standards and best practices.  This also means that we will forever be stuck in a paper-pushing world until standards are designed AND enforceable by law.

For example, if a home designer designed a bathroom, and the home owner said “I work from home, and am the primary user of this toilet. I always use the lever to flush the toilet.” The designer finds a standard toilet and installs it in the bathroom. Then the home owner’s wife sees the toilet and says to the designer, “Oh no! It can’t work this way! I use the lever to turn on my sink.” To anyone, this sounds ridiculous. Who uses a toilet lever to turn on a sink? This is akin to how outlandish the insurance payers’ exceptions are that we have to handle in electronic claims processing. We all say “They’ll do anything to deny a claim”, and this couldn’t be more true. They will impose as many exceptions as possible, including not implementing and upholding nationally recognized data standards and identification codes (hopefully more on this later).

Now imagine a complex system where, instead of just the home owner and wife, we have 2000+ insurance payers, 300+ million patients (approximate population of our country), and who knows how many doctors (providers) we have to design for. Try to build a system that accommodates all of these stakeholders, and caters to the insurance payers whimsical ideas of using the toilet lever to turn on the sink.

So when Jon Stewart from the Daily Show scoffed at the Republican side of the debate, saying that their images of insurance business processes and diagrams are “scary looking disingenuous health care reform pop art” I felt compelled to respond. I’m sorry to tell you Jon, that’s what health care is like.

The Daily Show With Jon Stewart Mon – Thurs 11p / 10c
White House M.D.
www.thedailyshow.com
Daily Show
Full Episodes
Political Humor Joke of the Day

Disclaimer: I’m all for the ethos of universal health care reform, and I believe our country can get there. We just need to give our politicians the time to do their research to come up with a plan that really works.

August 2, 2009

Designing a Web Interface for 10-Key Data Entry Users

Filed under: Interaction, User Interface — Lindsay @ 12:57 pm

After several years of writing on this blog, I realized last week that I rarely write about the exact field I work in full-time, every day: User Interface and Interaction Design. This will be my first post about a design challenge I had this spring and summer: Designing a Web Interface for 10-Key Users.

Background


For a lot of designers, the real challenges are not in designing a cool teaser page or a food fetish website. The bread-and-butter for us comes in redesigning outdated user interfaces (UI) for corporate users. For the past two years in my career, I’ve worked on customizing web portals, document management systems, patient and practice management systems, and now, insurance claims processing consoles.

My current project entails customizing our out of the box patient and practice management system for 1000+ daily users, and then designing and building an entirely new insurance claims processing console for roughly 25 users at the client’s headquarters. For one specific interface, the requirements dictate that:

  • The user must enter 12 pieces of data per line (up to 6 lines), but be able to view over 25 pieces of data for each line.
  • The user must be able to use the 10-Key pad to enter these values

We know that the user processes about 100 documents per day, and, like any re-engineering project, we shouldn’t increase this time; optimally we should reduce this time.

Finally, their current interface is a desktop application, where they enter all this data into a grid with massive horizontal scrolling, no fixed left header, and a color palette of grey, black and white.

Methodology

Step 1: Do Some Research

The first topics to research are data-entry forms and 10-Key user behaviors. 10-Key refers to the user’s ability to rapidly enter numerical data using the keypad on the right of the keyboard.  When you do a search online, 10-Key brings up a lot of 10-Key tests, but not a lot of information on how these users behave.  If a simple search doesn’t bring up what you need, head to Google Scholar and try to locate academic research.  I found:

“From Information Visualization to Direct Manipulation using ILOG Discovery” by Thomas Baudel

In this paper, the author’s Visual Framework (directly pulled from the paper) is the biggest take away:

  1. Partitioning a data set in groups and subgroups
  2. Sorting the groups and the individual objects
  3. Assigning graphic primitives to groups, subgroups or individual objects
  4. Decorating the graphic primitives (assigning color and other graphical attributes)

I had two ways of creating groups and subgroups:

  • First Way:  Data the User Entered, Static Data the System Presents, Data the System Calculates off of the Static Data
  • Second Way: Data by Groups, where each group has a piece of data entered by the user compared to static data, which the system uses to calculate a third data.
Step 2: Design Iteration 1

Based on this information, I did a preliminary design based on the “First Way” grouping strategy.  This let the user view static data and then select an option to enter the additional data by line.  The interaction became “Click, View Modal Pop Up, Enter Data, Close Modal Pop Up, See Calculated Data”.  While the Modal Pop-up was positioned so that the user could see the static data while entering the new data, the piece of feedback I got from the client was “That’s too many steps when you’re processing 1-6 lines per document, over 100 documents per day.”

Step 3: Iterate

The worst characteristic of a designer is stubbornness; you have to be able to process feedback and iterate.  The goal now was to reduce the amount of steps, while still being able to view all of this data in one screen for each line-item. If I didn’t already state this, when you are confined to 950px in width, 20+ pieces of data per line-item forces horizontal scrolling. To me, horizontal scrolling is the bane of my existence as a designer. I had to do it once before, and it made me feel really uncomfortable.  I was open to redesigning the screen, but at this point, I was still hostile to horizontal scrolling.  I think it’s a huge no-no, and apparently these people agree with me, and these people too, who say “But requiring a large percentage of your site visitors to scroll in two directions to see your content is rude.”

I decided to continue my research into 10-Key user behavior and found a few more helpful tips (from Databasics):

  • Don’t force users to scroll (Thank you!)
  • Go easy on the fonts (Duh?) and colors.
  • Abandon defaults
  • Check Your Tab Order
  • Be Consistent

The last two are the most important for 10-Key users because they use the keypad to tab through the form, and often, they do not look up at the screen until they are finished - so consistency is very important; they memorize the field order very quickly.

I then found a cached-version of “Web UI Design for Data Entry-Oriented Users“, where the writer created a very relate-able persona (..of sorts) for this type of user.  These users gained “operational efficiencies” in the mainframe, DOS era which the mouse-navigable screens of today cannot afford.  The author points out the following:

  • Maximizing the amount of data that can be entered between trips to the server.
  • Lean, fast web-side code that serves up light, text-based pages.
  • Use of client-side code (e.g. JavaScript) to push as much business logic out to the client and limit round trips to the server as much as possible.
  • Get the tab order right for keyboard-based navigation from field to field.
  • Take advantage of keyboard shortcut (“accelerator key”) functionality made available by browsers.
  • Make efficient use of screen real estate.

My Final Design

I iterated about 4 times on this design before we settled on a design that worked for the client and the user, and one that I could feel proud of (and willing to share here).  My original groupings didn’t work until I realized that the data could be partitioned further into the following:

  • Group 1:  Static Data that never changed, and was never compared to data that is entered.
  • Group 2: Static Data that never changed, and was compared to data that is entered.
  • Group 3: Data that is entered by line-item
  • Group 4: Data that is calculated as the difference between Group 2 & Group 3.
  • Group 5: Data that is entered, and applies to all line-items
My final Design

My final Design

This allowed me to partition the page into widgets that were all viewable at the same time, and reduce the number of data that had to be showed on the same line, inline.  While I could make this gain, I still had to cave in to the horizontal scroll.  If you’re going to use horizontal scrolling, make sure you use a fixed header and fixed left column, so that the user always knows where they are in the grid (if they do look up from the document and 10-key pad).  You may not like it as a designer, and you’re developers don’t like it in implementation, but your user will be satisfied.

Looking at the design, the user enters data into the form, and when they select “Finish”, basic information about that form is posted into the upper right widget.  The user can later navigate back to what they entered by selecting the link(s) posted there.  The upper left widget is purely informational, and contains links to related pages in the system.

Final Take-Aways

I found another article, which didn’t add much in substance, but one commenter did say something along the lines of “The reason you cannot find screen shots and examples of good web-based data entry design is because there’s not much out there for anyone to brag about”.  This is the primary reason why I am posting my stripped-down wireframe here.

There are so many advantages to building a web-based application for a new client when it comes to design. You can use more colors and provide better visual cues; if you’re innovative, you can use some jQuery to provide audio cues on form validation too. But, there are serious draw backs in web-based interfaces for data-entry, including designing for multiple browsers, sticking to a particular screen resolution and width (max: 950px now is what I believe the average is), and affording rapid data-entry.

I hope that you have found something here to help you on your journey to conquering this particularly difficult design challenge.

References:

Any feedback is always welcome!

May 5, 2008

New Citation in Adaptive Path’s Book

Filed under: Design — Tags: , , , , — Lindsay @ 7:39 am

I got a message from my good friend Mariano Ferrario this weekend.  He was reading Adaptive Path’s new book “Subject to Change:  Creating Great Products & Services for an Uncertain World:  Adaptive Path on Design” and found that they had quoted a paper I wrote with my professor and advisor from the ISchool, Bob Glushko.  The paper is called “Bridging the ‘Front Stage’ and ‘Back Stage’ in Service System Design”, which you can download for free here.

I thought that was a pretty cool email to receive : )  I guess I’ll have to pick up the book and see what conclusions they drew from my paper.