The January 2006 Blog
send me a comment

Lotusphere Session Downloads (Tuesday, Jan 31)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

I just noticed this afternoon that the Lotusphere session downloads (all the presentation files, zipped up into one archive per track) are now available for download on the Lotusphere online site -- only Lotusphere attendees have logins to the site, I'm afraid.

As a public service, many of the speakers are also posting their slides and associated downloads on Ben Poole's Lotusphere 2006 Wiki (being run on DominoWiki of course).

Get 'em while they're hot!

Lotusphere Wrapup (Saturday, Jan 28)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

Okay, so I kind of cheated with the Day 3 and Day 4 postings -- I wrote them on Saturday (consulting all my handwritten notes, of course) and back-dated them. It's just that I was so unbelievably busy this year that I didn't have any time to write/post during the day. I was out of my room by 7:45 every morning, and I never got to bed before 1:00 AM.

In a short list, here are the big things I came away with this year:

So, those were the "big picture" messages anyway (except for the backpack ;-).

As for the sessions, I had a huge number of session conflicts this year. I think I had a conflict in every single time slot, often there were 3 conflicts. On the one hand, that's annoying because there were sessions that I missed. On the other hand, it's great that there was so much good information to be had.

It's funny, I came back exhausted this year (as I did last year and the year before), but Jess and I were talking about it after the closing session and we both said we'd feel cheated if we didn't feel tired at the end. If you didn't wear yourself out, you didn't try hard enough and you didn't learn enough and you didn't see enough.

That's how I feel anyway. It's only 4 days out of the year -- I can suck it up and knock myself out for 4 days. Heck, I had to sleep in on Friday and I could barely talk when I did get up (even after 2 big cups of coffee), but it's Saturday and I'm on the road to recovery now. And I learned a ton of stuff and got to spend time with the most amazing people. I feel lucky that I get do that at all, really.

I'm done typing for now. I think I need to grab a glass of wine and relax for the rest of the weekend. Cheers...

Lotusphere - Day Four (Thursday, Jan 26)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

Last day of the show. I can barely talk, all I want to do is sleep, and I still wake up early enough to pack my bags, load them in the car, run down to breakfast, and make it to an 8:30 session. I'll be collapsing soon...

SESSION - BP301: Accessibility for the Visually Impaired
To be completely honest, I really went to this session because Devin Olson was doing it, and I wanted to watch and be able to give him feedback. By the end, I was happy I went because the subject matter was so good.

Accessibility on web pages isn't something I normally think about, and now I realize I should. Devin gave some good statistics on the number of partially to fully impaired people that use the Internet, and made the good point that "impaired" in this context doesn't just mean "blind" -- it covers low-visibility, color-blindness, hand tremors, and cognitive disorders.

He pointed to Dive Into Accessibility as a great resource (authored by now-IBM-employee Mark Pilgrim), and you should download not only his slides but also his sample database that has examples of problems your site may have and how to fix them. At the end of the presentation, I heard that the guy who runs the IBM accessibility labs (or someone like that) came up and thanked Devin for the session as well.

SESSION - BP505: OpenNTF Saves You Time, Money, and your Hair
Bruce Elgort gave this session to a packed room (about 600 people), and I ordered this one on DVD too.

Bruce had a lot of slides and material for a one hour session, but it didn't feel rushed at all. He covered the history of the OpenNTF site, its current status (over 25,000 members), and gave a brief overview of four fairly "mature" OpenNTF projects: OpenLog, DominoWiki, domBulletin, and !!HELP!!. The examples were good, because they showed not only how quickly you could implement the databases in your current environment, but also how easily you could configure them for your own use.

And Bruce, of course, was entertaining as usual. He gave a good show and had some funny slides that kept everyone going. I'll be interested to see how much the traffic goes up on the OpenNTF site in February.

SESSION - GURUpalooza
This was the panel session where all the speakers who did a "best practices" session were up on stage to take questions from the audience. I found it interesting that the session started with an announcement that portions of the audio may end up in a podcast later on (so speak appropriately ;-).

There were a few questions that were specific enough to be of little or no interest to me, and several that were redirected to the "Ask the Developers" session for official answers, but in all cases the questions at least got addressed.

One of the best questions was, "Why do I need Workplace?" The answer really boiled down to: if you don't need it, you don't need it. Bob Balaban also had the good observation that you should only use a technology that "solves more problems than it causes" -- sage advice for anyone.

SESSION - Ask the Developers
The traditional "Ask the Developers" session also began with the formal "this may be recorded for future podcasting" message as well. I can't wait to hear how the final Lotusphere podcasts come out (if they do).

This session was actually a lot milder than it has been in previous years (where it was nicknamed "Beat the Developers"). Not only were there no nasty, attacking questions, but Kevin Cavanaugh's upbeat attitude helped dispell any hostility as well. Which isn't to say that people didn't bring up concerns and criticisms, just that they did it in a very civil way (which isn't always the case). Maybe the threat of ending up on a podcast scared all the nasties away.

Otherwise, no real surprises.

CLOSING SESSION
I didn't have a chance to take any notes during the closing session, but it was kind of your normal wrap up for a conference. Surjit Chana did a good job of speaking -- he had more energy and presence than some of the opening speakers -- and he reinforced the "gloves are off" message from IBM marketing.

There was also a big tip of the hat to the Lotus blogging community:

Picture of the blog slide from the closing session

In the lead-in slides to the closing session (the ones that were playing as we were walking in and waiting for everything to start) had quotes from at least 6 different bloggers in the audience, right next to quotes from analysts and magazines. And then there was the big "Blog Community" slide during the session. Pretty cool, and actually some smart marketing.

Next post will be a Lotusphere wrap-up. Stay tuned.

Lotusphere - Day Three (Wednesday, Jan 25)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

Bruce posted our interview with Kevin Cavanaugh, so don't forget to download and listen!

BOF104: OpenNTF Birds-of-a-Feather
I got a nice early start this morning at the 7:00 AM OpenNTF "Birds-of-a-Feather" (BOF) session. Amazingly, the room was completely full (over 50 people) for the BOF -- which is amazing considering the fact that (A) everyone had to wake up extra early for it, and (B) they had to skip breakfast.

Bruce led an entertaining and interesting discussion, mostly based on audience questions and participation. Topics included:

SESSION - BP106: Worst Practices in Domino
Best Lotusphere Session EVER!

Bill Buchan and Paul Mooney did a fantastic job with this session. Very funny, well-paced, great timing with the slides and slide transitions -- and wow, even a bunch of excellent tips and best practices! To a standing-room-only crowd at 8:30 AM, no less.

If I went through all of the good things about this session, I'd just be giving you a play-by-play of everything that they did. Just download the slides and order the DVD.

Those two guys need to start a podcast...

SESSION - ID401: The Boss Loves Microsoft
I'm not sure how many years Ed Brill has been giving this session, but it's become one of the "classic" sessions at Lotusphere. He did a good update for this year, with a lot of things that have happened or been said over the past 12 months.

Interestingly, this year Ed co-presented the session with Sara Nagelvoort, so the first half was Ed talking about the competitive Notes/Domino landscape, and the second half was Sara covering WebSphere and Workplace. Another good set of slides to download.

Also, it was cool to see that someone in front of me was actually mind-mapping the session as it was going on.

SESSION - BP305: Combine XSL and DXL
This was Mac Guidera's first Lotusphere session, and he did a very good job -- apparently people are fascinated by this subject too, since we heard after the session that there were 2 overflow rooms!

It started off with a history of DXL in Notes, and had some brief discussions of related technologies: XML, XSL, and Ajax. At the end, Mac demoed a really nice Ajax/DXL front-end to a custom LDD/Notes.net search page. After a little pressuring, he even agreed to make the code downloadable so we can all play with it!
:-)

SESSION - BP312: Object Orientated LotusScript
My second Bill Buchan session of the day. This one dealt with how to write object orientated (that's "object oriented" to us Americans ;-) classes in LotusScript.

The topic went all the way from writing and calling a very simple class, to what Bill called "advanced running with scissors" techniques like dynamic loading of classes at runtime. He also made several mentions of Craig Schumann's class browser tool, which is an essential (and free!) tool for use with writing and managing your LotusScript classes.

SESSION - BP313: Practical DXL for LotusScript
Despite being sick and medicated, Rocky put on a very informative session on using DXL to create dynamic forms.

The first demo was a Notes survey database, where a user can select their own items to put on a survey (custom text, custom selection lists, your choice of checkbox, radio button, etc.), and then DXL is used in the backend to create a form that matches that criteria and can be filled out by other users. I'm pretty sure that the survey database is going to be downloadable from the LotusGeek site.

The second demo was the SAP time tracker bit that was shown in the opening session. Looks like it was the same basic technique, but with a lot more code around it. Unfortunately, we won't be able to download that code... But it was fun to watch.

PARTY: SeaWorld
I'm not sure I've ever been to Seaworld before. Unfortunately, it was a very fast run-through of the park. We all went to the big roller coaster, then headed over (with everyone else) to the Shamu show, and then pretty much got ushered out of the park.

Shamu was an entertaining (although short) show. There were two Shamus in the water at one point -- or as jonvon said, Shamu and Scrappy-Mu -- and they splashed as many people as they could. There was also an odd part of the show where the lights were low and there was some romantic music playing and there was some sort of interaction going on between a female trainer and Shamu. That whole thing made me a little uncomfortable...

After we got back, several of us ran around on the Boardwalk for a while. This included an unexpected and completely spontaneous flash-mobbing of the Boardwalk Brewery, where we (at least 15 people) walked in, rearranged all the tables at the bar, and walked back out to go to ESPN. Man, that was weird, but unbelievably funny.

Lotusphere - Day Two (Tuesday, Jan 24)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

Four hours sleep and going strong. Okay, maybe not strong, but very well-caffeinated.

Bruce and I had a chance to put up the podcast for yesterday, so please download and listen for a quick recap of Day One. Otherwise, here are some of the sessions I went to and things I did today.

SESSION - BP314: Domino Web Services; How to be a Good Consumer
I was a little disappointed in this session, mostly because I think I had some pretty high hopes for it. The whole concept of consuming web services in Notes is kind of shrouded in mystery (I know we've been asked to write/podcast about it a lot of times already), so I was really thinking that this session would show me a good way to do it.

Unfortunately, the session was more of an overview than anything, and the Notes client was just one of several "clients" that they talked about -- there was also Blackberry, Microsoft Office, Yahoo Widgets (Konfabulator), and I think a couple others. So I didn't really walk away with the knowledge of how to call a web service from Notes, I just saw some quick code indicating that the guys giving the presentation had done it before.

There actually was a great tip about creating stubs for complex data types in Notes agents though. I've had to do that before, and it's really a pain. What they said could be done is to import the WSDL into a new Notes Web Service design element, and Notes will create the stub classes for you! Then you can just copy and paste the class stubs (either LotusScript or Java, whichever you choose) into your agent or script library.

Also, when they demoed the Microsoft Office integration with the Microsoft Office 2003 Web Services Toolkit, I started wondering if you could possibly use that with Notes/LotusScript somehow. I have no idea. I'll have to try it...

SESSION - BP103: Managing System Development Lifecycle in Domino
This one was given by Christopher Byrne and Deborah Latter, and really dealt a lot with compliance, risk management, and change control -- that stuff that we all groan about but we all have to do.

I'll probably have to tell you to download the slides on this one, because there was just too much information to consolidate into a little blog entry. Christopher and Deborah really know this stuff, and they had a lot to say.

One other thing you'll be able to walk away with is an open-source Change Management template for Notes! They are going to upload the Change Management application that they discussed in the demo as an OpenNTF project after Lotusphere is over, so you'll be able to download it and customize/use it yourself. Very good.

SESSION - AD204: Power Programming: Manipulating Domino Application Designs
I wanted to go to this session just to see what Andre Guirard had to demo. I know he tends to do some interesting programming, and even though I knew I'd probably be able to download the code after the session (he said it will be in the Sandbox), it's good to see him actually talk about it.

Very good stuff. He talked about DXL quite a bit, and had some good little tips (like remember to call NotesDocument.Sign after you use DXL to modify a Notes design element). Also, a few neat examples, so you should look for the demo database when it comes out. A few bullet points:

SESSION - CS104: Reach Out and Blog
This was a panel discussion about blogging, hosted by Libby Ingrassia and featuring Rocky Oliver, Ed Brill, Volker Weber, Declan Lynch, Jack Dausman, and Christopher Byrne.

Kind of hard to summarize because it was a discussion between everyone on stage, and frankly I didn't take good notes. I got a big kick out of the fact that I got to sit on stage and talk about podcasting for a few minutes! There's a good photo of everyone (and me!) on Mother Vowe's site -- picture by Ingo Erdmann.

Funny thing about podcasting: I think people still think of it as an alternative to blogging. And it's really not. It's a different medium. Think radio versus TV here. I mentioned that it's a lot easier to podcast than to type a blog entry and there's a very low barrier to entry these days, and Volker made a great point that not everyone "has the voice" for podcasting (I can't remember his exact words). And that's a good point. Some people are very comfortable speaking, and some people aren't. I think that's probably a bigger barrier -- fear of public speaking -- than the technology these days. I fully expect there to be at least 10 people podcasting from Lotusphere next year, much like there are over 70 people blogging from here right now.

Sorry, enough about podcasting (and me). Good session.

BOF - BOF105: The Lotus Blogging Community
Naturally, I was obliged to follow everyone over to the blogging BOF right after the blogging session. Interesting that the blog BOF was right after the blog session, and actually the conversation just kind of continued at the BOF -- starting right off with discussion of the number of female bloggers versus male bloggers (probably a dangerous subject ;-).

There were actually a few people interested in internal company blogs. I personally think this is a fascinating subject, and one that I have absolutely no experience with. It's just really cool to me that some companies -- especially large companies -- are either thinking about or are actually doing large-scale internal blogs internally. All levels of employees have access, all the way up to executives, and everyone can comment on everyone else's blog. It's the whole concept of "flattening the organization" that people are starting to talk about (although I'm not sure that I personally know anyone who's actually doing it yet).

INTERVIEW with Kevin Cavanaugh
Bruce and I had a fantastic opportunity to do a 30-minute interview with Kevin Cavanaugh, Vice President of Development for Domino Products.

Kevin Cavanaugh was extremely easy to talk to, and gave a very friendly and informative interview. I'm really glad we got to interview him. We'll be posting the interview as a podcast later (tomorrow?), so I'll give you the link and more information about it when we do.

DINNER with Symfoni
Trond-Are Utle (Airplay on his blog) invited Joe Litton, Bruce and Gayle, and myself to the Symfoni Software dinner at House of Blues again this year for the Norwegian customer dinner. We went last year too, and just like last year it was fantastic. Everyone was quite friendly and spoke very good English, and we even ended up comparing international paper airplane folding techniques by the end of the night.
:-)

Again, it was a lot of fun and I'm glad we got to attend.

Afterwards, I came back and talked to Damien Katz until about 1:00 AM. Wow, that guy is a machine...

Lotusphere - Day One (Monday, Jan 23)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

Let me start by saying that Bruce and I DID NOT have a chance to podcast tonight. We both went to Jamfest, and then Kimonos, and... it was really late and we all had a lot to drink by the time we were done. Bad idea to try to podcast at that point. We're supposed to meet up in the morning.

If you don't mind reading for a while, here's what I saw today...

Opening Session
Good opening session, with a lot of talk of what you can do now and what's coming -- not just with Notes but also with Workplace (no surprise) and Sametime (more of a surprise). I think the quote was something like "Once we renamed the product back to Sametime, we started working on it again." I'll get the actual quote for you when the opening session is available for download. I was a little surprised at the... candor of such a statement.

Anyway, bullet points from the opening session:

Product Showcase
I went down to the product showcase right after the opening session, and it was packed. The "Lotus Stuff" store was packed too. Big lines. The yellow boxing gloves were there when I went in, and were all gone by the time I left. At $53 per set, I couldn't justify the cost.

Also, there were stacks of the new Domino 7 API posters just outside of the Lotus Stuff store. They were going fast, but I got a set. Not sure what the post-Lotusphere availability will be...

SESSION - BP308: Domino Facelift Using Ajax
This session was given by Lance Spellman and Dwight Wilbanks, and demonstrated an interesting framework-type app that they're developing. It does two things: it can auto-generate view templates for a database that displays a view in a nice scrollable format with a lot of options, and it can interpret the fields on a form to display them on the web in a more "native" looking format (like a date picker for date fields, FCKEditor for rich text, etc.).

It's kind of hard to describe, so you'll have to head on over to the Workflow Studios site and take a look at what it does.

There were also some good links at the end of the session that had to do with JavaScript debugging, so it's a good idea to download their slides and take a look at those if you have a chance.

SESSION - BP402: Advanced LDAP Infrastructure Design
I popped in on this one just for a few minutes just to watch Chris Miller. I've heard he has a very engaging presentation style, and I wanted to see for myself.

No disappointment there. He was a lot of fun to watch, and he has a real talent for explaining the LDAP concepts in very easy-to-understand terms. And he's got so much energy and he thinks so quickly, you just can't help watching and listening. Definitely a good session, and when I had to duck out early it was standing room only.

SESSION - AD216: Ajax and Lotus Domino
This was Turtle's session on Ajax, and was more of an introduction to the subject than a real deep dive into the code. And it was an excellent introduction. Really good examples, and it was presented in a very non-intimidating way. He showed us a "traditional" non-Ajax site (real site, on the Internet) along with some newer Ajax-based sites -- like Google Maps, Napa auto parts (he did a search for parts for a 1993 Ferarri 512), and his ficticious "Salivonics" site ("we make the products people salivate over" :-).

And he did a live demo of my Zip Code lookup page, which was very cool!

One other thing he talked about at the end was sites you can go to for information about programming in Ajax, and he mentioned a parseFromString method that could be useful for debugging. I know nothing about that method, so I'm going to need to do some research on it...

SESSION - AD203: Web Services in Domino Designer
This was more of an intro than I was expecting, but that was fine. This kind of stuff is interesting to me.

Big thing I heard in this session was Steve Nikopoulos saying that "document/literal" will be the new default encoding for Domino web services in future versions of Notes (it's currently "RPC/encoded"). And he said that "document/literal" should be the "preferred" encoding you use, unless your client applications demand a different format or you return Arrays from your web service methods. Not sure why he would say that about the Arrays, so I have that on my list of things to find out later.

Also, he warned not to use static variables or synchronization in Java web service agents, because they could cause unpredictable results, based on the way that Java is shared/cached in Domino.

John Grosjean mentioned that they "looked forward" to providing web service consumer capabilities in a "future release" of Notes. No idea what version or timeframe that pertains to...

Lotusphere - Day Zero (Sunday, Jan 22)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

It's Sunday, I'm in Orlando, I'm at Lotusphere, and I'm already exhausted. I must be getting old.

Bruce and I just podcasted today, so you can download and listen if you're interested. This is actually the first time we've been in the same room together doing a podcast (we always use Skype), and it's SO much easier when we're sitting right next to each other. And we did it in stereo this time, just because we could.

Tom and I did the Java Jumpstart for the Domino Developer session this morning, and it went great. If you want some reviews, I've already seen some by Devin, Greyhawk, Keith Strickland, and Laurette Rynne. Thanks for the great feedback everyone!

If you missed the session, you can buy it on DVD for a limited time. Also, Tom posted links to the slides and sample database download if you're interested in seeing what we did. Just to split the bandwidth load a little, here are some versions of those items you can download from here:

And yes, I did use a light saber in my presentation. :-)

More tomorrow. Make sure you keep up with the Lotusphere2006 Flickr stream for the latest photos from everyone.

Talking to People You Don't Know at Conferences (Thursday, Jan 19)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

If you're going to Lotusphere next week (and congratulations if you are!), one of the things you might be thinking about is trying to actually meet other people while you're there. I don't mean "meet" in the Biblical sense, I just mean talking to people you don't already know.

Unfortunately for most of us technical types, that is a miserable thought. Personally it really stresses me out, and I'm terrible at it. By nature, I'm the guy who stands against the wall near the snack table at parties where I don't know anyone.

So I may not be the best guy to take advice from, since I'm not natural at this, but at the same time I may be the perfect person to give the advice because I'm coming at it from the perspective of a geeky introvert. And I have to try at least as hard as you do. That being said, here's:

Julian's advice for talking to people you don't know at technical conferences

That's all I can think of right now. I'm sure you have your own ideas too. The trick is to think about this stuff before you go, not when you're in the middle of a room full of people thinking "Now what?" Just kind of prep yourself to get your head in the game. And then try to relax and get out there.

Just remember, no matter how bad you are at meeting and talking to new people, you're probably better at it than I am.
;-)

Standing on the Shoulders of Each Other (Tuesday, Jan 17)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

So here's the progression so far:

It's just kind of fun to see how everyone's ideas can play off each other to build new solutions. One of the great advantages to publishing your code for review.

Speaking of, I'll give you a little extension of yesterday's Jumpstart Session teaser. Below is all the code you need to create one of those cool 3D pie charts in a Notes agent (as long as you have my super-special wrapper class):

// create the chart object
PieChartWrapper myPie = new PieChartWrapper();
myPie.setTitle("My Test Pie Chart");

// add data
myPie.addData("Java", 20);
myPie.addData("LotusScript", 50);
myPie.addData("Formula", 10);

// display in a dialog window...
myPie.displayAsDialog(850, 550);

// ...and/or send to a file
myPie.sendToJpgFile("c:\\test.jpg", 600, 400);

Those little prompts for parameters that you saw in the Wink demo take a couple more lines of code (again, another helper class to do the heavy lifting), but normally you'd probably be providing the parameters in the code, via a lookup or calculation or something.

Jumpstart Session Sneak Peek (Monday, Jan 16)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

As many of you know, this Sunday Tom and I will be presenting a Lotusphere session: Java Jumpstart for the IBM Lotus Domino Developer.

Just to give you a little sneak peek at what we're doing, here's a screencam demo created using Wink (click the image below to open it):

Flash demo of JFreeChart agent

This is a demo of a 3-D Pie Chart being dynamically generated with a Lotus Notes agent using JFreeChart. It's one of the example agents that's in the sample database that will be available (with full source code) after Lotusphere. We'll obviously be talking about some of the agents in the database during the session.

I've seen a couple other JFreeChart examples in Notes, so the concept is nothing new. A few differences with my example are:

Here are a couple of the charts I made (click the images to enlarge):

Pie chart test Bar chart test

Now, the session WILL cover some of the basics of writing Java in Notes -- starting all the way back from what the Java primitive types are and how loops are structured -- but we've got some things in there that may be interesting to people who have already written a thing or two in Java as well. In the second half of the presentation, Tom will go over writing and debugging Notes Java agents in Eclipse and I'll have some demos like the charts.

We just want to make sure you have some fun code to play with when you leave.

Recent Picture of Me (Saturday, Jan 14)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

If anyone is trying to track me down at Lotusphere (only 8 days away), here's a recent picture:

Julian wearing a Frownie shirt

I know I posted a picture last year, but you never know how much you change in a year, right? And besides, I wanted to make sure I looked interesting and approachable. So there you go. That's pretty much what I look like... before I have a cup of coffee in the morning.

The shirt, by the way, is from despair.com.

UPDATE: Bruce reminded me that he also took a great picture of me last year.

UPDATE #2: I also forgot about this picture from Vowe's gallery. That is a remarkable picture in two ways. (1) Because Volker took it with a digital camera without using a flash in the product showcase -- on my camera that would never have come out. (2) I was moving around quite a bit so he wouldn't be able to take my picture. And somehow he got one anyway. Sneaky, that guy...

PillCam (Friday, Jan 13)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

My buddy Mark forwarded this to me. Check it out: PillCam gives an inside look at better health.

PillCam

From the article:

The patient is not sedated, as in an endoscopy, but simply swallows the pill with water. It progresses down the esophagus and takes about 2,600 color pictures at a rate of 14 per second. After 20 minutes, the doctor evaluates the video images and makes a diagnosis. The disposable capsule is passed naturally, usually within 24 hours.

That's just friggin' cool. I have an endoscopy scheduled in a few weeks. I hope my doctor has one of these little pills as an option.

Forcing Right-Click Downloads On Web Pages (Wednesday, Jan 11)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

Mildly related to yesterday's blog entry about File Download Speeds in Notes, I recently rediscovered some JavaScript code I had written to force people to right-click files on Domino web pages to download them.

Normally, when a user left-clicks a file link on a web page, they will be presented with a dialog box that allows them to either save the file or open it with the default application. In some situations (*cough* internet explorer *cough* *cough*) the file will just open in the default application without asking. Or start streaming. There are times when you don't want this "functionality". For those times, you can use this code:

<SCRIPT LANGUAGE=JavaScript>

// code to force right-click download for all $FILE attachments
// on a Domino web page. Based on script from 
// http://cross-browser.com/toys/append_listener.php

window.onload = function()
{
  appendClickListener("$FILE", newClickListener);
}

function appendClickListener(checkString, fnListener)
{
  if (document.getElementsByTagName) {
    var a, href, aList = document.getElementsByTagName ("a");
    for (var i = 0; i < aList.length ; i++) {
      a = aList[i];
      if (a.href && a.href.toLowerCase().indexOf(checkString.toLowerCase()) > 0) {
        if (a.addEventListener ) {
          a.addEventListener('click', fnListener, false);
        }
        else if ( a.attachEvent) {
          a.attachEvent('onclick', fnListener);
        }
        else {
          a.onclick = fnListener;
        }
      }
    }
  }
}

function newClickListener(e)
{
  alert('Please right-click this file to download it.');
  if (e.stopPropagation) {
    e.stopPropagation();
  }
  if (e.preventDefault) {
    e.preventDefault();
  }
  e.cancelBubble = true;
  return false;
}
</SCRIPT>

Just put that code as pass-through HTML anywhere on your Domino page (I had it at the very bottom, called from a subform), and it should pick up all the $FILE references on the page and add the onClick listener to them.

File Download Speeds in Notes (Tuesday, Jan 10)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

Bruce and I were having a discussion the other day about the slowness of downloading large file attachments from Notes documents via the Web, and I mentioned that I thought it was a lot faster to download an uncompressed attachment than a compressed one.

When you attach a file to a rich text field -- not via drag-and-drop, but by placing the cursor in the rich text field and choosing the menu option File - Attach... -- there's a little tiny "Compress" option at the bottom right corner that's checked by default:

Choose Attachment Dialog

If you uncheck that box, the file will be attached without compression (not surprisingly).

As a little side note, even if you accept the default of "Compress", the file isn't always compressed. Notes does some sort of guessing as to whether or not it would be wise to compress a file, and sometimes (like for very small files or Zip files) it still doesn't compress the file. To know for sure, you can go to the document properties, find the relevant $FILE field, and check the "Compression Type" property associated with it. It will be "Compression Type: NONE" if it's not compressed:

File Attachment Properties Dialog

Anyway, I did some very light local testing with the 22MB MP3 file from our last podcast, and the uncompressed attachment seemed to download a lot faster than the compressed one. It wasn't a very scientific test though, so I'll make a lazyweb request to anyone who would like to do some "real" testing in the matter.

It would make sense that the uncompressed attachment would be faster, especially if a lot of people are downloading the file. With a compressed attachment, the Domino server has to decompress the file every time before it sends it to the user for download. With an uncompressed attachment, I think it just starts sending. This would be why byte range serving works with uncompressed files (I had to deal with this once upon a time to figure out why large PDFs wouldn't download a page at a time).

Windows-Free Podcast (Monday, Jan 9)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

It just occurred to me that the most recent Taking Notes podcast that Bruce and I did -- Large Scale Notes Deployments with Bill Buchan -- was entirely Windows-free.

I've been running Ubuntu as my primary desktop at home since sometime last August, Bill is now on Fedora, and Bruce of course is a long-time Apple guy. We all connected over Skype and Bruce recorded on his Mac.

By the way, for any other Linux guys out there, I found out a couple of weeks ago that there's a built-in microphone amplifier you can enable, that's turned off by default. Just open a terminal window and type "alsamixer", and you'll get a screen that looks like this (click the image to enlarge):


AlsaMixer main screen

AlsaMixer help screen

Use the arrow key to select the "Mic Boost" item, and press the "M" key to enable/disbale the microphone amp. Then press Escape to exit. Instant loudness.

Lotusphere Wiki (Monday, Jan 9)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

Don't forget to add yourself to Ben Poole's Lotusphere Wiki when you get a chance! Most people are starting with the room numbers page, and creating a link stub for their own page there.

For example, I could open up the room numbers page, put it in edit mode, and add my name in WikiWord format (JulianRobichaux) along with any additional information I wanted on there. When the page is saved, my name will have a little question mark hyperlink next to it. By clicking the hyperlink, a new page is created for my name, in edit mode, waiting for me to add content.

On my page I wanted to add a (kind of silly) picture, so here's the wiki markup for my page:

[image:Julian2005FixedSmall.jpg right]

blog at [http://www.nsftools.com/blog nsftools.com]

will be presenting the following session at Lotusphere with TomDuff

#Java Jumpstart for the IBM Lotus Domino Developer#
Saturday, 01/22/2006
10:30am - 12:30pm
Swan 10
[http://www-142.ibm.com/software/sw-lotus/events/govfor.nsf/(UID)/ D830A30EC90ACF2A852570B400633FC9?opendocument official session link]

~Please Note: this picture above may only resemble Julian as he appears under a blacklight after massive exposure to radiation~

I also had to upload the Julian2005FixedSmall.jpg image file -- there's a little upload control at the bottom of the page, and the file gets uploaded when you save the page. If you want to add multiple files, just edit and save multiple times. Notice how I also used some of the markup for bold and italic on there, and I added a few links.

In case you get confused about the wiki markup language, there's a cool little slider when the page is in edit mode that you can use as a reference. And there's a QuickStart page with more information.

Also, if you want to keep up with the changes on the site, there's an RSS feed link in the right sidebar on all the pages, or you can just check the RecentChanges view from time to time.

The wiki was built using the OpenNTF DominoWiki template, of course.

TiVo Series 3 (Saturday, Jan 7)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

PVRblog links to some information on the upcoming TiVo Series 3 boxes, currently on display at the Consumer Electronic Show in Vegas. Cool new features include:

If you don't own a TiVo, you really don't know what you're missing. I'm not a "gadget guy" (or even much of a TV watcher), and I deeply love my TiVo.

As a side-note, I recenly bought a cheap multi-function remote that works great with the TiVo: the One For All 8910. It only cost about $20 from Amazon.com, and it does everything I want. Built-in TiVo support, learning mode for devices it doesn't know about (like my DVD recorder), key mapping (so I could map the TV volume and mute keys to the DVD mode), macros, and a backlit display that shows the current time. It was a great buy, especially because I used to panic whenever I couldn't find the TiVo remote.

Windows Keyboard Shortcuts (Thursday, Jan 5)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

For all of you keyboard jockeys out there, I ran across the mother of all Windows shortcut key lists in this Microsoft document: Guidelines for Keyboard User Interface Design. Scroll all the way to the bottom to see all the tables and lists.

If you're curious about Notes keyboard shortcuts, I posted some links to shortcuts in Notes 5 and 6 a while back, and even further back I have the keyboard shortcuts for Release 3 (in case you're feeling nostalgic).

Functions Versus Objects (Wednesday, Jan 4)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

In trying to find a clever way to explain the difference between functions and objects, I thought of the following metaphor (click to see a larger version of the image):

Functions and Objects

Does that make sense? Or is it just confusing?

WMF - More Than I Ever Wanted to Know (Tuesday, Jan 3)
[ permalink ] [ GoogleTrack ] [ e-mail me ] [ >> ]

Today, I've learned more than I ever wanted to know about WMF files.

To start with (in case you get bored and stop reading, which is always likely), there's a gigantic Windows exploit in WMF files that's been discovered, and your Windows computer (at the time of this writing) is vulnerable. You probably already know about it. If you don't feel like reading all about it, just know that simply viewing a WMF graphic file -- on a web page, in an e-mail, in Microsoft Paint -- can cause arbitrary code to be run on your computer.

If you haven't yet, you need to install this patch right now. It is from a trustworthy source, and Microsoft doesn't plan to release an "official" patch until at least next week. And there are real exploits of this vulnerability being sent as spam messages as you read this.

Okay, now that we're done with that, Here are a few other tidbits...

On the Lotus Notes side of the house, Ed Brill reports that IBM has technote about the vulnerability, with this information:

When a user chooses to Open a file attachment, the program associated with the file type is used to display the attached file. In the case of Windows Meta Files (WMF), it uses the Windows Picture and Fax Viewer (shimgvw.dll)...

The report from NIST suggests that this issue also affects the File Viewer embedded in the Lotus Notes client. While graphics will display in the viewer even with the shimgvw.dll file disabled, the case of exploit code executing has not been reproduced by IBM Lotus software.

In other words, if you do a File - Open to launch the WMF using the default Windows program, you can be exploited unless your computer is patched. If you do a File - View (or the image is inline), Notes uses its own internal file viewer, which IBM says is not vulnerable according to their testing.

If you're still concerned about the internal Notes File Viewer being vulnerable, I've put some information on the LDD forum explaining how to disable WMF display in the Notes File Viewer. Pretty much, it involves commenting out 2 lines in the keyview.ini file. There's also some code in that thread by Almar Diehl that demonstrates a way to comment these lines out programmatically on a client.

Regarding WMF files in general, a good initial source of information is actually the LibWMF documentation, and specifically the information from the O'Reilly File Format handbook. For example:

Microsoft Windows Metafile Format (WMF) files are used to store both vector and bitmap-format graphical data in memory or in disk files. The vector data stored in WMF files is described as Microsoft Windows Graphics Device Interface (GDI) commands. In the Window environment these commands are interpreted and played back on an output device using the Windows API PlayMetaFile() function.

I dunno, that's interesting to me anyway.

It appears that the flaw that's currently being exploited is the SetAbortProc function, which according to this F-Secure blog entry is a "function was designed to be called by Windows if a print job needed to be canceled during spooling".

I also noticed that some of the advisories mentioned that even if a WMF file has another image extension (like .JPG), it can still cause problems because the graphics rendering programs can auto-detect that it's really a WMF file. A little research showed that most WMF files begin with one of these 4-byte patterns:

d7 cd c6 9a
- OR -
01 00 09 00

However, apparently that's not even a foolproof way to determine whether or not you're looking at a WMF file, because the source code notes for LibWMF indicate that some WMF files have no header at all. So you can look for either one of those 4-byte header patterns, or a .WMF file extension, or... maybe something else.