Friday, January 25, 2008

Lotusphere: Last Two Days

The days down here are very long, I'm not staying in the center of the Lotusphere universe and I don't have wireless. All of that makes it hard to do timely posts. Anyway, here is what I saw that I haven't summarized yet.

SpeedGeeking was really good. I don't know what the selection process was but Rocky may need to get some help because a couple of the presenters I talked to said they found out very late that they would be presenting. The presentations were done well but it was hard to hear and see sometimes because there was such a large number of people. Maybe small stages for the presenter tables? Or larger monitors? Or just elevate the computers? Not sure what to do about the sound though. Coming up with 12 small speaker/mic systems (even if USB-powered) could be tough but is a thought.

Andrew Davis and Brian Leonard did a nice (and humorous) session on widgets and live text. Widgets are a cool addition in the Notes client and will help make the client even more "sticky". I'm anxious to see what happens in our environment since we're behind a proxy and I have had trouble in the past configuring the client to get past it.

Messrs. Buchan and Mooney were themselves in their "Best of" Worst Practices session. At least until the end. Duffbert came up and roasted them about some of the things they did getting ready for ILUG 2007. It was obviously uncomfortable for them but they handled it well. Face it, we all know what to do but we all know there are times when we don't do what we should.

Using Web Services Features in ND8 was a little bit dull in the presentation but still had some good information, including a nice explanation of the message type and SOAP format. I'm looking forward to trying out consuming a web service.

I was hoping for so much more from the session on Bridging Customer Data into Notes 8 with Lotus Symphony. It had a lot of information on WHAT they did but I was more interested in the HOW. I'm sure that will develop over time.

Chris Blatnick and Nathan Freeman did they usual magic in Advanced UI Design Concepts. Even though I had seen about 1/3 of the ideas before, the new stuff they showed gave me a few new ideas. I love the thought of using an editable column to cause documents to be deleted and I can't wait to try it out.

I got a couple of good ideas from Bernd Hort and Thomas Bahn in their Object Oriented LotusScript session. This is a concept that is hard to teach in an hour because it is very different from traditional LS programming. And there are some "gotchas" to be aware of. I plan to download their demo and dissect it and am sure I'll get some ideas there.

The last session I went to was using XML and DXL in Notes design programming, given by Andre Guirard. He is so knowledgeable and creative but it is sometimes hard for him to bring it down to a simpler level, at least when talking (his writing is generally detailed enough). Some good ideas though and he has some tools I know I can use.

To me, nothing too earth shaking happened in the Ask the Developer session. Everyone seemed to be having a good time.

More on the closing session and an overall wrap up later.

Wednesday, January 23, 2008

I Miss My Family

It's great to be in Orlando at Lotusphere, don't get me wrong. But it can be hard too. I saw a guy yesterday wiping his eyes after looking at photos of his family on his PMP. I'm not at that point, but I am sorry that I missed Fathers Night at my daughter's preschool and my son's first Pinewood Derby.

As great as it is here, sometimes it really gets in the way.

Tuesday, January 22, 2008

Man, Am I Tired!

Here it is, Tuesday evening, and I finally have time for a Lotusphere post. There just hasn't been time during the day. Anyway, what has gone on so far?

Of the four JumpStarts I went to, the most interesting ones were related to Eclipse. Combined with what I saw in the Opening General Session and a breakout on Domino Designer 8.5, designing Notes/Domino applications will soon be much more fun. Of course, it can start even earlier if you have to develop plugins or know Java (which I don't).

Speaking of the OGS, hearing the Orlando Symphony Orchestra play Led Zeppelin's Kashmir was awesome! Bob Costas was the guest speaker and had a few good stories. I didn't think much about it at the time, but a couple of people said later his stories about baseball and football didn't connect with non-Americans. Makes sense as I look back. It was a VERY full session, and very long. There were a couple of kind of awkward moments, where things seemed really forced, like before the big announcement of Lotus Foundations (or was it Bluehouse?).

Lotusalon was interesting. Three people involved in what I guess you'd call "web 2.0 culture" presented their thoughts on where the online culture is heading. I think it may need a little fine tuning but I thought it was a good idea, just in the sense of helping to think "out of the box".

Andre Guirard and Julian Robichaux gave a good presentation on Features Every Application Should Have. I know mine don't have all of them, so I have things to check out already! Check out the tools on their sites.

John Head and Alex Kassabov did a presentation on Notes 8 and Expeditor for LotusScript Developers. They illustrated what you need to get your new development environment running and how to do it. Coupled with Mary Beth Raven and Matt Hatem's session on customizing the Notes 8 client, they showed we'll be able to do a lot to the client but it will take some work to do it (not a LOT, but more than just changing a couple of text files).

I also went to a session that Rocky Oliver did on formula and LotusScript tricks. I learned a couple of new tricks (check out the @ToNumber and @Nothing functions) and more about DXL. Yes, more things to try out.

SpeedGeeking was tonight as well. It was much bigger this year than last year but was just as good. More about that later, I think.

So far, it's been a good week. Tomorrow will be another long day but I am looking forward to the sessions I've planned to go to. Too bad there are a couple of time slots that have two sessions I want to attend!

Thursday, January 10, 2008

Lotusphere Session Evaluations Done Online

I just saw this at Chris Miller's site:
Session evaluations will be completed electronically this year - no more paper forms in the conference notebooks! Attendees will be able to access all evaluations forms by selecting the evaluation icon on any Lotusphere Online laptop, their own laptop or handheld device through a special URL.

As I posted there, this will undoubtedly make it easier to compile the results and will be helpful to those who have their laptops operating in the sessions. But those of us without wireless on our machines (I know: that is SOOO 20th century) will now have to find time to fight the crowds to get on one of the LSOnline machines. Not to mention find the time to do it.

I hope I can get my iPaq to connect - maybe I can do mine that way. <sigh>

Monday, January 7, 2008

Thursday Night Dinner @ Lotusphere 2008

I'm sure anyone who sees this will have already seen it on one of the other blogs, but what the heck. John Head is organizing a dinner for the community on Thursday after Lotusphere ends. Go here to give him a heads up if you'll be joining in. Add your comments on John's blog.

So is this another B.A.L.D? Bloggers After Lotusphere Dinner?

Wednesday, January 2, 2008

Lotus-related Stuff

I have been pretty neglectful of posting here over the last few months. Part of it is not having much that I felt I could share, and part of it is not wanting to spend a lot of time putting together detailed posts for the few readers I suspect I have.

At any rate, I have spent a lot of time developing a database to gather statistics from our application databases. For example, the number of documents that are waiting for signoff by a particular role and the average number of days between signoffs of two different levels. It is created in such a way that statistics can be created by completing a form (look, Ma, no programming required!). Pretty cool, plus it includes things like doc linking back to the source documents (if you want) and a "heat map" to indicate the importance of the returned value. Not the stuff of an SNTT post though.

I also created a simple composite application in Notes 8. This is a neat concept but I hope they continue to improve it because there are some rough spots. Create an action button containing LotusScript code to define an event handler? It should be much simpler than that. But there is a lot of potential there.

Finally, I get to go back to Lotusphere! This will be a different experience because, due to increased attendance and late registration, I am not staying at the Swan or Dolphin. More planning will be required this year, for sure, since I won't be able to get to and from my room as quickly. I am looking forward to seeing a lot of the people I have met the last two years, and (of course) getting lots of ideas to come back and implement. This past year was a lot of new user interface ideas and I hope to get even more of those plus some other unexpected goodies.

Happy New Year!

Firefox Live Chat

I used the new Firefox Live Chat yesterday to resolve a problem I was having with CNN video. There were a couple of hiccups when I had to switch browsers so I could change the Firefox setup. The person I was chatting with was knowledgable and friendly. In the end, she just pointed out a troubleshooting process that I should have known to do in the first place, but sometimes that's just what you need.

Oh, the coComment extension kills the CNN video. I don't know (and don't care to find out) if it is due to a combination of that extension with one of the others I am running, or if it is just because of coComment. I did see other people reporting problems with coComment on AJAX sites so I suspect the extension is just not very well behaved.

Tuesday, October 9, 2007

Why Computers Frustrate Me

Late last week, my mouse stopped working properly. It is a two-button USB mouse with a scroll wheel. The left button began acting like the right button and the right button did nothing. VERY frustrating. I rebooted, uninstalled and reinstalled the driver, changed the USB port it was connected to, tried a different USB mouse - no change. Gateway technical support was friendly but not very helpful: "everything looks the way it should; I suggest you restore your system to its default state." In other words, spend a day reinstalling everything and lose software from Giveaway of the Day because it can't be reinstalled. Not a good option.

I got a PS/2 mouse and (after rebooting AGAIN) got it to work. But that was a two-button rollerball mouse and I didn't want to make that my permanent mouse.

I tried a few other things I found on the Internet, but since my original mouse was the basic kind that Windows is supposed to handle, nothing I did made any difference (it wasn't like I could reinstall driver software to fix it).

Since the PS/2 mouse worked, I was hopeful a new, different type of mouse might do the trick. I went out and bought a wireless optical mouse, hooked it up and IT WORKS! One less wire to be hooking with my feet under the desk and everything works the way it should now. The $40 I spent on it was well worth avoiding all the reinstall hassles. But I sure wish there was a way to fix problems like this without having to start over from scratch.

Thursday, August 9, 2007

SnTT: Sametime 7.5.1 - Dual Repositories for User Information

A new feature in Sametime 7.5.1 allows you to pull user information displayed on the Sametime business card from two different sources (see this fix list item). So you can get the user's name and location from, say, a Domino Directory and their job title and photo from another Domino database. We had that exact need so this was a nice feature add for us. Another positive is that this lets you include a photo on the business card without requiring changes to your Domino Directory. Note that this also works if one of your data sources is an LDAP directory; I am not discussing that because we don't have that need but the instructions are documented and are pretty similar.

The instructions in the Sametime Information Center for configuring dual Domino repositories are a little confusing in spots (why talk about Sametime using LDAP for authentication when the topic is using the Domino Directory and a custom database?) but they do work. The instructions do not include a detail tag for a photo but it looks like this: <Detail Id="Photo" FieldName="Photo" Type="image/jpeg" />. If you use GIFs instead of JPEGs, set the type to "image/gif". And the value of the FieldName item needs to be the name of the field containing your photo.

One caveat: make sure you type the XML exactly as shown in the example. We spent way too long troubleshooting problems only to find we had two typos. Whatever the reason, the items in the XML tags must be entered exactly as they appear in the example. We had entered one item name as "DBName" instead of "DbName" and another as "Fieldname" instead of "FieldName". As you might imagine, these were a little hard to pick out after staring at the file for a while. Once we corrected the errors, the data and photo from the second database was included in the Sametime business card.

As far as we can tell, this does NOT require 7.5.1 CF1 to work, although we are running CF1 on the box where this is enabled. And it does work if the secondary database is in a folder accessed via directory link. Thanks go to Grant Bingham for the setup instructions for 7.5 (some of which may be made obsolete by this new function) and to Mikkel Heisterberg for the reverse engineering of the userInfo servlet calls, both of which were helpful as we worked our way through this setup.

Ultimately, since the instructions published by Lotus do work, I guess this just serves as a warning to anyone who attempts this to be very careful in your typing.

Technorati:

Tuesday, August 7, 2007

Miscellany

Tonight is golf night. Hopefully it goes better than last week when I played reasonably well - on 7 holes. Two in a row out of bounds and hitting lots of trees don't do anything positive to the score.

Last week I registered at Facebook and found a group of Notes/Domino Geeks. We'll see if anything comes out of that. Facebook is kind of fun overall though.

I bought a new set of speakers for my home computer. The old ones were about 7 years old (Boston Acoustics) and were beginning to have issues with dropping out. I had to jiggle the cables to get sound out of one side. I bought a set of Bose Companion 3 speakers (apparently Series I since BestBuy is selling Series II) and so far I LOVE THEM! I have to get the bass part adjusted properly because they boom too much on songs with "dance beats" and lose the bass line. Worth the money in my mind.

Tuesday, July 31, 2007

Top 5 Side 1 Track 1

OK, no one's tagged me on this but I'm going to jump in anyway. I'm splitting the difference on "mainstream" stuff and "obscure" stuff, in case anyone wonders.

Journey "Frontiers": Separate Ways (Worlds Apart) - I am a HUGE Steve Perry fan and I always say this is my favorite Journey song. The best thing for me is how Jonathan Cain described it in the Time3 box set: "We played it live and the audience came unglued."

Beatles "Abbey Road": Come Together - Gotta have some Beatles on it and this proved they could still make great music in the midst of personal turmoil.

Michael Hedges "Live on the Double Planet": All Along the Watchtower - OK, so this is a live album and not a song that he wrote, but I'm bending "the rules". All that sound is one man, one guitar. A great guitarist who died way too young.

Sass Jordan "Racine": Make You a Believer - Great female blues rock. She's not very big but rocks hard. I saw her once in concert from the front row.

David Broza "Stone Doors": Night in Wyoming - Another acoustic guitarist who I heard for the first time when he opened for Steve Perry. He does recording in English, Spanish and Hebrew and all of those influences are in his music as well. Interestingly, he takes poetry written by others and puts it to music.

Tag:
Devin Olson (I know Phil already did, but Devin hasn't posted)
Ray Bilyk (I gotta have more cowbell!)
jonvon
Mike Sobczak

Technorati:

Friday, June 15, 2007

SnTT: Open the Database Containing a Doc Link

This probably belongs on Alan Lepofsky's site - and maybe it's already there - but I thought it was pretty handy when I figured it out.

I've had lots of occasions where I get a doc link, open the linked document and then want to open the database to see other related documents. I had always gone to my workspace, located the icon for the database I just opened and clicked it to open the database. I figured there had to be an easier way and I finally found it:

Click View | Go up to Parent View.

This opens the view that contains the linked document. Action buttons can execute @Command([GoUpLevel]) to achieve the same effect.

This is probably not news to a lot of people but I just learned about it. Now, if only you could right click on the open document and see the option there...

Technorati:

Friday, June 1, 2007

SnTT: Update to Single-View User Interface

I know it's Friday but this was so cool I just couldn't wait until next week.

About a month ago I posted this in which I explained how I got around some limitations with embedded views that are displayed in framesets. It is, admittedly, not the most elegant solution because it requires the user to click a button to update the embedded view. It also requires some inter-frame communication, for which I used an environment variable. I had thought about using JavaScript (and actually saw another post that might have been useful for that) but didn't get a chance to do anything about it.

But that was before Slawek Rogulski posted to say he knew how to make this work using a single frame and form. Read the comments on the first post and you'll see I was a little skeptical. Well, I got it to work. And it's really pretty simple.

1. In your form that contains the embedded view, set it so it has a Form Header with a height of Fit to Content. You may also want to set a border of 1 pixel to ensure that everything you want in the header is actually there (you can turn that off once you get the header content correct).

2. Select everything on the form that is above the embedded view and cut it.

3. Move the cursor to the top of the form and paste the cut content back in. That should place it in the header area.

4. Save the form.

Now you can just compose a document with that form or place it in the top frame of a two-frame frameset (if you want the bottom frame to be a preview frame). The scroll bars on the embedded view will appear when necessary and will display both the scroll up and scroll down buttons. Plus, there is no need for inter-frame communication or for the user to click a button after selecting field values - once you select a value in the "trigger" field, the embedded view can be updated automatically.

Apparently the rendering engine can account for the height of a form header when displaying the embedded view. If you don't use a header, it does not know the height of form content above the embedded view; as a result, the scroll bar is not rendered correctly (documents in the view can exist below the bottom edge of the application window and there is no way to see the view entries, although you can press PAGE DOWN to move the highlight to them and press ENTER to open the documents).

Thanks a lot, Slawek. This provides a great solution for simple interfaces and is a lot easier than what I initially came up with. He also said he's used this in cases where the embedded view is computed (I didn't need that capability). And it's another great example of the "power of community".

Technorati:

Thursday, May 31, 2007

It's been a week....

since both my Wings teams lost. The K-Wings lost 3-1 in game 7. They played tough but just couldn't get a win on the road in the finals. They still had a good season and the countdown has begun to the start of the next season. The worst part is that the IceHogs announced earlier in the year that they were leaving the league. It bugs me that a team that bolted wins the championship on their way out the door, but they played well enough to win so I have to give them that.

The Red Wings lost in 6. I think the Ducks basically just wore them down with the physical play. It didn't help losing Schneider but there were times when they didn't seem to have the intensity they needed. Interesting talk about the possibility of them going after Giguere this off-season. Guess if you can't beat him, get him to join you. He has looked pretty solid so far, but I still think I'd prefer to see Ottawa win it.

Add to these the funk the Tigers have been in the last week and the uphill battle the Pistons are fighting and it's kind of a tough time for Detroit sports lovers.

Tuesday, May 22, 2007

Do or Die Tuesday

Both the K-Wings and Red Wings are down 3-2 in their series, and both play game 6 tonight. The K-Wings are at home and, according to coach Reeds "always play their best when their backs are against the wall." Here's hoping that's true once again tonight. As for the Red Wings, hope the bitter taste from Sunday lingers long enough to give them motivation.

Both teams just need to play to win rather than playing not to lose. Easier said than done, I know.

I know I'm biased, but I'm not sure an Anaheim-Ottawa series is what the NHL is hoping for from a TV ratings standpoint. Not to mention the fact that there will be more late night games that way. I'm just hoping I can find Versus at the hotel or a bar tonight in Cleveland!

Thursday, May 3, 2007

Wings Win! (Twice)

Both the K-Wings and Red Wings won last night! The K-Wings play at home again on Friday and the Red Wings are home on Saturday. Keep the momentum going!

SnTT: Single-View User Interface Problems (and Solutions)

Lately, I've been doing a lot of user interface work. I've updated the interfaces on three of our applications and created a new interface for the Team Room (7) template. I also used a completely different (for us) style on a new database I developed, which is what I want to share today.

This is a database for which we wanted to keep the interface simple. The primary users are more focused on mainframe programming and don't use a lot of Notes applications, so rather than giving them a list of views to choose from and hundreds of documents to wade through, I embedded a view on a form (called, very creatively, User Interface) and let them choose the category they want to see using a radio button and drop down list on the form. When it is opened, the database creates a document using the UI form and displays the category for the user who opened the database (as in "My Documents"). The embedded view is set to Fit to Window for both height and width.

The original idea was to display the UI form in the top frame of a two-frame frameset. The bottom frame, collapsed by default, would be for previewing documents in the embedded view.

All seemed to be going well until I ran into a category that had too many entries to fit on one screen. In that case, I could see a scroll bar at the right of the view but the last two documents could not be seen. After a while, I discovered that was because Notes does not include the height of text above the embedded view when it calculates the height of the embedded view to fit it to the window. In other words, my embedded view extended below the bottom of the screen by the amount of space I had above it on the form.

Because this was my interface (not an individual document), I didn't want a scroll bar at the right side at all times. I didn't want the user to have to scroll both the interface form and the embedded view, and I didn't want the top part of the form to scroll off the screen so I could see the bottom of the view. So, what to do? I had a couple of ideas that involved tables but I couldn't get the table row height to automatically go to the window height. Setting the height of the embedded view also didn't work because it didn't scroll correctly if the preview pane opened up big enough to hide part of the view. I also thought of a little more traditional two-pane setup but liked the basic idea I had better. "A-HA!," I thought, "I'll create a frameset with three frames." The "A-HA" was easier than the implementation ended up being.

The top frame contains a form with the radio button and drop down list in it, the middle frame contains the embedded view, and the bottom frame is the preview frame. Here is the frameset in Designer:


Because the embedded view is the only thing on the form in the middle frame, setting its height to Fit to Window does not present any scrolling problems; the scroll bar appears when it is needed due to the number of documents in view or when the preview pane is open. The problem is communicating changes in the fields in the top frame to the view in the middle frame so that the view displays the proper category. I decided to use an environment variable for that communication, setting it in the top frame and reading it in the middle frame. I was going to use the OnChange event of the drop down field to trigger the update but @formulas can't be used there. I also found that a) I couldn't set the variable using @formulas and b) I couldn't update the middle frame using LotusScript. GRRRR! I still don't know why neither @Environment nor @SetEnvironment worked. Maybe I needed to restart my client or something.

At any rate, I ended up adding a button next to the drop down with two @formulas: one that runs a small LotusScript agent to set the environment variable and one that refreshes the frame containing the view. I also put an @Environment command in the QueryOpen of the form in the top frame (it worked there!) to set the default value of the variable. After all that work, it looks the way I wanted it and scrolls properly:


I don't love the 'Go' button I had to add but I couldn't come up with another way to trigger the updates I needed to refresh the embedded view. I thought later about using JavaScript to update the view frame and refresh it but I don't know JavaScript very well and couldn't find a good example for what I wanted to do. Maybe I'll revisit it later.

But in the meantime, maybe this is something you can add to your own toolset as you think about your application interfaces.

Technorati:

Wednesday, May 2, 2007

Baseball....and hockey

The Little League season is off to a good start. Because we have only 5 teams in our division, one team gets a bye each night. But on opening day, our team played a double header of shortened games - and won both of them! I was out of town for the weekend but got the full report. Lots of walks and passed balls as you'd suspect but some good hitting and good plays too. Can't wait until Friday to actually see them play.

As for hockey, the K-Wings are in the second round after winning the first series in 6 and are tied at 1 game each heading into tonight's game at home. Two very evenly matched teams but the Wings will win if they play the fill 60 minutes. The Red Wings seem to have their hands full too. I don't want to be too pessimistic, but I think they have to win tonight to have a realistic shot at taking the series.

As Badger Bob used to say, "It's a great day for hockey!"

Thursday, April 12, 2007

Baseball?

I'm helping coach our son's Little League baseball team again this year. He is in his first year in Little Majors (kids pitching) and we had our first practice on Tuesday. It's too early to tell how things are going to go, other than that we only have one kid who has played Little Majors before.

But the weird thing, and the reason for the title of this, is that it was 48 degrees on Tuesday night and we practiced on a clear field. Wednesday, we got 5 inches of snow! Today it is a little warmer and rainy, and it is supposed to be near 50 tomorrow, but it isn't clear if we'll be able to practice tomorrow night.

Hope this weather straightens out soon. It's time for winter to be done!

SnTT: Toolbar Icon to Change Font Colors

This is a quick and dirty tip inspired by a request from a co-worker the other day. He wanted to know if there was a way to quickly change font colors in Notes, similar to the buttons available in Microsoft applications. I said I wasn't aware of one and couldn't locate one after some searching. So, since he's a good guy, and I like to keep people happy with Notes, I decided to write something quickly.

This is the code:
colorchoices:="Black":"Gray":"Red":"DarkRed":"Green":"DarkGreen":"Blue":"DarkBlue":
"Magenta":"DarkMagenta":"Yellow":"Brown":"Cyan":"DarkCyan":"White";
colorcodes:=[Black]:[Gray]:[Red]:[DarkRed]:[Green]:[DarkGreen]:[Blue]:[DarkBlue]:[Magenta]:[DarkMagenta]:[Yellow]:[Brown]:[Cyan]:[DarkCyan]:[White];
newcolor:=@Prompt([OkCancelList];"Choose a Color";"Choose the color to apply to the text: ";"Black";colorchoices);
@If(newcolor="[]";@Return("");
@Command([TextSetFontColor];@Subset(@Subset(colorcodes;@Member(newcolor;colorchoices));-1)))

I set the button caption to 'Change Font Color' and popup help to 'Change the font color' and chose the toolbar_paintblu.gif icon from the list of available icons.

Note that I said this was "quick and dirty". The code could probably be more efficient but it is functional. Note also that this button will work to set a font color at the insertion point or to change the color of selected text.

Enjoy!

Technorati: