About Duffbert...

Duffbert's Random Musings is a blog where I talk about whatever happens to be running through my head at any given moment... I'm Thomas Duff, and you can find out more about me here...

Email Me!

Search This Site!

Custom Search

I'm published!

Co-author of the book IBM Lotus Sametime 8 Essentials: A User's Guide
SametimeBookCoverImage.jpg

Purchase on Amazon

Co-author of the book IBM Sametime 8.5.2 Administration Guide
SametimeAdminBookCoverImage.jpg

Purchase on Amazon

MiscLinks

Visitor Count...



View My Stats

02/29/2004

Book Review - Liberation Day by Andy McNab

Category Book Reviews

Since I was out of recreational reading material the other day, I picked up Liberation Day by Andy McNab at our library.  This is an espionage thriller novel with a main character by the name of Nick Stone.  It's also part of a series using the same characters.  This is the first time I've read McNab's writing, and I can't say I was impressed...

This story takes place shortly after 9/11, and Nick Stone is going on one last mission.  He has to infiltrate a country, find a certain target, and physically cut off the guy's head and deliver it back to his handlers.  If he completes this, he's been promised his US citizenship.  His girlfriend finds out about his last mission and decides to leave him, making his future less certain.  With this turn of events, he goes back into action.  He's asked to track down a series of physical money transfers in Monaco and Nice that will be used to finance more terrorist activities.  That is the majority of the action in this novel.

The author apparently was an actual Special Operations member who has to have his novels reviewed by British Secret Service before publication.  The realism and understanding of the trade shows up in his writing, but it's to the detriment of the storyline.  There was far too much checking of watches, radio chatter, and detailed descriptions of each area.  While it may be accurate from a spy standpoint, it makes for a less-than-exciting read.  The plot was rather basic, and it was as if he was trying to fluff it out with all the spy minutiae.  

Maybe his earlier stuff is better...  This one certainly didn't do it for me.

02/28/2004

Book Review - Introduction To Object-Oriented Design And Analysis Using UML And The Unified Process by Stephen R. Schach

Category Book Reviews

Book Review - Introduction To Object-Oriented Analysis And Design With UML And The Unified Process

Title
Introduction To Object-Oriented Analysis And Design With UML And The Unified Process – Stephen R. Schach
1st edition, 2004, 395 pages, McGraw-Hill Irwin

Target Audience
Developers looking to learn how to do object-oriented (OO) analysis and design for their projects using the technologies of UML and the Unified Process.

Contents
This book is an academic textbook on the subject of OO analysis and design for computer science students who may not yet have a background in programming.

The book is divided into four parts with the following contents:

Part 1 - Introduction To UML And The Unified Process – Introduction To Information Systems; How Information Systems Are Developed; The Object-Oriented Paradigm, UML, And The Unified Process
Part 2 - UML And The Unified Process – The Requirements Workflow I; The Requirements Workflow II; The Object-Oriented Analysis Workflow I; The Object-Oriented Analysis Workflow II; The Object-Oriented Design Workflow; The Workflows And Phases Of The Unified Process; More On UML
Part 3 - Major Topics In Systems Analysis And Design – CASE, Teams; Testing; Management Issues; Planning And Estimating; Maintenance; User-Interface Design; Introduction To Web-Based Information Systems; Introduction To Database Management Systems; Technical Topics
Part 4 - Appendixes – Term Project: Chocoholics Anonymous; Object-Oriented Design: Osbert Oglesby Case Study; Object-Oriented Design: MSG Foundation Case Study; C++ Implementation: Osbert Oglesby Case Study; Java Implementation: MSG Foundation Case Study; Index

Review
It’s been a long time since I’ve sat in a classroom learning something new.  I’m used to getting the latest book on a subject and doing it myself.  So it’s unusual that I would end up with a textbook on a technical subject that I am using for self-education.  That’s the situation I find myself in with this book.

Introduction To Object-Oriented Design And Analysis is designed to for use with a beginning course on the subject.  So right away, you can expect the material to be presented in a formal, academic fashion.  The author deliberately spends comparatively little time on introductory material and gets to the meat of the subject so that the reader can start to get some hands-on experience.  Each chapter states the learning objectives up front, and ends with a recap of key terms and additional references.  There are also review questions for the chapter, as well as problems to be solved.  Scattered throughout the chapters are “Just In Case You Wanted To Know” sidebars that relate the subject being discussed to real-life situations.  There are plenty of diagrams and illustrations to aid your understanding.  There are also two case studies that are built upon throughout the book so that the reader can follow an entire project of OO analysis and design from start to finish.  Finally, there is a CD included in the book that has a tool called ArgoUML that can be used to create your UML design diagrams.

I personally would recommend this book to someone wanting to learn more about OO analysis and design.  If you are trying to make the transition to OO programming (such as with J2EE), you’ll need to have a good grasp of this material.  J2EE is not a rapid application development environment, and you need to have a solid system design in place before you start your coding.  This book will give you the skills and tools you require to get there.  It is a serious approach to learning, so if you prefer a lighter approach to a new subject, you should probably look for something a little different than what you’ll find here.

Conclusion
This is a book that will appeal to those who like a more academic style for their learning.  If you take the time to answer the questions and follow the examples, you’ll come away with an excellent understanding and grasp of the subject.  

02/28/2004

Book Review - The Complete Idiot's Guide To Publishing Magazine Articles

Category Book Reviews

Over the last week or so, I've been reading The Complete Idiot's Guide To Publishing Magazine Articles by Sheree Bykofsky, Jennifer Basye Sander, and Lynne Rominger.  If you're inclined to want to explore this area of freelance writing, I would readily recommend this book for you.

The authors take a topic with an abundance of material and present it in an entertaining, digestible fashion.  They cover topics from what a freelance writer does, the basics of writing, and how the periodical industry works, to how to write an effective article and how to treat your writing as a business.  When you finish, you'll be able to tell whether this is something you want to pursue, as well as how to get started.

For me, I learned some tips on writing style (which is always good).  I also received some confirmation that steps I've taken already are leading me down the right path.  I also appreciate the work that editors like Libby Schwarz at e-Pro and Liz Olson at Advisor accomplish to bring it all together each month.

Bottom line...  this is an excellent book to move you further along in the periodical freelancing area.

02/27/2004

Anonymous comments on blogs and personal responsibility...

Category Blogging

If you follow the Domino blog world, you have probably happened to catch a bit of an ugly situation currently playing out.  Specifically, it has to do with Gary Devendorf's blog.  Quick Gary background...  worked for IBM/Lotus, LotusScript guru and product manager, COM expert, redeployed/laid off by IBM during a resource action (I *hate* that term), hired by Microsoft, and now is an MS evangelist who has made no bones about his dislike of what IBM/Lotus became in his view.  OK...  you're now caught up.

Recently there was an entry out there that tried to point out an inconsistency about how IBM is treating LotusScript.  Personally, I think the quotes were taken out of context, but that's neither here nor there.  Some debate ensued, which is still OK.  But then an anonymous poster started referring to Ed and company as the "new Lotus mafia" and making what I considered rather irresponsible posts based on information he most likely knows little about.  That's where things get ugly.

When called on the anonymity, s/he stated that corporate policy prevents him/her from using their real name in publically attributable comments.  While I don't doubt that those situations exist, I do have a major issue with using that as a reason to stay anonymous while still posting derogatory comments.  Personal ethics, if one has them, should lead one to either 1) not post at all, or 2) keep your postings within common bounds of decency if you can't back your statements with your own name.  That sort of "post, run, and hide" behavior has no place on someone's blog if that blog is representative of the image they want to portray.

And furthermore...  It bothers me that Gary would allow the postings to either continue or stay out there.  You can block comments by IP address (I know, I wrote that piece of BlogSphere!), and you can delete comments that are not appropriate.  The fact that they aren't blocked and aren't deleted leads me to conclusions I don't want to make, but end up doing so anyway.  Either Gary doesn't care about the image it portrays on his blog, Gary agrees with the comments, or Gary made the comments.  I don't really think the last one is true (or at least I don't *want* to think it's true).  The other two options, in my opinion, don't reflect well in any situation.

I'm not going down the .Net path, and the stuff that Gary is now doing doesn't really interest me.  And if his blog is going to become a derogatory name-calling outlet, then there's definitely no reason for me to waste the few minutes I might spend there.  I hate to delete sites off my blogroll, but this one has run its course for me...

02/27/2004

Journalistic integrity and sham awards...

Category Everything Else

There's one thing that will cause me to forever ban a company from my "will recommend" list.  Deceptive business practices.  And now that I'm a freelance writer, deceptive business practices coupled with journalistic integrity issues really frosts my socks.  And based on a heads-up from a respected fellow blogger, I now have a company that falls squarely into that category unless and/or until they explain otherwise...  MayFlower Software and the Spam Sentinel product.  I won't even link to them here.

Last year InsideDomino, a web site "reporting" on Notes/Domino news, awarded an Editor's Choice award to the best products out there.  They gave that "prestigious" award to Spam Sentinel.  So far, OK.  BUT HOLD ON THERE, BUCKO!  The editor-in-chief of said website e-zine was none other than the president of...  MayFlower Software.  So, not only do your awards go to your own products, but your journalistic integrity sucks.  Based on that episode last year, I'd never recommend Spam Sentinel.  Nor did I have any inclination on wanting to write for their publication when they had a call for authors.  No freaking way I want to associate my name with that type of "reporting".

But it gets better...

I didn't get a copy, but a number of IBM Business Partners reported receiving an email in the last couple of days from InsideDomino, once again awarding Editor Choice status for the best products of Lotusphere, and once again, guess who won?  You got it!  Spam Sentinel.  The link that was posted about the award has mysteriously ceased to work now....  Hmmm...

If there's anyone from MayFlower Software that stumbles over this blog entry, feel free to post a response and enlighten me as to the truth if it differs from what is listed above.  If we're missing part (or all) of the story, I'd like to give you a chance to explain.  But as it sits right now, InsideDomino, Spam Sentinel, and MayFlower Software are firmly entrenched in my personal Hall Of Shame.

And I worked for Enron Broadband for over three years, so I *know* about halls of shame...

02/26/2004

What is the "Enforce a Consistent ACL Across All Replicas..." Option?

Category Software Development

And some good background material...  from the KnowledgeBase...

What is the "Enforce a Consistent ACL Across All Replicas..." Option?

Document Number:  1084294

Problem
A customer wants to know how the advanced Access Control List (ACL) option of "Enforce a Consistent Access Control List Across All Replicas of This Database" affects local replica copies of databases.

Content
This advanced ACL option affects a local replica copy in a couple of ways, depending upon which replication options are selected, and which ID a user used when creating the replica.

For example, if a user that has Author access to a database creates a local replica on their workstation, their access credentials will be "cached" in the replica copy.  These credentials include all of the user's groups, roles or privileges, even if nested.  When the user accesses the local replica, the user will be able to retrieve their credentials from the local replica and then open the database using that set of credentials which simulates the access the user had when accessing the server's copy of the same database.  If, however, the user switches to an ID different from the one used to create the local replica, the database grants access a bit differently.

When a user ID (other than the one that created the replica copy) is used to access the local replica of the database, the user must be explicitly listed in the ACL, or the default ACL must be set to Reader or above.  Relying on group membership to gain access does not work unless you are accessing a server based database, in which case you have direct access to the Public Address Book where the group is defined.

A user may try to promote their access level on the local replica by creating a group in their Personal Address Book with the same name of a group defined in the ACL with a high level of access, such as Manager.  This attempt to bypass the ACL security does not work.  The "cached" credentials, explicit ACL listings, or the Default access settings control local replica access when the "Enforce a Consistent Access Control List... " option is enabled.  Furthermore, this advanced ACL option prevents users from bypassing ACL security by creating a local replica and disabling the option to "Copy Access Control List" (enabled by default).  Under these conditions, the advanced option does not allow a replica to fully initialize, preventing any access to the local replica.

Supporting Information:

Enforcing a consistent ACL option is not a security feature. Data in the local replica is not secure unless the workstation or laptop is physically secure or the database is encrypted using the local security feature. A motivated developer could create an add-in program to bypass an access control list that is enforced locally.

02/26/2004

Personal Agents Disabled under R5 Run on Notes/Domino 6.x

Category Software Development



Another ND6 migration gotcha...  This is more (shudder...) *admin* related, but since the developer probably created the personal agent to begin with, it's probably OK to post under "software development"...  :-)  From the KnowledgeBase...


Personal Agents Disabled under R5 Run on Notes/Domino 6.x

Document Number:  1136822

Problem

On the Domino R5 Server users can create personal agents in Notes databases.  However, it is possible for the Administrator to restrict the ability of these personal agents to run using the Agent Restrictions section of the Server document.  When the Server is upgraded to Domino 6.x, these personal agents are no longer restricted, and run unexpectedly.


Content

This behavior occurs because the Server document security settings work differently in Notes/Domino 6.x than in Notes/Domino 5.x.  In Notes/Domino 6.x if a user is granted rights in either of the Server document fields, "Run Unrestricted Methods and Operations" or "Run Restricted LotusScript/Java Agents", then the user is automatically granted permission to run personal Simple Action and Formula agents.


This issue was reported to Lotus Software Quality Engineering, and was fixed in the following Notes/Domino releases:    6.0.1 CF3, 6.0.2 CF2, 6.0.3 and 6.5.  


If the Administrator adds the parameter, Enforce_Personal_Agents=1 to the Domino Server's Notes.ini file, it reverts to the R5 behavior where the user must be granted permission within the Server document's "Run Simple and Formula agents" field.  If the INI parameter is instead set to 0 or the parameter is not included in the INI then the user will experience the Notes 6.x behavior.


Excerpt from the Lotus Notes and Domino Release 6.0.1 CF3, 6.0.2 CF2 and 6.0.3 MR fix lists (available at http://www.lotus.com/ldd):


Agents:

  • SPR# SSHE5FNNBU - Added the new Notes.ini variable, ENFORCE_PERSONAL_AGENTS=1, which forces a user to be listed in the Personal Agents field in the Server document in order to be able to run personal agents.

Supporting Info:

The Server document Security entry "Run Simple and Formula Agents" in Notes 6.x equates to the R5 entry "Run Personal Agents"; both refer to the same field, "PrivateList".


When making use of the new INI parameter if the user's name is not listed in "Run Simple and Formula Agents" field, then the following warning displays when the user attempts to enable such an agent:


"You do not have execution access privileges for this agent on '<server name>'; agent will not run"

02/26/2004

The Number of Times a Formula Agent Can Call Itself Using @Command([ToolsRunMacro]) Is Limited to 15 in Notes 6.x

Category Software Development

This glitch could cause you problems in an ND6 migration.  I used this one a long, long time ago in R4...  From the KnowledgeBase...

The Number of Times a Formula Agent Can Call Itself Using @Command([ToolsRunMacro]) Is Limited to 15 in Notes 6.x

Document Number:  1161627

Problem
In Notes 6.x the number of times that an agent can call itself using the @Command ToolsRunMacro or RunAgent is limited to 15 times.  The agent stops without any error or warning, and the agent log does not reflect any error condition.  This causes applications which worked under Notes 5.x to fail.  In Notes 5.x such an agent would keep looping for 190+ iterations until the Notes Client crashed.

For example, in Notes 6.x the following agent "Loop" will display the Prompt dialog 16 times.  The first time it displays is as a result of the agent being manually triggered, the additional 15 times are relative to the agent calling itself:

@Prompt([Ok];"Test";"Test");
@Command([ToolsRunMacro];"Loop")

Content
This issue has been reported to Lotus Software Quality Engineering.

Workaround:
Additional Formula functions have been introduced in Notes 6.0 and above which allow looping functionality to be used in a Formula:  @For, @DoWhile, and @While.

Rather than having the agent call itself, use a second agent to call it.  The second agent should make the call to the first agent within a @For, @DoWhile, or @While function call.

02/25/2004

Not a good evening...

Category Everything Else

This was not a good evening, and not what I had planned for it...

First off, Cam calls me on my way home and informs me that the home desktop computer won't boot up past a blue screen of death.  Some KMODE error in ntoskernal or something.  Since that's the main machine that provides our internet connectivity for the house, it's imperative that I get it running.  So I ended up reinstalling W2K and the modem stuff.  The graphic card software and printer software still needs to be reinstalled, but at least I'm back out on the net.

Then...

Ian took a nap after school, which is not a good idea as it seems to cause havoc with his blood sugars.  I finally got him up around 5 pm so that he could start getting ready for hockey.  He was acting strange, so we had him test.  Turns out he was at 43 (normal is 80 to 120), and that's dangerously close to having a seizure.  He was upstairs aimlessly sorting through his hockey bag, and I was trying to get him to drink some orange juice.  He kept calling me mom and saying he was fine (when he really wasn't).  We had to physically get him down the stairs (Cam pushing and me pulling), into the kitchen, and almost had to force his mouth open to drink.  We were finally able to get through to him and not have to resort to the glucogon shot.  He's OK and played in tonight's game, but it was scary to see him so out of it and to know you have so little control over the situation.  And what if we hadn't been there?

And they lost the hockey game 5 to 3...

I feel like someone beat me with a baseball bat (or a hockey stick if you want to keep the metaphors working properly).  I just want to crawl in a hole and sleep for about 12 hours....

02/24/2004

Book Review - The Fifth Angel by Tim Green

Category Book Reviews

I just finished Tim Green's The Fifth Angel, and it's a very good read that tears at you.  A man's daughter is kidnapped, held captive, and is physically and sexually abused.  She is found, but is committed to a mental institution.  After his life is nearly destroyed, he determines that no child molester should be allowed to walk free.  Using his job that has him on the road quite a bit, he starts executing known molesters.  He doesn't find the peace he seeks, but he's driven to keep doling out his form of justice.

Meanwhile, a female FBI agent and a pompous police detective are paired up to hunt down the killer.  They have a bead on him, but no one is pushing hard to bring him in because of the targeted victims.  She believes her pursuit of the killer to be right until her own children are abducted and she has to confront the kidnapper with the help of the vigilante.  

This is one of those novels where the "good" guy is the criminal and the "bad" guy is the victim, and you have to decide whether retribution or justice is deserved.  You feel for the vigilante, as you'd probably experience the same frustration if it was your child.  Conversely, if everyone decides to take justice in their own hands, anarchy would reign supreme.  While the story line is well done, it will cause you to question your feelings.

02/24/2004

Amazon review ranking... still moving on up!

Category Everything Else

5480 now...

02/24/2004

Liking the new job...

Category Everything Else

A quick update on the new job...  I've been there for a couple of days now, and it's starting to come together.  We had a few glitches with my Notes ID, as I worked there for 11 years, then left, then came back as a contractor, then switched over to a regular employee.  I think we have it all ironed out now.  I'm starting to meet some of my customers that I'll support, and soon I'll be diving into Joe's applications to "fix" them...  :-)

The people I work with are nice, our manager has a perfect management type for my style (I keep him informed, and he lets me manage my work), and I'll have no lack of projects to work on.  Rather nice to know where you'll be each day...  :-)

02/23/2004

Is it Possible To Create an Input Validation of a Rich Text Field?

Category Software Development

Something you'd probably figure out if you thought about it long enough, but this might save you a few seconds...  From the KnowledgeBase...

Is it Possible To Create an Input Validation of a Rich Text Field?

Document Number:  1103383

Problem
A customer would like to be able to prevent users from leaving a Rich Text field (RTF) without entering text.  The Rich Text field does not have an Input Validation formula associated with it.  How can a user be forced to enter text in the Rich Text field before saving the document?

Content
For the following it is presumed that the Rich Text field is called "rtfield".

1.        Below the Rich Text field on the form create a Text field.  This allows you to use its Input Validation formula to point to the Rich Text field.  If needed the Text field could be hidden from the user and used explicitly for design purposes.

2.        In the Input Validation formula of the Text field enter the following formula:

@If(@Abstract([TextOnly];10;"";"rtfield")="";@Failure(" you must enter some text ");@Success)


Note:    When referencing a Rich Text field you will not be able to check for an empty field value by using:

a)  @If(rtfield = ""; ....)
b)  @If(@Contains(rtfield; ""); ....)

In addition, the [textonly] parameter does not consider file attachments as text.   Thus, the user will still be forced to enter text in addition to the file attachment when the [textonly] option is used.

Supporting Information:

This process can also be done with LotusScript in the Exiting event of the Rich Text field.  Refer to the technote, "How to Lock Documents via LotusScript to Prevent Simultaneous Access" (#155070) for a good example.

02/23/2004

The Indexer and Its Functionality

Category Software Development

Good synopsis article from the KnowledgeBase...

The Indexer and Its Functionality

Document Number:  7003075

The Indexer and its Functionality

Introduction

Within a production environment, it is extremely important to keep all information within a database current.  Notes accomplishes this task through a function called the Indexer.  This technical paper explains what the Indexer is and how it functions within Notes.

What is the Indexer?

02/22/2004

Book Review - Developing J2EE Applications With IBM WebSphere Studio by Howard Kushner

Category Book Reviews

If you're ready to try to pass IBM test #287 (IBM Certified Enterprise Developer), you should get a copy of Developing J2EE Applications With IBM WebSphere Studio by Howard Kushner (MC Press).  It's a study guide for the test, and it gives you good coverage of the subject matter that is covered.  You can read the entire review at the Portland Domino/Notes User Group or out on Amazon.

02/22/2004

Book Review - Last Man Standing by David Baldacci

Category Book Reviews

To finish up my troika of weekend reading, I completed the book Last Man Standing by David Baldacci.  This was recommended to me by Chris Miller, and he was right...  I liked it.

Web London is a member of the FBI's Hostage Rescue Team.  During an operation to take out a drug house, something happens to cause London to freeze at the point where they were supposed to rush the location.  The operation turns out to be a setup, and the entire team is killed except for him.  He has to deal with the guilt over being the "last man standing", along with trying to figure out what happened that caused him to freeze.  The deeper he digs, the more he finds that points towards a cover-up or a leak within the bureau.

Pretty good pacing for a book that's over 500 pages.  Good character development, and a number of plot twists that you don't see coming.  Definitely a time commitment due to the size, but a good psychological crime thriller.

02/22/2004

Book Review - Highlights To Heaven by Nancy J. Cohen

Category Book Reviews

If you want a mind-candy read somewhat reminiscent of Evanovich's Stephanie Plum series, you'll enjoy Highlights To Heaven by Nancy J. Cohen.  This is part of her "Bad Hair Day Mystery" series.  The main character, Marla Shore, is a south Florida Jewish hair stylist with her own salon, and she finds herself in the middle of crime investigations, much to the dismay of her love interest and police detective Dalton Vail.

In the latest installment, her strange neighbor (nicknamed "Goat") has gone missing.  When she goes over to investigate with Vail, they find a dead body, a stash of cash, and no Goat.  Shore recognizes the highlighting style on the dead guy, and asks some questions of the stylist who did the work.  Things start happening quickly at that point, and it seems to tie back to her styling school days when a group of her friends played a joke on another stylist who lost his hair in the process.  All the friends are being killed off, and Shore narrowly escapes death a couple of time.  A few unexpected plot twists brings the story to the typical life or death climax at the end.  And as a subplot throughout the story, Shore's relationship with Vail advances forward to the next major stage...  moving in.

This isn't deep thought-provoking material.  It's a light story with interesting characters, and it's the exact type of recreational read that I often look forward to.

02/22/2004

Book Review - Remember When by Nora Roberts/J. D. Robb

Category Blogging

On the way down to Tucson, I finished up Remember When by Nora Roberts "and" J. D. Robb.  For those of you who are unfamiliar with those names, they are one and the same person.  Nora Roberts writes romance novels, and also pens futuristic crime novels under the pen name of J. D. Robb.  I really like the Robb titles (the "In Death" series), so I decided to give this one a try.  I liked it a lot...

In part 1 of the story (written by Roberts), a woman is trying to forget her father's criminal past and has set up a nice existence running an antique shop in a small town.  But a partner of her father shows up at the shop, tries to deliver a message to her, and gets killed running out of the shop when a car hits him.  When an investigator shows up, she gets really confused as to why all this attention has come her way.  Turns out the investigator is trying to track down a multi-million dollar diamond heist, and she's suspected of being part of the scheme to hide the diamonds.  As with most crime novels, she's innocent but is the target of a killer who also thinks she knows where they are.  Her and the investigator team up to try and solve the case.  

Jump forward to part 2 (written by Robb) about 50 years in the future.  The granddaughter of the main characters in part 1 is a successful writer who has penned a blockbuster book about the original diamond heist.  People close to her start getting murdered, and it appears that it's related to some unresolved questions about the crime and a missing portion of the diamonds.  Eve Dallas and her husband Rourke are called in to sort out the murders and to protect the writer before she is murdered herself.

A unique approach to writing a book (writing as two different authors), and it worked for me.  Both stories can stand on their own, so it's almost as if you're getting two books for the price of one.  I've never read any Nora Roberts titles, and was pleasantly surprised that it wasn't as much a mushy romance as I expected.  The J. D. Robb portion was good as usual, with all the same players I've come to know and enjoy.  While I'm not going to run out and start reading Roberts romances, I'm more likely to at least read the flyleaf to see what the story line might be...

02/22/2004

Back from Tucson...

Category Everything Else

My whirlwind trip to Tucson Arizona is now over.  Some Random Musings...
  • I don't think I could live down there.  No grass, very little green (at least this time of year), and everything looks dirty (of course...  it's a desert!).  I'm not big into Mexican or Southwest culture, so it's not a big draw for me.  Having said that, I had a really good visit with my parents...
  • We crossed the border into Nogales, Mexico on Friday.  What a culture shift.  Getting into Mexico is a no-brainer.  Just go through the turnstyle, and you're there.  Coming back, there is a US Customs checkpoint that you show ID at, but it's still pretty low-key.  I have a tougher time getting into and out of Canada...
  • Nogales reminded me a lot of the port cities in the Carribbean that you hit on cruises.  Very geared towards tourism, and everyone wants you to come into their store and buy their stuff.  The Mexican version of vendors are much more agressive, and you have quite a gauntlet to run as you're walking in front of the storefronts and booths.
  • When they say "drugstore" in Mexico, they mean "drugstore".  Every block contained one or two "pharmacies" where you could buy just about any drug you wanted over the counter.  Amoxicillan, Prozac, Vigara, you name it.  Kids in their early twenties are working the counters adorned in white smocks to make them look "medical".  I wouldn't trust the quality of the drugs myself, but you can see why people would make border runs to get their prescriptions "filled".
  • Vendors have their own Mexican version of "Engrish".  One vendor was was advertising Cuban cigars with "No Bull Shit".  That's good.  And a pharmacy was touting that they were "sheaper than McDonalds".  How many McVicodan would you like today?  And would you like fries with that?
  • And finally, I have to give props to United.  I had a Priceline ticket that took me from Portland to San Francisco to Los Angeles to Tucson.  Not very nice, and the arrival time in Tuscon was like 12:30 in the morning.  When I checked in, the ticket agent, without prompting, booked me standby direct to LA, and then I was able to get on the earlier Tucson flight and get there around 9 pm.  On the way back, the agent once again booked me early to LA, and gave me what I needed to catch a standby direct to Portland from there.  And that one worked out too.  So instead of getting back to Portland at 11:30 pm, I made it home by 8:30 with no intermediate stop in SF.  Very nice.

02/19/2004

With the help of fluoxetine, my dysthymia is fully under control...

Category Everything Else

As I shared nearly a year ago, I started taking fluoxetine (generic form of Prozac) to battle a condition called dysthymia.  It's chronic, low-level depression.  I finally got to a point where I talked to my doctor, and he explained what I was suffering from.  I just thought everyone felt that way.  He put me on a low dose prescription of fluoxetine, and we waited for it to kick in.  About seven weeks later, I noticed that I was starting to enjoy life again.  I had the "ah-ha" moment when the kids poured water on my laptop and I didn't go off the deep end.  And over the last three weeks, I've have a series of events that confirm that this was absolutely the right path for me.

For one, I'm changing jobs with absolutely no fear or anxiety.  In the past, I've been a basket case before starting a new position (or even a new project with a client as a consultant).  Can I handle it?  Did I make the right choice?  And so on.  That's gone now.  Thankfully...

Next, the speaking gig at Lotusphere.  A few years ago, even the mere thought of that would keep me up at night.  Now, I did the speaking and actually enjoyed it.  Instead of being full of fear and self-doubt, I was experiencing anticipation for it to start.  Major change...

And the car yesterday...  A year ago, that would have thrown me for a loop.  While I'd prefer that it hadn't have happened, I just can't seem to work up any major anger or indignation over it.  Had they messed up our PT Cruiser, maybe...  :-)

The last time I saw my doctor, he asked how it was going, and I told him how much of a difference it made.  He cautioned me to not stop taking the meds because I thought I was "cured".  I told him he'd have to pry them from my cold, dead fingers before I gave it up.  Perhaps sometime in the future I'll consider whether or not to come off the fluoxetine.  And at some point, I'll probably experience the "Prozac poopout" where the regular dosage becomes ineffective after a period of time.  But for now, this has truly been a miracle drug that has helped me to get back on the fast track of life and start living again.

So...  To any of you (especially men) who are struggling with this, talk to your doctor.  It's not a sign of weakness.  There's a much better life out there.

02/19/2004

Thursday morning Random Musings...

Category Everything Else

Since I am now unemployed (for the next four days), I'm getting a slow start to the blogging day...  Slept in until 8 am!  Whoo-hoo!

So, I have a few random thoughts floating around my head, so we'll do a special edition of "Random Musings"...
  • The car that got broken into yesterday is getting repaired.  The total cost probably won't exceed our deductible, so it's all out of pocket.  Oh, well...  
  • The kids had a hockey game last night, and they won!  Cam played outstanding in goal, and the team actually had some offense.  It was tighter at the end than it should have been, as the other team scored three goals in the third to get back to 5-4 with 45 seconds left.  But the team held on and scored a final goal to make it 6-4.  And Cam actually made the East all-star team as one of the three goalies selected.  This from my kid who never played team sports growing up and then decided to play the toughest position in one of the most demanding sports out there.  And if you had to vote on most improved player of the year, Cam would be the winner hands down.
  • I leave for Tucson Arizona in a few hours to go visit my dad and stepmom for a couple of days.  New laptop and internet connection that doesn't quite work right.  Guess who is tech support?  :-)
  • Actually, they live in Green Valley Arizona.  According to a web page I found, the city has about 28000 people with a median age of 72.  By showing up, I'm going to drop that number by about 3 years...
  • And finally, I see that Jeff Skilling of Enron has *finally* been indicted for his involvement in the fall of the company.  Warms the cockles of my little heart.  Him and Andy Fastow were, in my opinion, the drivers behind all the sliminess that happened.  It was nice to finally see him do the perp walk with the silver bracelets.

02/18/2004

OK... the latest Viagra commercial is just *wrong*...

Category Everything Else

The latest Viagra commercial has a bunch of guys cavorting (there's no other word for it) in slow motion to Queen's We Are The Champions.  The mailman is flinging letters in the air, guys are hugging each other in the street, an old man is shuffling down the porch with a smile on his face to join the party...

We Are The Champions...  because I got a stiffie???

This one is just *wrong*...

02/18/2004

Well, that sucks! Our car was broken into last night...

Category Everything Else

I went out to get into the car for my last day at Marquam Group, and lo and behold...  there's a pile of safety glass in the passenger seat.  The stereo that Ian had installed a few months ago is gone, and the glove compartment is open (but we don't keep anything of value in there).  I moved the car into the driveway, covered the missing window to prevent some of the rain from getting in, and called the police to file a report.  

Actually, in all the years I've had a car, this is the first time I've ever had to deal with a break-in.  So, sad to say, but I'm probably lucky.  I'm also glad that it was the Saturn and not our PT Cruiser.  *THAT* would have irritated me a lot!

I hope that's as exciting as my day gets...  :-)

02/17/2004

Is it Possible to Refresh Documents Using LotusScript ?

Category Software Development

Interesting little tidbit from the Knowledgebase...

Is it Possible to Refresh Documents Using LotusScript ?

Document Number:  1092630

Problem
Is there a LotusScript function equivalent to the following @Formula functions:

@Command[ToolsRefreshAllDocs]
@Command[ToolsRefreshSelectedDocs])

The ComputeWithForm method (of the NotesDocument class) does not recalculate fields.

Content
In most cases, the ComputeWithForm method (of the NotesDocument class) can be used to refresh documents.  This method is actually designed to trigger a field's Default Value, Input Translation and Input Validation formulas, but it also does trigger Computed formulas as well.

The ComputeWithForm method is not suitable for refreshing forms which have a Computed field which refers to itself.  This is because the ComputeWithForm method recalculates the document twice, which would cause undesirable results in such a field formula.

For example, consider a form with a Computed Numeric field called Count, and the formula for this field is "Count+1".  If the Count field had a value of 1 before the ComputeWithForm method was called, then afterwards the Count field would have a resulting value of 3.

For cases where a field's formula references itself, there are two ways to workaround this limitation:

  • Refresh the document using either @Command[ToolsRefreshSelectedDocs] or @Command[ToolsRefreshAllDocs].
  • Perform the formula calculation for the field in the LotusScript agent itself.

For example, to increment a Numeric field named Count:

doc.count=doc.count(0)+1
Call doc.save(True, True)

02/17/2004

End of Service (EOS) of Lotus Notes and Domino 5.x

Category Software Development

Just in case you're wondering when you should finish your conversion to 6.5...  From the KnowledgeBase...

End of Service (EOS) of Lotus Notes and Domino 5.x

Document Number:  1117092

Problem
Summary of announcement:

In accordance with the standard IBM Software Group release management process and our commitment to continuous improvement of our  product line, IBM Lotus software is announcing that Notes and Domino version 5.x (R5) will be retired from service in 2005.  With Notes and Domino 6 in market for over two and one half years at that point, customers will have taken advantage of the easy upgrade and many improvements of Release 6 and subsequent upgrades.

Key dates to be aware of:

  • Q1 2004  --  5.0.13 Ship
    This is slated to be the last release of the R5 maintenance stream
  • April 2004  --  End of Life (EOL) for the R5 release
    Withdraw  of R5 from market, meaning that R5 will no longer be available for sale.  Customers under existing maintenance contracts will continue to be entitled to maintenance releases and hot fixes using normal channels.
  • April 2005  --  End of Service (EOS) for  the R5 release
    End of phone Technical Support * and Maintenance Engineering (code fixes) for Domino and Notes 5.x.

* Customers can submit a request to purchase an IBM Service Extension to extend phone support beyond this date if desired. For more information, contact your sales representative or your Lotus Service Manager if applicable.

02/16/2004

How Do the Numbers Returned by @Version Correspond to Notes Versions?

Category Software Development


Now that we're up to 6.5.1, does anyone know what @Version returns for that one?


How Do the Numbers Returned by @Version Correspond to Notes Versions?

Document Number:  1099240

Problem

The @Version function returns a number that corresponds to the Notes version (for the client or server on which the function is executed).  What number is returned by @Version for each Notes version?


Content

The following table maps the numbers returned by @Version to each Notes version.  

Number Returned by @Version
Corresponding Notes Version
114
3.x
136
4.0x
138
4.1x
145
4.5.x
147
4.6.x
166
5.x
190
6.0, 6.01
191
6.0.2
194
6.0.3 & 6.5



02/16/2004

Can a LotusScript Function be Designed to Return an Array?

Category Software Development


I don't know if I really wanted to post this due to content, or I just loved the fact that a KnowledgeBase item actually used the word "funky"...


Can a LotusScript Function be Designed to Return an Array?

Document Number:  1090574

Problem

Can a LotusScript Function be Designed to Return an Array?


Content

LotusScript functions are designed to return a scalar value, a Variant or an object reference.  An array can be returned using a Variant.   This can be done by either indicating "As Variant" or leaving it blank as variant is the default return type.


For example, either of the below will cause the function to return a Variant value:


Function Funky(a As String, b As String) As Variant

Function Funky(a As String, b As String)


Code example:


Given the function supplied below, the value of the result variable will be an array: result(0)="parta", result(1)="partb".


Sub Initialize

       result=Funky("parta", "partb")

End Sub


Function Funky(a As String, b As String) As Variant

       Dim cc(0 To 1) As String

       cc(0)=a

       cc(1)=b

       funky=cc

End Function

02/16/2004

Is There a Notes.ini Parameter To Set a Specific Database To Open on Launch of Notes?

Category Software Development



A nice Notes.ini setting to keep in mind if necessary...  From the KnowledgeBase...


Is There a Notes.ini Parameter To Set a Specific Database To Open on Launch of Notes?

Document Number:  1091513

Problem

Is there a parameter in the Notes.ini that will specify a database to open when Launching Notes?


It is possible to add information to the Notes Icon shortcut information to open a specific database, but can you set a parameter in the Notes.ini to do the same?


Content

YES.  The parameter is StartupDB = , and the setting is the Replica ID of the database you wish to open up when launching Notes.  The database specified must be present on the Notes Workspace.


For example:  StartupDB = 852573B2:00627A08


Supporting Information:


Additionally under Notes 4.x the following menu is available: File, Tools, User Preferences, Startup Database (button) and selecting the database from that list will create this ini setting for you.  You will still be required to enter your password, if necessary, before the database will open.  Note that this option does not exist in the user interface of Notes R5 Client.

02/16/2004

The Rebel Alliance...

Category Linux

Here in Portland, Oregon, we have a rather left-leaning weekly paper called Willamette Week.  While I don't often find myself in agreement with many of their stances or stories, they did have an interesting article last month titled The Rebel Alliance.  It covers the story of Linux, the threat that it presents to Microsoft, and how Portland is becoming "ground zero" for the Linux revolution...

That would explain how come O'Reilly usually holds their open source convention here each year...

02/16/2004

Lessons from Oregon's Open Source bill

Category Everything Else

Lessons from Oregon's Open Source bill

Interesting reading on how you can buy the influence you need to prevent or push your agenda...  And it must have worked in this case, as I didn't have a clue that a bill like this was even being considered...

02/16/2004

What Are Directory and Database Links? How Are They Used?

Category Software Development

This is one of those things I know "of" but never have used too much...  So I'll stick it out here so I can find it next time I need it.  From the KnowledgeBase...

What Are Directory and Database Links? How Are They Used?

Document Number:  1089707

Problem
What are directory and database links, and how should they be used in a Domino environment?

Content
Directory and database links are simple text files with a .DIR or .NSF file extension located in the Notes data directory.  You can create these files using a simple text editor or through the Server Administration panel (see the Domino Administrator's Guide for details).  A link file contains a full path that points to another sub-directory or a specific database.  When the Notes client browses for available directories and databases, these link files appear as regular directories or databases.

Selecting a directory link file displays the contents of the directory specified in the file, and selecting a database link file opens the database specified in the file (assuming you have proper access via the Access Control List - ACL ).  Each link file can specify only one directory or database; however, the link file can also include a list of groups or users that have access to the link.  If a link file only contains the redirection link, then anyone can access the link.  Once one person or group is added, however, anyone needing to use the link must be specifically included in the file.

NOTE:        While you can control user access with these files, this added functionality is NOT a substitute for proper ACL implementation.

The intended usage of link files is for organization purposes.  For example, if you add an additional hard disk drive to your Domino server, you can move a single database or entire sub-directory to this new drive and still have it appear in the Notes data directory.  If, however, you relocate a production database or sub-directory with link files, workspace icons that point to this database or database(s) within a relocated sub-directory no longer work.  Even with link files, you must manage database relocation as outlined in the Domino Database Manager's Guide.

If you plan to implement directory or database link files, keep the following restrictions in mind:

  • Never make a directory link point to the root of any drive.
  • Point to local drives only.
  • Link files can contain only one directory or database.
  • Do not use link files to redirect a mail-enabled database (for example, mail-in databases and mail files).
  • Use the security feature of link files to augment security, and not as a replacement for proper ACL implementation.
  • Do not nest directory and database link files.
  • An agent that is scheduled in the original database will be queued separately for each link, and thus, run more than once.  Refer to the document titled "Database Links in 4.6x Cause Scheduled Agents to Be Queued Separately for Each Link" (#179418 ) for more information.

For more information about setting up and maintaining directory and database link files, refer to the Domino Administrator's Guide

02/15/2004

LotusScript Debugger Does Not Display During Script Execution

Category Software Development

One of those "gotchas" that I occasionally run into...  From the KnowledgeBase...

LotusScript Debugger Does Not Display During Script Execution

Document Number:  1086854

Problem
In Notes, you open a new or existing document and then select File, Tools, Debug LotusScript to enable the script Debugger.  When you subsequently perform an action that runs a script (such as clicking a button that includes LotusScript in its click event), the script runs without displaying the Debugger.

Content
In order to have the LotusScript Debugger displayed during script execution, the Debugger must be enabled prior to opening the relevant document.  (Additional information on the Debugger is provided in the Supporting Information section below.)

In addition, if an object has script in more than one of its events, by default, only the first event is displayed in the Debugger.  For example, if code exists in both the QueryOpen and QuerySave events of a form, when a document is created with the form, only the script in the first event (QueryOpen in this case) is debugged.   This issue also occurs when an event is triggered recursively.

Workaround:

You can debug the subsequent script(s) using one of the methods below.

Method #1:

1.        As soon as the Debugger displays for the first event, switch to the event(s) you wish to debug.
2.        Place a break point anywhere in the event.  If you wish to debug the entire script, place the break point at the first executable line of code.  (Break points cannot be placed on Dim statements or remarks.)
3.        After the Debugger exits the first event, the Debugger will stop at the next break point it encounters (such as the break point you created in step #2).  You will be able to continue debugging from this point.

Method #2.

Use the LotusScript Stop function to cause the Debugger to stop in desired events.  The function must be added to the code at design time.  (If you do not have the ability to edit the agent's design, use Method #1 instead.)

Add the Stop function to the first line of the event, for example:

Sub Initialize
      Stop
      Dim Workspace as New NotesUIWorkspace
      ..

Supporting Information:

Details on the Debugger:

The menu commands for toggling the Debugger (File, Tools, Debug LotusScript) are always available so that you can turn the Debugger off (or on) before entering a scripted area.  

In some cases, you may wish to toggle the Debugger off and on with some frequency as you move between scripted areas (especially when only certain areas require debugging).  If, for example, you wish to create a second document from a form you have just debugged, you may want to disable the debugger before creating the second document.

02/15/2004

Which Versions of Linux are Supported to Run the Domino Server?

Category Software Development

With all the distributions of Linux out there, it's hard to keep track of what versions of Linux support which versions of Domino.  Here's the latest, from the KnowledgeBase...

Which Versions of Linux are Supported to Run the Domino Server?

Document Number:  1097184

Problem
Which versions of Linux are supported to run the Domino server?

Content
Supported Linux platforms for the Domino Server:




Domino
SuSE
6.3; 6.4; 7.2
SuSE 7.2 (or higher 7.x) SuSE 8.0
SVR
SuSE Sles 8.0
SuSE
8.0
ENT
SuSE 8.1 RedHat 6.0; 6.1; 6.2 RedHat 7.1 (or higher 7.x) RedHat  8.0 RedHat
Adv SVR 2.1 (AS)
UnitedLinux 1.0 & "Powered by UL 1.0"
5.0.9 yes no no no no no yes yes no no no
5.0.10 yes yes no no no no yes yes no no no
5.0.11 yes yes no no no no yes yes no no no
5.0.12 yes yes no no no no yes yes no no no
6.0 no no yes yes no no no Redhat 7.2, 7.3  Uni-pro. until have 2.4.18 kernel
no no no
6.0.1 no no yes yes no no no Redhat 7.2, 7.3  Uni-pro.until have 2.4.18 kernel no Uni-pro.
mode only
yes
6.5 no no yes yes yes yes no Redhat 7.2, 7.3 Uni-pro.until have 2.4.18 kernel not announced Uni-pro.
mode only
yes*

Note  Support information for all operating systems, including Linux, are included in the Domino server's readme.nsf.  The readme.nsf file is installed with the server. Choose your version of Domino, choose View online, select "Things you need to know", expand "Server", then expand "Platforms and Requirements."

Supporting Information:

The following is an extract of the section for supported Linux platforms:

Beginning in R5.0.2, the R5 Domino server for Linux is supported on the Red Hat 6.0 distribution. Later versions of Red Hat 6.x are also considered supported. Beginning with R5.0.9, Red Hat 7.1 is supported.

Beginning in R5.0.3, the R5 Domino Server for Linux is supported on the following:

  • Caldera 2.2 (and later 2.x versions)
  • SuSE 6.3 (and later 6.x versions)
  • TurboLinux 6.0 (and later 6.x versions)

See the Release Note "Linux patch requirements" regarding distribution needs and for known details about appropriate supporting code libraries.

All Domino for Linux software is for use on Intel x86 chip sets, unless otherwise noted.

02/13/2004

Book Review - Degunking Windows by Joli Ballew and Jeff Duntemann

Category Book Reviews

I'm in the process of working through the book Degunking Windows by Joli Ballew and Jeff Duntemann (Paraglyph Press).  To start with, *any* book that has the word "degunking" in the title can't be all bad.  But seriously, this is a really good book.  It walks you through a twelve step program to clean and organize your Windows OS so that it runs like it did when you first took it out of the box.  I've already recovered nearly a gigabyte of disk space by following the suggestions, and I'm not yet done.  I recommend this book highly.

For the entire review, either go to the Portland Domino/Notes user group site or out to Amazon.

02/13/2004

Google Hacking Takes Off...

Category Everything Else


I ran into this piece via NewsScan a couple of days ago...  I hadn't thought about it, but Google would give you a lot of power for this kind of stuff.  Had anyone ever tried something like this?


------------------------------


Google is increasingly becoming a hacking tool for techno-hobbyists who seek out sensitive documents using Google's powerful search capabilities. "There's a whole subculture that's doing this," says Chris O'Ferrell, chief technology officer of security consultancy Netsec, who notes that Google is the search tool of choice for these folks because of its effectiveness. "The reason Google's good is that they give you more information and they give you more tools to search." Companies, organizations and government agencies could block Google from accessing documents by setting up a digital gatekeeper in the form of a robots.txt file that dictates which pages are accessible to Google, but many don't bother, leaving such sensitive information as medical records, bank account numbers, students' grades and the docking locations of 804 U.S. Navy ships, submarines and destroyers open to viewing. Search strings with "xls," or "cc" or "ssn" often bring up spread sheets, credit card and social security numbers linked to a customer list. "It's the easiest point-and-click hacking -- it's fun, it's new, quirky and yet you can achieve powerful results," says security consultant Edward Skoudis. "This concept of using a search engine for hacking has been around for awhile, but it's taken off in the last few months." Companies are urged to be more careful about what they put on the Web in the first place, because thanks to caching technology, "Once it is placed online, it's very hard to get the digital horse back in the electronic barn," says Marc Rotenberg, executive director of the Electronic Privacy Information Center. (Washington Post 9 Feb 2004)
http://www.washingtonpost.com/wp-dyn/articles/A24053-2004...

02/13/2004

View's Column Formula Does not Reflect Expected Value

Category Software Development

When creating views, I often do a cut and paste of columns in order to get the proper number of entries.  But occasionally, the formula I put in for the column refuses to work.  Now I know why...  From the KnowledgeBase...

View's Column Formula Does not Reflect Expected Value

Document Number:  1086357

Problem
A view's column formula does not reflect the expected value.  Upon review, you determine that the formula is without fault.  If you re-create the column within a new column, or new view, it works as expected.

Content
If a column formula is not returning the expected value, check the Programmatic Use property in the Column properties.  This property defaults to a unique value, but if it is manually changed to a value which coincides with a field name then the column formula will evaluate to that field (and ignore the column formula).  To reset the Programmatic Use entry simply delete the current entry, and Notes will automatically repopulate it with a unique value.  

Supporting Information:
The Programmatic Use property is located on the Propeller tab of the Column Properties.

02/13/2004

What Are The Length and Character Restrictions For a Notes Password

Category Software Development

In light of a certain company's security issues, I thought this posting from the KnowledgeBase on Notes passwords was appropriate...

What Are The Length and Character Restrictions For a Notes Password

Document Number:  1105276

Problem

What characters, if any, are considered reserved or illegal, when creating a Notes password or Notes internet password, and what is the maximum length allowed? The Notes Internet password field is set on the "Other" tab of the Person document for each person.


Content

Any keyboard character can be included in a Notes Password. This includes both standard ASCII characters as well as extended ASCII characters (for example, accented letters).  The maximum number of characters you can include in a Notes password is 64. For more information on passwords please consult the Lotus Notes Online Help.

NOTE:  Administrator's can set password quality checking levels for Notes passwords beyond the default considerations listed above that will effect the level of complexity and length required for a Notes password. For more information on password quality checking, please consult technical document, "Set Password Dialog Box Indicates Password Length Requirement, But Longer Password Required" (Document #: 1085519)

NOTE:  Password length is a different criteria than password strength. For additional information on password strength, please consult the Domino Administrator's Guide.

A note about using extended ASCII characters:  

Each extended character is assigned an encoding, and can only be included in a Notes password if they are properly encoded when the password is created, or changed.  This can be done by using the associated keystroke sequence rather than a copy and paste from the Character Map.  An example is the registered symbol (®), which can be encoded with the keystroke sequence:  Alt - 0174. Also, be aware that other programs that must access your Notes password (synchronization software, for example) may not be able to accept extended characters.

02/11/2004

Book Review - The Fool's Run by John Camp

Category Book Reviews


I just finished
The Fool's Run by John Camp, better known now as John Sandford (author of the Prey series).  This was originally written back in 1989, and revolves around computer hacking.  You're probably thinking "a hacking story in 1989?  Quaint!".  Don't feel bad.  I thought the same.  But much to my surprise (and delight), it aged well...

The main character, Kidd, is a painter who is also a hacker for hire.  He's been known to pull some jobs that have kept him comfortable.  He's approached by a company who claims that their fighter jet plans were stolen by another competitor, and they want Kidd to scramble the competitor's records so that they can't gain a lead in the government bidding for the plane contract.  But after Kidd pretty much destroys the company, he finds out the story is not quite what he was led to believe.  And now, someone's out to kill him to tie up that loose end.


While much of the hacking involves mainframes and computer terminals over dialup lines, it isn't entirely juvenile.  The hacks are typical for that time frame, and the story surrounding the action is well done.  Maybe its because I remember those days of mainframe and dialup terminals, but I really liked this book.  My kids probably wouldn't relate, but old techno-geeks like me will understand and smile...

02/11/2004

Memory Leak in LotusScript/Java View Collections Results in Server Crash

Category Software Development

This one hasn't bitten me yet, but it has the potential...  just came out today from the KnowledgeBase...

Memory Leak in LotusScript/Java View Collections Results in Server Crash

Document Number:  1140402

Problem

There is a small memory leak in LotusScript and Java view collections that results in Domino HTTP/AMgr "C++ run time" abnormal termination.


Content

In Domino Release 5.x or Notes Domino 6.x, a customer may see an abnormal termination of HTTP or Agent Manager that results in "C++ Run Time Error". A RIP or NSD is not produced.

Diagnostics collected indicate that the crash occurs while executing an agent either scheduled, or via the web. When using MSVC or WinDBG to collect call stacks, one sees the following call stack, or one similar to it - note the function LSBEnew() is where the exception occurs.

LSBEnew(unsigned long 552) line 396
operator new(unsigned int 552) line 299 + 9 bytes
ANViewEntry::ANGetPropObject(unsigned short 1991) line 602 + 10 bytes
ANViewEntry::ANGetProp(LSADTINSTDESC * 0x086c24fc, LSADTMSGPROP * 0x086c2568) line 645 + 16 bytes
ANCLASSCONTROL(LSsApiInstance * 0x0cab36b8, LSIADTMSG LSI_ADTMSG_PROP_GET, LSADTINSTDESC * 0x086c24fc, void * 0x086c2568) line 1275
_tag_NotesADTControl::ClassControl(_tag_NotesADTControl * const 0x140efe0c, LSsApiInstance * 0x0cab36b8, LSIADTMSG LSI_ADTMSG_PROP_GET, LSADTINSTDESC * 0x086c24fc, void * 0x086c2568) line 56
LSsInstance::AdtCallBack(LSsInstance * const 0x0cab36b8, short (LSsInstance *, LSIADTMSG, LSADTINSTDESC *, void *)* 0x08343a00 ANCLASSCONTROL(LSsApiInstance *, LSIADTMSG, LSADTINSTDESC *, void *), LSIADTMSG LSI_ADTMSG_PROP_GET, LSADTINSTDESC * 0x0a656664, void * 0x086c2568, tagLSREGNAMETYPE LSI_REGNAME_LMBCS) line 1619 + 28 bytes
LScObjCli::GetPropertyData(LScObjCli * const 0x0a656628, unsigned long 1991, unsigned short 521, unsigned short 192, LSsModule * 0x0e2b5c08, LSsValue * 0x0dd24ce8, int 0) line 260 + 39 bytes
LScObjCli::GetProperty(LScObjCli * const 0x0a656628, LSsModule * 0x0e2b5c08, unsigned short 32852, LSsValue * 0x0dd24ce8, int 0) line 427
LSsThread::AdtGetPropVal(LSsThread * const 0x0dd248b8, LSsModule * 0x0e2b5c08, unsigned short 32852, LScObjCli * 0x0a656628, LSsValue * 0x0dd24ce8, int 0) line 295
LSsThread::NRun(LSsThread * const 0x0dd248b8) line 567
LSsThread::Run(LSsThread * const 0x0dd248b8) line 1772 + 9 bytes
LSsThread::ExecuteProc(LSsThread * const 0x0dd248b8, LSsModule * 0x0e2b5c08, unsigned short 3860, unsigned short 0, LSsValue * 0x00000000, unsigned short 256) line 487
LSsInstance::Run(LSsInstance * const 0x0cab36b8, LSsModule * 0x0e2b5c08, unsigned short 3860, unsigned short 0, LSsValue * 0x00000000, unsigned short 0) line 531 + 45 bytes
LSIThread::Run(LSIThread * const 0x03c29e74, unsigned long 0, int 1) line 89 + 73 bytes
LSIThread::RunToCompletion(LSIThread * const 0x03c29e74, unsigned long 0, int 1) line 142 + 20 bytes
CLSIDocument::RunScript(CLSIDocument * const 0x03c280f4, void * 0x0000018e, short 1, char * 0x01a2f720 `string', short 0, unsigned long 0, execsecctx * 0x00000000) line 311 + 18 bytes
CRawActionLotusScript::Run(CRawActionLotusScript * const 0x03c20134, CDefActionCtx * 0x03c260f4, void * 0x00000246, unsigned long * 0x086c2e20) line 2174 + 70 bytes
CRawAction::Run(CRawAction * const 0x03c21a74, CDefActionCtx * 0x03c260f4, void * 0x00000246, unsigned long * 0x086c2e74) line 1041 + 24 bytes
CRawAction::Execute(CRawAction * const 0x03c21a74, CDefActionCtx * 0x03c260f4) line 760 + 21 bytes
CAssistant::RunAlone(CAssistant * const 0x03c2b0f4, CDefActionCtx * 0x03c260f4) line 4476 + 19 bytes
CAssistant::Run(CAssistant * const 0x03c2b0f4, tagASSISTRUNCTXSTRUCT * 0x086c39e4) line 4259 + 16 bytes
AgentRun(void * 0x03c2b0f4, void * 0x03c260f4, void * 0x00000000, unsigned long 16) line 825 + 13 bytes
NAgent::Run() line 223 + 30 bytes
NFormula::ExtensionProc(unsigned short 237, unsigned short 2, unsigned long * 0x086d8910, void * * 0x086d8ab4, void * * 0x086d8904, unsigned long * 0x086d8908) line 2380
INotesCompExtProc(void * 0x09d880f8, void * 0x086da57c, unsigned short 237, void * 0x00000246, unsigned short 2, unsigned long * 0x086d8910, void * * 0x086d8ab4, void * * 0x086d8904, unsigned long * 0x086d8908) line 1345 + 34 bytes
ProcessCOMPEXT(COMPUTE * 0x09d880f8) line 79 + 71 bytes
ComputeEvaluate(COMPUTE * 0x09d880f8, unsigned short 4, unsigned short 0, int 0) line 302
ComputeMainFormula(COMPUTE * 0x09d880f8, int 0, int * 0x086da430, int * 0x00000000, int * 0x00000000, int * 0x00000000, unsigned long * 0x00000000, UNIVERSALNOTEID_tag * 0x00000000) line 256 + 23 bytes
NSFComputeEvaluate(void * 0x09d880f8, void * 0x00000246, void * * 0x086da2ec, unsigned short * 0x086da238, int * 0x086da430, int * 0x00000000, int * 0x00000000) line 118 + 29 bytes
NFormula::Evaluate(NValue & {...}, int * 0x086da430) line 376 + 39 bytes
NFormula::Evaluate() line 472 + 22 bytes
NDocNote::HandleSaveAgent(BasicSafeAryPtr<unsigned char> & {...}, int & 0) line 1640
NDocNote::SaveDoc(BasicSafeAryPtr<unsigned char> & {...}, int & 0) line 2038 + 19 bytes
CmdHandlerBase::WriteDoc(Cmd & {...}, NDocNote & {...}) line 329 + 16 bytes
CmdHandlerBase::HandleOpenFormCmd(OpenFormCmd * 0x08854a10, Cmd * 0x00000000) line 167 + 22 bytes
CmdHandlerBase::PrivHandle(Cmd * 0x08854a10, Cmd * 0x00000000) line 113 + 19 bytes
CmdHandler::PrivHandle(Cmd * 0x08854a10) line 73 + 16 bytes
CmdHandler::Handler(Cmd * 0x08854a10, void * 0x03cc2748) line 117 + 15 bytes
Cmd::Execute() line 1040 + 20 bytes
InotesHTTPProcessRequest(_InotesHTTPrequest * 0x086f75f8) line 1346 + 11 bytes
InotesProcessReq(_HTRequest * 0x086f5fb0) line 579 + 9 bytes
HTAA_checkAuthorization(_HTRequest * 0x086f5fb0, void * 0x086f2ee0) line 1056 + 9 bytes
RedirectionOntheFly(_HTRequest * 0x086f5fb0, void * 0x086f2ee0) line 1078 + 13 bytes
HTHandle(void * 0x086f2ee0) line 847 + 13 bytes
HTSession(_ROTS {...}, void * 0x086f2ee0) line 532 + 9 bytes
HotThread(void * 0x03d70554) line 970 + 28 bytes
MSVCRT! 7800a27b()
KERNEL32! 77e8758a()

This crash is the result of a slow/small memory leak when using view collections in either LotusScript or Java. Eventually, the LSXBE module will exhaust its available pool, and will encounter an exception when calling LSBEnew(). Due to a defect, this exception is not caught, but instead falls to the OS, resulting in an unhandled exception that manifests itself as a "C++ run time error".

This issue has been reported to Lotus software Quality Engineering, and will be addressed in a future maintentance release of Domino Release 6. Both the underlying memory leak and the defect in handling the out of memory exception will be addressed.

02/11/2004

Comcast wants to buy Disney...

Category Everything Else

Comcast Makes $66B Bid For Disney

Ok...  I understand that things change...  I understand that business is business, and you do what you need to do to make yourself stronger.  But *anyone* buying Disney is just *wrong*.

Yeah, I'm a Mouse fan.  We've dumped a ton of money at the Disney doors over the years.  It's been a place of fond memories for our family.  And I know that Comcast wouldn't spin off the theme parks to Universal (would they?)...  But to see an icon of American culture be taken over by an outside entity...

Old Walt must be spinning in his grave right about now...

02/09/2004

Why Does a Notes Document Containing a Large File Attachment Take a Long Time To Open?

Category Software Development

Another "ah-ha!" moment from the Knowledgebase...

Why Does a Notes Document Containing a Large File Attachment Take a Long Time To Open?

Document Number:  1085177

Problem
While opening a Notes document containing a large file attachment you notice it takes a long time for the document to actually appear, particularly when the document is in a server-based database.  You are not attempting to open or view the actual file attached to the document, but simply the document which contains the attachment.  Why does it take so long to open the document, and is there a workaround?

Content
This issue can occur if a third party antivirus software is installed on the client and Notes integration is active.  De-activating the antivirus realtime virus protection for Lotus Notes will cause the documents to open quickly; however, you will be disabling realtime virus protection.

Under normal Notes operations, when a document containing an attachment is opened, Notes does not read the attachment into memory but simply shows a reference to the attachment via an icon.  When you detach, view, or save the attachment, then there would be a delay while the attachment is read and acted upon.  With anti-virus software programs that enable realtime protection for Lotus Notes, the attachments are scanned for viruses on the fly.  To scan the attachment, it has to be read into memory even when opening a document in Read mode.  This accounts for the delay.

Here is an example of disabling this feature in Norton AntiVirus Corporate Edition:

1.        Open Norton AntiVirus (NAV) Corporate Edition.
2.        Expand "Configure".
3.        Click "Lotus Notes Realtime Protection".
4.        On the right, uncheck the box for "Enable Lotus Notes realtime protection".
5.        Select OK and exit.

Please note that you are in effect disabling the Lotus Notes Realtime Protection!

02/09/2004

Book Review - The Big Bad Wolf by James Patterson

Category Book Reviews

While I am trying to get caught up on my technical book reviews, I haven't given up recreational reading.  And I just finished one that I enjoyed...  The Big Bad Wolf by James Patterson.  This is part of his Alex Cross series, where the main character is a cop going head-to-head with some nasty killers.  This latest installment has Cross training to become an FBI agent, wondering if he made a mistake by leaving the DC police force.  His reputation precedes him, and he ends up on a case involving kidnappings for possible slave trading.  The mastermind of the ring is a Russian Mafia leader nicknamed the Wolf, and Cross has to hunt him down before more people are kidnapped and killed, including members of the FBI trying to bring the criminal to justice.  And just to keep the character development going, the mother of his youngest child shows up in his life seeking to get custody back.

Perhaps not the best Cross novel that Patterson has done, but enjoyable nonetheless.  The ending is a little less than satisfactory, in that there's not the resolution you would expect.  I'm expecting a sequel titled something like "I'll Blow Your House In" in a year or so...

02/09/2004

Book Review - Hot Text - Web Writing That Works by Jonathan and Lisa Price

Category Book Reviews

Over the last couple of weeks, I've been reading Hot Text - Web Writing That Works by Jonathan and Lisa Price (New Riders).  It's a well-written book that examines how writing for an online medium differs from writing for print media, and how to effectively format your writing style to reach those readers.  I didn't figure it was that much different, but I learned a lot.  I also appreciated that this book didn't aggressively push the authors opinion as cold hard facts (as can be seen in many books on web design).  If you find yourself writing often for online readership (can you say "blog"?), this book is worth a read.

You can read my entire review at the Portland Domino/Notes User Group site or out on Amazon.

02/08/2004

Book Review - Java 2 Core Language Little Black Book by Alain Trottier

Category Book Reviews

I finished a review on the book Java 2 Core Language Little Black Book by Alain Trottier (Paraglyph Press).  If you are an intermediate Java developer who often wants to see working code examples that you can use, this book will appeal to you.  The explanations of the language features are relatively short, and each chapter ends with a section called Immediate Solutions.  This is where you can see a number of problems with working code examples that solve them.  A good book for "R&D" (Rob And Duplicate)...

You can read the entire review at the Portland Domino/Notes User Group website or out on Amazon.

02/08/2004

Book Review - UnTechnical Writing by Michael Bremer

Category Book Reviews

I recently finished the book UnTechnical Writing by Michael Bremer.  This is a quirky book for technical writers, and focuses on how to make your technical writing "readable" by untechnical people.  Bremer has done a lot of writing for software such as The Sims, so he knows his craft.  He also is involved in filmmaking, so you can guess he brings a lot of creativity into his writing.

I liked this book a lot.  The tone of the book is conversational, replete with interesting quotes related to the subject of writing.  While the book isn't one that will "teach" you how to write, it will help hone your technical writing skills such that you can effectively communicate to a non-technical readership.  All too often, technical writers write for other techies.  This may be fine if that's the audience, but usually it's not.  

Another feature of this book is that it will help you understand the entire process of editing and layout.  At this stage of my writing career, I can put words to paper and send it off to be "edited".  That part is still a mystery to me, as well as what it takes to get a clean copy into a layout ready for publishing.  After reading this book, I have a better idea of what others are doing to my original submission.  

Good book if you do technical writing...  

02/07/2004

Book Review - 101 Secrets Of Highly Effective Speakers by Caryl Rae Krannich

Category Book Reviews

As part of my Lotusphere preparation, I read the book 101 Secrets Of Highly Effective Speakers by Caryl Rae Krannich.  As the title indicates, it's a series of short "secrets" (tips) on how to make effective presentations.  The tips are broken up into categories such as Plan To Exceed Expectation, Build Your Body - Your Speech Body, Close With Power, and Prepare Like A Pro.

This isn't a "program" to help you overcome your fear.  Instead, it's more like a buffett of ideas.  Most of the ideas are common sense, and will strike you as "I know that already".  If you've given presentations before, or if you're an experienced presenter, you might not take much away from the book.  But if you're just starting out on the speaking trail, the information in the book will help you to focus your efforts.  

02/06/2004

Book Review - Utopia by Lincoln Child

Category Book Reviews

Because I can't stand to travel without reading material, I had to stop at the Orlando airport before the flight back to Portland and find a paperback "just in case" I ran out of books.  I ran across Utopia by Lincoln Child.  Great surprise, and one of the best reads I've had in quite some time.

The story line revolves around a terror threat in a high-tech amusement park (yes, you can easily imagine Disney here).  A small band of terrorists have rigged a number of "surprises" in the park in order to make a large monetary heist and to get some proprietary software involving the holographic attractions.  An outside specialist there to work with the robotic network gets wrapped up in trying to stop the killings, one of which could be him or his daughter there with him.  When it becomes clear that an employee of the park must be part of the team, no one is sure who to trust any more.  

Since I'm a Disney fan, I loved the setting of the theme park.  The plot line of the terror threats is carried out well, and the pace is just about perfect.  It's a longer paperback (434 pages), and it took me longer to read than many books of late.  It could be because I was actually savoring the read and trying to make it last.  

If you get the chance to read this one, do so.

02/06/2004

A little time devoted to the pets...

Category Everything Else


Today,
Libby posted that she sadly had to put her cat Rufus to sleep due to physical ailments.  A painful loss, as I am also a cat person and wonder what it would be like to have to face that loss.

I didn't start off a cat person.  In fact, I thought I was a dog guy.  Until we got one...  A puppy...  Just like raising an infant.  Not fun.


Then my wife decided to get a cat.  A co-worker had found an abandoned kitten in a field behind her house and saved it from freezing to death.  We took it off her hands at a very young age.  The next day, Sue had to leave for a family medical emergency, leaving me with a cat I wasn't sure I wanted...  that had to be bottle-fed every two to three hours...  and that wasn't litterbox trained.  Within two days, the cat was drinking from a dish and had figured out the litterbox routine.  I was sold on cats!


This is Snoogie...
A picture named M2


Overweight, elegant, aloof, but makes a great nap kitty when he drapes himself over your arm when you're laying in bed.  This is also the cat that needed $1500 worth of surgery during Lotusphere 2003 for intestinal adhesions, and started showing the same symptoms two days before *this* Lotusphere.  Fortunately, it was fine, and the vet bill was *only* $290.

Then there is Patches...
A picture named M3



Much more active, afraid of a lot of things, and has the annoying habit of spraying and puking up on stuff.  He's on my wife's "not favorite cat" list right now for some behaviors today.  Patches is about half the size of Snoogie, and doesn't have much of a tail.  In fact, it is kinked and hooked, really not much more than a stub.  


During our snowstorm of a few weeks ago, they both sat at the window for hours mesmerized by the birds right outside...  so close but yet so far...



So...  when you turn in tonight, give your pets a couple extra hugs and enjoy their company...

02/06/2004

Real quick hockey update...

Category Everything Else

As one reader pointed out, I really haven't done a hockey update in awhile.  There's a reason for that...  The team sorta sucks again.  :-)

The season started off well, but has gone steadily downhill.  Not quite as bad as the disasters of last season, but still somewhat painful to watch.  Last week while I was at Lotusphere, apparently the game was pretty close.  Ian feels that they could have won had he been able to play (that was the day he had his diabetic seizure) so as to give the team some type of bench.  But they were shorthanded and lost steam at the end.  Cam played outstanding in goal, but it wasn't enough to pull out the win.

Then there was last night.  11-0.  No way to sugarcoat it.  Cam was a target all night long and couldn't do much about it.  End of story.

And that's your 30 second hockey update.  :-)

02/06/2004

How are Lotus Products Affected by the Discontinuation of Microsoft JVM?

Category Software Development

Back on 12/17/2003, I posted a KnowledgeBase item on how Lotus products would be affected by Microsoft's JVM decisions.  Today, I've received two emails and IM pings asking for JVM information.  Since it seems to be of interest again today, I'll simply post the link to the online KnowledgeBase item for everyone's reference...

http://www-1.ibm.com/support/docview.wss?rs=463&context=SWD10&q1=How+are+Lotus+Products+Affected+by+the+Discontinuation+of+Microsoft+JVM%3f&uid=swg21110357&loc=en_US&cs=utf-8&lang=en

02/05/2004

Book Review - Hardware Hacking For Geeks by Scott Fullam

Category Book Reviews

Do you want to read a really fun book involving hardware hacking projects?  Get a copy of Hardware Hacking Projects For Geeks by Scott Fullam (O'Reilly).  While I'm not a hardware kind of guy, there are a few projects in there that 1) I could do, and 2) I would like to tackle.  Cool projects, liberally illustrated, and very clear instructions on what to do and what to expect as far as skill and time goes.

You can read my full review at the Portland Domino/Notes User Group website.

02/05/2004

Any PHP/PGP/GPG/securemail gurus out there?

Category Software Development

I inherited a website for a non-profit that was built with PHP.  One of the features is a page that allows a user to fill in some information to join the organization.  At the end of the script, an encrypted email is sent to two individuals at the company so that they can complete the registration process and charge the credit card.

At some point in the game, the encryption piece has broken.  The original developers used GPG for the encryption, but there is no documentation on the implementation.  At the bottom of the PHP script for the membership page, we have the following:

mail("thomas.duff@marquamgroup.com", "Membership Application", $mailbody);

$an_error = securemail($SM_ID1, $SM_MAIL1, $mailbody);

if ($an_error != "1") {$an_error = securemail($SM_ID2, $SM_MAIL2, $mailbody);}

I put the first mail statement in there so that I could see when someone sent an email.  The second and third securemail functions never successfully execute, and the user gets an error message stating the transaction did not complete.  My email arrives, the other two do not, as securemail is returning an error code of "1".

$SM_ID1 and 2 are set in a config file to values like "xyz1" and "xyz2", while $SM_MAIL1 and 2 are valid email addresses.  The $mailbody is built from data entered on the form, and is fine in that I see all the data in the unencrypted email that comes to me.

Any hints on where to start looking?  I've googled a number of terms (securemail, pgp, gpg, documentation, error) and have not yet found anything of use.

I realize this is not Notes/Domino related, but I'm at wits end here...  Thanks for any help.  If you'd like, we can also carry on via email at thomas.duff@marquamgroup.com.

02/04/2004

How to Refresh a View Programmatically Using the LotusScipt NotesTimer Class

Category Software Development

Not that I've had to do this recently, but I can see where it would come in handy.  From the KnowledgeBase...

How to Refresh a View Programmatically Using the LotusScipt NotesTimer Class

Document Number:  1092760

Problem
How can you periodically refresh a View programmatically without having to press the [F9] key?

Content
The NotesTimer class can be used to periodically trigger a call to the ViewRefresh method (of the NotesUIWorkspace class).  Add the following code to views (Declarations) and Postopen event:

(Declarations)

Dim viewTimer As NotesTimer
Dim ws As NotesUIWorkspace

Sub refreshView(Source As NotesTimer)
        ws.ViewRefresh
End Sub

Postopen

Set ws = New NotesUIWorkspace
Set viewTimer = New NotesTimer(10)
On Event Alarm From viewTimer Call refreshView

In the above example, the View will be refreshed every 10 seconds.

02/04/2004

Known Limitations of Notes and Domino 6.x

Category Software Development


This is one of those "living documents" in the KnowledgeBase that condenses a whole lot of useful information into a simple table...  

(NOTE:  Updated on 02/05/04 based on a version that Andrew Pollack had with more information...  Thanks!)


Known Limitations of Notes and Domino 6.x

02/04/2004

OK... Java decompilers are freaking cool!

Category Software Development

I know that Joe Litton has written about using java decompilers to see how things work in other peoples code.  I know they exist, but until today I had never had reason (other than curiosity) to have to use one.  Now I'm sold...

I was working at a client today, and one of the tasks is to update the 6.5 mail template with some of their custom code.  One of the things they have is a mail quota gauge applet that shows the user how close they are to their size limit.  While the Gauge.class file was available, the Gauge.java file was nowhere to be found.  I searched all over the place online to find where the prior developer might have appropriated the code from.  I found a similar program at SearchDomino, but it wasn't the same.  All I needed to do was to change the background color to mesh with the new color scheme.  What to do, what to do?

I decided that a decompiler might help.  Using Google, I searched for, what else, java decompiler.  The first hit was to a package called DJ Java Decompiler (http://members.fortunecity.com/neshkov/dj.html).  Not having any experience with decompilers, I decided that it looked like a good choice.  Man, it rocks!

I installed the program, fired it up, found the Gauge.class file I had exported, and clicked the Decompile button.  Presto!  There's the source code!  I made the RGB color changes and saved the code.  I then clicked on the Tools button, and guess what?  You can recompile from the IDE!  No command line interface!  Recompiled the code, and it was clean.  Moved it into the database to test, and it worked like a dream.  I made a few more tweaks after that, but basically it was everything I wanted, and I didn't have to look at the help files once.

To make sure no one else had to repeat these steps, I saved the .java and .class files in a Page element along with instructions on what's going on.  But I'm thinking that I want to have a decompiler package on all my workstations now.  I'm sold!

02/04/2004

Happy Anniversary To Me! One year of blogging today...

Category Blogging

Coming out of Lotusphere last year, I decided that I needed to start a blog.  Joe had started one, and I didn't want the runt to get ahead of me.  So I signed up with Blogspot and started my blogging life with the following:

Welcome to my life...  I don't find it terribly interesting, and I don't expect you will either...  But everyone else has a blog, so I guess I need to have one too! ...

Little did I know that 1) I'd still be doing it a year later, and 2) how much it would change my life...

I knew a core group of people, but it was pretty limited.  Once the blog got going, I started reading about other Notes/Domino professionals and commenting on their blogs.  Eventually, I switched over to the BlogSphere template, and started getting comments of my own.  New bloggers joined in, and they were added to the network.  Google started indexing my entries, and I started getting emails from a number of people I had never met.  My freelance writing, which had just gotten started with e-Pro, grew dramatically with more e-Pro articles and a series in Advisor.  That series laid the groundwork for our session at Lotusphere this year.  And now like a lot of bloggers, I get people introducing themselves with the statement "I read your blog!".

I've shared job struggles and triumphs.  I've shared my battle with low-level depression and how medication made a world of difference.  I've let you all know I read *far* too many books.  I've met friends that have no faces (yet), and I've made friends all over the world (and chatted with them at all hours of the day).  I now have a network (and hopefully am part of one) that I can go to for expert level help, and I know that I am tapping into the best minds out there.  I am *so* much more a part of the larger Notes/Domino community than I was a year ago.  Why?  This blog...

I'd like to thank everyone for being part of my successes over the last year.  You've helped me, pushed me, challenged me, and laughed at/with me.  In the somewhat calmer moments of my harried existance, I am awed and overwhelmed that a short guy in Portland Oregon can be part of such an amazing group of people.

02/03/2004

Book Review - Leo Laporte's 2004 Technology Almanac

Category Book Reviews

A book I'm having fun reading this year is Leo Laporte's 2004 Technology Almanac.  This is one of those books you may not get something from every day, but on many occasions you'll find a gem that will make your life a lot easier.  There's a page for each day of the year, and each month covers a different area of technology.  Those areas are Make Your Computer New For The New Year; Games And Entertainment; Stay Safe Online; Manage Your Life Online; Merry Month Of May; Weird And Wonderful World Wide Web; Family Photography; Work At The Beach; Back To School; Control Your Email, Battle Spam; Troubleshooting; Leftovers; and Index.  And in case you're wondering, the tips include both Mac and PC...

For instance, on January 3rd the coverage is on must-have system diagnostic tools.  The four tools they feature are PC Pitstop, SiSoftware Sandra, WCPUID, and Motherboard Monitor.  I was unaware of any of these package, and the SiSoftware Sandra package would help me clean up some things on my machine.  If I had been looking for something like this, I might have been able to find it.  But having a gem drop onto your path makes each day's reading something to look forward to.  Heavy-duty geeks might think too much of this is "I already know that" material, but for average users and developers like myself, it's nearly as fun as a Dilbert calendar (and more useful to boot).

02/03/2004

Ordering Pizza In 2008

Category Humor

Forwarded to me by a friend...  funny in a nervous, "ha-ha" kinda way...

---------

ORDERING  PIZZA  IN  2008

Operator: "Thank you for calling Pizza Hut. May I have your national ID  number?"
Customer: "Hi, I'd like to place an order."

Operator: "I must have your NIDN first, sir?"
Customer: "My National ID Number, yeah, hold on, eh, it's  6102049998-45-54610."

Operator: "Thank you, Mr. Sheehan. I see you live at 1742 Meadowland Drive,  and the phone number's 494-2366. Your office number over at Lincoln  Insurance is 745-2302 and your cell number's 266-2566. Email address is  sheehan@ home.net   Which number are you calling from, sir?"
Customer: "Huh? I'm at home. Where d'ya get all this information?"

Operator: "We're wired into the HSS, sir."
Customer: "The HSS, what is that?"

Operator: "We're wired into the Homeland Security System, sir.  This will  add only 15 seconds to your ordering time"
Customer: (Sighs) "Oh, well, I'd like to order a couple of your All-Meat  Special pizzas."

Operator: "I don't think that's a good idea, sir."
Customer: "Whaddya mean?"

Operator: "Sir, your medical records and commode sensors indicate that  you've got very high blood pressure and extremely high cholesterol. Your  National Health Care provider won't allow such an unhealthy choice."
Customer: "What?!?!  What do you recommend, then?"

Operator: "You might try our low-fat Soybean Pizza. I'm sure you'll like    it."
Customer: "What makes you think I'd like something like that?"

Operator: "Well, you checked out 'Gourmet Soybean Recipes' from your local  library last week, sir. That's why I made the suggestion."
Customer: "All right, all right. Give me two family-sized ones, then."

Operator: "That should be plenty for you, your wife and your four kids, and  your 2 dogs can finish the crusts, sir. Your total is $49.99."
Customer: "Lemme give you my credit card number."

Operator: "I'm sorry sir, but I'm afraid you'll have to pay in cash.  Your  credit card balance is over its limit."
Customer: "I'll run over to the ATM and get some cash before your driver   gets here."

Operator: "That won't work either, sir.  Your checking account's overdrawn also."
Customer: "Never mind! Just send the pizzas.  I'll have the cash ready.  How long will it take?"

Operator: "We're running a little behind, sir.  It'll be about 45 minutes,  sir.  If you're in a hurry you might want to pick 'em up while you're out  getting the cash, but then, carrying pizzas on a motorcycle can be a little  awkward."
Customer: "Wait! How do you know I ride a motorcycle?"

Operator: "It says here you're in arrears on your car payments, so your car  got repo'ed.  But your Harley's paid for and you just filled the tank  yesterday"
Customer:  Well I'll be a "@#%/$@&?#!"

Operator: "I'd advise watching your language, sir.  You've already got a  July 4, 2006 conviction for cussing out a cop and another one I see here on  September for contempt at your hearing for cussing at a judge."  "Oh yes, I  see here that you just got out from a 90 day stay in the State Correctional Facility. Is this your first pizza since your return to  society?"
Customer: (Speechless)

Operator: "Will there be anything else, sir?"
Customer: "Yes, I have a coupon for a free 2 liter of Coke".

Operator: "I'm sorry sir, but our ad's exclusionary clause prevents us from  offering free soda to diabetics. The New Constitution prohibits this.

Thank you for calling Pizza Hut!"

02/02/2004

Book Review - JavaServer Pages by Hans Bergsten

Category Book Reviews

I had the opportunity to review the updated 3rd edition of the book JavaServer Pages by Hans Bergsten (O'Reilly).  This book has only gotten better, and it's a fantastic text to use to start learning about JSP and JSTL technology.  The examples have been updated to use new standard features in the specs, so it's best to get a copy of the latest edition.

You can read the updated review at the Portland Notes/Domino User Group website.

02/02/2004

How Does Soundex Work in Lotus Notes and Domino?

Category Software Development

From the KnowledgeBase...

How Does Soundex Work in Lotus Notes and Domino?

Document Number:  1084571

Problem
When you have a mail-enabled form, and you press F9 or send your mail, you will often be prompted by a dialog box which states, "No match was found for name" or "More than one match was found for name" succeeded by a list of names in a dialog box.  Why does this occur?

Content
Soundex evaluates the entry in your SendTo field (or CC or BCC) and returns these messages if it finds either no match at all or multiple matches in the ($USERS) view of your Home server's Name & Address Book (NAB).

The first column of this view is sorted and categorized.  Each category represents a value.  When a recipient of a mail message is found under a category with only one entry, there is success.  When it is found, but only under categories with multiple entries, you are presented with the "More than one match was found for name" dialog box (and the dialog box displays the records from all of those categories for you to choose from).  

Person records each have several values, so they appear in several places in the ($USERS) view.  They each appear under their:

FirstName
LastName
FullName
CommonName
ShortName
@Soundex(LastName)

Group records appear only once, under their:
ListName

Note: Actually, the formula is slightly more complicated than this.  For more detail, it is recommended that you to examine the formula in the first column of your ($USERS) view.

Note:  In the 4.6 and 5.0 NAB templates, a Group's ListName is also processed by @Soundex.

How do these multiple entries/values for Person records, and the single entry/value for Group records, affect the user?

Suppose you have people named Bob Vytar, Vytar Smith, and groups called Vytar, Vytar Group, and Group Vytar.  If you type Vytar into the SendTo field of a memo, and then press F9, it will display both Person records and the group, Vytar.  It will not display the other two group names.  If you type Vytare in the SendTo field, and then press F9, it will display with Bob Vytar only.  This is because there wasn't an exact match with any record, but there was a Soundex match with the LastName of Bob Vytar (see the list of ways the ($USERS) view is sorted and categorized above).

Additionally, if you search for a name by typing "Bob L" to find Bob Long, a name such as "Jack Lee" could potentially be returned.  This occurs because when no exact match is found, soundex is used.  Namelookup utilizes the last name of the person you entered, in this case 'L', and does a search for L000 since "L" is the only letter of the last name that you entered.  Looking in the $Users view of your Domino Directory, you will find that there is an entry for L000 that matches with Jack Lee.  This is based on the soundex coding documented in Technote 1087113, "What Is the Soundex Coding System?".  In order to find Bob Long, you would need to type out to at least the second consonant of the last name, "Bob Lon", because soundex gives vowels a weight of 0.

02/02/2004

@DbLookup and @DbColumn Questions and Answers

Category Software Development

OK...  it's been awhile since I had the chance to post some good entries from the KnowledgeBase.  So, Lotusphere is now over and it's time to get back into the swing.

@DbLookup and @DbColumn Questions and Answers

Document Number:  1088821

Problem
The limitations you may encounter when using @DbLookup and @DbColumn are often associated with datatype, size, and performance.  Here are a few of the common questions and their answers.

Content
1.        Can you Lookup rich text?  Yes, under certain circumstances.  Please note that this functionality is neither recommended nor supported because of certain limitations.  Refer to the following information for details on the limitations and the ways you may be able to work around them:

-        Technote #1099012 ("@DbLookup Fails to Return Rich Text Field" ) points out that if the Rich Text Field whose value you are trying to bring back is listed in a view column, the @DbLookup will fail (it will return a Null Value).  If the RTF is not referred to in a view column, then the Lookup will succeed.
 
-        If the view specified in the @DbLookup references the rich text field as part of a column definition, a null string will result.  Rich text fields cannot be displayed in a view, and therefore should not be referenced in a view column definition.  

-        @DbLookup will retrieve a field as it appears in a view before it references fields as they appear in a document.  The solution, in this case, is to remove the column in question from the view.  This forces Notes to look at the rich text field as it appears in the document.  

Other limitations related to pulling information from a Rich Text Field using @DbLookup are explained in the technotes listed in the Related Documents section below.

2.        Can you Lookup a DocLink?  Yes, but you will have to perform two Lookups.  One Lookup will return the contents of the Rich Text Field containing the DocLink itself, and the other will return the contents of the field called, "$LINKS."  This second Lookup must return its value to a Computed Text field also called, "$LINKS."  The information in the $LINKS field is the pointer information which tells the DocLink where to go.

When you perform the two Lookups, the first field will become data type 'Rich Text' and the $LINKS field will become data type 'Doclink Reference List.'  After saving and closing the document, the DocLink will be activated.  Failing to follow these steps will result in the error message, "The DocLink Database Cannot be Located."  (Note:  This error will also occur if the $LINKS field is computed when composed, or editable.)


3.        Can you Lookup using multiple keywords?  Yes, by separating the multiple keywords by a colon.  Also, you can reference a field which contains multiple keywords, as long as that field has "Allow Multi-Values" checked ON.


4.        How much information can an @Db Function return?  Approximately 42,000 bytes.  Attempting to return more than this results in the error message, "Paragraph or Field Cannot be Larger Than 64k Bytes." or "ERROR: The specified database lookup generated more than 65,000 bytes of results, which is too large for Notes to handle in this context." Header information fills the difference between 42,000 and 64k (about 65,000)

5.        How can you control whether the @Db Function returns a list?  If the @DbLookup key is valid for multiple documents, it will return a list.  All @DbColumns will return a list (unless there is only one value in the Lookup View).  If you want to return only one value, use @Subset(@DB Function; 1) or @Subset(@DB Function; -1).

If you want the @Db Function to return a list to a field, make sure that "Allow Multi-Values" is checked ON.

6.        What does NoCache do?  NoCache means that every time the @Db Function is executed, it will look at the current state of the Lookup View.  If you do not use NoCache, the @Db Function will default to Caching the Lookup View the first time it executes.  For Lookup Views which do not change rapidly (minute by minute), you should allow Notes to Cache the Lookup View.  The difference in performance is tremendous.

7.        How long does an @Db Function take to execute?  The time to execute is dependent upon the size of the Lookup View and the size of the Lookup Database.

If the function does not use the NoCache switch, the time it takes to compute an @DbLookup or @DbColumn is also dependent how current the target view index is.  For example, if an @DbLookup returns information from a view index that needs to be refreshed, the absence of the NoCache switch will force that view to be refreshed, thus increasing the time it takes to evaluate the @DbLookup formula.

02/01/2004

Book Review - Tom Clancy's Net Force: Changing Of The Guard

Category Book Reviews

During the trip home from Orlando, I was able to finish up Tom Clancy's Net Force: Changing Of The Guard.  This is part of his paperback series that bear his name but is written by others.  The setting is about 10 years in the future, and the action revolves around a government office called Net Force.  This group uses computer technology and the Internet to track down criminal activity.  In this installment, the NF group has obtained an encrypted disk with the names of all the Russian spies throughout the world.  The breakdown of the code is going slow, but a certain sleeper spy in the US is willing to do anything to keep the government from learning of his involvement.  When the top NF codebreaker is nearly killed in a kidnapping attempt, there is an all-out attempt to find the killer and the person who might have hired him.

Generally speaking, it's a good read.  It will make more sense if you've followed the series, as there are references to past people and events that you won't know about otherwise.  It doesn't kill the book if you haven't done the reading, but it helps.  I personally like near-future techno-thriller novels, so this one works for me.  It's not as action-packed as others in the series, but it is still a pleasant diversion.

Want to support this blog or just say thanks?

When you shop Amazon, start your shopping experience here.

When you do that, all your purchases during that session earn me an affiliate commission via the Amazon Affiliate program. You don't have to buy the book I linked you to (although I wouldn't complain!). Simply use that as your starting point.

Thanks!

Thomas "Duffbert" Duff

Ads of Relevance...

Monthly Archives