Tuesday, June 26, 2007

Our New Addition...

No...not the kid...the other one. Oh boy, does Walmart have any openings for the night shift? I see my paycheck flashing before my eyes!

A Horse Named Sandy


permalink | leave a comment

Monday, June 25, 2007

Speaking of Mind Maps...

After I posted my Notes URL mind map last week, Tim Tripcony did some "tinkering" for a few minutes (man...the brain power of some of you people really scares me! :-) and he came up with some LotusScript that allowed him to generate a mind map of his mail file. Sweet!

Nice work, Tim...


permalink | leave a comment

Sunday, June 24, 2007

"Low-Fidelity" Prototyping With Electronic Tools

Do you like the idea of low-fidelity prototyping, but don't relish the idea of dealing with all that paper? It's certainly possible to get the great benefits of the low-fidelity prototype without all those annoying paper cuts by using some creative electronic tools.

One of the ways I sometimes "cheat" in this area is by taking advantage of my Tablet PC. I use Microsoft OneNote as my "blank pad" and create my low-fidelity prototype directly on the screen with my tablet pen. Although I really enjoy working with pencil and paper (and crayons, markers, etc.), I find the tablet solution to be a good one when I'm pressed for time. If I want to make changes, I can simply erase an area of the screen or create a copy of the current page and make the modifications on the new version. Taking advantage of OneNote allows me to group related prototype pages by project, perform searches on keywords, backup my work easily, etc.

Using OneNote on the tablet is also a great help to me when I'm further along in the design process. I can use the program to perform a quick screen capture, then use digital ink to annotate the changes needed directly on a picture of the screen in question. This aids me greatly in remembering what we were doing if I go back to find some details in the future.

Another promising tool for quick "low-fidelity" prototyping is the DENIM project. DENIM allows you to create actual working prototypes that maintain the spirit of quick, iterative low-fidelity methods. With this tool, you draw your prototype as you normally would. The cool part is that the system is very smart and can identify common design patters, such as text boxes, labels, radio buttons, etc.

Check out the videos on the project site to see it in action. I think you'll agree it has some merit. I have to admit that I haven't tried DENIM yet, but it's certainly on my to do list. If you check it out, let me know what you think.

I'm sure there are other creative developers out there that use electronic tools to perform quick and dirty prototyping. If you've got some ideas you'd like to share, please post them in the comments. No matter how you go about it, the important thing is that you prototype often and early. This will help you deliver better systems to your users!

Wow...just realised as I was saving that this is my 100th post. Didn't think I'd make it this long, especially since I sometime get a bit long-winded! :-D Thanks for sticking around everyone!!!

Labels: , ,

permalink | leave a comment

Wednesday, June 20, 2007

ActiveWords...Making Notes (and More!) Easier To Use

In my post from a few weeks ago, I briefly talked about one of my favorite productivity tools, ActiveWords. In this post, I want to introduce you to ActiveWords in a little more detail. At the end, I'll hit you up for some ideas that we can use to make ActiveWords even more compelling for Lotus Notes users.

First, a little about how I use ActiveWords in my daily work. The program is set to load when I start my computer, so as soon as I jump into my work it is ready to go. Usually, the first thing I do is start launching programs and ActiveWords is perfect for this task. It doesn't matter where I am within Windows (at my desktop, in another program, etc.), I can trigger an action just by typing its ActiveWord and using the activation key (by default it is F8 but there is an option to use 'space' 'space' as a trigger, which I really like). So, as soon as my PC loads up, I type 'n' at the desktop and hit the spacebar twice. This command launches Notes. The really powerful part comes into play when I am actively engaged in a work task. Let's say I'm typing an e-mail and I want to pull up Microsoft Excel. As I'm typing (directly in the memo where I get the thought), I can enter 'xl' and then double space. As soon as I type the first space, ActiveWords is aware that I used one of my words and the next press of the spacebar actually activates the action. Excel then launches as I desired and the letters I typed in the memo to trigger the ActiveWord are deleted (pretty smart, eh?). The screenshots below show you some of the options you have when setting up such a trigger word.

Just with the option to launch programs by keywords wherever I am, ActiveWords provided me with a productivity boost. However, ActiveWords is no one trick pony. It can do far more than just act as a program launcher. "What else?", you may ask. How about:

- Substitute a word you type with a another word, phrase or even multiple paragraphs
- Navigate to a specific Windows folder
- Open a website (or any URL really...think notes://)
- Open a document (this is what I use to launch .ndl files)
- Open a Windows Setting
- etc., etc.

You really need to experience it for yourself (hint: download the free trial), but here are some examples of ActiveWords that I use for the categories shown above.

Test Substitutions
* I now have my e-mail/message board signature line defined as a text substitution (multiple lines complete with a quote and all). My ActiveWord for this is 'sig', so I just type this and hit the spacebar twice to insert my signature wherever I am. No longer do I have to keep a signature line defined in multiple programs.
* I have ActiveWords for my 'name', 'address', 'phone', etc. If I need to enter those values in a field, I use the applicable ActiveWord, which is a lot faster than typing the whole thing.
* When I am doing application testing, I absolutely hate typing dummy text in fields. I put the opening couple paragraphs of the Gettysburg Address into an ActiveWord called 'test' and voilà, instant development testing text.

Opening A Website
Well this is pretty self-explanatory, but very useful. Example ActiveWords in my WordBase include 'bank', 'wiki', 'gm' (Gmail), 'r6' (Notes 6 & 7 forum...i.e notes.net! :-) Since this function within ActiveWords supports any URLs that are registered in Windows (*I think*), the notes URL protocols work too!

Navigating To A Folder/Opening A Windows Setting
I use this for quick access to My Documents and other folders on my hard drive ('projects', 'expenses', 'pics', etc.), Opening a Windows setting allows me to launch the control panel ('cp'), add/remove programs ('add'), etc. with just a couple keystrokes.

I think you get the idea.

Now, imagine extending these basic uses. For example, what if you wanted to quickly send a link to your calendar to another user? Maybe you do this often and it would be worthwhile to create an ActiveWord for the action. There's not an option for this out of the box, so what do you do? Being the really cool program it is, ActiveWords provides you with a scripting language that you can use to automate many tasks. Basically, if it's something you can do in Windows, you should be able to write a script to accomplish it. So, how could we automate the calendar link? Something like the following would do the trick:

You can see here that there are several commands built into the scripting language. Commands in the scripting language are delimited by < and >. In the example here, I am navigating to the Calendar view, pausing for a second, then emulating the press of the 'alt' key, followed by e (Edit), n (Copy As Link) and v (View Link). I then use the shortcut to create a new memo (Ctrl-m), tab down 4 times to get to the body and then do a Ctrl-v to paste the view link. Of course, this could be extended to include standard text, a signature line, etc.

The scripting language is quite advanced and allows you to use compound commands as well. As you can imagine, this can lead to some very complex actions that you can control with just a key or two. If you are concerned about being more productive and you are an ActiveWords user, you owe it to yourself to explore this feature in more detail. I'm really just starting to discover the power of ActiveWords scripting and I'm loving it.

That's right, Bob...there IS more! If you are a Tablet PC user like I am, you might find it a little difficult to trigger ActiveWords by using the keyboard when there's no keyboard available to you (i.e. when the tablet is in slate mode)! Enter the ActiveWords InkPad. This totally cool, totally free addition to ActiveWords provides you with a little floating widget that you can use to enter the trigger words with your pen! There are several options available for placement of the widget, size of the InkPad, etc. I have mine set to always be visible on the screen (whoops...sorry for leaving that on during my presentation at Lotusphere...my bad!). The ActiveWords icon floats on top of all windows (I've got it set to be semi-transparent) and only when I hover over the icon does the InkPad input area appear. Then, I simply write in my ActiveWord and move my pen out of the input area and the command is triggered. This is a very valuable addition to this program, since I maintain all of my standard ActiveWords functionality without having access to my keyboard!

In addition to all of the functionality built in to ActiveWords, there are several free modules available as add-ins that help extend the power of the tool even further. In ActiveWords lingo, these add-ins are known as "WordBases". Available WordBases include one that makes taking advantage of Google search and services very easy, an emoticon replacement function (e.g. type 'flower' and get @}->--), in-place spelling corrections, standard Windows commands and automation, etc. You can see all of the available add-ins here.

So...all of this leads me to a couple of calls to action. First, I encourage you to check out ActiveWords and see if you find it as compelling as I do. They have a 60-day trial available, so this gives you plenty of time to get a feel for the application and explore how it can make you more productive. Second, if you already use ActiveWords or if I've intrigued you enough to try it, you might want to participate in helping the fine folks at ActiveWords make a standard WordBase for Lotus Notes. Since I'm always harping on the UI of the client, I have a keen interest in leveraging ActiveWords to make using Notes easier. I've seen this in action in my own work and I think we could do the community of users a great service by helping in this space. If you want to explore what I've done so far and offer any of your own ideas, critiques, etc., please check out this post on the ActiveWords forum.

Ready? Go...

Labels: ,

permalink | leave a comment

Friday, June 15, 2007

Mind Maps For Lotus Notes: Notes URLs

As I have mentioned here once or twice, I use MindManager for creating mind maps that I use for work and for personal items. I have several maps that I keep for reference on various Lotus Notes topics and since I know several of you in the community use MindManager as well, I thought I'd clean them up a bit* and make them available here.

I love using Notes URLs for different tasks, especially for having integration with Notes in other programs. I'm currently exploring the boundaries of what the Notes URL syntax can do in an effort to help make the ActiveWords more compelling for Lotus Notes users. Since I'm playing around with them lately, I thought my Notes URLs - A Reference map would be the first one I would throw out here. If you click on the picture below, you can interact with the mind map in your browser (sorry...IE only). If you don't have MindManager and you don't want to install the free plugin, you can still check out the PDF.

Download the Mind Map
Download the PDF

Have a good weekend and Happy Father's Day to all the dads out there!

*clean up = make a new one so it's pretty :-)

Labels: , ,

permalink | leave a comment

Thursday, June 14, 2007

Show & Tell Thursday: Download Edition (My Cup Runneth Over)

Since I promised at both ILUG and Lotus Developer2007, I figured I better get some of my example databases out here for you to check out. I've also received a lot of e-mail with questions about various concepts over the last few months, so those might be included here as well. Finally, I'm including other databases I've made available in the past on this post as well, just so this becomes a comprehensive index of all the downloads to date. Read down through the list and see if there are any goodies you'd like to have. If you find anything that's of real use to you and you'd like to show your appreciation, you can go help Eileen and contribute to her cause!

As always, feel free to shoot me a mail (chris AT interfacematters.com) if you've got questions. I can't guarantee I'll answer right away (or that I'll know the answer), but I promise I will reply.

Disclaimer 1: All of these examples are proof of concepts. While many of the techniques come from applications I've developed and am using in production, I strip all extraneous code down to the bare minimum so you can focus on the mechanics of how the technique works. If you choose to use these ideas, please remember to use error checking and applicable standards based upon your company's best practices.

Disclaimer 2: I never said I was a good programmer! :-)

Disclaimer 3: Snausages...they really don't taste that good...

Building A Wizard Using Programmable Tabbed TablesI like Wizards...both the kind that can do cool magic tricks like turn your wife into a horny toad (no, you pervs...a horny toad) and the "really helpful from a usability standpoint" kind. Wizards are great for walking users through a multi-step process one task at a time. They're very easy to create with a programmable tabbed table you pull up in a dialog box. This demo shows you how.
Notes Is Like An Onion...It's Got LayersHere is the example database that I used for my Speedgeeking session at ILUG. We can stay up all night, swappin' manly stories about layers and in the morning...I'm makin' waffles!
Advanced User Interface Techniques for the Notes ClientThis was a demo database that I used for my session of the same name at Lotus Developer2007. It combines many of the past demos such as drag & drop, cascading menus, ordering a squishee (i.e. embedded editors) and the Super Burrito Configurator (woo hoo)!!!
Cool DocsThe demo that I put together on the plane on the way to Lotusphere. Just a quick idea of how a database experience can be changed in somewhat dramatic ways with just a little tweaking of the UI. Let your imagination be your guide! :-) Keep in mind that this is not a full solution...that's something I hope to work on it the future. This sample database also shows you how to easily collapse an embedded, single category view and includes code for creating "expand" and "collapse" functionality for the view as well. A nice usability touch for your embedded elements.
Fun With the DOM...Playing With The Action BarA sample snippet that demonstrates how you can use the Document Object Model to manipulate HTML elements. Since the Domino-generated action bar is just a table, you can get a hold of it and its child elements and do things like change the links, change the text based on the value of a field, turn it into a cascading menu, etc. Read the article and then follow along with the sample db.
Application Activity TrackingDon't forget this nifty little project on OpenNTF. Not only is the concept fairly useful, but what's nice about this one is the activity dashboard that summarizes all of the detail in an easy to read manner. On a related note, don't miss Kevin Pettitt's SuperNTF application, which combines this project and a host of others into a really nice framework for Lotus Notes.
Lotus Developer2007 CSS ExamplesFrom "Advanced CSS Techniques for Domino Web Applications". This zip file includes the stand-alone CSS and HTML files I was using to demonstrate some of the concepts like positioning and advanced selectors. The main Domino-based examples are in the demo database from the CD.

Now it's time to go record another segment for the Taking Notes podcast. That Bruce guy is a task master! :-)

See you on the flipside...

P.S. I'm using box.net to host these files. I tried their service quite a while back and it's really improved a lot. Very slick, easy to use interface. Kudos to them!

Technorati tags: ,

Labels: , , , , ,

permalink | leave a comment

Tuesday, June 12, 2007

Usability Testing...Uncover The Flaws In Your UI (Part I)

Usability testing is the second of the two incredibly powerful development techniques that I suggest you add to your design arsenal. The first, which we covered in my last big article, is low-fidelity prototyping. Even though they are powerful concepts on their own, if you actually combine these techniques together and use them in conjunction with one another, I guarantee that you'll start delivering higher quality applications to your users, at least as far as the user experience goes. *

So...what is usability testing all about? Usability testing, in its simplest form, is all about testing whether the design of your application meets the needs of the users from a UI perspective. This test will uncover if your design is simple and easy to use, if there are glaring errors that prevent the user from accomplishing their work or even the more subtle things that might make the user's job easier or harder. Whereas traditional software testing is used to determine if your application does what it is supposed to do with the data it is given, usability testing is concerned with whether the user can successfully get the data in (or out) in the first place.

Usability testing is quite often relegated to second class status as far as testing goes and many times it is left out of the design process entirely. This is a real shame, since this form is testing is really the most critical. By testing your UI, you'll have the opportunity to find the troublespots that will trip up your users before you let them start using it (i.e. roll it out to production). Remember, the sooner you can find and fix errors, the cheaper it will be. If you can do this before you even write a line of code, you'll be making significant progress in reducing costs and boosting quality. Best of all, you will improve user satisfaction by performing usability tests and this is perhaps the most important metric of all (unless you don't really care about them...in which case you should stop reading and go flick the server on and off several times ;-)

Usability tests can range from really high tech (think two-way mirrors, video cameras, fancy labs) to really simple (e.g. a user & developer meeting in a conference room). Most of is aren't lucky enough to work in a company with a dedicated usability group, so it will fall to us to conduct the tests. I advocate a fairly simple approach and I tend to keep my methodology fairly lightweight. If you try to get too process heavy in this stage, you run the risk of subconsciously making up reasons to skip it ("We don't have enough time!", "There are more important things to work on!"). For a typical Lotus Notes business application, I think you can get some pretty useful data with a handful of users, somewhere on the order of three to five people. Of course, the larger your app and the more users you can test, the better your data set will be. Use your best judgment here. You'll get better with practice.

Once you have some users on board, what do you test? To be effective and to allow you to make logical comparisons with the data sets, usability tests should be task-based. That is, your test users should have a predefined goal to accomplish within the application. By using a defined task, you are setting the boundaries and restricting the users' choices. This helps keep them from ambling around the app without a purpose.

During a usability test, your most important job as a developer is concentrated observation. You should be recording notes on all the action the user is taking as they are working on their task. Pay particular attention to times when the user pauses or looks puzzled. It is perfectly OK to question the user when they perform an action or when they seem confused. The whole purpose of this process is to find errors or difficult aspects of your UI and these notes will serve as the main data you will analyze. Don't be shy about drilling into the user's thought process and let them know that it's OK to be brutally honest. Yes, sometimes the truth hurts, but it's best to hear about likes and dislikes now rather than later.

One important note here: When you are performing a usability test, be sure you make the user feel comfortable and insure them that you are testing the application not their skills. When things go wrong or a user does something you didn't expect, first tell them that it is OK. After all, this is why they are helping you. Then, question them and find out why they did what they did. Some really interesting data usually comes out of the things that are broken or when users try to use elements in ways you did not expect.

In the next article, we'll explore the actual mechanics of the usability test. For now, let's just assume we conducted a test and we have several pages of notes covering the specific task we studied. What do we do now? Now, we pour through the notes and attempt to analyze them. Look for common patters or themes across the various users. You are trying to identify the elements of your application that are broken or that caused significant delays or user frustration. If you did a good job with soliciting the users' thoughts as they carried out their task, you most likely have a good idea of why a particular component didn't work for them or why they got frustrated. The trick now is to take all of this data and fix the troublespots. (You can look for the good things too. If users really liked the way you implemented a certain feature, make sure you find out why and use this knowledge in the future).

Besides fixing the obvious broken stuff, a usability test is valuable in exposing an inefficient or cumbersome UI. As a developer, it is very easy to overlook the complexity we sometimes build into an interface because we are so close to the design. The usability test gives us an opportunity to take a step back and see things through the eyes of our users. Personally, I found this to be very valuable in making me more empathetic about the applications I build. After conducting a few usability tests, you'll begin getting a really good sense for what users find simple and what is difficult or annoying for them. You can leverage this knowledge in your next design and I believe you'll find your skills around designing UIs will start to improve!

Usability testing is most effective when used in an iterative manner as part of your overall development process. Although doing a usability test at the very end of the dev cycle is still better than not doing it at all, the biggest benefit (saving time and money up-front) is lost. The best usability tests uncover the flaws before you enter the coding phase, which is why I find testing with a low-fidelity (i.e. paper) prototype such a powerful development trick.

Testing a low-fidelity prototype is really not much different than testing a real, working prototype. Instead of having a computer to interact with, the users will interact with the individual pieces of paper that represent the screens of your application. In a low-fi usability test, the user will utilize a pencil or pen as their input device, rather than a keyboard and mouse. Instead of a computer providing the necessary prompts and results, this will be carried out by a human participant playing the role of the computer. Other than these relatively minor differences, the end goal is the same...capture notes on the system usability so that you can fix bugs and simplify the UI. The big "bang for the buck" in low-fidelity testing is the fact that you haven't written any code yet, so changes are really easy and really cheap. To redesign an entire screen requires no more than grabbing another sheet of paper and your markers! After you go through two or three iterations of your design and test cycle, you will have a great blueprint for how the application will work and increased clarity on how to move forward (no more staring at a blank screen wondering, "Where do I begin?"). Best of all, you're much more likely to deliver an application that your users will love to work with right out of the gate.

So now you've got an idea about what usability testing is and why you might do it. I hope that you see it is really just a logical component of good UI design and that it can allow you to produce a higher quality product than you might otherwise deliver. Next time, we'll look at some of the specific techniques involved in usability testing. I think you'll find them very simple to do while yielding very important results.

*No actual guarantee is implied, inferred, suggested, etc., etc. You're on your own here, pal! ;-)

Labels: , , ,

permalink | leave a comment

Friday, June 08, 2007

Happy Birthday Matthew!

13 years ago today, you were born. Wow...that just blows my mind...especially because it doesn't really seem that I was 13 that long ago! :-) Hard to believe so much time has gone by so quickly.

Matt rocking out at his band's first gig

Happy Birthday buddy!!! You are an incredible kid with a lot of potential and I'm very proud of you. Keep striving to do your best and reach for the stars!

Love...Your Old Man :-D


permalink | leave a comment

Man, I'm Beat! (Or...A Post Of Miscellania)

Wow...between ILUG, Lotus Developer2007, jet lag, and basic lack of sleep for the past two weeks, I am done for. On top of all that, my oldest turns 13 today, so I am now officially the parent of a teenager. THAT is a scary thought! Plus, that means I am getting old!!! :-(

What follows is just a bunch of random thoughts from the past few days...

Thanks to all of the people who attended my sessions at the View conference. I really enjoyed talking with all of you and hope you got some useful content out of it. I think the most fun was my Advanced Interface Techniques presentation on Monday afternoon. It must have been pretty successful, since I got several people to stay around an additional 10 minutes after the end, showing them some stuff I didn't have time for. The kicker was that it was 5:30 and there was FREE BEER available and they still stayed. Way cool! :-D

The conference as a whole was amazing. So many talented speakers and attendees that really seemed happy to be there. The WIS staff does a super job of making things run smoothly. It's always a pleasure to see them all. The one weird thing about the conference...how it just ends. They don't have a closing session of any kind. You just get out of your last class and that's it. I think a short closing session just to wrap things up might be nice. Hanging out after hours is always fun too. I hope to see you all again next year!

Notes Gangstas
(credit: Paul Mooney)

For those of you looking for some of the downloads I promised, please give me a couple of days and they will be available. I plan on adding the non-Domino based javascript and css examples here. Most of the other stuff I showed is in the take-home database. For ease of use, I combined the JavaScript and CSS examples into one database. Also, I ran out of time in the Advanced UI session and didn't get to show the "Super Burrito Configurator". There's some cool ideas there, so check it out!

I got delayed flying from Cleveland to Boston, so I had time to write part 1 of my "intro to usability testing" article. Look for that as soon as I get a chance to type it up (yes...I actually used the ancient art of writing on paper...really nice to do that sometimes, especially in a nice crisp Moleskine with a good pen).

Some very interesting items came to light in the last few weeks that I haven't had a chance to comment on but are certainly worth reviewing from a collaboration perspective, most notably Microsoft Surface and Google Gears. Surface looks amazing...I hope to get some time to jot down my thoughts on this innovative interface. Speaking of "jotting", I love the Jott service. Being able to use my cell phone while driving (with headset, of course)to deliver notes to myself via e-mail has been invaluable. More on that later as well.

I am really drooling over the iPhone and its UI but I am still unsure of a device without physical buttons of any kind. Unless they've got something else up their sleeves, the iPhone is certainly a two hand device, which in some ways reduces its utility. Perhaps this could be rectified with bluetooth-based voice controls or something similar.

Best thing about coming home (besides seeing my family, of course): The new Dream Theater album (see, I'm showing my age by using that term) was waiting for me. The special edition packaging looks sweet and I can't wait to hear the 5.1 version down in my home theater!

Well..I guess that's all the ramblings for today. Almost time to kick off the weekend. Have a great one!

Labels: , ,

permalink | leave a comment

Sunday, June 03, 2007

Boston Bound...

As I'm putting the finishing touches on all the chores around here and hanging with the fam before I head to the airport, I thought I'd get my schedule for Boston ( LotusDeveloper2007 if you didn't know) out here in case any of you want to come by and razz me. :-)

I'm actually really looking forward to Monday, since I get to do two of my interface sessions. The morning one ends up being a great introduction to the general concepts I talk about all the time, while the afternoon one takes those concepts and runs with it. We'll look at many advanced techniques which I think can add a lot of value to your applications. It's all about simplifying and improving the user experience, and I'm excited to present this one.

Anyway, here's where you can find me the next few days. If you get a chance, please stop by and say hello...

Monday, June 4
9:45 am – 11:15 am: Interface Matters: Design Your UI for the Ultimate User Experience (Gardner)
4:00 pm – 5:30 pm: Advanced User Interface Techniques for the Notes Client (Hampton)

Tuesday, June 5
10:15 am – 11:45 am: Advanced CSS Techniques for Domino Web Applications (Gardner)
12:00 pm – 12:45 pm: Overcoming User Interface Design Issues and Challenges (Back Bay D) (This is a Birds of a Feather session)
2:00 pm – 3:30 pm: Securing your Domino Web Environment (Hampton)
6:00 pm – 7:00 pm: Ask the Experts (Constitution Ballroom)

Wednesday, June 6
10:15 am – 11:45 am: Applying Best Practices and Advanced Techniques to Your JavaScript (Back Bay D)

Labels: ,

permalink | leave a comment