Categories: geek » lotus

RSS - Atom - Subscribe via email

Analyzing my Lotus Notes sent mail since January 2011

| analysis, ibm, lotus

Today is my penultimate day at IBM! Having successfully turned my projects over to another developer (hooray for the habit of organizing project-related files in Lotus Connections Activities), I’ve been focusing on getting things ready for the traditional goodbye e-mail, which I plan to send tomorrow.

I dug around in the Lotus Connections Profiles API to see if I could get a list of my contacts’ e-mail addresses. I fixed a small bug in the feed exporter of the Community Toolkit (w4.ibm.com/community for people in the IBM intranet) and exported my contacts, giving me a list of 530 IBMers who had accepted or sent me an invitation to connect.

Not everyone participates in that Web 2.0 network, though, so I wanted to analyze my sent mail to identify other people to whom I should send a note. I couldn’t find a neat LotusScript to do the job, and I couldn’t get the NSF to EML or mbox converter to work. Because I didn’t need all the information, just the recipients, subjects, and times, I wrote my own script (included at the end of this blog post).

I used the script to summarize the messages in my sent mail folder, and crunched the numbers using PivotTables in Microsoft Excel. I worked with monthly batches so that it was easier to find and fix errors. I decided to analyze all the mail going back to the beginning of last year in order to identify the people I mailed the most frequently, and to come up with some easy statistics as well.

image

Spiky around project starts/ends, I’d guess.

image

I wanted to see which roles I tended to e-mail often, so I categorized each recipient with their role. I distinguished between people I’d worked with directly on projects (coworkers) and people who worked with IBM but with whom I didn’t work on a project (colleagues). The numbers below count individual recipients.

Role

Number of people

Number of individual
e-mails sent

Average e-mails sent
per person

colleague 407 827 2.0
coworker 50 562 11.2
client 21 387 18.4
manager 4 109 27.3
partner 9 51 5.7
system 9 21 2.3
other 8 11 1.4
self 1 5 5.0
Grand Total 509 1973 3.9

As it turns out, I sent a lot of mail to a lot of people throughout IBM, mostly in response to questions about Lotus Connections, Idea Labs, or collaboration tools.

Now I can sort my summarized data to see whom I e-mailed the most often, and add more names to my don’t-forget-to-say-goodbye list. If all goes well, I might even be able to use that mail merge script. =)

The following agent processes selected messages and creates a table with one row per recipient, e-mailing the results to the specified mail address. It seems to choke on calendar entries and other weird documents, but if you go through your sent mail box in batches (Search This View by date is handy), then you should be able to find and delete the offending entries.

Option Public
Dim TempNitem As NotesItem
Dim TempNm As NotesName
Dim session As  NotesSession
Dim db As NotesDatabase
Sub Initialize
	mailAddress = "YOUR_ADDRESS@HERE"
	
	Dim ws As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Dim partno As String
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim doc As NotesDocument
	Dim collection As NotesDocumentCollection
	Dim memo As NotesDocument
	Dim body As NotesRichTextItem
	Dim range As NotesRichTextRange
	Dim count As Integer
	
	Set session = New NotesSession
	Set db = session.CurrentDatabase
	Set collection = db.UnprocessedDocuments
	
	Dim FldTitles(3) As String
	FldTitles(0) = "E-mail"
	FldTitles(1) = "Subject"
	FldTitles(2) = "Date sent"
	
	Set maildoc = db.CreateDocument
	maildoc.Form = "Memo"
	maildoc.Subject = "Summary"
	maildoc.SendTo = mailAddress
	Dim ritem As NotesRichTextItem
	Set ritem=New NotesRichTextItem(maildoc,"body") 
' passing the rich text item & other relevant details
	Set ritem = CreateTable(FldTitles, collection, ritem, "Sent items", "Summary created on " + Format(Now, "YYYY-MM-DD"))
	maildoc.send(False)
End Sub
Function CreateTable(FldTitles As Variant, doccoll  As NotesDocumentCollection, rtitem As NotesRichTextItem,msgTitle As String,msgBody As String ) As NotesRichTextItem
	'http://searchdomino.techtarget.com/tip/0,289483,sid4_gci1254682_mem1,00.html
	'Takes  Documentcollection & creates tabular information on to the passed   rtitem (rich text item)
	
	Set ritem=rtitem
	Set rtnav = ritem.CreateNavigator
	Set rstyle=session.CreateRichTextStyle 
	
	'===================================================
	'heading in the body section of the mail
	rstyle.Bold=True
	rstyle.NotesColor=COLOR_RED 
	rstyle.Underline=True
	rstyle.NotesFont=FONT_COURIER
	rstyle.FontSize=12
	Call  ritem.AppendStyle(rstyle)
	ritem.AppendText(msgTitle)
	
	rstyle.Underline=False
	rstyle.NotesColor=COLOR_BLACK
	ritem.AddNewline(2)
	
	rstyle.FontSize=10
	rstyle.Bold=False
	rstyle.NotesColor=COLOR_BLACK
	Call  ritem.AppendStyle(rstyle) 
	ritem.AppendText(msgBody)
	ritem.AddNewline(1)
	
	'===================================================
	rows=doccoll.Count +1
	cols=CInt(UBound(FldTitles)) 
	
	Call ritem.AppendTable(1, cols)
	Dim rtt As NotesRichTextTable
	Call rtnav.FindFirstElement(RTELEM_TYPE_TABLE)
	Set rtt = rtNav.GetElement 
	'=================================================
	'heading of the table
	rstyle.Bold=True
	rstyle.NotesColor=COLOR_BLUE 
	rstyle.FontSize=10
	Call  ritem.AppendStyle(rstyle)
	
	For i=0 To UBound(FldTitles) - 1
		Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
		Call ritem.BeginInsert(rtnav) 
		Call ritem.AppendText(FldTitles(i))
		Call ritem.EndInsert
	Next
	
	'=================================================
	rstyle.FontSize=10
	rstyle.Bold=False
	rstyle.NotesColor=COLOR_BLACK
	Call  ritem.AppendStyle(rstyle)
	Dim count As Integer
	count = 0
	Set  doc=doccoll.GetFirstDocument
	While Not (doc Is Nothing)
		subject = doc.GetFirstItem("Subject").values(0)
		posted = doc.GetFirstItem("PostedDate").values(0)
		Set sendTo = doc.getFirstItem("SendTo")
		For i = 0 To UBound(sendTo.values)
			Call rtt.AddRow(1)
			Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)   
			Call ritem.BeginInsert(rtnav)
			ritem.appendText(sendTo.values(i))
			Call ritem.EndInsert
			Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)   
			Call ritem.BeginInsert(rtnav)
			ritem.appendText(subject)
			Call ritem.EndInsert
			Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)   
			Call ritem.BeginInsert(rtnav)
			ritem.appendText(posted)
			Call ritem.EndInsert
		Next   
		count = count + 1
		Set doc=doccoll.GetNextDocument(doc)
	Wend
	Set CreateTable=ritem
	MsgBox "E-mails summarized: " & count	
End Function

I find it helpful to save it as the "Summarize Recipients" agent and assign it to a toolbar button that runs @Command([RunAgent]; "Summarize Recipients").

Lotusphere 2011 wrap-up

Posted: - Modified: | conference, ibm, lotus

This was my first Lotusphere, and it was a blast. Lotus has such an active, passionate, experienced community around it. Heading to the conference, my goals were:

  • [X] Learn more about Lotus Connections adoption and APIs
  • [X] Learn about IBM’s strategy and innovations
  • [X] Get a sense of the ecosystem around Lotus (partners, clients, etc.)
  • [X] Meet people and make personal connections
  • [X] Brainstorm and share insights
  • [X] Show my appreciation for the cool work people do
  • [X] Learn more about conferences and presentations
  • [X] Fulfill my room monitor responsibilities

Here’s what I took away from the sessions and BoFs I attended:

Clients are interested in collaboration and have lots of adoption insights. We’re starting to see interesting case studies from clients. In addition to reporting excellent returns on their investments, clients shared qualitative feedback, such as stories of pilot groups who couldn’t imagine giving up the tools. Successful clients used executive support, communication plans, mentoring, metrics, incentives, role models, and other techniques to help people make new forms of collaboration part of the way people worked. sketchnotes from the birds-of-a-feather session on adoption

LotusLive is awesome. LotusLive currently includes web conferencing and parts of Lotus Connections. LotusLive Labs includes a technical preview of LotusLive Symphony (collaborative document/spreadsheet editing), Slide Library, and Event Maps. (I wish I’d seen Event Maps when I was planning my Lotusphere attendance!) Granted, Google Docs has been around for longer than LotusLive Symphony, but I’m curious about the ability to assign sections for editing or review.

Activity streams and embedded experiences are going to change the inbox. I don’t know when this is going to go into people’s everyday lives, but the idea of being able to act on items right from the notifications will be pretty cool – whether it’s in an enriched mail client like Lotus Notes or a web-based activity stream that might be filtered by different attention management algorithms. It’ll be interesting to figure out the security implications of this, though. It’s already a bad practice to click on links in e-mail right now, so full embedded transactions might encounter resistance or might open up new phishing holes. Project Vulcan is worth watching.

People are already doing interesting things with the Lotus Connections API. Embedding Lotus Connections content / interactions into other websites, adding more information to Lotus Connections, using different authentication mechanisms… people are rocking the API. The compliance API that’s coming soon will help people do even more with Lotus Connections interactions, too.

The next version of Lotus Connections will be even cooler. I’m particularly excited about the idea blogs and the forum improvements, which seem tailor-made for the kind of collective virtual brainstorming we’ve been doing in Idea Labs. Idea blogs are straightforward – a blog post or question with comments that can be voted up or down – but they’ll go a long way to enabling new use cases. Forums will also have question/answer/best answer support.

Sametime Unified Telephony rocks. I need to find out how to get into that. I like click-to-call ringing everyone’s preferred devices, easy teleconferences, and rules for determining phone forwarding.

Lotus Notes and Domino are getting even more powerful. XPages looks pretty cool. I’ll leave the rest of the commentary on this to other bloggers, as my work doesn’t focus enough on Lotus Notes and Domino for me to be able to give justice to the improvements.

The Lotus ecosystem is doing well. Lots of activity and investment from partners and clients.

Analytics + research = opportunity. Interesting research into attention management, activity streams, social network analysis.

Lotus geeks are a world of their own. It’s amazing to spend time with people who have immersed themselves deeply in a technology platform for almost two decades. There’s a depth and richness here that I don’t often find at technology conferences. There’s also a lot of tough love – people like IBM, and they’re not afraid to call us out if we’re not clear or if we seem to be making mistakes. =)

Notes from conversations

The hallway track (those informal encounters and chance connections) resulted in great conversations. For me, the highlights were:

  • Being adopted by various groups – so helpful for this Lotusphere newbie! Special thanks to @alex_zzz>, @belgort, @billmachisky, @branderson3, @ericmack, and @notesgoddess for bringing me into fascinating conversations.
  • Andy Schirmer walking me through his task spreadsheet with eight years of task data summarized in some very cool graphs. I want to have data like that.
  • Talking to Hiro about crowdsourcing and sharing the cool things we’ve been doing with Idea Labs.
  • Seeing all these people I met online. Finally getting to meet Tessa Lau, Bruce Elgort, Julian Robichaux, Mitch Cohen, and other folks, too! It’s great to be able to connect with people on a personal level, thanks to blog posts and Twitter. (How do people manage to keep up to date and remember all of this stuff? I felt all warm and fuzzy when people congratulated me on the recent wedding, and I wished I remembered more tidbits about them. Working on that!)
  • Being reminded by David Brooks and other early adopters that I’ve been around from the beginning of Lotus Connections. (Okay, David did that in a BoF.) It seems Lotus Connections has always been around. <laugh>
  • Joining the geek trivia challenge. The questions about television and comics went way over my head, but it was good to spend time with other folks, and I had so much fun. Well worth needing to figure out how to get back to the Port Orleans hotel after the conference shuttle service ended.
  • Talking to Jeanne Murray and Rawn Shah about a personal maturity model for social business. Some ideas: control of recipients, trust, transparency, conflict resolution techniques, asymmetric knowledge of others, persona separation/integration, acceptance of change; overlap with leadership maturity models; context dependency of decisions…
  • Talking to Bonnie John about the politics of writing about process improvement. Interesting thing to untangle. More thinking needed.
  • Swapping tips on Gen Y life with Julie Brown, Alexander Noble (@alex_zzz>), Brandon Anderson (@branderson3), and others

If I get to attend Lotusphere again, I’d love to be able to stay at the conference hotel. It would be much more convenient and I’d be able to go to more of the evening get-togethers. The chances of my being able to attend again probably depend on how much of the Social Business adoption consulting we’ll get to do over the next year, and I hope we do a lot. I’d also make time to check out the showcase. I missed it this year, thanks to all that chatting.

Next actions for me

For work, I’ll probably focus on external Web 2.0 / social media site development while other groups figure out the structure for social business adoption consulting. I’m looking forward to learning from the case studies, insights, and questions that people have shared, though, and I’d love to do more work in this section.

Here’s what I need to do for post-conference wrap-up:

  • [X] Go through my index cards and write additional notes
  • [X] Contact people I met and follow up on conversations
  • [X] Catch up with work mail
  • [X] Catch up with personal mail
  • [X] Write further reflections
    • [X] Time analysis
    • [X] Appearance and bias
    • [X] IBM and women in technology
    • [X] Reflections on careers, loyalty, story, and alternatives
    • [X] Presentation reflections (time for questions, presentation style, rapport, morning sessions?)
  • [X] Plan my next steps

Other Lotusphere 2011 wrap-ups you might like: Chris Connor, David Greenstein, Luis Benitez (Day 1, Day 2, Day 3, Day 4, Day 5), Andy Donaldson, Marc Champoux (… where are the female bloggers’ writeups?)

See also: Lotusphere social aggregator, Planet Lotus, Twitter search for #ls11, Twitter/blog archive

2011-02-04 Fri 16:04

Draft Lotusphere BoF on working with the Connections API

Posted: - Modified: | conference, ibm, lotus, presentation

My birds-of-a-feather session got voted into Lotusphere 2011, so I’m preparing some conversation starters.

What should we add to this? What should we remove? #ls11

Lotus Notes mail practices

Posted: - Modified: | lotus

Here is a partial list of interesting practices I’ve seen, which I can compile into an internal or external wiki if I don’t come across an existing repository yet:

  • Voting buttons in newsletters to allow people to rate the usefulness
  • Subscription button in newsletters to allow people who received forwarded messages to be added to the distribution list
  • Calendar buttons
  • Forms/surveys
  • RSVP+calendar entry buttons in event invitations – creating non-blocking entries if necessary
  • Calendar button for scheduling replays if you can’t make it to the original event
  • Using sections to hide material (note: manually configure section properties so that sections are collapsed by default, but automatically expanded for printing)
  • Voting/volunteering buttons
  • Response summarization agents
  • Mail merge
  • Stationery
  • Standard response documents
  • Introductory sentence explaining why people are getting mail
  • Reply button with template

Welcome, listeners of the Taking Notes podcast!

| lotus

(If you haven’t listened to this morning’s podcast where Bruce Elgort and Julian Robichaux interviewed Luis Benitez and me about Lotus Connections, check it out – it’s about 40 minutes long.)

I’m a tech evangelist, storyteller, and geek in IBM Global Business Services. In addition to helping organizations learn more about emerging technologies through executive workshops, I build software that makes people’s lives better, like the Lotus Connections tools people have been using to help with community adoption. (Newsletters, metrics, data export, etc.)

More later, but you might be interested in:

Have fun, and leave a comment if you want to learn more or if you want to share any tips!

Sample code for allowing drag-and-drop of Notes/Domino documents (including email) to a table in a plugin

Posted: - Modified: | geek, lotus

Because I had to piece this together from examples on the Internet, and probably other people do too:

Transfer[] transferArray = new Transfer[]{
    XMLTransfer.getInstance(),
};
tableViewer.addDropSupport(DND.DROP_DEFAULT | DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK,
    transferArray, new DropTargetAdapter() {
        public void drop(DropTargetEvent event) {
            TableItem item = (TableItem) event.item;
            // You can access the object with item.getData()
            try {
                NotesThread.sinitThread();
                Session session = NotesFactory.createSessionWithFullAccess();
                if (event.data instanceof URIDescriptor[]){ 
                    URIDescriptor[] droppedURL = (URIDescriptor[]) event.data;
                    for (int i = 0; i < droppedURL.length; i++) { 
                        URI uri = ((URIDescriptor) droppedURL[i]).uri;
                        Document d = (Document) session.resolve(uri.toString());
                        // Do things with the document
                    }					
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                NotesThread.stermThread();
            }
        }});

Use session.resolve instead of db.getDocumentByURL to retrieve a document from a plugin, as both session.getAgentContext() and session.getCurrentDatabase() will return null.

Troubleshooting my Lotus Notes 8.5.2, Expeditor 6.2, and Eclipse 3.4 setup

| development, geek, ibm, lotus

SCHEDULED: 2010-07-21 Wed 08:00

To paraphrase Edison: I wasn't failing, I was just figuring out a thousand ways that didn't work. =)

—-

Summary of troubleshooting lessons learned for Lotus Notes 8.5.2, Expeditor 6.2, and Eclipse 3.4:

org.eclipse.equinox.common problems when installing Expeditor Make sure you have the version of Eclipse that matches your Expeditor's system requirements (not a newer version, not an older version). For Expeditor 6.2, you'll need Eclipse 3.4.

Problem occurred reading your Target. Ensure that your Target Platform's Location is configured correctly. Set it to c:\notes\framework\rcp\eclipse, or wherever your rcp\eclipse directory is. If you still get the error, tinker around a little or wait a while. I don't remember what I did to solve this.

Bundle com.ibm.jxesupport not found. Ignore that. You're supposed to be able to correct that issue by right-clicking on the project, selecting Properties > Client Services, and clicking OK, but no luck. It doesn't stop the system from moving forward, though.

com.ibm.rcp.platform.personality error or java.lang.SecurityException: Unable to locate a login configuration: *Enable all the features and be patient.

—-

I've been working on getting a Lotus Notes + Eclipse development environment so that I can make a Lotus Notes plugin for my community tools. There's a lot of interest in the community metrics tool, for starters.

The challenge with setting up development environments is getting all the versions to line up with the tutorials on the Net. I came across a page that described how to set up Lotus Notes 8.5.1 with the Eclipse Plugin Development Environment (PDE). I was on a newer version of Eclipse, so I needed to figure out a couple of the steps, and I eventually ran into a security exception with login configurations.

Along the way, I came across Lotus Expeditor and decided I wanted to try that. I saw an old article that said Expeditor only works with Eclipse 3.2.2 and not the newer versions, so I installed that, but it had problems trying to find com.ibm.equinox.common. Then I found out that I had a newer version of Expeditor which requires Eclipse 4.0. When I installed that, Expeditor installed fine.

Lesson learned: Look up the version of the toolkit you're using. Look up the specific software requirements for that version. Match it instead of using newer versions.

Hmm. New error: Problem occurred reading your Target. Ensure that your Target Platform's Location is configured correctly. I have it set to c:\notes\framework\rcp\eclipse. It won't accept c:\notes\framework\eclipse . Hmm. It works now. I don't know what I did, though.

I'm running into the com.ibm.rcp.platform.personality error again. Let's try reloading those. They show up in the plugin list for the run configuration, though. Ah. Selecting another plugin that depends on that plugin might've done the trick.

There's a note about Bundle com.ibm.jxesupport not found. com.ibm.jxesupport was removed in Lotus Expeditor 6.2.0. You're supposed to be able to correct that issue by right-clicking on the project, selecting Properties > Client Services, and clicking OK, but no luck. It doesn't stop the system from moving forward, though.

… and we're back at the java.lang.SecurityException: Unable to locate a login configuration which I encountered this morning.

Okay. What do I know about this error?

  • Maybe I've configured the wrong JVM.
  • Maybe the JVM can't find lib/security/java.security .
  • Maybe there isn't one by default in Notes, so I have to create it.
  • Maybe the classes aren't in the classpath.

Aha! Found someone with the same error message, but in a different language. The person reported that checking all the boxes in the plugin tab helped. Let's try running it with all the features enabled (oh my). Lots of warnings, but still going… And there's the Lotus Notes login dialog, and the sample QuickNote plugin. I think we have it!

Useful links: