Monday, December 22, 2008

Holy Cow, This Is Cool!

A blog post entitled "Holy Cow, This Is Cool Or In Which I Introduce A New UI Technique But Give It A Vague And Flavorful Title to Game People Into Coming Here From Planet Lotus Since No One Really Reads This Interface Stuff"

Hi All...I always seem to come up with these posts at times that no one is around, but what the heck. Lotusphere is almost here and I'm lucky enough to be presenting once again (more on that later). As I was driving to a customer's site the other day, I thought of this technique and after playing around for a few minutes, I found that it works great. If you like it, consider it an early Christmas (Festivus, Hanukkah, insert holiday of choice here) gift.

I really love many of the UI patterns that have become popular in "Web 2.0" applications. Among these, one of the techniques that you see quite often is that of the "Fade In/Fade Out" element. Let's say you want to display a status or error message to a user after they enter an incorrect value. Sure you can just use a hide-when and make the text appear or pop up a message in a dialog box. But that just isn't sexy. You can add a little spice to your app by applying this modern looking UI device. First, let's see it in action, then I'll explain what's going on.

Now...that's the Lotus Notes client you are looking at, not a browser. While it's a very basic effect, it enhances the user experience in a nice and subtle way. It helps draw attention to the fact that there is a new element on the page and does so in a way that is less jarring than a pop-up box or instantly having the message appear on the screen. The beauty of this technique is that it is very simple to implement in your application. Here's how.

The key to this technique is the versatile programmable tabbed table (I continue to find new uses for this design element....I love it!). What I did is create a tabbed table and set the text and background colors to get progressively darker for a fade in effect. Then, using script, I simply switched from one row to the next on a timed interval using Sleep to pause the necessary amount of time.

For purposes of this example, I hard-coded everything, but after going through the steps, you should see how easy it would be to modify this so it is dynamic. The picture below shows the six rows that I used for the table. I selected a base color for the final display box background and then used lighter shades of that color for the previous rows. I did the same thing for the text in each row. I haven't really thought of any hard and fast rules here...just play with it until it looks good to you.

Formatting before setting it as a programmable tabbed table
Hint: I find it easier to do the formatting for a tabbed table as just a standard table at first, then switch it via the Table Rows property tab.

As you may recall, you can programmatically switch rows in a tabbed table by writing a single formula line such as FIELD $DisplayTable1:= "4", where DisplayTable1 is the name of the table as defined in the Table HTML Tags properties and 4 is the name of the row.

Setting the table and row names via the properties box

You can also change the row via script, which is what I did in this case. I resorted to using LotusScript since it provided me with a facility to directly control how much time I wanted between each row change. If you are going to use LotusScript to do the row switching, make sure you add a field to your form that is the same name as that of the table (e.g. $DisplayTable1), otherwise you'll get an error when you try to set this field in your code.

Once you have the programmable tabbed table setup and formatted as you like, you just need to write the script to display the table rows to simulate the fade in effect. If I was doing this in a production app, I would probably hide the table until I needed it, fade in to the message and then fade out when the user dismisses it. Thus, the code would look something like this:
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument

uidoc = workspace.CurrentDocument

Call uidoc.FieldSetText("ShowMessage", "1")
uidoc.FieldSetText("$MessageTable1", "1")
uidoc.FieldSetText("$MessageTable1", "2")
Call uidoc.FieldSetText("$MessageTable1", "3")
Call uidoc.FieldSetText("$MessageTable1", "4")
uidoc.FieldSetText("$MessageTable1", "5")
uidoc.FieldSetText("$MessageTable1", "6")
Call uidoc.Refresh
This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at

Notice here that the first thing I am doing is setting a field called ShowMessage to "1", which is just a field I use to control the hide-when properties on the table. Then, I set the table to row 1, refresh the document and sleep for .15 seconds, switch to the next row, sleep again and so on until the final row is revealed. To fade out, just repeat the steps above in reverse. That's all there is to it. I told you it was easy.

In case any of that was unclear, I've created a sample database that you can download to deconstruct the technique. It is simple and elegant, which you know by now is my favorite kind. I hope you can find a use for this in your applications.

Now...I mentioned before about Lotusphere. Did you like that technique? Do you want to learn even more "Web 2.0" UI goodies? Well, it just so happens that I'll be teaming up once again with my friend Nathan Freeman to present AD212 - 10 Web 2.0 User Interface Patterns for IBM Lotus Notes and XPages. In this session, we'll be taking a look at 10 popular modern UI patterns and showing you how to bring them to the client and to XPages. I'm excited about how it's coming out and I hope you'll drop by to check it out.

In addition to my session with Nathan, I'm very pleased to report that I'm teaming up for the first time with Tom Duff, aka Mr. "Now I'm published in a popular article" (go read's awesome!). We're going to be presenting BP108 - Getting To WOW...Interface First Design for IBM Lotus Notes Developers (it's also being repeated in case you can't make the first session). This is an updated version of some of my past presentations and I'm excited about it because Tom will bring his unique insight into the process of moving from a code-focused orientation to a more holistic one. Please come by if you can (and we'll have some goodies to give away as well! :-)

That's all for now. Signing off so I can work on more Lotusphere stuff. I hope you all have a fantastic holiday and very happy New Year!

Thursday, November 13, 2008

Flashback: The Low Down On Low-Fidelity Prototyping

Note: This is a repeat of one of my more popular articles. It is reprinted here after several requests. Since I have a lot more readers now than I did when originally posted, I thought it would be a good time to recycle it. :-)

You don't have to be on this site for very long before you'll start picking out some common themes. Two of the topics that I am very passionate about when it comes to the development process are low-fidelity prototyping and usability testing. I truly believe that every developer (no matter what their preferred technology) can reap enormous benefits by adding these two simple techniques to their development methodology.

On the most recent Taking Notes podcast, I mentioned I have some articles about usability testing coming up. Well I do, but I thought it might be a good idea to cover the first of my two 'secret weapons', since usability testing actually follows as a logical extension of low-fidelity prototyping. With that, let's first define what low-fidelity prototyping is about. Due to its RAD nature, most Notes developers are very familiar with the concept of prototyping. In the case of low-fidelity prototyping, the word 'fidelity' refers to the level of detail in the design itself. That is:

Low-Fidelity = Quick & dirty hand drawn screens

High-Fidelity = Polished design or high-quality screenshots/mockups

Another name for low-fidelity prototyping is "paper prototyping" and perhaps this name more fittingly describes what you use in the process. I prefer low-fidelity prototyping because it sounds more impressive, and if I were a consultant, I could probably charge more (haha...OK...only kidding!). The purpose of the low-fidelity prototype is to allow you to design the interface of your application before you focus on anything else. Some developers think I am committing heresy when I say this, but I believe without a doubt that you can design a better application if you build the interface before you write any code!

One of the first benefits that low-fi prototyping brings you is the ability to talk to a customer in concrete terms very early on in the project. When they are giving you requirements, customers usually have very nebulous ideas about what they are actually looking for or what they are going to get. It is very powerful to be able to return to the customer shortly after the initial meeting with a physical object that they can review, manipulate (by turning pages), etc. This initial prototype may be completely wrong, but it gives you a common platform from which you can continue your discussions about the application. I think you'll be surprised at what additional information you uncover so early on. There are several other benefits that low-fidelity prototyping brings to the design process, but first let's take a step back and talk a bit about how you build one.

Perhaps one of the neatest things about low-fi prototyping (that's what the cool kids call it) is that it is so easy to do...and dare I say...a lot of fun. The tools of low-fidelity prototyping are all those things you used in kindergarten; paper, pencil, markers, crayons, scissors, glue sticks, etc. The key to low-fidelity prototyping is drawing out enough detail to allow the customer to figure out what is going on, but no more. The low-fidelity prototype is not meant to be polished. It's just a 'rough draft' of your screens. A lot of great work in design and engineering was initially conceived on the 'back of an envelope' and the concept is the same here.

To get the most benefit from this technique, you need to draw out all of your interface elements. This includes screens, menu items, dialog boxes, etc. Place only one element on a page (e.g. if you have 5 dialog boxes, use 5 sheets of paper, one for each dialog). This makes it easier to manage your design, especially as you work through multiple iterations. That's really all there is to it!

As you are beginning the work on your low-fi design, remember that this is the ideal time to 'think outside the box'. Try to forget the constraints of your development platform and instead focus on how you can design an interface that will be clean, efficient and easy to use. If you have the luxury, I think the ideal state is to stay technology agnostic. Design the interface, figure out what functionality is needed and then decide on which tool is the right one for the job. You can temper this with good judgment, of course. If you know you are building an application in Notes, don't design an element that you absolutely know you can't use in the client. However, some of the best interfaces I've made were initially born out of low-fidelity prototyping, followed by an exclamation of "There's no friggin' way I can do that!" A little perseverance and a lot of experimenting in this regard can pay off big time, though, so give it a try. The worst that can happen is that you fail, learn a lot from that, and then move on to plan B.

Once you have completed your first low-fi iteration, schedule some time with your customers to discuss it. See if they can understand the functionality without you explaining it to them. Are there glaring errors that are immediately evident or are they just bringing up subtle points? Make sure to take as many notes as possible, trying to capture everything the user points out or alludes to. You can often find important information in these notes...things the customer initially forgot to tell you, details on how computer savvy the user base is, etc.

So...You've built your prototype, met with your customers and got a couple of suggestions for changes. Time to go write some code, right?! Whoa, there partner...not quite yet. Unless you absolutely nailed it on the first try (probably not), it's time to build another iteration. On average, I'd say you'll build about three low-fi designs in a typical project. Each time, you'll refine and meet with your customer, coming closer to the final interface with each pass.

Let's return to discussing benefits around low-fi prototyping, since this is one of the stages where you really see a payoff. One reason low-fidelity prototyping works so well is due to the psychology of how we perceive quality. A user looking at an actual application on the screen is generally less apt to point out flaws, even if you only invested a little time in it. They think to themselves, "Gosh, he's already got something ready for me. I guess I can live with this, even though it's not exactly what I want." The customers tend to censor themselves, since they think you've invested time and money in the design. At this point, you might be thinking "Not my users...they hate everything and tell me so!", but most people will do this, just to varying degrees. Users generally have no problems, however, when you throw a hastily drawn piece of paper in front of them. When it looks like you had a little kid whip something together, the customer will definitely let you know what they think! :-) In fact, I suggest a little experiment. When you go into your low-fi meeting, strategically place some pens, pencils, crayons, whatever, in an area that the customer can readily access. I'll bet that when you set the prototype in front of them, they reach for one of those implements and start marking away. Let them! This is valuable, as it helps you see what they really want. It also gets the user emotionally invested in the design, which in my experience leads to increased satisfaction at the end of the project.

As developers, we benefit from low-fidelity prototyping as well. It may sound like this process adds time up-front and you're does. However, once your prototype is pretty well finished, you've got a great plan for development. You won't be sitting there staring at a blank canvas, wondering how to start. Instead, the low-fidelity prototype provides great clarity and allows you to concentrate on the next important part of your process, actually writing the code. Also, since we've avoided code until this point, we've probably saved time and money. Often, the choice of interface elements we use dictates the most efficient path we take coding wise. Any time you start development by writing code puts you in danger of having to back track or rewrite in order to address UI concerns. Hopefully, you can see that capturing the specifics of the UI up-front helps mitigate these risks.

The definition, increased communication and clarity that low-fidelity prototyping can bring to a process is highly beneficial by itself, but it becomes infinitely more powerful when combined with our second 'secret weapon', usability testing. That's can actually test your application using the paper prototype (how cool is that?) We'll explore this technique in a future post.

For now, let me leave you with a call to action. Give this process a try on your next project. It's certainly not hard and I think you'll find it very powerful. If your customers (or most likely your boss) look at you a little weird, be honest with them. Explain why you are doing this and the possible benefits (hint when dealing with the PHB* --> "It saves money!!!"). Let them know that it is a new concept for you as well and that you'll learn together. The customers will appreciate your openness and will most likely be willing to give it a go. My guess is that after the project, you'll be doing a lot more low-fi work.

Overall, low-fidelity prototyping is a super technique that I use all the time. I hope you find it as compelling as I do. Good luck!


Thursday, November 06, 2008

Balsamiq Mockups...A Very Cool Tool For Building Prototypes

As long-time readers know, I'm somewhat of a zealot when it comes to singing the praises of low-fidelity prototyping. Over time, I've found that it allows me to get to the best possible user interface faster than any other method. While I love breaking out the crayons, markers and paper, I do admit that it sometimes becomes more time consuming than I'd like if I have to keep redoing a certain screen. This is where I see a computer-based tool being very helpful.

In a past post, I introduced you to using electronic tools to build a prototype. Thanks to an e-mail I received from a reader (Cheers, Miguel), I've found another prototyping tool that I think could be *the one*. From what I've seen, it's full featured, very easy to use and allows you to create interface mockups in a flash. It's got a funny name, but the story behind it makes it quite apropos. Check it's called Balsamiq Mockups

Balsamiq Mockups...check it out

I'm not going to go into details on the features here, since the elegantly designed Balsamiq website already does that. I do, however, want to point out some things that make it killer:

* It's got a web UI as well as a desktop counterpart if you want to do offline work.

* The hand-drawn elements are well done and plentiful. There's a control, window or container for almost every UI situation you can think of.

* You can export the end result as a PNG or XML file.

* It just works.

If you've ever considered building low-fidelity prototypes but were put off by the idea of using analog tools, I'd definitely recommend giving Balsamiq Mockups a try. You can use the web interface directly from the site. Hopefully, I'll have the opportunity to test drive the desktop based version soon. If so, I'll be back with an updated review. what are you waiting for. Go forth and draw! :-)

Thursday, October 23, 2008

SnTT: Quick Follow-up To "Universal Toolbar"

It seems some folks liked my idea from last week, especially the example screenshot showing a drop down menu in this "universal toolbar" area.

I received a comment and a few e-mails asking how this was done. Well...I actually wrote this up (along with a sample database) a couple of years ago, so today's show and tell will be a cheat, as I am just going to link you over to that entry. With that, here you go. Enjoy.

SnTT: Cascading Navigation In Notes

Editor's Note: The sample database that is available for download also includes all my experiments using layers to create cascading menus. Remember...Lotus Notes is like an's got layers! :-)

Thursday, October 16, 2008

SnTT: Add A "Universal Toolbar" To Your Lotus Notes Applications

Hey, look at that: A Show-n-Tell Thursday post. Woohoo! OK...I've got to think up a better/more descriptive name than "universal toolbar", but I'm creatively challenged today. At least I got a post out...geez. :-)

If you think about most of your applications, there are probably certain functions that are executed more than anything else. Perhaps it is a particular search mechanism, running a certain agent or navigating to a given document. Whatever the most common action is, do you make it easy for your users to get to? By easy, I mean is it always available or at least one step away? If not, you might want to consider using the universal toolbar technique. It's a simple and elegant solution for many UIs.

Here is one example. In this application, the most frequent activity is to open a particular document. There are several different parts and areas to this application, but often the user needs to quickly get to one of the core documents by the key value (in this case a part number). In a typical Notes application UI, a user would have to navigate to the view that contained the document in question, then use the "Starts with..." quick find function to jump to the document and then double-click on the document to open it. This is at least 3 steps and for a very frequently used activity, I think this is too much. Instead, my universal toolbar includes the ability for the user to enter the Part Number and open the document directly, no matter where in the application they are.

As you can see from the screenshots, it doesn't matter where the user is in the application, they always have the ability to enter the Part Number and the application will open the document. This saves the users tons of time and they love it!

To do this, I add a small frame into the application frameset. This can be positioned anywhere really, but I find it works well near the top or under the header. This frame becomes the container for your universal toolbar, which is usually a form containing the functionality you want to make available.

If you look carefully, you'll also notice I use a border caption on the universal toolbar frame so that it can be hidden if desired, freeing up that screen real estate.

Here's another example of using the universal toolbar concept in an application. In this case, I gave the users drop-down navigation. Space was at a premium in this application, so we wanted to remove any links to the left or right side of the screen.

One other way I've used this is to allow the user to quickly add new documents without opening a form.

So that's it...pretty simple but very effective. Everytime I've added this functionality to an existing application, I've received rave reviews from users and thanks for saving them time. Give it a try in your apps and let me know how it works.

Thursday, October 09, 2008

Lotusphere 2009 - Free Stuff! 10 Web 2.0 User Interface Patterns for Notes And Xpages

Hi we gear up for Lotusphere 2009 and abstracts are being reviewed, you still have the chance to vote on the sessions that you want to see in the Best Practices track. I'm very pleased that besides getting to submit an abstract with Mr. Duff, I also had the opportunity to submit another with my partner-in-crime from the last two Lotuspheres! Nathan Freeman and I really enjoyed presenting our user interface sessions to many of you and now we want to take it to a new level. Actually, our justification for submitting this session says it nicely:

"For the last two years, we have presented on the theory and practice of UI design in the Notes client, focused primarily on compatibility with previous Notes releases. This year, we want to take a more concrete approach. Instead of theory and demos, we want to take a deep dive on specific UI patterns, primarily from recent Web 2.0 designs. We want to show specific reusable patterns such a rating systems, live filtering and inline field validation feedback -- with both rich client and Xpages implementations."

As far as what we want to do, please check out the abstract on IdeaJam. If you like this idea, please vote to let the content guys know you'd enjoy having this session on the agenda. We hope to get to see you there!

and my session with Tom:

Saturday, September 27, 2008

Lotusphere 2009 - Getting to WOW

Yesterday was the deadline for Lotusphere abstracts, so I hope you got your ideas in. I'm really excited that there seems to be such a buzz around the conference this year (even more than normal, it seems). One of my former colleagues submitted a couple of ideas too, so I'm hoping he gets a chance to get up there and show off his stuff.

I actually ended up with two entries thrown into the hat and one Birds of a Feather idea. Both of the session submissions are with a couple of fantastic speakers, and as always, I'm honored to have the opportunity to present with them. I'll hold off on announcing one of them until I know he's cool with it, but I'm thrilled to tell you that the first session abstract was submitted along with Tom Duff! Tom has a great, casual speaking style and has become a beloved presenter at Lotus conferences. I hope if we get picked that I can live up to his expectations! This session will actually be quite complimentary to one of his other ideas. I, for one, am really looking forward to seeing the Moving From Plumber To Painter presentation.

Our proposed session is entitled: Getting To Wow...Interface First Design For Lotus Notes Developers. If you'd like to check out the abstract or help influence whether or not we get to do this session, please click the link above and vote over on IdeaJam. Many of the other proposed sessions are there and the fearless leader of the Best Practices track, Mr. Mac Guidera, is watching this space with interest. Looking through the list of ideas submitted so far, I think we are in for an incredible round of sessions in 2009!

Hope to see you there...

Tuesday, September 09, 2008

Epic Fail...Error Message Worst Practices (And How To Fix Them)

Error messages...the bane of users. We all dread the software crash or programmatic wrong turn that sends our productivity crashing into a brick wall. To add insult to injury, I think most of us would be hard pressed to find examples of good error messages in the software we use. Remember that one of the key goals of interface design to strive for is making the interface unobtrusive so that the user can focus on the task at hand, not on how to use the software. When users encounter an error, we are rudely pulling them out of their productive work and bringing the deficiency of our application to the front of their attention. If we can't avoid the situation that brings forth the error, the least we can do is handle it in a graceful and helpful way. Sadly, this concept seems to be the exception rather than the rule. I've often found that it's useful to perform some analysis of applications that fail to meet user expectations in order to learn better ways to do something. Let's look at some examples of error messages gone awry (the worst practices) and then figure out to fix them.

OK...thanks for that

And why, pray tell, am I not?

Eh? I don't speak Klingon.

Oh yeah...System error &H80004005. How stupid of me to forget!

Not only have you offended me sir, but you've scorched my retinas!

If only the girls at school were that easy.

The thing that all of these messages have in common is that they don't result in an action. That is, the best they do (and that is arguable) is tell the user something went wrong, but they don't address the most important part of the whole event..."WHAT SHOULD I DO ABOUT IT?!!!" If you were asked to determine the disposition of this user after encountering such error messages, what would you imagine they would say? Yeah...something along the lines of "Oh we go again with this piece of $*&@! application!" And you know what, I certainly wouldn't blame them for thinking that! Some errors are certainly worse than others. The most heinous offenders are those that only provide a very technical message that accomplishes nothing but making the user even more anxious.

The error messages that at least provide a "plain English" (or insert your language of choice here) description of the error are better than nothing, but are still not doing things quite right. Another sign of a bad error message is one that does not give any indication of whether the machine/software was at fault of if the error was due to the user's actions (e.g. stack overflow from a numeric calculation vs. user entered text in a number field). All in all, these bad characteristics and worst practices end up making the user feel stupid. Since our work as developers is supposed to be empowering users, then presenting them with less than perfect error messages means we've failed in that task. that we know what NOT to do, how do we go about fixing the problem? An important aspect of good error messages is that they provide enough information to the user so that he or she is clear about what to do next. The best error messages have some common elements:

*They tell the user what went wrong in plain English and do not make the user feel like they screwed up.

*They avoid technical jargon. If the programmer is the only person that understands the message, it is bad.

*They send an automated report to the developer (see the amazing OpenLog, created by Julian "The Genius" Robichaux. If you're not using OpenLog, you're doing it wrong!)

*Most of all, they tell the user what to do next.

That last point is critical. What the user should do as a next action will depend greatly on your environment, your policies and procedures and the error in question. Maybe it just tells the users to "Press Ctrl-C to copy this error to the clipboard and paste it into a new mail message. Send this message, along with the title of the error, to the help desk". Or it could give the user explicit instructions such as "Enter passcode 4331 into the highlighted field and press the enter key". What really matters is that the user is not left wondering what to do next. The error message should guide them to the next steps. The next action might not fix their problem, but it will at least let the user move on.

Here are a couple of good examples I swiped from the net. These messages address the criteria stated above. Notice the (in)famous Twitter "Fail Whale". No one ever said error messages had to be grey and boring.

I really love this one. It goes into extensive detail on what to do next. Do all of your errors have to be this detailed? No...but in some cases it might help.

The Fail Whale is fun and informative.

Remember that unexpected errors immediately cause users to cease being productive and often make them freak out. By anticipating possible errors and constructing good responses using the elements cited above, you'll be able to minimize the disruption and get the user on their way with the least amount of fuss.

So my call to action for you today is to review the applications you are currently working on. If your custom designed errors are more like the worst practices than the best practices, make it a point to fix them. Make them clear, helpful and actionable. Your users will thank you.

Saturday, September 06, 2008

WOA vs SOA...The Battle of the "Oriented Architectures"

Everybody Loves Web Oriented Architecture

Hmmm...interesting read indeed. While this isn't the party line for my employer, I think WOA is the way to go personally. It just seems lighter weight to me and more "agile", which of course I like. Then again, a lot of this stuff is all semantics anyway! ;-)

Thursday, September 04, 2008

Lotusphere 2009...Should I Even Try?

So Lotusphere time is upon us again in a few short months and people are getting all hyped up and excited since registration opened yesterday. This is always a fun time, as the folks in the blogging community start talking about some of the sessions they hope to submit, while others keep their thoughts very close to the vest.

I'm currently wondering what, if anything, I should submit as an idea this year. Are there any topics that you'd specifically like to see at Lotusphere based around the stuff I do here? If you think of something, please feel free to comment or send me an e-mail.

One idea I had (pretty vaguely defined at this point to be honest) is to walk you through the process of doing an application redesign. There are *tons* of applications out there in Notes land that still work great going on 10, 15 years old (or even older!) but the UIs of these applications leave much to be desired. It's important to keep the UI up to date in order to meet the ever increasing demands and expectations from our end users. It might be beneficial to show one of these applications and the methodology you can use to update the UI without a lot of rework of the underlying code. I'm thinking best practices, short cuts, quick wins, etc. It's a balancing act, really, as sometimes many people think these UI things are too "touchy feely" and that we should only be talking about writing code. I don't know...what do you think?

Also...if you've got any really cool ideas and would like to possibly team up on something, let me know that too. As I said yesterday on Twitter, I'll even let you do all the work! ;-D

Wednesday, September 03, 2008

On Total (e)Productivity In Lotus Notes

I've mentioned the eProductivity system a few times here and there and wanted to share some additional thoughts about it. It's great to see applications that enhance and extend the power of the Lotus Notes platform. Eric Mack and his development team have done a great job in this respect.

(Don't forget to check out the video demo)

If you are a practitioner of Getting Things Done (GTD), David Allen's system for managing the overwhelm almost all of us feel due to the myriad things that require our daily attention, you will most certainly want to give eProductivity a try.

eProductivity is a Lotus Notes-based application that empowers the GTD user in ways not possible using a plain vanilla system. It delivers on a promise that many software products fail miserably at. That is, it gets the interface out of the way so that you can get work done. Not only does eProductivty faithfully adhere to the major tenents of the GTD methodology, but it does so in a very unobtrusive manner.

The functionality of eProductivity is delivered as logical extensions to the typical tasks a user performs within the context of their work in Lotus Notes. Because the eProductivity functions are so closely integrated into the standard look and feel of the Notes mail template, there is little cognitive overhead for the user in learning the new system. Creating new tasks, defining next actions, creating projects...all of these events are quite intuitive in the eProductivity system. Since the user can get to these functions in the context of their regular work, they immediately become more productive, as their flow state is not interrupted.

Nathan and I have talked at length in the past about designing your interface to fit the needs of the application you are building rather than always replicating the design of the standard Notes templates. There's one exception to this rule, and that is if you are building extensions to the mail file. If you are doing this, as the eProductivity team has done, then you want to make sure that your new functionality blends in seamlessly with the existing template. The eProductivity system has accomplished this nicely.

From a user experience standpoint, eProductivity offers no flashy functionality or complicated routines and that's the beauty of the system. It is simple and easy to use, which is the hallmark of good software design. It also includes some wonderful new features, such as the Weekly Review Coach and integration with ActiveWords and GyroQ.

If you are a practitioner of GTD and a Lotus Notes user or you just want to be more productive, I can highly recommend the eProductivity system.

Monday, September 01, 2008

Domino Web Developers...Will Our Apps Be Better In New Google Browser?

Exciting times, eh? Tomorrow, Google is releasing "Google Chrome", a new, built-from-the-ground-up web browser that promises to be a modern platform for applications and web pages.

With announcements like this, plus all the new goodies like xPages coming from IBM, you really do need to start brushing up on your web skills. While I *love* rich client development, I believe it's equally important to be able to use your skills when developing for the browser. I've met far too many Domino developers who have said they don't do web. Believe want to start studying up on your html, css and javascript. You won't be disappointed and they are skills that will serve you well outside of Lotus land too.

OK Lotus Geeks, Time To Pump Up!

Hey Everybody...Are you ready for a challenge?  I came across the OneHundredPushUps site a few weeks back and put it on my list of things to explore in more detail.  I finally did this weekend, so I'm ready to get started.  The gist of the program is that you do the required work for six weeks with the goal of being able to do 100 pushups (consecutively) at the end.  I've been running lately and doing a bit of lifting, all in an attempt to get back into prime fighting condition.  I'm lucky enough to be pretty trim and in decent shape (which of course is tough given our profession...we DO sit around a lot), but I want to be more than kind of fit.  Thus, I'm adding this program to my repertoire.  I posted as much on Twitter yesterday, with an invitation for people to join me.  Some folks gave me the thumbs up and agreed to try also.  I thought it would be fun for us to be working on this together.  We can even give encouragement to each other through Twitter ('ve been looking for an excuse to sign's your chance).

Here's what I propose.  Sometime this week, do the initial test and then begin the program.  It only takes three days a week and a rather small time commitment.  If you're on Twitter, let us know when you start and provide your numbers if you feel comfortable.  Use the #lotus100pushups hashtag so we can track all of the results.

Just think...if we can all get buff and do 100 pushups, we'll be the bad ass software developers on the block and will make all the other wimpy developers (ahem...MicroSOFT) cower in fear of our brains and our brawn!  ;-D

I hope you'll join me in getting better shape.  I think this will be fun!

UPDATE #1: Joe is on board and proposes that we all be pumped up for Lotusphere. Phil is in too and already posted his results.

UPDATE #2: Sweet...other Lotus folks are joining the challenge! For updates, stay tuned to #lotus100pushups

Tuesday, August 12, 2008

Twitter...Are We Doing It Wrong?

I should be spending a little more time preparing for the social software proof of technology seminar that I am giving the next two days, but instead I'm spending time reading blogs about social software. Hmmm...maybe that actually counts. :-)

There's been quite a bit of buzz about Twitter in our community lately.  Rocky asked what all the fuss was about a few days ago.  I saw Andrew talking about Twitter being used incorrectly on Twitter yesterday, which I thought was funny and ironic.  Today, he elaborates on those short points and says that we are using Twitter as a chat room and that we shouldn't be doing so.  I thought my comment might get a bit long, so I decided to post here.

Looking at Andrew's thoughts and some of the ensuing comments, my initial reaction is that you guys are all spending too much time looking at this from a tool and technology point of view.  Social software is about relationships between people.   Twitter provides a dead simple mechanism for people to expose bits and pieces about themselves that can lead to a strengthening of those relationships.  It has a singular let us learn more about others.  It may have initially been created to tell your friends what you are doing at this exact moment, but the community that has grown up around Twitter has fashioned a new use for it.  This is a hallmark of good expanded beyond the dreams of its creators.  The importance of the 140 character limit can't be understated either.  It encourages interesting ebbs and flows within a conversation or a person's thought patterns that you would not otherwise see if they had the ability to type free form.  It's a great way to fill in the blanks between e-mails and blog posts.

Twitter works because YOU have the say in what you want to listen to and how you want to participate in the grand conversation.  It's easy to filter out the noise and focus on what interests you.  With the rapid adoption of this model across other platforms, you are going to be hard pressed to get those who believe in it to leave.  I'm not saying that chat rooms don't have their place (they certainly do), but it's just a completely different paradigm.   I see Twitter as organized chaos that I'm free to jump in and out of at will, and there's something about that concept that appeals to me.  It's not about if we're using it for its intended purpose.  What matters is if it strengthens the connections I have to people I am interested in.  Does it help me build a feeling of community?  So far, the answer is yes.  Thus, I think our use of Twitter is just right.

Hey...if you want to follow me,  I'm chrisblatnick on Twitter.  See you there!

Sunday, August 10, 2008

Where Are These Coming From?

I don't know about you, but I've always been a fan of the Muppets.  That said, I've been loving the fact that these videos keep popping up on YouTube.   Here are two of my favorites:

Monday, August 04, 2008

Is Lotus Notes Long In The Tooth?

By now, if you are a member of the Lotus community in any way, shape or form, you've probably seen the great new press release that articulates the momentum we've been gaining (quarter after quarter) over our competitors.  It's so great to see the commitment we've all made to this platform be validated in real world terms.  I, for one, welcome our new Lotus Notes overlords.  ;-)

In light of all the great press and positive upswing I've seen out in the wild lately, I thought it was interesting that I had the following conversation the other day.  I was at a meeting with a customer...a large financial institution.  They are a long-time Lotus customer and really do a great job taking advantage of the Notes platform.  After a successful meeting, I was standing out in the hall talking with one of the VPs and he said to me, "We use Lotus Notes for so many things, especially workflow applications, but they are getting pretty long in the tooth."  I was not expecting that comment, but I immediately knew what he was referring to.  The thousands of applications this customer has are still providing a lot of business value, but the problem is...many of them look and feel old.  In other words, the interface is what makes him think that perhaps it's time to do something new.  I've been around long enough to know that this is not a new sentiment, but it's one worth shedding a little light on.

One of Lotus Notes' greatest strengths can also be its bane.  With Notes, you can rapidly roll out a solution that addresses a business problem, usually faster than your colleagues that use some other technology.  I've seen many of these applications continue providing great value to a company many years after they were initially deployed.  The 100% backward compatibility allows these databases to keep on working version after version.  This brings us to the problem of the interface, however.  If an application was created in...let's say R4...that application is already over a decade old.  If changes to the UI haven't been made, then of course it is going to look antiquated.  Both the technology and interface conventions have changed a lot in that time and user expectations have greatly morphed in that period as well. 

Here's the real truth:  As developers, we no longer have the luxury of creating application that work but don't look good.  You can't say "I don't do UI" any more, lest you want the Notes platform to disappear.  The users of today are computer literate or at least savvy enough to know a good application experience from a bad one.  The internet and Web 2.0 has established a precedent when it comes to usability and user interface design and we ignore this precedent at our own peril. Lotus Notes long in the tooth?  Is it a tired platform that we need to send to the old folks home?  Of course not.  The fact is, the future for Lotus Notes is brighter than it's been for a long time.  It is necessary, however, to start treating it like the modern development platform it is and that means that developers need to take a look at themselves and see if they have the requisite skills to create compelling UIs and usable applications on the Notes platform.  If you feel you are deficient in this area, then here's my call to action:

-  Start thinking about the user interface at the very beginning of your project.  You don't necessarily have to use low-fidelity prototyping, but the interface shouldn't be an afterthought.

- Read a good book or two on interface design.  I'd recommend starting with Don't Make Me Think or Designing Interfaces: Patterns for Effective Interaction DesignGetting Real by the guys at 37Signals is a must read.

- Make usability testing a part of your standard development methodology.  Then actually listen to what your users have to say and make the appropriate changes.

- Sharpen your technical design skills.  Learn how to use a graphics program such as Photoshop or Paint Shop Pro.  Really learn CSS and JavaScript so that your web apps can look and function like they are modern day creations.

- Stop making all your Notes apps look the same as you did 10 years ago.  Yes...I'm talking to you!  :-)  At a minimum, begin utilizing the User Experience Guidelines for IBM Rich Client Applications.  Better than that, though, is to make clean and simple interfaces that support what your users are doing in your more, no less.

I know many developers think the interface is touchy feely stuff, but the reality is that our software is judged by its looks.  Lotus Notes now has a pretty face.  Do your applications?  If your users think that Lotus Notes is "long in the tooth", then your choice is clear...start fixing those interfaces or put them out to pasture. 

Monday, July 28, 2008

The Importance Of Micro-Experiences

Do you think about the simple bits that make using your application, website, etc., easier for end users? With the continuing specialization of certain applications, both within the firewall and out, I find that users are frequently interacting with these applications for very small chunks of time. Usually it is in the context of looking up some item of data, and it made me reflect on the ways I've tried to simplify life for end users, especially in light of short transactions. Here are some examples:
  • Putting an address all on one line so that it is easy to copy and paste into Google Maps or another system (e.g. 50 S. Front Street, Columbus, Ohio, United States 43215). When in edit mode, you would probably split the address up into its component fields, but this is a great technique since it allows the user to initiate a copy and paste action with a single selection. This concept applies equally well to other data elements that are made up of multiple parts. I constantly look up addresses so this idea is one I really love, but I don't come across it too often.
  • Type-ahead for frequently used names, words, phrases, etc. If users are constantly typing in the same text over and over again, be nice and give them a type-ahead mechanism. If something prevents you from using this technique (an old version of the software, for example), be creative and try to build some way for them to easily retrieve these common values (profile docs for individual users work nicely).
  • Pad link targets and buttons so that your user doesn't have to use a magnifying glass to find and click on a hotspot. The guys at 37Signals provided a couple of nice examples on their blog a few weeks back.
  • Provide an easy way to link to the current page of information. Sending a link (be it to a web page or an internal application) is something most users do all the time. We've been spoiled with doclinks in the Notes client for so long, but if you're not in the client (or even if you are but your users don't know how to make doclinks), simplifying this with some code that copies the current address to the clipboard with a single click or a similar idea goes a long way.
  • When in doubt, keep it simple! I've run across many applications that should have been great, but were hobbled by poor layout and even worse...too much visual clutter on the screen. This rule applies across the board, but is really important in the context of micro-experiences. If the user is coming in quickly to get some data and get out, the more you can facilitate this experience and make it a fast one, the happier your users will be.
So those are a few of the rules I try to about you?

Thursday, July 24, 2008

Application Decay...A Must Read Article

Once again, Nathan Freeman has provided us with a thought-provoking article that I think is a must read for every Notes developer.  In this post, Nathan continues his "The Truth As I See It" series (also check out Part 1).

Nathan and I had a quick Sametime chat on how his ideas relate to the user interface. I think as a result we'll have another interesting post to read in the not-too-distant future.  I was going to give my two cents on how this phenomenon also results because of our individual skills (or lack thereof), but I just saw that Mr. Tripcony has used his thought-reading machine to tap into my brain and has elegantly presented his ideas on this very topic.  ;-)  Make sure you go there's an excellent addendum to Nathan's article.

Tuesday, July 08, 2008

Please Welcome A New Voice To The Lotus Notes Community

Hi All...I hope everyone is well. I'd love to say that I've been heads down working on a super secret project that will revolutionize Notes UI development for years to come but...yeah...not so much. I do have a whole treasure trove of ideas in my brainstorming notebook, though, and with any luck, I'll be completely refreshed after my upcoming, long-awaited (and needed) vacation and will dive into developing these brilliant gems into working prototypes to share with all of you.

In the meantime, I wanted to point you to a new blog and introduce a new member of the community. Dan Lynch has been working with Lotus Notes and Domino since the 3.x days and is currently the Team Lead for Enterprise Messaging at one of my customers. They just so happen to have recently completed one of the competitive battles that Ed was talking about yesterday.  Yes... Lotus Notes won out in the end (woot...we rock!  ;-) and Dan was an instrumental member of the team doing the evaluation between the Lotus and Microsoft collaboration platforms.

Dan has a lot of great insight into the "Microsoft threat" and the necessary components to evaluate when going through such a process.  He also has years of experience that he can share regarding the Notes and Domino platform, and I look forward to reading his coming posts.  For now, he has started with a great kick off article discussing the advantages that Lotus Domino brings to the table when you are faced with an e-discovery process. 

Please welcome Dan to the Notes blogging community and check out his Enterprise Messaging Trenches Blog (hosted by the fine folks at Bleed Yellow).

Welcome, Dan...Glad to have you here!

Friday, June 27, 2008

eProductivity for Lotus Notes...Want To Be Way More Efficient?

Many of you have already heard of Eric Mack's eProductivity software, a tool for implementing the Getting Things Done methodology in Lotus Notes. If you haven't, it's definitely something you should check out. If you want to increase your effectiveness and efficiency in dealing with all your stuff, then eProductivity might just be the application to take you over the top. It's an outstanding tool and a great example of the power available in Lotus Notes-based systems.

If you hurry, you might be able to get in on the 24 hour preview program Eric is running right now. Run, don't'll be glad you did.

Monday, June 23, 2008

Add Tagging To Your Mail (Or Any Other Application) Without Design Changes!

If you'd like to find out how to add simple tagging capabilities to your Lotus Notes applications without making any design changes, then keep reading...

As a way to increase my productivity in processing e-mail, I stopped using folders for filing a few years ago. This is especially easy in Lotus Notes 8, since the search capabilities are much nicer and have been enhanced in such a way as to make me very happy I made this choice. Basically, when I process e-mail, I determine if the message is actionable and if so, I decide what to do with it and then remove it from the inbox. I don't file it in a folder...I just choose the "Remove from Folder" action. Clean, simple and gets the job done. I did find, however, that quite often the text that is included in the e-mail does not contain the actual meta data that I would later want to search on. Thus, I found myself editing messages and adding the key phrases related to the e-mail before I removed them. Of course, what I was doing is known by most people as tagging and I realized that a simple mechanism for tagging is exactly what I wanted.

In my last job, I had a highly modified mail file that I used for my GTD system as well as for other productivity enhancements (and as a playground for off the wall ideas, I must confess). When I came into the tech sales role at IBM, I decided early on that I should use the generic mail template, since I would be doing so many demos for customers. As a result, my initial tagging mechanism had to morph to something that required no design changes. I thought that whatever I came up with should be useful for others, but didn't want to spend the time building a complete solution in another NSF. So, I decided to see if I could utilize Formula language in a custom toolbar button. The result, while not elegant by any means, is quite efficient and works well for me, so I thought I'd throw it out here to share.

Here's the scenario. I select the document in question and click my "Tag It" toolbar button. To allow for choices from tags I've already used (for continuity and best search results), I pull up a dialog box of previous tags and also allow new tags to be added. Once I have the necessary tags for the document selected, they are saved into a new field on the document. That's pretty much all there is to it from a user point of view. Here are a couple of screen shots to illustrate:

In order to make this work on a per application basis, I save the list of tags used in a profile document. The first line of the code pulls up the list of previously used tags, while the second line retrieves any of the tags that might already be assigned to the selected document. The next few lines provide for a multi-list dialog, along with logic that checks for the selection of "-add new-". If the "-add new-" option is chosen, the user is prompted to enter new tags (separated by commas) and the updated list of selected tags and any newly entered tags are written to the "txt_CustomTags" field. Finally, the last line makes sure any new tag values are written back to the profile document for use next time.

REM {Get tags stored in database};
Tags := @GetProfileField("TagsProfile";"txt_CurrentTags";@UserName);

{Get any tags from the selected document};
DocTags := txt_CustomTags;

Selection := @Prompt([OkCancelListMult]; "Select Tag(s)"; "Please select the tag(s) to apply to this document"; DocTags; @Trim("-add new-" : @Unique(Tags : DocTags)));

@If(Selection = 1;
@IsMember("-add new-"; Selection);
  @Set("NewTag"; @Prompt([OkCancelEdit]; "Enter New Tag"; "Please enter the new tag(s) you would like to apply to this document. Separate tags with a comma"; ""));

UpdatedList := @Trim(@Unique(@Replace(Selection; "-add new-"; "") : @Explode(NewTag,"," )));

txt_CustomTags := UpdatedList;

@SetProfileField("TagsProfile"; "txt_CurrentTags"; @Unique(UpdatedList : Tags); @UserName)

For completeness, I also include a toolbar button to wipe out any tags on the document (FIELD txt_CurrentTags := @Unavailable).

So, as you can see, while adding a true tagging mechanism would be ideal, this solution makes it very easy for me to tag documents in my mail file and then use the standard Notes search mechanism to retrieve them more easily. While your mileage may certainly vary, it's a great way to give users the tagging ability without changing any database designs.

Thursday, June 19, 2008

Collaboration Comes To MindManager

One last post about mind maps and we'll move on, I promise! :-)

It's no secret that I am a big fan of visual mapping techniques. Mind maps allow you to capture, quantify and organize information in ways that mirror how our brains actually work. They allow you to see beyond simple linear lists to understand relationships between ideas. While traditional mind mapping as developed by Tony Buzan utilizes paper and colored markers, pencils, crayons, etc., the sheer amount of information we deal with as information technology professionals and indeed the medium we work in make electronic mind maps much more compelling. While there are many choices of mind mapping software, my tool of choice is the outstanding MindManager Pro 7 from Mindjet.

MindManager puts the power of mind mapping at your fingertips. I've been using MindManager for a few years now, but I think that MM7 is a big leap forward. Mindjet has done a great job of continuing to progress the tool with each release and the move to version 7 has been no different. I love that I can be productive with the software using the keyboard or the mouse, depending on my desired work mode at the time. It has a lot of powerful features that obviously couldn't exist in a paper-based map, such as task tracking, filtering, integration with Microsoft Office (I know...we need to get them to support Lotus Symphony!), the ability to interact with a map in presentation mode, and many more. MindManager allows the user to very quickly generate maps, certainly much faster than most of us could build a paper map. While the default styles aren't highly artistic, they are perfect for use in the business environment where people tend to be more conservative. That doesn't mean that MindManager can't produce stunning maps. Quite the contrary...the formatting features are plentiful and allow the user to produce very attractive maps with minimal effort.

I'm a big believer in getting your hands dirty in order to truly understand something, so rather than hearing me go on and on about features, I encourage you to check out the Mindjet site and download the free trial version of the software. With a little practice, I think you'll find the ideas of mind mapping to be truly compelling. To get an idea of the kinds of maps people use in the everyday world, check out the Map Gallery.

Before you go, there are a couple of major innovations in MindManager that I want to tell you about. The first is the fluid UI or Ribbon, introduced in the new line of Microsoft Office products. The second is the addition of collaborative and web functionality that is sure to see adoption of MindManager increase.

Let's talk about the collaborative stuff first. Actually just introduced yesterday, Mindjet Connect provides users with the ability to create shared workspaces in which they can share their mind maps and work on them collaboratively with a team of people. The collaboration features include real-time team editing, chat functionality and instant meetings. While I would have loved to see these features as integration points into the Lotus suite of products, just the fact that Mindjet has recognized the need to enable better collaboration is a plus. As part of Mindjet Connect, a slimmed down web-based version of MindManager is available, bringing the major functional points of the software to a browser near you. I look forward to playing with these tools more in the future, but for now I have to say congratulation to Mindjet for the new evolution in mind mapping software.

Now...on to the Ribbon fluid user interface. Although I had read a lot about it, I had not had an opportunity to actually use it until I installed MindManager Pro 7. I tried to approach the new UI with an open mind, as I heard cheers and jeers from both camps...those who loved it and those who hated it. For me, I was immediately enamored by the new way of working. The fact that the multiple layers of drop down menus were now gone seemed to immediately improve my productivity.

Basically, I see the Ribbon UI as a hybrid between the menuing system, tabbed dialogs and the toolbar, but one that is far easier to use than all three metaphors combined. I think that the way related commands are logically grouped together helps speed recognition and the fact that the more frequently used features are larger in scale allows me to target them much faster with the mouse. Another benefit of the Ribbon UI over the traditional toolbar or drop down menu is the fact that the full text of each function is readily visible. Thus, I don't have to worry about memorizing which icon is which or spend my time hovering over the toolbar icon waiting for the popup text to confirm that I've selected the correct option. All of these features are immediate productivity enhancements for me.

I find the fact that the Ribbon is contextual to be very powerful. Elements change, become grayed out or become active based on what I'm actually doing at that moment. In addition, I find that I am saving time by using the Ribbon instead of choosing between right-clicking an element, going to the menus or using the toolbar. I'm not sure if the Ribbon in the Microsoft products work the same way, but I really love the fact that many of the options exposed by clicking on an element in the Ribbon bring up a little submenu that uses pictures. For example, it's easier to select boundary shapes now than in past versions of MindManager, since I can click the Boundary Shape element in the Ribbon and I get a visual representation of all the types.

While it appears that the Ribbon takes more screen real estate than standard toolbars, it still seems reasonable. I actually like the slightly bigger size as it makes it easier to click the appropriate option. A bonus is that you can easily hide the Ribbon completely by double-clicking the menu area of the Ribbon. The options are still only a click away and this allows you to free up the area if you're working on a big map. Since MindManager allows you to so easily move from place to place on a map, however, this hasn't been an issue for me, so I just leave the Ribbon visible at all times.

When I opened the program for the first time, there was probably a minute or two of confusion as I couldn't see any File menu. Then I realized that the big "MindManager Button" replaced this menu. It didn't just replace it, pumped it up several levels. It leverages the same mental model as the Start button in Windows and the fact that it is large and in the corner makes it very easy to acquire (a great example of Fitt's Law). I love, love, love the fact that it is divided into two "panes", one showing the traditional options (New, Open, Save, etc.) and the other changing context based on the option I'm hovering over. It's a very intelligent system and just immediately made perfect sense to me. If I'm hovering over the "Open" command, it shows me a list of my most recent documents. If I'm hovering over "Export", it gives me an easy to read and understand list of my export options. This is really nice...thumbs up for this functionality.

Overall, I find the Ribbon UI to be a big leap forward in the user interface of MindManager. It is similar enough to the standard concepts we are used to in most commercial software, but it has improved the user experience in such a way that I feel I am now more proficient with the software and can perform certain tasks faster than I could before. Although sometimes change is hard, I would encourage anyone hesitating about upgrading because of the new UI to give it a try and allow yourself a little time to get used to the Ribbon. It is a great interface concept and I think most people will come to appreciate it.

If you've stayed around this far, then it's either for my highly engaging and witty writing style ;-) or because you are truly interested in the ideas of visual mapping. If it's the latter (which I hope), then please check out MindManager and let me know what you think. I'd love to hear your feedback and I'd be glad to offer any pointers or assistance as you explore this new path.

Friday, June 13, 2008

Lotus iNotes on the Apple iPhone

Pretty funny that we are back to calling it iNotes! ;-D

It may not be the perfect soluton (yet), but the new iNotes "Ultralite" functionality on the iPhone is pretty nice from a UI perspective.

Check it out...

Tuesday, June 10, 2008

Heck Yeah - Of Course I'm Experiencing Cognative Dissonance!

One of the things I love about reading Tim Ferris' blog is that he gets a chance to sit down and talk with many very interesting people. I have to point out his latest post, since it's a dilemma I identify to be a superstar at work (not doing so hot at that right now) while being a superstar at home as well. Usually, such conflicting demands diminish your performance in one or both domains, so the trick is finding the right path to balancing them as best you can.

In today's post, Tim includes several gems from Dr. Stewart Friedman on this issue. I think it's a great read for anyone that is trying to improve their life and I urge you to read it and then follow up with some Dr.Friedman's books. I know I will be...

Thursday, May 22, 2008

Unlock Your Creative Side And Create More Compelling Designs

Programmers and IT types in general are not usually well known for their creative and spontaneous ways. Most in this profession are very logical and linear thinkers, and often those qualities lend themselves nicely to this field. An unfortunate byproduct of this fact, however, are the thousands upon thousands of badly designed applications that have been forced upon poor, unsuspecting end users. If you've been here for any length of time, you know that I have a couple of sacred mantras. One is that the interface is the application as far as the end user is concerned. They could care less about your SQL backend or cool use of classes in OO to abstract the blah, blah, blah. :-) Another is that because of mantra #1, it is our duty as developers to design everything with the end user in mind. Now...if you are a logical and linear thinker, then this might not be the easiest thing in the world for you to do. The key is to recognize that you need to work on developing your design skills and to continually grow them. One technique that can help in that regard is mind mapping.

Mind mapping is a technique used to visually depict concepts in a non-linear way, with lines radiating out from a central concept that group related items together. They are very useful in allowing you to see relationships in seemingly non-connected information. Mind maps are also great devices for brainstorming. The power of mind mapping comes from the fact that it allows you to utilize both sides of your brain, the creative and the logical. One of the key concepts of mind mapping is including multiple colors and pictures within your map. In doing so, you draw upon those creative tendencies, which just in itself provides value by keeping your brain sharp. Mind mapping began by using the same kind of tools you use for low-fidelity prototyping...pens, crayons, pencils, paper, etc., but you can also now find many mind mapping applications for the computer (stay tuned for an upcoming review of my favorite, MindManager). To learn more about Mind Mapping, check out the definitive work by Tony Buzan (The Mind Map Book) and another great work by Jamie Nast (Idea Mapping)

Click to enlarge

I think that mind mapping provides some great benefits for programmers and designers. One way I use mind mapping is to capture and display all of the little nuggets of information that I come across during the requirements gathering phase. I often find that seemingly insignificant remarks or off the cuff comments that don't appear important at the time make a huge difference to some design aspect of my application later down the line. By having these bits of information laid out in front of me in a mind map, I can occasionally find relationships in the ideas that the end users didn't explicitly spell out or I can identify areas where further interviews and exploration is necessary.

Mind maps work very well for project tracking and managing programming tasks as well. When I get down to the point of writing code, I try to capture the major design points in a map. I know many programmers who do this with basic To Do or feature lists, but by using a map, you can see how the various components of your design are related. It also allows me to visually represent the importance of one item over another, so at a glance it is easier for me to see what I should be working on.

I find mind maps are a perfect way to begin thinking about the hierarchy of a new application design. Items like navigation structure and UI design elements naturally lend themselves to the kind of relationships a mind map is designed to convey. If I'm working on a new website, for example, I'll create a mind map of the taxonomy. When I share this with end users, it's a lot easier for them to understand since they "see" how the website will be laid out. Remember the old cliche..."a picture is worth a thousand words". I think as much as you can simplify the design process for the end users with pictures and easy to read visuals, the closer you will get to meeting their requirements when you deliver the application to them.

Although I have not done this yet, I think mind mapping would be an ideal way to visually see how your LotusScript or Java code is laid out. I remember working on an application for "Really Big Company" that had tons of script libraries. I spent a lot of time when I was first learning the system digging through the various functions and methods and taking notes on what called what, how they were related, etc. I think a mind map could show these relationships much more elegantly. I'm going to try this whenever I get back to writing code.

Beside the applications mind mapping has in a professional development capacity, they can be used for almost anything else. I find that my memory of certain things is improved when I use a map over a standard linear way of writing information down. Mind maps are great for capturing meeting minutes, brainstorming, taking notes on a book you are reading, etc. But the biggest benefit and why I bring this topic up has to do with the creative nature of mind mapping. When you follow the "tricks of the trade", you begin to rely on both sides of your brain and unlock that creative potential that you have inside. In doing so, you'll find that your problem solving skills are sharpened and you can more easily envision the various dimensions of a given issue or task. I believe mind mapping also helps you become a better observer and certainly the act of creating a map helps commit what you are writing to memory much faster than any other method I've used before.

Click to enlarge

Don't just take my word for it. Some superheroes from the Notes community that use mind maps (or have at least dabbled with them) include Bruce Elgort, Eric Mack, Tim Tripcony and Stephan Wissel.

When it comes to designing innovative UIs that your users enjoy working with, creativity is key. I hope you'll consider mind mapping as one possible way to help cultivate your creative side.

P.S. Here's a short little interview on what I do with MindManager.

Wednesday, May 14, 2008

Collaborate From Anywhere...The Value Proposition of Lotus Quickr

If I had to pick a common Achilles' Heel among the various collaboration systems I've worked with through the years, I would probably point to the fact that each system usually has a single point of entry. That is, you have to (virtually) leave the place you are currently working in order to go to the "place to collaborate". I've found this to be true of Lotus Notes document libraries and Team Rooms, Documentum, Quickplace and other web-based repositories and even Sharepoint (depending on the tools you are using). This creates a barrier of entry for a lot of people. They just don't want to have to open yet another window on their already crowded workspace in order to use collaboration tools. In addition, having to leave the context we are currently working in in order to share with our colleagues interrupts our flow state and makes us less productive. Just as effective collaboration has a cultural component that is vitally important, so too must the tools facilitate easily contributing to and consuming from the collective knowledge pool. Thus, one way to shore up that Achilles' Heel is to provide multiple entry points into the collaboration tool of choice. Lotus Quickr has introduced such mechanisms and by doing so really provides a compelling value proposition for team collaboration.

One of the driving goals for Lotus Quickr (and indeed the entire line of Lotus products) is the concept of collaborating in context. Collaboration in context is all about integrating content, tools and people (all the important components of the collaboration equation) within your business process. A great example of this is the Sametime presence awareness capability. If I'm in a TeamRoom and have a question about a document, I can immediately see if the author is online and can initiate a new chat session with them all from the place where my attention is currently focused. Quickr takes this idea to a new level through the Quickr Connectors.

If you've seen Quickr out in the wild, you've probably seen the web-based UI. While certainly shiny and new, this UI only shows one facet of the product. If you choose to, you can access all of the collaborative features of Quickr by opening your browser and navigating to your Team Place, but the beauty of the Quickr Connectors means you don't have to. Instead, you can access Quickr content and add to Team Places from where you already are. This includes:

  • Lotus Notes

  • Microsoft Office

  • Lotus Symphony (coming soon)

  • Windows Explorer

  • Lotus Sametime

Quite an impressive list! IBM rightly realized that when people collaborate, there is usually some artifact that prompted the collaboration process. For most knowledge workers, this means we are authoring documents, usually in one of the tools listed above. Rather than making users take extra steps to get that content to the "place to collaborate", Quickr was designed to meet people where they are actually doing their work. This is a huge leap forward in my mind, as it removes that big stumbling block that plagues many collaboration initiatives.

Let's look at a couple of simple scenarios so that you see the power of Quickr. I think these will help in articulating the value proposition.

Scenario 1: Jim is an HR employee responsible for updating the company policy manual. This process involves making the changes in MS Word and then getting feedback from his colleagues before the changes are published.

Old Way: Jim has to locate the current, official policy document, copy it to his hard drive and open it in Word. He then makes the necessary modifications and makes sure he saves a new version on his computer. In order to collaborate with his colleagues and get their feedback, Jim then opens the Lotus Notes HR TeamRoom and creates a new document, attaching the Word file to it. This process, while not difficult, is inefficient and requires that Jim do a lot of task switching.

New Way: With Quickr, Jim's life will be a lot easier. If the HR policy exists in a Quickr site, he can open it directly from Word, make his changes, and save a new copy back to Quickr...collaboration in context.

Click to enlarge

Scenario 2: So much collaboration takes place today by people sending attachments back and forth in e-mail. This is extremely inefficient for many reasons. For users, attachments are the single biggest cause of being thrown into "mail jail" (i.e. exceeding quotas). In addition to the requirements from a storage perspective, there can be version find yourself wondering if the version you have is the most current one. With the integrated Quickr shelf in Notes 8, you can solve these problems. The Quickr shelf allows you to see all of your Team Places and access data from them directly from Notes. You can drag and drop attachments from an e-mail message into a Place. You can also drag an attachment out of a Place and into an e-mail message. Quickr is smart enough to add this attachment as a link rather than an actual attachment.

Click to enlarge

To help you remember to use your collaboration tools when you are sending e-mails, Quickr will detect if you have any attachments in your message and will prompt you to save them into Quickr. You can select the Place to move the attachments into and then the attachments will be replaced with links to the newly added Quickr content.

Many of the other integration points work in the same way, utilizing common actions that meld very nicely with the system we are interacting with (drag and drop into Quickr from Windows Explorer, for example).

In my experience as a collaborative technologies consultant, once you get people on board with the idea that collaboration is important and valuable for them, the next hurdle is getting them to actually use the tools. Lotus Quickr with the Quickr Connectors makes a very compelling case for simplifying adoption and helping your users get over that hurdle. I think we'll see this idea of collaboration in context start to embed itself in more and more collaborative tools and I am really looking forward to that experience. I know for me that working with Quickr has been a pretty enjoyable ride so far.

New Blogger @

Yo, yo...welcome to my peeps...Andrea Waugh-Metzger is now blogging at She is one of my colleagues, but way, way smarter than me, so you should definitely get over there and visit. Tell her I sent you and maybe I'll get some brownie points. :-D Peace out...

Thursday, May 01, 2008

Say It With Me Now...User Focused Design Is KEY

If there's a particular drum I bang over and over again, it's the "keep it simple, stupid" drum. This term has almost become a cliché , but hey, "if the shoe fits, wear it". (Oh sorry, that was bad...just couldn't help myself ;-)

Anyway, when I was doing project work, I was always the guy advocating for people to "take it slow", "do things in stages", "no big bangs", "Amazon wasn't built in a day", etc., etc. I believe that quick, iterative steps yield better results, less bugs and get you to the end goal faster than big, monumental projects. The problem, it seems, is that companies like to have big, monumental projects. The bigger the company, the more monumental the projects seem to be. I think this is dead wrong. It's not the way our brains work, it's not the way people are most efficient and looking at the abysmal failure of so many IT projects, it sure doesn't seem to be the way to run a business. So why do we keep doing it? I guess if I knew the answer, I'd be running a shop somewhere instead of pushing software. :-)

In my "To Read" stack of magazines, I recently came across a jewel of an article in the April 2008 issue of Baseline. The cover story in this issue was a piece outlining the failure and eventual redemption of Symantec's new ERP implementation. A classic "big, monumental project", it was undertaken without really understanding the needs of the very people that would be using it. As they found out, such an oversight almost completely crippled their business. In the end, what saved them was a new project that put the focus on the user experience.

I don't want to rehash the article here...I highly recommend you go and read it...but I do want to point it out as a prime example of a project gone wrong because the final end goal wasn't made clear. That final end goal always has to answer the question "Who is going to be using this and how will this project help them do their job". If you're not asking this question and getting the answer in your project, then you are doing your users a disservice. Keep their goals in the forefront...that's why you're there.