Friday, March 21, 2008

feed your mind, feed the world

Did you know that holly is a type of ilex and a planarian is a flatworm? FreeRice lets you learn new vocabulary while feeding the world's hungry. They give you a list of words, you select a meaning, and for every one you get right they donate 20 grains of rice. There is lots more information on their site about world hunger, so go learn a new word or two (or three) and help end world hunger. I'm looking forward to more erudite vocabulary in the blogosphere. Just don't cross over to magniloquence like some people are wont to do. You know who you are. ;-)

Monday, March 17, 2008

12 Steps to Stellar Software Design

A while ago Computerworld published the following list (edited slightly for brevity). I've had it up on my wall for a while and realized it would be a good thing to share.
  1. Admit you have a problem. It is impossible to design good usability on your own. Know thy user. Use personas -- fictitious characters that are created to represent the different user types within a targeted demographic that might use a site or product. "Guerrilla" usability tactics such as informal customer interviews and teaming up with tech support staff might work too.

  2. Believe in a power greater than yourself. You need to find out who these folks are that are using your stuff, and they may not end up being the people you started out with when you designed the product.

  3. Make a decision to recognize good design. Design is not just what it looks like and feels like. Design is how it works.

  4. Make a fearless inventory of your user experience shortcomings.

  5. Admit to someone else the nature of your problems. More than just getting feedback, talking as an equal to users can help sort out why an application may not be working.

  6. Be ready to remove these defects of character. The interviewer used Microsoft Office 2007 as a case study. As the company added more features into its Word product, for example, it began using "rafted" toolbars buried in the interface, moving from 12 to more than 31 toolbars by the time it offered Word 2003. "Of the top 10 feature requests, five had been in Office for more than one release." The latest version, in contrast, uses a "ribbon" with a master set of toolbars that helps find what you need.

  7. Ask for help. Post mockups of the next version and solicit feedback. You don't have to listen, but it's good to know what people are saying.

  8. Make a list of all the users you've harmed, and make their lives better. A scale goes from functional > reliable > usable > convenient > pleasurable > meaningful. Most fall halfway to convenient. This is a really hard one to cross.

  9. Make direct amends. If you can't deliver an improvement, prepare for the worst. Don't burn bridges with your users. They will never come back, and they will tell all their friends.

  10. Continue your inventory. Usability testing is not a one-time event but a cycle: Observe, analyze, design. It should be like using shampoo.

  11. Realize that without users, it doesn't matter.

  12. Pay it forward. The software community has a number of resources, including Yahoo's User Interface Library and the Tango Desktop Project, to offer lessons learned.

Wednesday, March 12, 2008

a little confused by Sametime trial installation options

Can anyone point me to something that documents the difference between these options? I've been digging on the Lotus site and can't find any reference to it.

Wednesday, March 05, 2008

IBM and Apple ... does it blend?

As you may have noticed by now, I subscribe to several Computerworld newsletters. I find they cover a variety of subjects, have a lot of good content, and they even sometimes surprise me with the off-the-wall things they come up with.

A recent article by Don Tennant really got me thinking. Don puts forth the idea that Microsoft's worst nightmare is an IBM/Apple merger.
I asked Gates what trend or development had occurred in the technology sector in the past 20 years that really caught him by surprise. His deadpan response: "Kaleida and Taligent had less impact than we expected."

Gates was referring to two software joint ventures formed in the early '90s by Apple and IBM that were already fading into oblivion. There was something different in his tone -- a biting sarcasm -- that reflected a degree of scorn that he seemed to reserve for the Apple/IBM combo. And it was telling.

Microsoft's worst nightmare is a conjoined Apple and IBM. No other single change in the dynamics of the IT industry could possibly do as much to emasculate Windows.

Rumors of an IBM and Apple merger have come and gone for years. There's something different in the air now. Just as Apple is starting to gain greater popularity, they have started dropping their enterprise-oriented products. At the same time, IBM's heritage has become a bit of an albatross around its neck so it has to do something soon or risk losing the recent momentum that it is building.

IBM has obviously drunk the Kool-Aid that says sexy sells. Just look around. They finally updated their website to a new look, they actually made Notes not look like a 1980's throwback, and they're trying to engage a younger crowd. IBM needs to take it the next level, though. They have excellent products for business, but with the spinning off of its consumer printers as Lexmark and the sale of its PC division to Lenovo a few years ago, IBM has no entree into consumer technology. If you ask the average person under 30 why IBM is a household name it's because "they used to be relevant". No consumer will ever purchase an IBM product today. That's a bad thing for IBM.

As we are clearly experiencing, the next big things in business IT are coming from the consumer side. They're often not new, corporate IT has been doing things like mashups, composite apps, and social networking for years, but they are being torn apart and reinvented for consumer use, who then bring the simplified and exploded versions back into the corporate world. That's the power and the promise of the Internet Age, and IBM is going to have to get into the consumer market to be a player in future corporate IT. It was moderately important in the 80's and 90's, but today if you make business software without a consumer presence of some type you're dead.

So I think IBM needs to buy Apple. It would give Apple the credibility it needs in corporate IT, and give IBM the street cred it needs. If such a thing happens hopefully IBM has learned from its mishandling of Lotus and will be extremely laissez-faire. It took about a decade for IBM to finally grasp that the community is what made Notes successful and that backing off was the best thing. I'm not sure Apple's faithful could survive IBM's Nurse Ratched-like tenderness for that long. :-)

Friday, February 29, 2008

thanks Volker!

He took a great picture of me. Hey, if I can't be vain on my own blog, where can I? :-)

Volker took this in the Dolphin rotunda on Sunday during Lotusphere. I had just met Francie and was trying to talk to her, and Volker was very persistently trying to get pictures of everyone who was standing around. I finally shut up long enough for him to do it, and after he checked it on his camera he said "You really like yourself". I thought that was hilarious.


Tuesday, February 26, 2008

Using SQL Server 2000 DTS packages on SQL Server 2005 -- without SSIS

SQL Server 2005's Integration Services is a pain to get going. Most people agree that SQL Server 2000's Data Transformation Services (DTS) were much easier to work with. So maybe you inherited an existing infrastructure that uses SQL Server 2000 and you want to upgrade it to SQL Server 2005 but you hesitate because of SSIS. Or maybe you have a DTS package that runs perfectly fine, so you keep around a SQL Server 2000 box just for that purpose.

Bridge the gap with the Feature Pack for Microsoft SQL Server 2005 - April 2006. Specifically you want the Microsoft SQL Server 2000 DTS Designer Components. After installing this on a computer with SQL Server Management Studio 2005 you will be able to edit and run DTS packages.

Friday, February 22, 2008

C18XMEN?!

Let's see... I collected X-Men comics for about 160 issues, surely I can come up with the first 18 members:

  1. Angel
  2. Beast
  3. Marvel Girl
  4. Cyclops
  5. Iceman
  6. Mimic
  7. Havok
  8. Polaris
  9. Colossus
  10. Nightcrawler
  11. Storm
  12. Thunderbird
  13. Banshee
  14. Sunfire
  15. Wolverine
  16. Rogue
  17. Phoenix
  18. Kitty Pryde

I wonder if anyone at IBM ever thought that there might be comic geeks out there that would take a part number to extremes? So what is C18XMEN, besides the only IBM part number I will ever remember?

IBM Lotus Notes, Designer and Administrator 8.0.1 Clients basic configuration for Windows XP and Vista English(C18XMEN)

Thursday, February 21, 2008

did you know you can use Delta SkyMiles on Continental?

Sometimes a little digging can uncover a real gem.

Flying out of my hometown is usually an expensive proposition. We don't have a lot of carriers, and we always have to fly through some other city to get to our final destination. Getting from here to Dublin has been running between $1000 and $1200 per person. If it were just me I would probably have sucked it up and paid it, but Myron is going too and there's no way we were going to spend that kind of money on airfare so we started looking at other options.

We use both our Delta SkyMiles American Express cards for everything we can, so we can accumulate miles to cover the airfare for trips. It's worked well for us; we haven't paid for a flight to go skiing in Tahoe in years, and we're going to Anguilla in August (for my birthday) using airline miles. Delta wants 100,000 miles per international ticket, so that would have been 200,000 miles. I only have about 60,000 and Myron had about 180,000. It would have cost $230 for me to transfer 20,000 miles to him so he could book both tickets, and there were additional transaction fees on top of that. All told it would have been nearly $350.

That sounded like a deal to me but Myron thought it was a little steep, and he didn't want to give up all our miles in one go. Being the obsessive travel junkie that he is, he started looking at Delta partners to see what they offered. He was surprised to discover that you can use Delta miles with Continental. That's awesome because Continental only charges 75,000 miles per international ticket! Myron had enough miles to cover everything and we ended up only paying $50 apiece in transaction fees. Just by doing some digging Myron saved us a total of 50,000 miles, which is enough for two domestic round-trip tickets.

We're flying out on Saturday, May 31st and returning on Saturday, June 7th. We'll see you in Dublin.

Wednesday, February 20, 2008

DreamSpark - free Microsoft software for students

Yesterday Microsoft announced the new DreamSpark program, which promises to provide free software to up to 1 billion college and high school students worldwide. It's currently available to over 35 million students in the US, Europe and Asia, and will be expanding rapidly. And it It includes not only the software, but classroom curriculum to go along with it.

I'm not mentioning this because I'm an alarmist and think this is the end of civilization. It's an incredible investment that goes a step beyond the old academic licensing. I paid my own way through college and having to spend even more money on software made it much more difficult. I would have welcomed a program like this, and I applaud Microsoft for stepping up to the plate.

Here's an excerpt of what Bill Gates says about DreamSpark in a video interview on channel8:
I've always believed in getting developers at as young an age as possible. These are the tools that people can build a career around or they can just build fun software for themselves. The basics of understanding how good architecture works, the data structures ... those have been the same for the last 30 years. Fundamentally, the skills of design, of knowing what good code looks like -- that is going to be valuable for at least the next three decades.

Regardless of what your personal opinion is, the man has a point. My first development language was Apple BASIC, and I still use BASIC-like languages in Microsoft Access, Visual Basic, and Lotus Notes. Apple got me hooked at an early age and now I'm loathe to step away from my comfort zone.

It will be interesting to see how this plays out, and whether there is a sharp uptick in the number of Microsoft-oriented developers in the next few years.

via Computerworld

8.0.1 is on Passport Advantage

It just seems to be missing 17 files...



I tried signing out and coming back in, but it's till only showing the DOLS pre-installer.

Tuesday, February 19, 2008

Embeddable RDBMS options, and some other cool tools

I'm in the middle of rearchitecting a massive Access 2003 application into something that can be used offline, replicate data back to a central database, and is modular. Notes and Domino aren't an option since the target platform is a Windows Mobile device I work in a Microsoft shop, but in the process of tracking down what we need I found some pretty cool tools. The best thing about all these is they're all F R E E !!

Microsoft SQL Server Compact 3.5

Stand-alone Microsoft SQL Server running in 2MB RAM. Really! It supports native replication with SQL Server 2005.

SQLite

Another small embeddable database that features snapshot replication with any ODBC data source.

Firebird RDBMS

The third embeddable database I tested. It does not support replication out of the box, which is why I couldn't use it.

AnySQL Maestro

It's an admin tool somewhat like TOAD or SQL Server Management Studio, but a little scaled back. One thing it's missing is viewing/editing stored procedures, but I'm using it mostly for the visual query builder.

XXCOPY

Have you ever started copying a directory of files and something craps out so you have to restart it? You don't want to have to hit "No" to the overwrite prompt eleventy billion times so you end up just overwriting everything. XXCOPY will handle copying only files that don't already exist, as well a huge amount of other things that overwhelmed me.

TeraCopy

It's like an Internet download manager for Windows. You can pause a long-running file transfer and resume it later, it has error recovery in case it can't write a file, and it does asynchronous copies so it's faster than normal Windows copy routines. It has Windows shell integration so it can be configured to replace the default Windows copy routines.

Jing Project

Desktop capture software for Windows and OS X from TechSmith, the makers of CamtasiaStudio and Snagit. Look for some video demos soon. :-)

Monday, February 18, 2008

Mission Impossible - From Single Domino Windows Server to Linux Cluster

You hear people say "oh clustering Domino is easy, just [click] [click] and you're done" and "moving Domino to a new platform is easy, just copy the Data directory". But have you actually seen it done at a conference? Come to ILUG 2008 and you will.

Not sure how to give your single Domino server a (cluster) mate without affecting your users? Ever wanted to find out what exactly is involved in migrating a live Domino server from Windows to Linux? Come watch Charles Robinson and Franziska Whitlock not only explain the whole process but also DEMO it live in 60 minutes.


Should I ask Paul to let us work on the production servers? ;-)

P.S. This is why I dropped the hint that I do admin as well as development.

Thursday, February 07, 2008

another Lotusphere theme: pimping yourself

Having people see my badge at Lotusphere and ask "are you the Charles Robinson who blogs" was a little surreal. Having at least half a dozen people at Lotusphere tell me I have a moderate level of name recognition and I need to build on it was just plain weird to me. They were saying I need to market myself, build my brand, and get my name out there so I can take things to the next level. In short, I need to pimp myself.

pimp (pmp)
n. One who finds customers for a prostitute; a procurer.
intr.v. pimped, pimp·ing, pimps To serve as a procurer of prostitutes.

The interesting part about this is I had already considered going down that path. I had business cards printed and I was planning to hand them out at Lotusphere and try to get some consulting gigs, or maybe even a permanent job. From the start it just felt wrong, though. While getting to the bottom of my reluctance I started thinking about why I participate in the community. Did I want to turn it into a money-making venture by soliciting consulting work or a job? Did I want to use it to build name recognition so I can join the pantheon of the elite in our little fishbowl? In short, did I want to capitalize on it in any way?

After mulling it over I finally came to the conclusion that I'm not here to prostitute myself. I never joined in with the idea that I'll get anything other than personal satisfaction out of it. I'm here to share information and participate in discussions, plain and simple. For me to try to turn that into anything else just seemed wrong.

When the subject came up at Lotusphere I was honestly offended. What I found offensive was the prevalent idea that everyone wants to go that route, and the vehemence with which most people presented it. It was like there was no consideration that not everyone had the same goals. I expect to catch some heat for saying that, but I want to be clear that I'm not at all opposed to people who use their participation in the community for some amount of personal gain. I support capitalism and I fully understand that the people who blog are known among the community at large because we are the ones willing to put ourselves out there on display, regardless of our motivation. It is a lot of work and you do attract some unwanted attention so if you want to capitalize on your efforts I say go for it.

There is no doubt that I have benefited from my community participation, but I have never asked for it and it wasn't monetary. For the past two years at Lotusphere I was invited to participate in a special Q&A session with Mike Rhodin. Last year my blog was shown in both the opening and closing sessions. I know if I am eventually accepted as a speaker at a conference (I've submitted sessions for the past two Lotusphere's and I have my fingers crossed for ILUG) it will be at least partially because people know me from blogging.

The difference between my approach and some others is this is the real me, not some sanitized version with an eye toward being as acceptable to as many potential customers as possible. Recognition is great and if it works out that my efforts are rewarded in some way I'll be ecstatic, but I'm not doing any of this with the idea that I will eventually benefit from it in a material way. It's a difference of intent.

The reason I'm saying all this is 1) I fully expect to be eviscerated so I want to defend myself up front and 2) I I know I'm not the only one who believes participation in the community is its own reward and 3) I want to let people joining the community now know that you can do it for purely altruistic reasons. There is room for everyone. All you have to do is be honest with yourself and the community and you'll get the returns you want. That may be a warm feeling from a heartfelt "thank you" in a blog comment, or it could be a new job. The choice is yours. You may end up with some amount of name recognition, but that doesn't automatically make you an attention seeking whore. And you certainly don't have to pimp or prostitute yourself if you don't want to.

Tuesday, February 05, 2008

art imitating life



I've decided Dilbert isn't as funny when it hits that close to the truth.

Monday, February 04, 2008

rocking the dual propeller beanie

Pretty much everyone knows that I do development: Lotus Notes, Microsoft Access, Visual Basic and even some ASP.Net. Over the weekend I realized that not many people know I'm also an admin. I'm not a guru, but I can generally bludgeon Domino, Windows, Linux (Red Hat) and even an AS/400 into submission.

In the next couple of weeks I'll be moving the last two Domino partitions from a client's AS/400 over to a Linux server. The last time I did this it was a nearly retrograde learning curve since there is very little documentation out there. I learned a lot so I'll be sure to share some tips.

Saturday, February 02, 2008

Lotusphere 2008 - Day 5: Thursday, January 24th

This was my latest start all week. And no, it's not because Myron was with me so get your minds out of the gutter. I had stopped by the UX labs the previous day and the only time they had for me to test drive Domino Designer 8.5 was 9:00 AM.

9:00 - UX Labs - Domino Designer 8.5

Margo Ezekiel

One of the coolest things was when I walked up and introduced myself and Margo remembered that I had commented on the design persona for Raj. They are paying attention! There were several sessions at Lotusphere about Domino Designer, and Maureen Leland has posted some pictures on her blog. You may want to review those as you read along here, since I wasn't able to take any screenshots of my own.

At first glance Domino Designer in Eclipse is really familiar. The biggest change is the Bookmark bar is gone. For the.. um.. none?... of you who used Bookmarks in Designer, you'll have to get over it. As for the rest of the layout, you have your database navigator on the left and the currently selected design element displays on the right. One great enhancement is you no longer are limited to seeing only five of a certain design element at a time in the navigator. If you expand Forms, you get a list of ALL the forms.

One thing that threw me a little was the property page that is at the bottom of the screen. It is a series of tabs that shows the properties of the currently selected item. The first tab, which I think is labeled General, is always visible, and other tabs appear or disappear depending on what you have selected. What it doesn't do, though, is tell you what you have selected. Today when you select a Form, the Infobox says "Form", or if you select a database it says "Database". The new property pages don't do that, and as you'll see when this lack of information is coupled with some of Eclipse's features it creates a massive usability issue.

I really like that you can move around anything in the UI, so you could move the properties to the side or float them, and you can resize it. I didn't find an easy way to recall the properties if you float them then close them. Something new here is that you can copy out of the property window, which means you can finally copy a replica ID. Yay!

A totally new concept is Work Sets. You can group databases together so when you select a particular Work Set, it clears the navigator and shows the databases in that Work Set. This is particularly handy when doing multi-database work, or when working with databases from multiple clients. You can create as many Work Sets as you like to arrange your application development efforts however you want. Of course you don't have to use Work Sets, so you can continue just using the standard navigator you've always used.

In the 8.5 Beta I was using creating a Work Set was a little awkward. When you brought up the list of databases to select from it was a rather unattractive list that showed the filename and the database title, like this:

hr_database.nsf;HR Database
it_tickets.nsf;IT Trouble Tickets

With a few dozen databases in the list it was difficult to navigate. I suggested that they show the database title first, and they put it into a grid so it's easier to read. After all, who really remembers the filename of a database? You see the title most often, so that's what should be visible first. Having the filename is important, but not the most important thing.

An interesting thing about Work Sets is you could end up with the same design element in multiple databases. I wasn't clear on whether it was simply name matching ("Customer" form could be in two different databases in the same Work Set but actually be completely different) or based on inheritance or design note ID's. Anyway, the reason I'm bringing this up is because the way it is currently implemented if you have a design element open in the editor it will show a selection focus around all the databases that contain it. Since I'm not clear on how this is determined I'm not sure what that's supposed to do for me. I think I would rather just have it highlight the one database I'm currently working in (like Designer does today) and have a separate Inheritance Hierarchy navigator to show me where the current design element will end up.

I'll cover more about XPages shortly, but I wanted to talk about the XPage editor for a minute. You can drag controls onto the page and bind them to a datasource, which you can create on the fly. Your data can come from Notes, an RDBMS, an XML file or even a web service. You can have multiple datasources represented on a single page. When you open up the dialog to select a Notes database as your datasource it's identical to the one to add a database to a Work Set. That is, it's hugely unappealing and difficult to navigate. It also doesn't start with the databases you currently have open in your Database Navigator or Work Set. I suggested that as a start, as well as separating it into a grid.

While editing an XPage you learn that a lot of the properties of the controls on the page are computable. For example, you can compute the values in a combobox based on the value entered into a field, or the selection in another combobox. Margo asked me to compute the value for any property I could, which brought up the question: How do I know what is computable? At first glance I couldn't figure it out. I scoured the screen, I looked at multiple control types, and I even tried searching the help. I finally started clicking on everything I could find on the screen. Margo eventually had pity on me and told me that any property with a blue diamond beside it is computable. Not the most intuitive mnemonic, but I could learn it. I was told this is a holdover from Workplace Forms and Lotus Component Designer, and they're working on the right mnemonics for Notes. She said they were considering an @ sign or perhaps a graphical "fn" designation, both of which were more immediately obvious in other tests they had done. If you see any preliminary screenshots just know that the blue diamonds mean you can enter formula or Javascript to compute the value.

While working with Designer 8.5 I got annoyed by two things. First, you have to double-click in the database navigator to open a design element. Margo said every single person she had worked with during usability sessions, both before Lotusphere and at the conference, had the same reaction: click the design element once and wait for something to happen. Either they would ask if it's broken or they would try double-clicking.

Thinking that it was insane for every single person she had ever seen to have the same usability issue, I questioned why this was left this way. She said they had intentionally made the decision that it would be better to retrain Notes developers for some features of Eclipse rather than make Eclipse more like Domino Designer. I pointed out that this was Domino Designer, not Eclipse. She started to argue with me, but after that sank in for a few minutes she reacted like she had never considered that point of view before. Yes, you can use Domino Designer 8.5 for both Notes, Java and Expeditor development. I truly don't care. It's Domino Designer, and making every Notes developer learn the Eclipse way just because Domino Designer is fronted by Eclipse is ridiculous.

Te second thing that got confusing was figuring out what had the focus. Consider the following picture (from Maureen's blog):


The Save button obviously has the focus so what is the property window showing? If you look at the navigator on the left you can see the qt1a XPage is selected, so it's the properties of the XPage design element. But the Save button is selected... how is that possible?

Simply put, you can have multiple things selected at once. Each Eclipse view maintains its own selection focus. Your only indication of what is selected is the property window, but the property window doesn't clearly tell you what you currently have selected. You have to derive it based on what properties are visible. At one point I had as many as four different things on the screen with focus highlights but I couldn't tell what had the focus. This really needs to be addressed.

I love the functionality that is coming with Domino Designer in Eclipse, but I sincerely hope that IBM doesn't try to change 15+ years of naming conventions and 10+ years of usability overnight. I'll be the first in line to set fire to the old Domino Designer (sorry Andre, Maureen, et al.), but there are parts that work and changing them for no good reason would be a tremendous mistake. Designer 8.5 in Eclipse should just be another release of Designer. It shouldn't try to turn Notes developers into Eclipse developers.

I'll go on the record saying I'm not a fan of Eclipse. I have downloaded it multiple times and tried to use it for HTML, CSS and Java. I've even tried using it for Ruby, Perl and PHP. In every case I have found it confusing and downright bad from a usability point of view. My biggest issue is it introduces a wholly new naming system that has absolutely nothing to do with anything else you've ever seen, and I don't understand why that was necessary.

It's not a design window, it's an editor. It's not a property window or database navigator, it's a view. The combination of editors and views creates a perspective, which you can supposedly somehow save together. And somehow perspectives relate to workbenches, but that one is just too obtuse for me to fully grasp. The Eclipse terminology was peppered throughout my UX session, and it quickly got annoying having to translate everything. I would be asked to "use the Navigator view" and I'd go to the database navigator, expand Views, and look for "Navigator".

[Note: I don't intend to open a discussion about Eclipse terminology here. I'm simply pointing out that it's totally foreign for the majority of Notes developers, and IBM's slavish adherence to it creates a cognitive gap for their customers. From what I saw IBM is trying to ram this down Notes developers' throats in Designer 8.5 and I don't like it one bit.]

11:15 - Advanced LotusScript: Design Programming using XML and DXL

Andre Guirard

DXL can be used to update many design elements in Notes. This involves exporting a design element, making changes, and reimporting it. You can also export design elements, apply an XML style sheet (XSLT) using NotesXMLTransformer, and then get information about your design elements.

To get DXL out of a database you use NotesDXLExporter. To get it back in you use NotesDXLImporter. There is a menu in Domino Designer to kick off the Exporter, but not one for the Importer. You'll have to code that yourself. Anyone with Reader access or higher can export a NotesDocument, but you will need Designer or Manager to import any DXL.

DXL is just a text file, so you can parse that manually if you like. Notes has two built-in objects to help you work with DXL, NotesDOMParser and NotesSAX Parser. The difference between the two is NotesDOMParser simply takes an XML document (it doesn't have to be DXL) and presents it as a document map. You can either iterate through this manually and parse the XML, or you can hook the NotesDOMParser into a NotesSAXParser. The SAXParser will trigger events based on the tags you specify.

Andre Guirard has published the Design Element Finder application which uses DXL to locate a design element.

Friday, January 25, 2008

Lotusphere 2008 Memorable Quotes

We don't share our public keys with our neighbors. This isn't the 70's. -- Andrew Pollack

This slide used to simply say "Extended ACL BAD" but Lotus made us change that. -- Gabriella Davis

If you do enough practicing the demo works. Probably. -- Scott Good

Uh oh. That's really a problem. -- Scott Good (about 20 minutes later)

We hate the [Notes] client because we hate the end users. -- Paul Mooney

They just tried to make it pretty; and failed. -- Paul Mooney

I talk really slow and Paul speaks some other language really really fast. -- Susan Bulloch

I'd have perfect uptime. I'd meet all SLA's. It would be wonderful. -- Paul Mooney, when asked what he would do if he killed all his users.

How appropriate we began the day with a symphony. -- Mike Rhodin at the OGS

A happy user is one that won't stab you. -- Julian Robichaux

Don't tick off your users, especially if they carry swords. -- Andre Guirard

Julian - Oh yeah, that's a nasty error. Can you fix it?
Andre - No.

Nathan: That's the next social site we have to do: Lotus Hookups.
Duffbert: Powered by Lotus Mashups!

Domino web dev sucks. Anyone want to argue with me? -- Bob Balaban (one guy actually raised his hand)

That's not exactly kickass yet, but it doesn't suck. -- Bob Balaban

On day five Matt uttered his first complete sentence: "Can we have some beer?" That's when I knew we would be able to work together. -- Mary Beth Raven

Eclipse has no idea what we're doing to it. And boy is it glad. -- Maureen Leland

Domino is so robust it will continue doing something stupid while hosing down your career in urine. -- Bill Buchan

I can see a use for that. You get an OnChange event, so you can type 1-1-1 ... I just started to use my real Social Security Number! -- Nathan Freeman, justifying a horrible UI construct (that's not the beginning of Nathan's real SSN)

Now we're talking about color, and look who you're taking advice from. -- Chris Blatnick, referring to Nathan Freeman

It's a knife. You don't have one. Because you flew commercial. -- Alton Brown

I'm trying to help you replicate. -- Alton Brown

Lotusphere 2008 - Day 4: Wednesday, January 23rd

Blogging Best Practices


Jess Stratton

This was a BOF, my first of the week, and at 7:00 AM. The agenda was loosely organized around three subjects

1. Building your brand
  • Find your voice - decide what you want to talk about. Is your blog for building a business, communicating with friends, or sharing recipes? How much personal information do you want to add to it? Also be aware that everything you post -- even if you delete it later -- is still around on the Internet somewhere.

    The overall consensus was that you should add at least a little personal material to your blog. People can only read so much LotusScript code or NSD problem resolution techniques before their eyes glaze over. Engage the reader by making your blog at least a little personal. And never say anything on your blog that you wouldn't say to someone in person.

  • Use proper grammar, punctuation, capitalization and spelling. If you write like an idiot people will assume you're an idiot. If you need help with these areas compose your blog entry in a word processor first and copy it into your blog.

  • Break up content so it's not a sea of sameness. For example, in this entry I'm using headers, numbered lists, bullets and whitespace to provide some contrast and draw you to the next section.

  • "Like a woman's skirt, blog entries should be long enough to cover everything, but short enough to keep it interesting." Some entries will necessarily be longer than others, but try
    to be as concise as possible.
2. Blogging policies - personal and corporate
  • Decide where your boundaries are and stick to them. If you decide you are not going to post anything about your personal life, then don't do it... ever. Likewise, if you decide to always take the high road in online conflicts (and there will be some), then do it always.

  • For corporate blogging it matters whether you're blogging as the voice of your company or as your own voice within the company. If you already blog and want to host your blog at work make sure your blogging is acceptable to your company before you accept the position. If you are blogging personally and do not have your company's permission to publicly state where you work, don't.
3. Keep them coming back
  • Self-deprecating humor is appreciated. You probably shouldn't make fun of others in your blog, but making fun of yourself shows your humanity.
  • Participate in the community to build interest. Comment on other blogs as a way of getting your name out there as someone who is willing to put some effort into the community.
  • If possible, provide translations in other languages. There are several ways to do this, from posting twice (or more) to having a button on each post to go to an online translation service. More and more blog readers are from non-English-speaking backgrounds, and you don't want to exclude them from your content.
  • Use approachable language that is clear and concise. Not everyone knows what "verisimilitude" or "adventitious" means. Awkward grammar and uncommon vocabulary is also difficult to run through an automatic translator.

Domino Designer


Maureen Leland
Mark Jourdain

In 8.01 they're adding page access control and Property Broker usability enhancements. The big news is Domino 8.5. A bit of bad news for the Linux/Mac people: Designer will not available on those platforms in 8.5, but will come afterwards.

The primary focus of 8.5 is to improve the web development experience. They're doing this by putting Domino Designer into Eclipse. When you add a NSF to Eclipse it creates an Eclipse project. There was a bunch of mumbo jumbo about Eclipse stuff and perspectives. My takeaway was you can use Domino Designer alongside other bits of Eclipse.

Bookmarks are GONE, replaced with the concept of Working Sets. A left navigator will list recent databases, or the databases in your current working set. You can create as many working sets as you like.

The infobox has been separated into a panel at the bottom, and they're trying to get everything ported over. One cool new feature: Access information. Per design element. You can see not only the last time a design element was modified, but when it was created or last accessed. The design element properties that you get from the list of design elements has also been moved into a panel at the bottom. All these property panels can be docked, undocked, floated and... resized!

There are brand new LotusScript, JavaScript and CSS editors. The LS and JS editors both include full class and function browsers, and you can use @Formulas from JS! However, the LS and JS editors are only for "full screen editors", meaning agents and script libraries. You'll have to suffer with the same old insane split-screen editor in forms, views, pages, etc. File resources will now let you include templates for XML and HTML. I'm not sure exactly what that means.

Dojo is being integrated into the Domino server, and you can use Dojo JavaScript widgets very easily. (My notes are fuzzy on the exact steps.) There are also Dojo controls for views, action bars and outlines.

There are five new design elements:
  • XPages
    More on this in its own post, probably next week.

  • Custom controls
    This is like a subform on steroids. You add all your controls that you want to put in multiple places and then you can drag it onto any XPage. The awesome part is you can add custom properties, such as an Edit field with data binding computed from its parent.

  • Server JavaScript
    You can select whether you want JavaScript to run on the client or on the server. I don't do web dev yet so I'm not sure why this is a big deal, but it excited a lot of people.

  • Domino Connections
    Create a connection to a Domino database and reuse it in your @Formulas or JavaScript without having to compute it everywhere.

  • iWidgets
    Wrap an XPage and present it in Mashups. I didn't go to any of the Mashups sessions so I have no idea what this really means.
FUTURE ADDITIONS AND ENHANCEMENTS
  • LS Debugger
  • Formula editor
  • Formula debugger
  • Form/View script editors

Worst Practices


Paul Mooney
Bill Buchan

I made my Lotusphere stage debut! I was sitting in the third row and the next thing I know someone asks if I have a nice camera, I say yes, and then I'm asked to come up on stage. I recorded the opening oath that Paul and Bill made the audience take.

The session itself was pretty freaking hilarious. Some of the bits I had seen before, such as the guy who created an agent to update every document in a database, left the agent set to run on -All Servers-, then manually replicated the database with every server. The end result was 4.8 million documents being created per hour through replication.

The best part was the last bit, though. Duffbert came up on stage and gave Paul and Bill a bit of their own medicine. Apparently they didn't follow their own best practices while preparing for a certain conference. The pictures are pretty self-explanatory.















Duffbert: Change control processes?
Bill: Oh we know about those.















Now why is Paul editing a view? That's a developer task!















Basics of UI Design


Advanced UI Design


Chris Blatnick
Nathan Freeman

The two sessions were presented back to back, and Chris and Nathan continued on through the break.

A good UI should meet three main objectives
  1. Usability - tasks are easy for users to find and accomplish
  2. Likability - eye candy sells, make it pretty
  3. Applicability - enhances their job and isn't an exercise in futility
If you don't have people who create UI's for you, change your title. You are a Designer, not a Programmer or Developer. You must build the user experience as an integral part of the development plan. Interface design is an iterative process. Keep examining the interface to make sure it is meeting the users' needs.

To make sure you meed user needs, engage in user interviews. If that isn't possible, use profiles and personas. You should spend time with the user to capture what they do, to ensure the requirements you receive actually match the work being done. You can use low fidelity prototyping, which means letting the users draw out screens with crayons, and usability testing of early prototypes to ensure you're on the right path. You should always have the UI worked out before you start working on the code.

Designing a good UI may be extra work, but it is our job to make the user experience better. You may get pushback on this by your boss, who says it will cost too much. Using low fidelity prototyping is very low cost and changes can be made easily. Fas iterations allow for a variety of approaches to be tried cheaply. The most important thing to know is that changes made after code is written is much more expensive to rewrite.

Font tips
  • Be consistent. Don't use serifs.
  • Use cross-platform fonts
  • Use cross-language fonts
  • Use fonts that have higher-resolutions available for accessibility
  • Be gentle with styles, such as bold and italics. Drop shadows, emboss, or extrusion should NEVER be used with native Notes fonts. It just doesn't render it well.
  • Use CASING to your advantage.
  • Use different fonts in read and edit. For example, in Read mode make labels smaller and lighter than data, but in Edit mode make labels the same side as data, and darker.
  • Hide some labels during read mode. People will figure out City [ ] State [ ] , Zip [ ] when they read it.
Whitespace is very important. Use table borders to push your tables away from the edge. Don't cram everything on the top left of the screen. Use fluid layouts via tables that are set to size to window and right and left align. Use right alignment to take advantage of high-resolution screens. You can use a separate form with fixed widths for printing if necessary.

You can use an editable column's InViewEdit event to display a dialog that edits the document to give quick access to common data.

Wednesday, January 23, 2008

Lotusphere 2008 - Day 3: Tuesday, January 22nd

From IBM Lotus Notes Client Application to Ajax-Powered Rich Internet Application in Less Than 10 Lines of Code!

Rich Waters
Jack Ratcliff

There are numerous Javascript object libraries out there that do a variety of things. Several Domino web developers settled on Ext and then further extended it to wrap Notes classes and released Ext.nd. It will skin outlines, views, forms, pages and picklists with Ajaxified controls. There is also a class for a Notes datepicker, and it's really nice.

The benefit of using Ext.nd is that the code for a lot of things is already written. Want to drag and drop to reorder columns? It's in there. What about skinning outlines? It's in there. You just use a class name in the HTML tab to apply the style you want to the control, and you're done.

Ext (the base framework) is now on release 2.0 and Rich, Jack and a few others are working on releasing Ext.nd 2.0 as well. Currently in the 1.0 release you have to manually copy several design elements into your database. 2.0 is adding the ability to reference a central external ext.nd database via tags (this is the "less than 10 lines of code"). They are also working hard to set it up so you can also build an application configuration form and use that to return all the stuff via an @DBLookup. One line of code and you have all the goodness of Ext.nd.

Overall it was an amazing look at what can be done to make Domino web apps look good, and it really opened my eyes. If you do Domino web apps and you're hand-coding your JS and CSS every time, give Ext.nd a look.

Expeditor Customization for LotusScript Developers

John Head
Alex Kassabov

Expeditor is a general purpose app framework. In IBM speak, it's a "universal managed client for SOA." In IBM's mind it competes directly with .Net. You can only program against it using Java, though.

That was all of the session that really made sense to me. There was a list of tools to install (Eclipse 3.2.2 and Expeditor 6.1.1 Toolkit), then a rather tortuous demo app that I'm not sure ever worked. John said the problem is that everything they were planning to show has been superceded by the My Widgets feature that was announced in the OGS. IBM realized it was way too complicated and created an easier way to do this, so hand coding everything isn't necessary. Or at least that's my take on it, if I'm wrong someone please explain it, or link me to something that does.

IBM Lotus Domino Web Server Application Development Directions


Bob Balaban
Phillippe Riand

Domino 8.5...
  • is shipping with Dojo built in. There was no commitment to the release of Dojo that will be included.
  • will produce semantically correct XHTML with classes and ID's for everything.
  • uses the JSF runtime from Lotus Component Designer to produce XPages (that's a code name).
  • by virtue of the JSF runtime, simplifies traditional JSF's by removing the JSP/servlet container dependency; removes the tie to Java; lets you choose your scripting language (JS is the default); generates pure XML (switch between visual designer and XML source in Designer); every property value is computable.
The vast majority of the web app dev functionality is in XPages. I'll cover more about XPages in a separate post, there is simply too much for me to cram in here, and the content comes from a number of sessions.

Transforming Domino Web Apps Using Domino Designer


Stuff you can do today in ND 6/7:

You can add Dojo and the extended Dojo objects by adding it in the JS Header of a page or form. Put the Dojo object ID in the HTML Other field and it will work in the browser with no other changes. This skins the control with whatever you have set up for the CSS of the Dojo object ID. Change it once and it changes for all controls.

The future stuff is, again, mostly XPages. Do you see a theme? :-)

Customizing the Look of IBM Lotus Notes 8: Coding Tips and UI Guidelines


Mary Beth Raven
Matthew Hatem

The look of the Notes 8 client is controlled via CSS, and is implemented as a theme. The titlebar, menubar and scrollbar all pull from the OS. Everything else is custom to Notes. The PIM apps also use the theme. Long-term they want to open this up so custom apps can also use this, but they can't commit to any release schedule yet.

Matt created a new theme live and it was actually pretty simple. There were a lot of steps, but he explained them well and they actually made sense (even to an avowed Eclipse hater). My notes on that process aren't really clear and I think I missed some steps. I'll install Eclipse and work with this and come up with a demo.

The UI guidelines for making YOUR apps look like Notes 8 have been published. This includes all the RGB values for everything, pixel measurements, and how you can configure things like action bars to look like Notes 8. Personally I think this is a very good idea, since it provides consistency. There are, of course, places where you want to break from it (like the bewildering number of icons), but for the most part I have no objection to using Lotus styled action bars, framesets and forms.

Formula Follies and LotusScript Lunacy: Coding Feats That Will Amaze!


Rocky Oliver

You can use @Sort([CustomSort];list;$A; $B) to sort something in a custom way. For example, to sort a list of strings by length or sort in a non-linear way.

@ToNumber doesn't care whether you pass it a number. @TextToNumber will generate an error.

When building lists with @If, use @Nothing for the exit condition instead of an empty string. @Nothing doesn't have to be @Trim'med.

New or updated ND8 formulas and LotusScript classes:
  • @AbstractSimple - same result as @Abstract but fewer parameters
  • @GetViewInfo([IsViewFiltered]) - returns true if @SetViewInfo has been used to filter a view
  • @IsUsing JavaElement - view is using the Java interface
  • @PasswordQuality - has new examples
  • @URLQuerySTring - allows dynamic DB2 query views (not sure if I got that mixed up...)
  • @UserRoles - can now go against a different database
  • @Version - added new versions to the list
  • @Command([CalendarFormat]) - now has two week and two work week options
  • NotesDirectory - directory searching and navigation
  • Notes...Collection - new methods: Clone, Contains, Intersect, Merge, Subtract (applies to NotesDocumentCollection, NotesNoteCollection and NotesViewEntryCollection)
New for 8.5
  • @Now([NoCache]) - when run on a server will force a server transaction to get the current time
  • @ManageECL
  • @ShowParentPreview
  • @RecoverIDFile
  • @WhichFolders - used in a column formula to show the name of other folders the current document is in

Speedgeeking


This is an amazing event. There are 12 tables with subject matter experts. The attendees are divided up by the month they were born in, and they go to that speaker number to start. You move from table to table, getting increasingly overwhelmed until you end up spinning in circles. Or at least that's what I did.

You can't possibly take notes since they're running through gobs of content in 5 minutes, so I'm not even going to try. If I find something posted somewhere about what was included I'll be sure to link to it.

LotusUserGroup.org Blogger Award Reception


I met so many people I hadn't caught up with yet. The conversation was great and the food was surprisingly good. As I'm sure everyone knows by now, Jake Howlett won the award. There was a recorded acceptance speech in which he expressed his thanks and incredulity at being nominated or winning.