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

Purchase on Amazon

Co-author of the book IBM Sametime 8.5.2 Administration Guide

Purchase on Amazon


Visitor Count...

View My Stats


At Your JavaService: Run Your Java Programs as Microsoft Windows Services

Category Software Development

From the DevX site:  At Your JavaService: Run Your Java Programs as Microsoft Windows Services

This article talks about a free open-source software program that allows you to treat a program as a Windows service and get it to start up automatically when the Windows server boots up.  Cool stuff!


Sun Desktop Shines on Wal-Mart with Discount Boxes

Category Software Development

From eWeek:  Sun Desktop Shines on Wal-Mart with Discount Boxes

This has the feel of something very important.  Sun is working with Microtel to put an AMD Duron 1.6 GHz/no floppy drive machine on the shelves of Wal-Mart for under $300.  The interesting part...  they are preloaded with the Java Desktop System.  I saw a demo of that on a webcast awhile back, and there were some cool concepts there.  

Time will tell, but this could be another critical shot at the Microsoft juggernaut.  A non-Windows box, affordable to the masses, with a cool new OS.  For techies, what a great way to buy into a new OS and try it out.  And if software like OpenOffice runs on it (or StarOffice), you have an entire machine for less than the cost of Microsoft Office.  If marketed right, this could be a niche that catches on quickly and secures a legit spot out there.


I guess there are two types of "living"...

Category Everything Else

In the Houston Chronicle:  Some Of Ex-Enron Accountant's Funds Unfrozen

Rick Causey petitioned the court to unfreeze $225K of his $6 million in frozen assets for "living expenses".  Listed among his expenses was his membership at the local country club.  Needless to say, the judge refused that part of the petition.

I guess there's "living expenses" and "*LIVING* expenses".  How stupid can these people be?


Hey, Prozac-bashers... get a life!

Category Everything Else

Over the last few weeks, there has been a load of negative publicity about SSRI medications, such as Prozac.  Because some studies have shown an increased suicide link for people on those medications, there will now be warning labels on the bottles.  Doctors have said they overprescribe the medication to people who want to "feel happy".  And then there's this article in the Arizona Daily Wildcat:  Brain Decay: One Less Crutch For False Happiness.  

Now I'm sure this University of Arizona student got a good grade on her journalism paper.  But I'm betting she knows nothing of what it's like to suffer with depression.  Towards the end of the article, we have this:

When it comes to being down, many people choose to be depressed. Perhaps they’ve given up or they’re too pessimistic, but in many ways, they don’t want to be happy anymore. That brings the desire for false happiness that apparently only a crutch like antidepressants can give. But maybe the feeling that medication gives is only brought on by the acknowledgement that the person actually wants to be happy. Maybe it’s a momentary awareness that people can be happy on their own.

It’s time to reach for self-help books. Go on amazon.com, look up Iyanla Vanzant and do some “mental housekeeping.” Go for a run. Keep a diary. Even vegging out on the couch sounds like a better alternative to pill popping (depending on what’s on).

Let me tell you...  I've read a ton of self-help books, and they only go so far.  There are some people who are looking for an easy way out, sure.  But for others, there are real chemical imbalances which will affect their outlook no matter what they do.  And for those people, SSRI drugs can be lifesavers.  There's no amount of "pull yourself up by your bootstraps" thinking that will help.  I know...  I've been there.  

So, to all the "Prozac is evil" people out there, I say to you...  get a life!  There are abuses, just like there are abuses with alcohol or painkillers.  And yes, the drug is not for everyone.  But just because it didn't work for you doesn't mean that you have to get it taken away for everyone else.  There are people out there for whom fluoxetine has opened a whole new world.


Various thoughts from my spam/bulk mail folder...

Category Humor

"Kitten18 Sent You A Message" - she's cute, but I don't remember her...

"V1 agr a  w1th n0 prescr1pt1on" - do people think I am going to trust my pharmaceuticals to someone who can't spell and who's keyboard apparently doesn't know the difference between a 1 and an L?

"Increase the size of your Johnson" - I still haven't found this Johnson dude so that I can forward his mail.

"Cheating wives" - unless it's mine, do I really care?

"Be... a Hero.. In The Bedroom" - that must be some anti-snoring device...

"Go... all Night.. In Bed" - I think I outgrew that by four or five.

"How I Lost 68 Pounds (super photo tips)" - is this about losing weight or taking pictures that make you look like you have?

"Get Bigger Breasts Now" - sorry...  I'm trying to reduce the ones I already have.

"you are the man!" - glad that's finally been recognized.

"upgrade your manhood" - must be some self-esteem course.

"Money In Your Pocket?" - no, I'm just happy to see you...

Thank you very much, I'll be here all week.  Try the veal, and remember to tip your server...


Local hands-on security training from Microsoft

Category Microsoft

I received an email today offering local classes from Microsoft on security training.

Isn't that like getting marriage counseling from a guy who's been divorced seven times?


IBM targets 40,000 Linux desktops by 2005

Category Linux

From CPILive.net:  IBM targets 40,000 Linux desktops by 2005

There's not a lot of new factual material in the article that hasn't already been reported over the last few months on this story.  One surprise impression I did get from this particular story (and associated quotes) is that there seems to be a slight retreat from Linux desktops as the preferred OS.  Scott Handy, VP of Linux Worldwide Strategy And Development is quoted as saying that the TCO of Linux vs. MS Office and Windows might not be as great as one would think.  The follow-up sentence positions that statement as true for companies having to support both Windows and Linux.

I'll be interested to see if Microsoft tries to play up that quote at all.


What is the $ConflictAction Field Used For?

Category Software Development

A little something for the Google indexing engines...  From the KnowledgeBase...

What is the $ConflictAction Field Used For?

Document Number: 1098679

What is the $ConflictAction field used for?

The $ConflictAction field, which was introduced in Notes R4, is used to handle replication conflicts.  If the value of the $ConflictAction field is set to 1, the documents will be merged and a replication conflict will not be created when different fields on the same document are modified.   A replication conflict will still be created if the same field is modified by two or more people prior to the next replication.

This field is automatically added and appears in document properties with the value of "1" when the form the document is created and saved with has the Merge Replication Conflicts feature turned on.

Supporting Information:

To check if the Merge Replication Conflicts feature is enabled for a particular form, open the form in design mode and select Design, Form Properties.  The InfoBox will display.  The Merge Replication Features checkbox is located on the Basics tab of the InfoBox.


Java RichTextItem AppendText Method Crashes or Causes a Red Box and Hang when String Value Parameter is Null

Category Software Development

I've not run into this myself, but I see how it could easily ruin your day if you did...  :-)   From the KnowledgeBase...

Java RichTextItem AppendText Method Crashes or Causes a Red Box and Hang when String Value Parameter is Null

Document Number:  1111025

Calling the Java appendString method (of the RichTextItem class) with a null String value parameter results in either a Red Box and hang or a crash.

In the case where the Notes Client hangs, the following Red Box error appears beforehand:

"Sorry, an uncorrectable error has occurred.
LookupHandle: null handle
Press ENTER to abort the application"

When the system crashes, the Fatal Thread will be one of the following:
(Note: the first example can occur on a Notes client or Domino server, the second example has only been observed on a Domino server)




The crash issue where the single fatal thread entry jvm._IBM_GetInterface is observed occurs in Notes 6.0 and 6.0.1 when the String value parameter passed is derived from a field, for example when using the getItemValueString method (of the Document class).

For example:

string2 = udoc.getItemValueString("somefield");

The Red Box hang and crash issue containing the fatal thread entry nlsxbe._Java_lotus_domino_local_RichTextItem_NappendText is observed in Notes 6.x when the parameter is derived from a String object which is derived using the substring method (it is unknown if the issue will also occur when the String is based on values returned by other methods).

For example:

string1 = stuff.substring(0, 0);

This issue has been reported to Lotus software Quality Engineering in two separate Software Problem Reports (SPRs):

SPR TDON5M6NBH covers the portion of the issue where getTextItemString was used to provide the string value and the appendText call resulted in a crash.  This issue has been addressed in Notes/Domino 6.0.2.

Excerpt from the Lotus Notes and Domino Release 6.0.2 MR fix list (available at http://www.ibm.com/developerworks/lotus):


  • SPR# TDON5M6NBH - Fixed a server crash when the Java RichTextItem class executed the appendText method with a NULL parameter.

SPR MKIN5XETBB covers the portion of the issue where the string value was derived from the substring method and the appendText call resulted in a Red Box error and a system hang.

In order to avoid these issues, add a check to first see if the returned string value is null (this avoids the issue in SPR TDON5M6NBH) and then check if the value is a length of 0 (this avoids the issue in SPR MKIN5XETBB).

For example:

                if (stringx != null)  {
                         if (stringx.length() != 0) {

Supporting Information:

Here is a full example of the code that recreates the issue described in SPR MKIN5XETBB:

import lotus.domino.*;

public class JavaAgent extends AgentBase {

        public void NotesMain() {

                String stuffx = "123";
                String string1 = null;

                try {
                        Session session = getSession();
                        AgentContext agentContext = session.getAgentContext();
                        Database db = agentContext.getCurrentDatabase();    
                        Document uMemo    = db.createDocument();
                        RichTextItem ubody = uMemo.createRichTextItem("Body");

                     string1 = stuffx.substring(0, 0);                        

                } catch(Exception e) {


Rebuilding a Notes Mail Inbox

Category Software Development

This could be a nice little agent to keep on hand...  From the KnowledgeBase...

Rebuilding a Notes Mail Inbox

Document Number:  1104973


Your Inbox in your mail file has become corrupt for whatever reason.  Because the Inbox is a folder, it does not use selection formulas to give a collection of documents.  It is built by the router depositing messages there.  Once the folder is destroyed or replaced, the collection is lost with it.  After replacing it with a new one, only new documents will be deposited in it from that point on.

Below is a script that can be used to repopulate your Inbox with the older mail messages that have not been currently filed in folders.  The script can be placed in a button and mailed to the users who need it.

NOTE:  It is very important to make a backup of the mail file before using it.

This script agent moves ANY document that does not exist in a folder to the Inbox.  This means that some documents that only exist in the All Documents view will also be moved.  This includes documents such as Profile documents and Organizer Setup documents.  When finished, the user should select these documents and choose Actions, Remove From Folder from the menu.

NOTE:  Deleting a document from any view or folder deletes it entirely from the database.

' This script builds an array of documents that are included in a folder.  It then compares each
' document in the All Documents view to each document in the array.  If it finds one, it breaks out
' and continues onto the next document.  If it reaches the end of the array, then it hasn't found a
' match and the document is moved to the Inbox folder.

Sub Initialize
        Dim s As New notessession
        Dim db As notesdatabase
        Dim fDoc As NotesDocument   ' Document in folder
        Dim ad As notesview         ' All Documents view
        Dim aDoc As notesdocument   ' document in All Docs view
        Dim fUNID() As String       ' array of UNID's of docs in folders
        Dim i As Integer            ' UNID array index
        Dim deldate As notesitem
        Dim Chair1 As notesitem
        i =0
        Set db = s.CurrentDatabase
        Redim fUNID(0)
    ' Build UNID array by looping through folders, then their documents
        Forall view In db.views
                If view.IsFolder And Not view.Name=("($All)") Then
                        Set fDoc = view.GetFirstDocument
                        While Not fDoc Is Nothing
                                Redim Preserve fUNID(i)
                                fUNID(i) = fDoc.UniversalID
                                Set fDoc = view.GetNextDocument(fDoc)
                End If
        End Forall
    ' Loop through docs in the All Documents view and compare UNIDs to each doc in the array
        Set ad = db.GetView("($All)")
        Set aDoc = ad.GetFirstDocument
        While Not aDoc Is Nothing
                i = 0
                Do While i <= Ubound(fUNID)
                        If fUNID(i) = aDoc.UniversalID Then
                                Exit Do  
                        End If
                        i = i + 1
                Set deldate = adoc.getfirstitem("delivereddate")
                Set Chair1 = adoc.getfirstitem("CHAIR")
                If i > Ubound(fUNID) And Not deldate Is Nothing And Chair1 Is Nothing Then
                        Call adoc.PutInFolder( "($Inbox)")
                End If
                Set aDoc = ad.GetNextDocument(adoc)
End Sub


Book Review - The Last Juror By John Grisham

Category Book Reviews

Although I'm not to the point with Grisham as I am with Patricia Cornwell's Kay Scarpetta series, I'm getting a little burned out on uneven writing.  I finished The Last Juror, Grisham's latest novel, and I can't say I liked it as much as I thought I would.  The jacket cover led me to believe this was an action novel focused on revenge.  The novel takes place in the 70's in Mississippi, and a small town is forever altered when a brutal murder and rape takes place.  The killer is the son of some powerful criminal elements in the county, but they are unable to buy off the jury to acquit him of the crime.  The jury convicts him of the murder but can't sentence him to death.  After 10 years, he's released from prison and jurors start getting killed.  Everyone thinks he is guilty due to a threat he made at the trial.  All this action takes place against the backdrop of a young man who moves into the area, takes over the weekly local paper, and turns it into a powerful force of the community during all the changes that occurred in those turbulent times.

The novel is split up into three parts.  The first one delivers on what I thought the novel would be.  A crime, intrigue, fear, and tension.  The crime is solved, justice is served, and the criminal is sent to jail.  The second part then heads off in a direction that is completely detached from the main story.  There's no action.  It's just the advancement of the guy's career and life of running the paper.  Even when the third part of the story kicks in, the action of jurors getting killed doesn't happen until the last 50 pages or so.  The ending twist comes up pretty quickly, and the final end of the novel sort of leaves you sitting there thinking "he ended it like *that*?"

If you were reading this for a human interest story covering the changes in the deep South during the 70's, it would work better in my opinion.  But to build this up as a crime thriller and then basically drop that angle until the last few pages left me feeling a little cheated.


Book Review - OOP Demystified

Category Book Reviews

Book Review – OOP Demystified

OOP Demystified – Jim Keogh and Mario Giannini
1st edition, 2004, 395 pages, McGraw-Hill Irwin

Target Audience
Developers who need an introduction to or a review of object-oriented programming.

This is an easily digestible tutorial on object-oriented programming (OOP) that can be used as an introductory or review text.

The book is divided into the following chapters:

A Look At How We See The World; What Is a Class?; Encapsulation; Methods and Polymorphism; Inheritance; Abstraction; Identifying and Describing Objects; Real-World Modeling; Collaboration; Case Modeling; Interfaces; Object-Oriented Programming Languages; Final Exam; Answers to Quizzes and Final Exam; Classes In Java; Classes In C++; Class Definitions In C#; Index

My career as a programmer started in the world of Cobol.  Because of that experience, I tend to think of programming in terms of procedural coding.  When I got ready to make the jump to Java and object-oriented programming (OOP), I had a difficult time getting my mind wrapped around OOP concepts.  The explanations of “an object is like an airplane” didn’t cut it for me, because an airplane wasn’t code.  I needed something that explained the concepts from a coding perspective without trying to teach you a language at the same time.  I would have done much better had OOP Demystified been around back then.

OOP Demystified is an approachable tutorial on OOP concepts for someone who doesn’t come from that type of programming background.  Each chapter explains a concept, shows examples from a Java and C-style coding viewpoint, and then ends with a test so that you can see if you’ve absorbed the material.  If you’ve never seen Java or C code, the examples might be a little confusing, but not so much that you’d lose track of what’s being discussed.  The tone is conversational, so the barriers to learning are lowered.

An additional benefit to this book over earlier attempts is that the authors include Unified Modeling Language (UML) concepts as the book progresses.  UML is the standard way of diagramming OOP systems, and programmers need to understand the basic methodology.  While not a “teach yourself UML” course, the reader will pick up enough information to be able to work in that environment.  The material will also allow you to move on to a more focused UML tutorial with little effort.

Even if you’re not a complete novice to OOP, you will still benefit from having this book on your shelf.  If you’re like me and still have to think through the concepts on a regular basis, this volume will provide you with a quick refresher on the basic concepts that you can quickly review as needed.  That’s where my copy of this book will get most of its use.

If you’re getting ready to dive into the world of Java or C#/C++ and you don’t have a background in OOP, this will give you a good foundation of the concepts you’ll need.  And if OOP isn’t your primary background, you’ll appreciate it as a refresher guide in order to cement specific concepts.  


Book Review - Learning XSLT by Michael Fitzgerald

Category Book Reviews

Book Review – Learning XSLT

Learning XSLT – Michael Fitzgerald
1st edition, 2003, 352 pages, O’Reilly Publishers

Target Audience
Developers who are looking for an entry level text to learn XSLT and XPath.

This is a tutorial guide for teaching yourself the fundamentals of Extensible Stylesheet Language Transformations, or XSLT.  

The book contains the following chapters:  Preface; Transforming Documents with XSLT; Building New Documents with XSLT; Controlling Output; Traversing the Tree; XPath and XSLT Functions; Copying Nodes; Using Variables and Parameters; Sorting Things Out; Numbering Lists; Templates; Using Keys; Conditional Processing; Working with Multiple Documents; Alternative Stylesheets; Extensions; XSLT 2.0 and XPath 2.0; Writing an XSLT Processor Interface; Parting Words; Appendix: XSLT Processors; Glossary; Index

While XML is becoming the de facto standard for data exchange between programs and platforms, it does nothing to allow the reader to see the data in a useful, formatted output.  And, since XML is not concerned about presentation of data, that’s proper.  What you need is some way to turn that data into readable output based on the reader’s needs.  To do that, you use XSLT. That’s where this book comes into play.

Michael Fitzgerald has written a concise, easy-to-follow book that will allow you to start working with the XSLT language.  Since this book is not combined with every other XML technology known to man, you will not get lost in a morass of acronyms or concepts that would quickly confuse the beginner.  The focus is just XSLT, and the assumption is that you are approaching the language for the first time.  There are a number of examples that give you hands-on experience during the learning process, and most of the examples also show a screen print of the browser output so that you know if you were successful with your coding.  The code can also be downloaded from the book’s website, so if you just want to skip to the output, you can do that.

The author doesn’t try to write for both the beginner and the expert.  Since the focus is on the beginning XSLT coder, the person with an existing base of XSLT experience may not find this book of much use.  I don’t say that as a gripe against the book, rather as a way to manage your expectations.  It’s better than a “For Dummies” title, but it’s not an exhaustive guide to all that is XSLT.  If you fall into the target audience, you should gain a lot from this title.

Learning XSLT is a very good choice to start your foray into the world of XML transformations.  You should come away with the basic information you need to be effective and continue to expand your experience.


Tax Cuts - A Simple Lesson In Economics

Category Everything Else

This was forwarded to me by a friend (thanks, Bas!), and it makes more sense than a lot of other more "technical" explanations...  

Sometimes Politicians can exclaim; "It's just a tax cut for the rich!", and it is just accepted to be fact. But what does that really mean? Just in case you are not completely clear on this issue, we hope the following will help.

Tax Cuts - A Simple Lesson In Economics

This is how the cookie crumbles. Please read it carefully.

Let's put tax cuts in terms everyone can understand. Suppose that every day, ten men go out for dinner. The bill for all ten comes to $100.

If they paid their bill the way we pay our taxes, it would go something like this: The first four men (the poorest) would pay nothing. The fifth would pay $1. The sixth would pay $3. The seventh $7. The eighth $12. The ninth $18. The tenth man (the richest) would pay $59.

So, the ten men ate dinner in the restaurant every day and seemed quite happy with the arrangement, until one day, the owner threw them a curve.

"Since you are all such good customers," he said, "I'm going to reduce the cost of your daily meal by $20."

So, now dinner for the ten only cost $80. The group still wanted to pay their bill the way we pay our taxes.

So, the first four men were unaffected. They would still eat for free. But what about the other six, the paying customers? How could they divvy up the $20 windfall so that everyone would get his 'fair share'?

The six men realized that $20 divided by six is $3.33. But if they subtracted that from everybody's share, then the fifth man and the sixth man would each end up being 'PAID' to eat their meal.

So, the restaurant owner suggested that it would be fair to reduce each man's bill by roughly the same amount, and he proceeded to work out the amounts each should pay.

And so: The fifth man, like the first four, now paid nothing (100% savings). The sixth now paid $2 instead of $3 (33% savings). The seventh now paid $5 instead of $7 (28% savings). The eighth now paid $9 instead of $12 (25% savings). The ninth now paid $14 instead of $18 (22% savings). The tenth now paid $49 instead of $59 (16% savings).

Each of the six was better off than before. And the first four continued to eat for free. But once outside the restaurant, the men began to compare their savings.

"I only got a dollar out of the $20," declared the sixth man. He pointed to the tenth man "but he got $10!"

"Yeah, that's right," exclaimed the fifth man. "I only saved a dollar, too. It's unfair that he got ten times more than me!"

"That's true!!!" shouted the seventh man. "Why should he get $10 back when I got only $2? The wealthy get all the breaks!"

"Wait a minute," yelled the first four men in unison. "We didn't get anything at all. The system exploits the poor!" The nine men surrounded the tenth and beat him up.

The next night the tenth man didn't show up for dinner, so the nine sat down and ate without him. But when it came time to pay the bill, they discovered something important. They didn't have enough money between all of them for even half of the bill!

And that, boys and girls, journalists and college professors, is how our tax system works. The ones who get the most money back from a reduction are those who paid in the most. Tax them too much, attack them for being wealthy, and they just may not show up at the table anymore. There are lots of good restaurants in Europe and the Caribbean.

David R. Kamerschen, Ph.D Distinguished Professor of Economics 536 Brooks Hall University of Georgia


Book Review - American Roulette by Richard Marcus

Category Book Reviews

Not all my recreational reading is fiction...  :-)  I recently finished American Roulette by Richard Marcus.  This book tells the story of Marcus and his 25 year career of cheating casinos all over the world.  While a little repetitive at times, it's a fascinating look into a world that many of us know nothing about.

Marcus started out as a dealer in Las Vegas after losing a bundle and ending up sleeping under a bridge.  His personality attracts the attention of a team of casino cheats who enlist him into their group.  He learns the art of "pastposting", which is learning how to switch chips after the outcome of a game is known.  This can involve either adding more chips to a winning bid or removing high-value chips after a loss.  This pastposting routine is used successfully at roulette, craps and blackjack, and Marcus starts to travel the world.  His team quickly becomes known world-wide by casino management, but they are unsuccessful at catching and stopping the team.  He "retired" a couple years ago, never having been caught and convicted during his 25 year career.

The story is an interesting look at the mentality of casino and cheats, as well as the psychology involved in pulling off successful scams.  It's also interesting to see how the team progresses from $100 moves to $10000 moves over the years.  I'm a little surprised that he would be as detailed as he is, as it seems like law enforcement could use this as a "confession" of sorts to prosecute him after the fact.  Regardless, it's a good read that will make you view casinos in a new light.


Outsourcing... It's not just for the United States any more... :-)

Category IBM/Lotus

In the latest issue of Computerworld:  IBM wins 10-year outsourcing deal from Indian telecom firm

I can imagine the conversations in the hallway there...  

"It's not fair!  We're going to be rebadged to IBM employees, and then we'll be laid off over the next year as our jobs are moved to some cheaper programmers in Malaysia.  We need some sort of protection from our government.  What are companies thinking?  Pretty soon we'll be nothing more than a country full of unemployed programmers working at restaurants asking if there's anything else we can get for the customer.  All because companies want to save a few more dollars.  

"Perhaps we should form a union..."


My Java For The Domino Developer session for e-Pro is in the books...

Category IBM/Lotus

I did a presentation for the e-Pro Online Conference this week.  It was on Java for the Domino Developer, and covered how the Domino developer who knows LotusScript can leverage that knowledge to start writing Domino agents in Java.  Similar to the material that Runtbert and I covered at Lotusphere, only I did this one solo using Webex.  I missed not having Joe there to play off of, but I guess that's what he gets for moving away to Tampa.

You can download the PDF file of the slides and the sample database from the session if you're interested.

If you attended the session (either live or during the playback for the next 90 days), I'd be interested in getting your feedback on the material (and fine, you can comment on the presenter, too!).  Or, if you just download the slides without viewing the session, feel free to comment on that, too.

Thanks again!


This has got to strike some fear into Jeff Skilling's heart...

Category Everything Else

And this guy didn't even get much of a kickback from it all...  When you compare this crime to what Skilling presided over during the Enron collapse, "life imprisonment" seems appropriate...


Ex-Dynegy Exec Gets 24 Years for Fraud

By C. Bryson Hull

HOUSTON (Reuters) - A federal judge on Thursday sentenced former Dynegy Inc. (NYSE:DYN - news) tax executive Jamie Olis to 24 years in prison for his role in an Enron-style scheme to burnish the company's finances by disguising a $300 million debt. The 38-year-old lawyer and accountant was convicted in a November trial of six counts of criminal conspiracy and securities, wire and mail fraud for his role in the complicated 2001 financial transaction dubbed "Project Alpha." U.S. District Judge Sim Lake also fined Olis $25,000.

Lake, who presided over Olis' trial, said he took no pleasure following the federal laws that dictated such a stiff sentence for a first-time white collar offender.

"Sometimes good people commit bad acts, and that is what happened in this case," Lake told Olis. He permitted Olis to remain free on bond and turn himself in to prison.

The judge said he was required to give Olis a sentence of between 24 and 30 years, five years shy of the maximum, based on the massive losses Dynegy shareholders suffered as a result of Project Alpha's repercussions.

Olis, who was already choked up as he stood before the judge, had no visible reaction to the sentence, read in a courtroom filled to capacity with his family, supporters and ex-Dynegy colleagues.

New laws enacted last year in response to a wave of corporate chicanery, and in 2001, stiffened the penalty range for white collar crimes, putting them equal with offenses like bank robbery.

Michael Shelby, U.S. Attorney for the Southern District of Texas said Olis' harsh punishment was deserved, since thousands of investors lost their savings over Project Alpha.

Shelby said the investigation into Alpha is active, but would not say if the probe was focusing on six unindicted co-conspirators named during the Olis trial, including Dynegy's former chief financial officer.

Olis' attorney, David Gerger, criticized prosecutors for focusing on a lower-level executive like Olis instead of on his bosses.

"The government is on a witch hunt, and today the witch hunt netted a very small fish," Gerger told reporters. He said he had not yet decided whether to appeal.


The fate of Olis, one of the first executives to go to trial and be sentenced in an Enron-style fraud case, demonstrated that the days of a slap on the wrist for business crime are over.

David Adler, a Houston criminal defense lawyer, said the sentence was "far beyond the average for white collar crime."

"But the other tragedy of this case is that it may convince people who have done nothing wrong to plead guilty instead of go to trial, as the lesser of two evils," he said.

Adler said he expected Olis would serve at least 20 years, with time off for good behavior.

Olis, who worked in the Houston-based energy merchant's tax department, was a key engineer of Alpha. The deal dressed up a $300 million loan as a five-year gas trade to help boost cash flow and hopefully, Dynegy's stock.

Dynegy's cash flow had been lagging earnings, causing consternation -- and a lower share price -- on Wall Street. The deal also helped Dynegy claim an improper $79 million tax benefit, later rescinded.

Dynegy's stock lost more than half its value on April 26, 2002, the day after the Houston company disclosed a U.S. Securities and Exchange Commission (news - web sites) investigation into Alpha.

It also had to reclassify the $300 million as debt, pay the SEC a $3 million fine and restate its 2001 earnings downward by 12 percent. The total losses to investors were in the billions.

Two other Dynegy employees, Helen Sharkey and Gene Shannon Foster, Olis' boss, each pleaded guilty to conspiracy to commit securities fraud and agreed to cooperate with prosecutors. Lake is due to sentence both on Aug. 19, and each faces a maximum of five years in prison.


Book Review - Writer's Encyclopedia 3rd Edition

Category Book Reviews

If you're confused about terms you find when dealing with the world of media, then the Writer's Encyclopedia can be helpful.  Trying to read the book from cover to cover is like reading a dictionary (not recommended, but I did it anyway), but you will learn plenty of new facts you may not have known otherwise.  For instance, a cutline is the text that accompanies a picture.  A frontispiece is the page immediately preceding the title page illustrating the book's major theme or subject.  And a peg is an angle that a nonfiction writer uses to develop an article.  All good stuff.

Since this was published in 1996, there are plenty of outdated entries for computer technology.  Compuserve isn't the leading dialup internet provider any more.  :-)  But many of the terms and entries are still applicable.  A solid book for budding writers.


Book Review - Write More, Sell More by Robert Bly

Category Book Reviews

More reading on writing...  :-)  This time, it was Robert Bly's book Write More, Sell More.  This book appeals to me as it addresses a core value I hold dear...  making money.  And if you are looking at freelance writing as your sole means of income, I would recommend you get a copy of this book.  It will help you think through many of the issues surrounding looking at your writing as a business.

Some writers will probably look at this book as a crass attempt to reduce the art of putting words on paper to nothing more than a means to make money.  But realistically, if writing is what you do for a living, that's what it comes down to.  He discusses what it takes to write faster and better, as well as what it takes to be a more prolific writer.  Some of these tips are common sense (set regular work hours, set writing goals), and some are different ways of looking at your work vs. pay.  For instance, writing two articles in one day for $1000 is better than writing one article over 2 days for $1750, in that you are getting a better hourly return for your labor.  Multiple lower paying jobs that can be cranked out in hours can be more lucrative than one single premium article that takes a longer time to finish.  That's not to say that a longer article is always a bad idea, especially if it gains you entry into a new publication or outlet.  But you should always keep the ratio of time expended to dollars received in order to maximize your only commodity...  time.

Some parts of the book are a little dated (this was written in 1998) when it comes to computers and technology.  But that doesn't detract from the overall message.  Also, some people might be put off by what seems to be a "aren't I good at this?" attitude that occasionally seeps in.  Still, there is plenty of material here that will help you as a writer realize a better return on your effort when it comes to the check.


Microsoft's "Shared Source" program... :-)

Category Microsoft

From Computer Business Review Online:  Microsoft Crunches Numbers On Shared Source

My favorite quote:  

One million customers in government, partner companies and academia are now participating in Shared Source, the program that allows non-Redmond engineers to view the Windows source code, Microsoft said yesterday.

So *that's* how many people downloaded the code that got into the wild...  I was wondering...  :-)


Book Review - The First 48 by Tim Green

Category Book Reviews

Since I recently picked up a Tim Green novel and really liked it, I got a copy of his latest book and finished it this morning.  The book is called The First 48, and it's a very good crime thriller.  Jane Redmon is a newspaper writer, and she's been fed some information from a secret source that could destroy a senator's career.  The editors at the paper let her write the story, but before she can hit the deadline she disappears.  Her father, Tom Redmon, had his career as a prosecutor ruined by the same senator, and he's now an alcoholic lawyer and just scraping by.  But when he learns of his daughter's disappearance, he starts the manhunt himself.  The title comes from the adage that kidnappings that go more than 48 hours without being solved generally don't get solved or a body turns up.  He has 48 hours to find his daughter, and will do just about anything to get it done.

As a story, I liked the writing and pace.  The 48 hour countdown did lend a certain urgency to the search, but it was a little too convenient at the end.  Some nice plot twists along the way, and you're not quite sure who is good or bad.  The alcoholism slant doesn't really come into play much, and it could have been dropped with no effect on the story.  Regardless, not perfect, but it is entertaining.


Book Review - Security Warrior by Cyrus Peikari and Anton Chuvakin

Category Book Reviews

Book Review – Security Warrior

Security Warrior – Cyrus Peikari & Anton Chuvakin
1st edition, 2004, 531 pages, O’Reilly Publishers

Target Audience
Intermediate to advanced programmers, network administrators, or security administrators who need an in-depth understanding of how software and systems can be exploited.

This is a detailed guide on how to reverse-engineer and analyze software and systems for vulnerabilities and exploits.  

The book is divided into five parts:

Part 1 – Software Cracking – Assembly Language; Windows Reverse Engineering; Linux Reverse Engineering; Windows CE Reverse Engineering; Overflow Attacks

Part 2 – Network Stalking – TCP/IP Analysis; Social Engineering; Reconnaissance; OS Fingerprinting; Hiding The Tracks

Part 3 – Platform Attacks – Unix Defense; Unix Attacks; Windows Client Attacks; Windows Server Attacks; SOAP XML Web Services Security; SQL Injection; Wireless Security

Part 4 – Advanced Defenses – Audit Trail Analysis; Intrusion Detection Systems; Honeypots; Incident Response; Forensics and Antiforensics

Part 5 – Appendix

“Know Your Enemy”.  This phrase is on the cover of the book Security Warrior, and it is an apt subtitle for the book.  Very few security books on the market today do more than just tell you about the types of software and network attacks that exist.  Peikari and Chuvakin go beyond the “what” of attacks and show you “how” to exploit systems and software.  

This book is definitely geared to the experienced developer or network administrator.  For instance, the first eight pages is an explanation of assembly language, registers, stacks and the like.  Each following chapter on reverse engineering then takes that knowledge and walks you through how to analyze an executable using tools that you can purchase or download.  Obviously, if you have absolutely no assembler language knowledge, you’ll be lost here.  But if you have that background, you’ll start to learn how hackers develop exploits, and how you can build more secure software once you understand the vulnerabilities.

At the end of each chapter, the authors list a number of additional references (both books and websites) that can help you to further your understanding of the material presented.  This is a great addition if you are looking to focus in on a particular type of attack, like those related to wireless security.  At the website for the book, they have also made sample programs available that can be used by the reader to work through exercises in the book.  For instance, when they present information on reverse engineering, they also provide a sample program that you can analyze and crack.  A perfect way to lead the reader from theory to practical knowledge.

The argument could be made that this book could be used by crackers to learn how to break software.  The reality is that this information is already out there.  A book like this will help those who are trying to prevent break-ins understand the methods that are being used against them.  And henceforth, the sub-title “Know Your Enemy”.

One caveat about the book…  Be very careful with the material presented in the reverse engineering section.  Under the Digital Millennium Copyright Act (DMCA), reverse engineering can be considered a crime in certain circumstances.  The authors acknowledge this, and that’s probably why they provide their own sample programs for you to work on.  Still, just remember that this knowledge, if misused, could land you in some very hot water.

My only complaint about the book…  The sumo wrestlers on the cover really needed to be bigger…  

This is one of the few books that goes beyond the “what” and deals with the “how” of system and software security.  A thorough reading and study of this book will arm you with the tools and knowledge you need to analyze and bight back against software attacks.  


Are IBM/Lotus conferences turning into Microsoft recruitment events?

Category IBM/Lotus

03/20/2004 - To make sure this entry doesn't become abusive or derogatory, I reserve the right and *will* block any comments that cross the line from discussion to personal attacks.  Of course, it's at my discretion...  :-)  Tom


I'm seeing a trend develop at IBM/Lotus conferences, and I find it a little disturbing.  It's the inclusion of subjects, and more specifically speakers, who have a vested interest in seeing Domino developers become Microsoft developers.  I'm not talking about sessions on how to integrate Word or Excel into your Notes application.  I'm talking about sessions on how to use Visual Studio .Net to write .Net applications that use Domino, given by people who are Microsoft evangelists.  My opinion...  this is questionable session content given by inappropriate individuals.

First, the subject matter...  I'm not against discussing Microsoft technology at an IBM conference.  Rocky Oliver did some cool stuff with Excel integration in a session at Lotusphere, as well as John Head and his Office integration material.  But the main focus was using Domino to do cool things with Microsoft software.  The focus is still Domino, and the goal is to extend your Domino skills.  I think that's completely appropriate for the focus of the conference.

At a recent German Lotus conference, Gary Devendorf was invited to speak.  He's now a Microsoft "evangelist" and is focusing on exposing Domino developers to .Net.  There was apparently a Domino.Net session, along with an Intro to Visual Studio.Net For The Domino Designer session.  Here is where the line gets a little fuzzy.  We've switched from using Domino to integrate with Microsoft.  We're now talking about how you can use Microsoft technology to manipulate Domino.  It's not semantics.  It's a fundamental shift in focus.  If you are building a Microsoft application, there is less inclination to incorporate IBM/Lotus technologies (just as Microsoft would like it).  If Microsoft can get you to shift your focus to their platform as primary, they've won a significant battle.  While this might be very good information to know, I find it to be marginally inappropriate for an IBM/Lotus conference that I'm paying money for.  Gary will also be speaking at the Lotus Advisor conference coming up.  Once again, I'm sure Microsoft loves having that venue...

Now, my main objection...  the speaker.  Actually, more the speaker's bias than Gary himself.  I enjoyed Gary's sessions at Lotusphere when he was the LotusScript product manager.  The guy is a great speaker and does great demos.  But in his new position as evangelist for Microsoft, and with his stated bias, I find his inclusion at Lotus conferences completely inappropriate.  Here are a few quotes from his blog (material copied as published there):

My titile is "Technical Evangelist". Every evangelist must do missionary work from time to time. Now its my turn. The EntwicklerCamp 2004 is a German Notes Developers conference. I heading there tonight. It will be great to talk with fellow Notes junkies. I'm arguably the biggest fan of Notes/Domino at Microsoft or even IBM. My mission is to "save" Notes developers by showing them how they can leverage their existing Notes skills and applications with the .Net platform. I have drunk the Kool-Aid (in this case I mixed it myself). I'm hoping my bag full of "Domino.Net" demos with help developers see the light. They have options. They have brains. Now is the time to use them.

Folks seemed pleased to see how easy it is to work with .Net and Notes/Domino.  I use VB.Net for my demos because it reads like LotusScript.  The only obstacle keeping everyone from going home and trying these demos is that less than half of the attendees had access to Visual Studio.Net.   We need to fix this.

If only I could have shown Sharepoint, InfoPath MS Office 2003 and One Note.  It would blow there socks off.   I better get working a new demos.

Rudi ask “What do we have to do to get you back here next year?”  The answer is easy, just let me bring a few friends.

Now...  does this sound like someone who wants to help you be a successful Domino developer using Domino technologies, or a converted Microsoft developer who still needs to use Domino until they can get rid of it entirely?  I wasn't aware I needed to be "saved" from anything, nor do I need to "see the light".  Gary is very clear that he is less than pleased with how IBM treated him, and is now as pro-Microsoft as he used to be pro-Lotus.

Is there a need for Domino developers to know .Net?  The reality of life in the business world says yes.  There are plenty of businesses that use both technologies, or are converting away from Domino to .Net.  These sessions could be useful in helping developers who need that information to make a proper transition.  But if it's that important to Microsoft to get this information out there, let them include it in their own conferences.  I still find it somewhat amazing that Gary isn't speaking at the .Net Advisor conference, but is speaking at both the Lotus and WebSphere Advisors.  How many sessions are they going to let Ed Brill do at .Net Advisor on converting to a secure Domino messaging system?

If I'm going to an IBM/Lotus conference to learn and understand IBM/Lotus software and strategy, I do not expect (nor welcome) a speaker who has a title of Microsoft evangelist, and who is trying to get me to consider the use of Microsoft tools to build my applications.  My time is valuable, and I did not pay good money to view sessions on how to shift my development focus to a different company and platform.

Is Microsoft going to try and sponsor the MS track at next year's Lotusphere?  I'm sure they'd pay good money for *that* one...


A Tiger Is Coming! - Why J2SE 1.5 Is Important

Category Software Development

I got this article in a newsletter from McGraw-Hill Osborne today, and thought it was interesting...  Tom


A Tiger is Coming!
Why J2SE 1.5 is Important
by Herbert Schildt

Soon, Sun Microsystems will be releasing the next version of Java, and in the process they are once again putting Java at the forefront of computer language design. Codenamed "Tiger", this new release is called Java 2 SDK, Standard Edition, version 1.5.0, or J2SE 1.5 for short. Unlike most of the previous Java upgrades, which offered important, but incremental improvements, J2SE 1.5 fundamentally expands the scope, power, and range of the language. Not since its original version nearly a decade ago has a release of Java been so important, or so eagerly awaited.

J2SE 1.5 contains major enhancements to both the Java language and its core libraries. Many of these, such as generics, autoboxing, and enumerations, have been desired by Java programmers for many years. Others, such as metadata, are forward-thinking innovations that point toward even more far-reaching developments in the future. In both cases, they will fundamentally affect the way that all Java programmers write code.

To understand why J2SE 1.5 is so important, consider the following list of major new features.

  • Generics Generics have been long awaited by Java programmers. At its core, the term generics means parameterized types . Parameterized types are important because they enable the programmer to create generic methods, classes, and interfaces, in which the type of data upon which they operate is specified as a parameter. With generics, it is possible to create a single class, for example, that automatically works with different types of data. Thus, generics expand the programmer's ability to re-use code. As a point of reference, generics in Java are similar to templates in C++.

    In addition to promoting code reuse, generics add type safety. Because the generics mechanism implicitly handles type conversions, explicit casts are not required. Thus, casting errors are avoided and the compiler can flag type-mismatch errors.

    Generics represent a major change to the core of the Java language. Their addition required an entirely new syntactical element, for example. The expressive power they add to the language will profoundly change the way that Java code is written.
  • Metadata The new metadata facility lets you embed annotations into a program. The annotations are then processed by various programming tools. For example, a tool might generate Java source code as requested by an annotation.. The Java metadata facility is part of a growing trend in programming in which the programmer specifies an action but leaves it to a tool to actually provide the code. Such an approach reduces the amount of repetitious code that a programmer must enter by hand.
  • Autoboxing/unboxing Autoboxing is the feature that lets Java automatically encapsulate a primitive type, such as an int , in a class. Auto-unboxing is the reverse process; a primitive type represented by a class is automatically converted into its corresponding primitive type. Because they streamline many common programming operations, autoboxing/unboxing are an addition that all Java programmers will welcome.
  • Enumerations In essence, an enumeration is a named list of constants. The enumeration type is supported by the new keyword enum . In the past, when such constants were needed, they were typically coded as static final. An enumeration offers a much better alternative. In Java, enum declares a class type, which means that an enum can have methods and fields. This gives enum capabilities in Java that surpass its counterpart in other languages (such as C++).
  • Enhanced for Loop J2SE 1.5 adds a "foreach" capability to the for loop. This enhancement lets the for cycle through the contents of a collection or an array, from beginning to end, with ease. In programming, such tasks are quite common. For example, to sum the values in an array, each element in the array must be examined. Previously, one would write such a loop like this:

    for(int i=0; i < nums.length; i++) sum += nums[i];

    Using the enhanced for loop, the preceding statement can be recoded as shown here.

    for(int v : nums) sum += v;

    The new form automatically obtains each value in the array, one at a time, beginning with the first element, and stores that value in v. This new "foreach" feature not only simplifies a common construct, but makes it safer, too, by preventing boundary errors.
  • Varargs Varargs, which is short for variable-length arguments , is a new feature that lets a method take a variable number of arguments. The addition of varargs makes it easier to code methods whose argument list varies from call to call.
  • Formatted I/O J2SE 1.5 offers an alternative way to input or output formatted data. For output, the programmer can use the new printf( ) method, which is based on the well-known C language printf( ) function. Formatting capabilities are also available through the new Formatter class. The new Scanner class assists with reading formatted input.
  • Static Import The static import feature streamlines access to the static members within a class. When using static import, it is possible to refer to static members directly by their names, without having to qualify them with their class names. For example, prior to the static import facility, a method in Java's math library needed to be qualified with the Math class, as in Math.cos( ) . With static import, the program can import the static members of Math and then refer to the static methods directly, as in cos( ) .
  • Major Changes to the Collections Framework The Java Collections Framework provides off-the-shelf solutions to a wide variety of common programming problems that pertain to groups of objects. For example, the Collections Framework supplies classes that implement lists, sets, and maps. J2SE 1.5 completely updates this powerful subsystem so that it takes advantage of generics and autoboxing. This makes using collections both easier and safer. J2SE 1.5 also updates the Collections classes for use by the enhanced for loop. Accompanying these major changes, are many smaller, but valuable enhancements that further expand the power and applicability of the Collections Framework.
As the preceding list shows, the additions to Java are quite significant. Instead of simply tweaking a feature here or adjusting a nuance there, J2SE 1.5 fundamentally expands the language. This level of innovation is seldom seen in a language as mature and widely used as Java. In general, computer languages usually follow a "life cycle" that begins with a burst of creativity and innovation, followed by a long period of widespread use and stability, and ending with the language being used to maintain "legacy" code. Java is now in the middle period of its life cycle. It would normally be settling down into a long period of tranquility, resting on its laurels, so to speak. But Java isn't following the rules!

Since the beginning, Java has been at the center of a culture of innovation. Its original release redefined programming for the Internet world. The Java Virtual Machine (JVM) and bytecode changed the way we think about security and portability. The applet (and then the servlet) made the Web come alive. The Java Community Process (JCP) redefined the way that new ideas are assimilated into the language. It should come as no surprise that Java continues to push the frontiers of programming.

Because of the significance and number of new features in J2SE 1.5, my book Java 2: The Complete Reference is undergoing a major rewrite and revision. First, I am adding two new chapters: one covering generics and the other discussing metadata. Second, Chapter 15, which describes the Collections Framework, is being revised to reflect the many changes caused by generics, autoboxing, and the enhanced for loop. Third, there are major additions to several existing chapters that cover enumerations, the enhanced for loop, autoboxing, static import, formatted I/O, and varargs. Fourth, there are numerous updates throughout Part Two (which covers the Java Library) because of the changes caused by the addition of generics. Finally, the next edition of Java 2: The Complete Reference will also include expanded coverage of Swing and an overview of Web application development.

With the release of J2SE 1.5, the world of Java programming will change. Many of the techniques that programmers have relied on in the past will be outdated, being replaced by better, more powerful constructs. Programmers who fail to adopt the new strategies will soon find themselves left behind. Frankly, in the competitive world of programming, no Java programmer can afford to be left behind.

A picture named M2Herb Schildt (Mahomet, IL) is a leading authority on Java, C, C++ and C#. His programming books have sold more than 3 million copies worldwide and have been translated into all major foreign languages. He holds a master’s degree in computer science from the University of Illinois. His most recent title is The Art of Java with James Holmes.


Book Review - The Craft Of Research

Category Book Reviews

I picked up the book
The Craft Of Research by Wayne Booth, Gregory Colomb, and Joseph Williams at the library awhile back, and I finished it over the course of this week.  Not quite what I was expecting, but useful if you buy it for the right reason.  I was looking for something more geared towards doing research for articles and such.  This is geared towards the college student or professional researcher who has to produce research papers on a regular basis.  It teaches you how to formulate your argument and properly research your material to make and prove your points.  Probably very helpful if you have an actual project to do at the time you're reading it.  Definitely a reference book you'd want to have on your shelf.

That's not to say that you couldn't gain some insight on article writing from this book.  It's just, in my opinion, a bit too advanced for the type of writing I would do.  But because it covers the target audience well, I can't complain.


Book Review - Mr. Paradise by Elmore Leonard

Category Book Reviews

I keep picking up Elmore Leonard novels thinking I should like them for their quirky nature.  And nearly every time I finish one I'm disappointed.  His last one, Tishomingo Blues, was a *huge disappointment*.  Ever the optimist, I just finished Mr. Paradise in the last day or so.  And like normal, I'm sitting here going "eh, so-so".  

It's a "Detroit crime novel", which is different than his last few books.  The story revolves around a pair of high-priced escorts/fashion models that end up at the house of an old guy who has purchased their "services" on an ongoing basis.  The guy and one of the girls is murdered, and the guy's main "servant" is apparently in on the crime.  He wants the remaining girl to assume the identity of the dead girl so that he can get the contents of a safe deposit box that is supposed to contain his "inheritance".  The head detective on the case is falling for the girl but has to watch himself because she is a material witness to the crime.  He has to solve the crime and keep her alive from the two hitmen that pulled off the original murder.

It's not a bad novel, and infinitely better than his last one.  But at the end, I just didn't get any feeling of excitement or anticipation.  The story just moved along, but I never got caught up in it.  If you're looking for something to read and this one's available, it's better than nothing.  But don't expect to get your socks blown off.


Final game of the hockey season last night...

Category Everything Else

A picture named M2

Cam (left) and Ian (right) played their last game of the hockey season last night.  It was the first round of the playoffs, and they were matched against one of the strongest teams in the league.  We gave up three goals in the first period, and then it started getting ugly.  We only had three people on the bench to begin with, and with a couple of game misconducts on our players, we were down to the five players on the ice and the goalie with about five minutes left in the second.  The question then became not "were we going to lose", but "would the game go the distance without Ian getting in a fight and the game being called because we didn't have enough players left".    To their credit, they made it until five minutes left in the game.  There was a scramble in front of the net.  Someone ran into Cam, Cam crosschecked him to the ice, the ref called the penalty, and Ian grabbed ahold of a kid and tried to go with him.  No punches got thrown, and that was the game.  

So, the season started out with great promise but didn't end as it could have.  Still, there *were* highlights this year (wins and even a shutout!) where last year's record was 0-22.  This picture will be the last one of Ian and Cam playing together on the same team, as Ian graduates this year.  Rather sad to see another passing event in their young lives, but they *are* growing up.


Opening Left Parentheses Character "(" as First Character in View or Folder Hides Element in R5

Category Software Development

I *so* wanted to blame Runtbert for this one...  At my new job, we had a name lookup routine that used a view that just had the opening parenthesis in it.  Since it was Joe's routine, I decided to ask him if he did that on purpose for some reason.  He quickly denied that the view was his, and he only used the view that was already present in the NAB.  So I guess with this KnowledgeBase item, it helps to solve the "what" of what was happening.

Opening Left Parentheses Character "(" as First Character in View or Folder Hides Element in R5

Document Number:  1087273

The documentation and Online Help for Domino Designer R5 states that in order to hide a design element such as a view or folder, the name of the element should be enclosed in opening and closing parentheses, for example (All).  In R5, however, design elements are hidden even when only the first character in the name is the opening left parentheses "(" character.  In Domino 4.5 and 4.6, the entire name had to be enclosed in order to hide the design element.  The following table illustrates the problem:

View or Folder Name Result in 4.5x and 4.6x Result in 5.x
(January) Hidden Hidden
(1) January Visible Hidden
January (1) Visible Visible

This issue is a problem when databases are migrated from R4 to R5 and views that were previously visible are now hidden.

This issue was reported to Lotus Quality Engineering and has been addressed in Notes 6.0.  Notes Domino 6 functions similarly to how Notes 4.x does.  If any views were created with only an opening parentheses at the beginning of the view in R5, they will be visible in Notes 6.  Designers do need to enclose the view name in both parenthesis.

As a workaround for 5.x, rename the design element so that the left parentheses character is no longer the first character in the name.


@Environment Trims Extra Spaces when Returning Values from Notes.ini

Category Software Development

This is one of those sneaky problems that you might miss if you quickly glance at your ini variable and don't notice that you have two spaces instead of one...  From the KnowledgeBase...

@Environment Trims Extra Spaces when Returning Values from Notes.ini

Document Number:  1087102

The @Environment function removes extra spaces when returning values from the Notes.ini.

If an environment variable is written to the Notes.ini that contains extra spaces, it is successfully recorded.  Such as:

"$MyVariable=this has extra    spaces"

However, when you retrieve this value using @Environment the extra spaces are removed.  The value that is returned is now "this has extra spaces".

This issue was reported to Lotus Quality Engineering and it was determined to be working as intended. The @Environment function is designed to remove extra spaces in returned variables.

An enhancement request has been submitted to Lotus Quality Engineering requesting that @Environment always return values exactly as written, and does not remove extra spaces.

As a workaround it is possible to place special characters (for example @, %, or #) in the variable where spaces are desired, and then parse the variable after it is returned to replace the special characters with spaces.

Supporting Information:

Steps To Reproduce Problem:

To set the variable:
@Environment("MyVariable";"this has extra    spaces")

Notes.ini now reads as follows:
MyVariable=This has extra      spaces

To retrieve the variable:
value := @Environment("MyVariable");

The Value returned is "this has extra spaces".  Note that the spaces have been trimmed.


You know it's been awhile since you cooked anything...

Category Humor

I decided to make pancakes for Ian and Cam this evening.  I was thinking they sounded pretty good, too.  About halfway through the process, Ian took a look at the results and asked the all-important question...

"Did they suffer much?"


Book Review - Java Servlet And JSP Cookbook by Bruce W. Perry

Category Book Reviews

Book Review – Java Servlet & JSP Cookbook

Java Servlet & JSP Cookbook – Bruce W. Perry
1st edition, 2004, 723 pages, O’Reilly Publishers

Target Audience
Web developers who are looking for real-life examples of the use of servlets and JSP.

This is a companion-type book that goes beyond strictly reference material to the use of different servlet and JSP features, along with working examples of code to illustrate the concepts.

The book is divided multiple chapters that each cover a different technique or function:

Writing Servlets and JSPs; Deploying Servlets and JSPs; Naming Your Servlets; Using Apache Ant; Altering the Format of JSPs; Dynamically Including Content In Servlets and JSPs; Handling Web Form Data in Servlets and JSPs; Uploading Files; Handling Exceptions in Web Applications; Reading And Setting Cookies; Session Tracking; Integrating JavaScript with Servlets And JSPs; Sending Non-HTML Content; Logging Messages from Servlets and JSPs; Authenticating Clients; Binding, Accessing, and Removing Attributes in Web Applications; Embedding Multimedia in JSPs; Working With The Client Request; Filtering Request and Responses; Managing Email In Servlets and JSPs; Accessing Databases; Using Custom Tag Libraries; Using The JSTL; Internationalization; Using JNDI and Enterprise JavaBeans; Harvesting Web Information; Using the Google and Amazon Web APIs

I really like the O’Reilly Cookbook series.  I read a lot as part of my ongoing study, and often it’s easy to understand conceptually what is going on.  But making the jump to practical solutions can be difficult at times.  The Cookbook series gets plenty of use on my bookshelf as I do my day to day coding.  And when it comes to servlet and JSP coding as I continue to learn more about Websphere Application Server, this book will surely become dog-eared like the rest of them.  Bruce Perry has done a great job.

As with most Cookbook titles, each chapter in the Servlet And JSP Cookbook is made up of a number of Problem/Solution/Discussion groupings.  This format proposes a coding problem, states the solution to solve it, and then devotes the necessary space to discuss the solution both with text and code.  By using this format, you can think through a working solution and determine how to apply that technique to your own problem.  Perry covers a wide range of problems that will help both the beginner and the experienced coder.  For beginners, the solutions for setting cookies with servlets and JSPs may be just what you need to get started.  Experienced people will find the internationalization and JNDI/Enterprise JavaBeans solutions useful.  I appreciate the fact that coders of all experience levels can get something out of this book.

The only caveat I have on this book is that it is very focused on the Tomcat and WebLogic web application servers.  If that’s your platform of choice, you’re going to get everything this book has to offer.  For me, I’m partial to the WebSphere platform.  While I will benefit from a lot of this book, there are chapters that will have no appeal to me, such as using the Ant package.  I will also need to pay attention to the coding examples to make sure that the techniques are coded correctly for my platform of choice.  Even with that warning, I would still highly recommend this book to all coders working in this area.

This is definitely a title that will be useful to you as you learn more about servlet and JSP programming.  It will give you the ideas you need to solve real business problems you’ll encounter as a developer.  


More Non-US IBM News...

Category IBM/Lotus

IBM To Double Workforce In Calcutta By December

IBM Plans Regional Research Hub In Asia

Makes me wonder what new job cuts/migrations might be announced here in the US...


Book Review - Java Examples In A Nutshell by David Flanagan

Category Book Reviews

Book Review – Java Examples In A Nutshell

Java Examples In A Nutshell – David Flanagan
3rd edition, 2004, 701 pages, O’Reilly Publishers

Target Audience
Java developers who are looking for working examples of code that illustrate specific concepts.

This book is a companion volume to the Java/Java Enterprise/Java Foundation Classes In A Nutshell books.  It provides code examples for many of the classes used in those books.

The book contains the following chapters:

Part 1 – Learning Java – Java Basics; Objects, Classes, and Interfaces

Part 2 – Core Java APIs – Input/Output; Threads; Networking; New I/O; Security And Crytography; Internationalization; Reflection; Object Serialization

Part 3 – Desktop Java APIs – Graphical User Interfaces; Graphics; Printing; Data Transfer; JavaBeans; Applets; Sound

Part 4 – Enterprise Java APIs – Database Access With SQL; XML; Servlets and JavaServer Pages; Remote Method Invocation; Example Index

Often when you are learning Java or exploring a new aspect of the language, it’s difficult to make the bridge from the raw documentation to working code.  The O’Reilly “Examples In A Nutshell” series is designed to make that transition from theoretical to practical, and David Flanagan’s Java Examples In A Nutshell is no exception.  It should be an essential part of your personal library if you are a Java professional.

Rather than spend time teaching the reader a particular class, the book assumes that you have one of the other Java Nutshell books for all the details of the class.  In this volume, Flanagan jumps right into complete, well-documented examples of code that use those classes, thereby giving you a feel for how they work.  Because he documents his code better than most of us do, there isn’t that waste of time trying to figure out what the coder intended.  The examples are easy to follow, and they are definitely helpful when you are working through the details of an unfamiliar class or concept.  I often find myself looking through the chapters when I’m coding just to get a glance at how someone else would code a solution.  It’s almost like having a partner to bounce ideas off of.

In this latest edition, the author covers some of the new features in Java 1.4 like the New I/O and Sound APIs.  Personally, I probably wouldn’t do much with the sound code, but the New I/O section will be useful.  He also covers the regular expression features which are new in the New I/O API.  While I would also want documentation on regular expressions since I’m not a Perl expert, these examples will help me when I get to the point I need to use them.

Quite simply, this should be a “must buy” for your Java library.  This book bridges the gap between reference material and your actual coding better than any other book of its kind.


Book Review - Cadillac Beach by Tim Dorsey

Category Book Reviews

Over the last couple of days, I finished Cadillac Beach by Tim Dorsey.  And if you've read (and enjoyed) any of Dorsey's prior novels, you'll also like this one.  It's great stuff...

For those of you who haven't read this series, it's hard to explain.  It's a Florida crime spree novel, with an abundance of humor and accurate observations on Florida life and culture.  The main character, Serge Storms, is an escapee from a mental institution who has a rap sheet a mile long and a very unique view of life.  The *very* basic plot in this book is that Serge is trying to track down the missing diamonds from the 1964 NYC Museum Of Natural History heist, along with proving that his grandfather didn't commit suicide (but was murdered).  And trust me, they are related.  Interspered throughout, you have mob kidnappings and killings, guided tours of Miami's seedy underbelly, invasions of Cuba, FBI and CIA involvement, The Beetles, Flipper, and various other random items that actually make sense in the story.  

Think Carl Hiaasen without limits, and you'll start to get a feel for where Dorsey goes with his writing.  Great fun!


Book Review - Write Where You Live by Elaine Fantle Shimberg

Category Book Reviews

Another "how to write" book I just finished was Write Where You Live - Successful Freelancing At Home Without Driving Yourself And Your Family Crazy by Elaine Fantle Shimberg.  It's a useful and humorous book on how to be a freelance writer while also trying to preserve your sanity at home (assuming that's where you do your writing).  Shimberg has been a freelance writer for over 40 years, and did much of that while trying to raise five kids.  You have to give her major kudos for pulling that one off.  She covers reasons for writing, how to structure your time, how to figure out what to write about, and much more.  There are a number of funny stories and witty observations sprinkled throughout, and you can tell she likes what she does.  There is also a fair amount of coverage on basic life issues, like organizational skills and believing in yourself.  If you're looking to do freelance writing, this would be a good choice for a read on how to get started.  The only criticism of the book I can make is that it was written in 1999 and computers are still looked on as an "option".  I really don't think that's the case any more...

And my favorite quote she used in the book...  by someone named Louis Untermeyer...  "Write out of love, write out of instinct, write out of reason.  But always for money."

I like the way that guy thinks!  :-)


Who is this "Johnson" person, and why does everybody email me about him?

Category Humor

There seems to be a fascination with some person named "Johnson" lately, and people seem to think I'm concerned about him.

They want to know if I'm satisfied with the size of my Johnson...  why ask me?  Ask Johnson.   Apparently he's got a medical problem, because there are a lot of offers to provide Johnson with drugs...  Must be some human growth hormone, as it's normally in some request to make him bigger.  Socially, he must be quite friendly, as there are some emails offering to introduce him to some attractive females.  That's really nice.

If I'm ever able to track this Johnson guy down, I'll make sure to forward all the email I've been receiving for him.  I feel bad that he's missing out on what seems to be very important emails...


Great regular season ending to the hockey league last night...

Category Everything Else

Last night was the last regular season game for the high school hockey league.  And even if my kids team goes nowhere in the playoffs (always a distinct possibility), it will be a memorable season....

The Grant team scored their first shutout ever, an 8-0 win!  And of course, this means that it was Cam's first ever shutout.  It's rather poetic justice, as it was against the same team that beat us 30+ - 0 last year...  of course, a *lot* of teams did that to us last year...

Ian had a very good game.  He didn't score, but he was hustling out on the ice and had three nice shots on goal.  Cam was dead on in goal.  He had some beautiful saves and was solid.

Now, a minor disclaimer...  We had about 12 players suited up, and they had 7.  It's very difficult to skate for three periods when you only have two people sitting on your bench to give you a breather.  I felt sorry for the other team, as it looked far too familiar to what our team did nearly every week last year.  But still...  it was nice to see a dominant win (and a shutout!) to end the season.

I'd have pictures, but I got roped into running the scoreboard at the last second.  Talking about all your mistakes showing up on the scoreboard for everyone to see...  :-)


A free Sametime Bot example you can download and play with...

Category Software Development

Ron Senykoff has released an example of a Sametime bot that allows you to get information from the Domino Directory.  If you're looking for a starting point on coding your own bot, here's a good place to start:


Good job, Ron!


Book Review - Blinded by Stephen White

Category Book Reviews

Stephen White is a favorite author of mine, and I thoroughly enjoyed his latest effort, Blinded.  In the latest installment, Alan Gregory is called on by a famous client to renew her therapy.  She drops a bombshell when she tells Alan that her husband has probably committed a number of murders.  Alan has to balance his ethical obligations against his legal requirements, while also trying to figure out what part of her story might be true and which part might be fabrication.  

But what's a good psycho thriller without subplots?  His wife Lauren is a district attorney in Boulder Colorado.  She also has MS, and she suffers a flair-up of her condition here.  There's some character development there as Alan and Lauren both learn to deal with one of her episodes.  Alan also discovers that there is a leak of confidential information about his clients, and he has to determine where it is coming from, and why it is happening...  All before it destroys his practice.  And finally, Sam Purdy, Alan's police detective friend, has his wife leave him after he suffers a heart attack.  He becomes involved in the potential murder investigation, but isn't quite sure why he feels compelled to do so.

A good read...  Not heavy on action until the end, but plenty of interpersonal stuff going on.  Probably not his best one in the series, but I still like it a lot.


e-Pro Magazine Online Conference - Lotus Technologies - March 22 - 26, 2004

Category Software Development


Looks like an interesting lineup...  Especially that short balding guy on Friday talking about Java...  :-)


Gary Devendorf and the Advisor conferences...

Category Microsoft

I received the brochures for WebSphere Advisor, Lotus Advisor, and .Net Advisor conferences within the last couple of days.  Gary Devendorf, who is now a "Microsoft Evangelist", is listed as a speaker for the WebSphere and Lotus Advisor conferences, but not the .Net conference...

Someone want to explain *that* one to me???


iWatch is getting closer...

Category Software Development

I was going to get iWatch cleaned up this weekend and submitted over to Bruce Elgort for release on OpenNTF.  But unfortunately, the copy I had was corrupted so I had to wait until today to get a new copy of it.  BUT!  It's cleaned up and Bruce has a copy.  He's playing around with it to make sure it works OK, and then we'll go for Release 1.0.

And for those who don't know, iWatch is a Notes client-based interface to the Google News Alert service.  Pretty simple in concept, but a very nice application that you quickly become addicted to...


Cookie Basics on a Domino Server

Category Software Development

Hmm....  warm cookies...  From the KnowledgeBase...

Cookie Basics on a Domino Server

Document Number:  7003813


General information on cookies, including what is a cookie, where there are saved, how to set and retrieve them, and how to view them.


This document covers the following areas:

1.        What is a Cookie?
2.        Wh
ere are Cookie Text Files Saved?
3.        $$HTMLHead
4.        HTTP_Cookie
5.        Cookie Tip

1. What is a Cookie?

The cookie mechanism allows a web server to store pieces of information on the client computer through the web browser.  These pieces of information, known as cookies, are stored on the client machine.  It is difficult or impossible for another web site to access a cookie which it did not set.

Most of the time, web servers set and retrieve cookie information using CGI scripts or Java programs, but it is possible to do basic cookie manipulations with Domino using the META tag in HTML headers files. Using $$HTMLHead, META HTTP-EQUIV can be used to send a set-cookie command. (Details below.)

A cookie is first stored in the browser cache.  When the browser quits, the cookie is stored in the cookie text file if there is an expiration date and if the expiration date is later than the current date.

This cookie can then be retrieved with an HTTP_Cookie field by the server which set it.  The HTTP_Cookie field is populated with the variable name and the contents/value of the cookie.  Only the cookie which was set by this server is returned to the HTTP_Cookie field.

2. Where are Cookie Text Files Saved?

Netscape Navigator:

Netscape Navigator stores cookies in a single text file with one row per cookie, listing the domain name and path of the web site which set the cookie.  The file name is cookies.txt under Windows in the Netscape directory and Magic Cookie on a Mac in the Netscape folder which is in the Preferences folder which is in the System folder.

Microsoft Internet Explorer:

Microsoft Internet Explorer stores each cookie as a separate text file named with the site domain name.  The filename is guest@<domainName>.txt under Windows in the Cookie directory in the Windows directory.

These files contain some binary data but can be viewed using any text editor.  The files should not be manually edited as they can easily be damaged by being edited and saved with a text editor.

3. $$HTMLHead

HTML code may be placed in the header area of an HTML document by creating a computed field named $$HTMLHead.  The formula for this field should contain HTML code in quotes with only HTML brackets <>. No square brackets [ ] are needed.

The following HTML in the header area of a Notes Web document will set a cookie with a variable called "var" with a value of "the Cookie" with the path of / (i.e. root) and with an expiration date of 11/9/99 at noon, GMT.

"<META HTTP-EQUIV=\"Set-cookie\" CONTENT=\"var=the Cookie;path=/;expires=Wednesday, 09-Nov-99 12:00:00 GMT;\">"

If the expires date is not included or is not set to a date later than the current date, the cookie will not be saved to the cookie text file when the browser is closed.

If a different path name is given, different cookies can be set for each path name.

Different values for different variable names may be set.  They are stored as separate cookies, but will all be retrieved for that site.

4. HTTP_Cookie

In order to retrieve the cookie information for a particular site and path name, create a computed field (of any type) with a formula of "".

When the .NSF file in that path is opened, this field will be populated with the cookie associated with that domain name and path in the form of variableName=value.  If more than one cookie is set for this domain and path, the values are delimited by a semi-colon:

"var1=cookie content; var2=more cookie content".

More complicated work with the cookie process can be accomplished using CGI scripts or Java.

5. Cookie Tip:

If a cookie is currently set in the browser memory, the following command entered in the URL box of the browser will display the cookie value at any time:

JavaScript: alert(document.cookie);

Related Documents:

Additional general information about the cookie mechanism includes:

Persistent Client State HTTP Cookies available from Netscape's web site at:



What Is the Maximum Size of the Notes.ini?

Category Software Development

OK...  If I *ever* get a Notes.ini file that is this large, I think I'll have more problems than noted here...  :-)  From the KnowledgeBase...

What Is the Maximum Size of the Notes.ini?

Document Number:  1095554

What is the maximum size of a Notes.ini file?

The maximum size of a Notes.ini is 64K.

If the Notes.ini is larger than 64K the Notes Client will not function properly.  It will prompt for the SmartIcon Directory or some similar Data.


Is It Possible to Have Two Databases with the Same Replica ID?

Category Software Development

And in case someone ever questions the uniqueness of a replica ID...  From the KnowledgeBase...

Is It Possible to Have Two Databases with the Same Replica ID?

Document Number:  1091457

How is the Replica ID generated when creating a new database? Is it possible to have two databases with the same replica ID?

The replica ID is the hexadecimal representation of the year, month, day, hour, minute, second of when a database was created, based on the local PC internal clock.

Creating databases rapidly on the same server would not duplicate Replica ID's unless the Server time was set backwards or the server was rebooted, allowing it to traverse the same time/date that it had used to generate prior replica IDs.  However, fast creation of databases on two separate servers could produce databases with the same replica ID.


How To Handle ODS Database Versions in Mixed Notes Environments

Category Software Development

Another good reference point for people undergoing a conversion...  From the KnowledgeBase...

How To Handle ODS Database Versions in Mixed Notes Environments

Document Number:  1102152

How can you determine the On Disk Structure (ODS) version of a Notes database?  Also how should you handle ODS in mixed Notes environments?


In Notes R5 Client as well as later clients, the InfoBox for database properties displays the ODS version.  To view the ODS of a database, open it and select File, Database, Properties; switch to the "i" (information) tab in the InfoBox which appears.  The version will be one of the following:

  • ODS version 43 = Notes 6 database format
  • ODS version 41 = Notes R5 database format
  • ODS version 20 = Notes R4 database format
  • ODS version 17 = Notes R3 database format

Note: The InfoBox on a R4 Client does not show the ODS version of the same database because the ability to display the ODS version is new to the InfoBox in R5.

The following table lists some considerations for copying or replicating files between  a R4 entity and a R5 entity.  This information can also be used to determine the same behavior in mixed environment involving later releases (R5 vs. 6.x for example).  In Notes R5 the ODS specific filename extension is NS5.
Resulting ODS on the Target Database
R4 Client creates Db locally (R4 ODS).
Then, through GUI (via File, Database, New Copy or New Replica), makes a copy or replica on R5 Server.
R4 Client creates Db on R4 Server (R4 ODS).
Then, through GUI, makes copy or replica with extension .NSF on R5 Server.
R4 Client creates Db on R5 Server (ODS is R5).
Then, through GUI, makes copy or replica on R4 Server.
R4 Client creates Db on R5 Server.
R5 Client creates Db locally (ODS is R5).
Then, through GUI, makes a copy or replica on R4 Server.
R5 Client creates Db locally (ODS is R5).
Then, through GUI, makes a copy or replica with extension .NS4 on R5 Server.
(Compact on the R5 Server will leave the R4 ODS as is.)
R4 Client creates Db on R5 Server specifying the extension as .NS4.
(Compact on the R5 Server will leave the R4 ODS as is.)
At operating system (OS) level, user renames a file giving it a .NS4 extension.
If the database was R5, it will stay R5.
If the database was R4, the next Compact will convert it to R5.
If the database is compacted with Compact -r it will be R4 but only until the next time Compact runs without the -r option.
User receives a R5 database as an attachment in an email and detaches it to a R4 Client or Server. R5 ODS
(Neither the R4 Client nor the R4 Server will be able to use the R5 database, and won't be able to revert it to R4 format.  The message, "Invalid NSF Format" will display.)
R5 Client  compacts a local R4 ODS Db

Some Important Concepts Regarding the Independence of ODS, Replication, and Design:

1.  The ODS does not replicate.  So, it is completely supported to have three replicas of a database as follows:
-  One replica with R5 ODS on R5 Server
-  Another replica with R4 ODS on R4 Server
-  Another replica with R4 ODS on R5 Server  (via .NS4 extension)

2.  ODS version is unrelated to Database Design.
-  Changing the ODS will not affect the database design.
-  Changing the design will not affect the ODS.
-  A database in R4 ODS can inherit design from a R5 template and vice versa.

3.  Putting the two concepts together.
-  Creating a replica with a .NS4 extension on the R5 Server will not prevent design changes when the two replicas replicate.  
-  The replica with the .NS4 extension on the R5 Server can inherit design from a R5 template.  
-  Those changes can replicate to the replica on the R4 Server.
-  That could lead to problems if those R5 design elements contain features that aren't available in R4, such as new @functions, or new LotusScript properties and methods.


Impact of Maintaining R5 Format ODS 41 Databases on Domino 6

Category Software Development

A definite thing to examine during your ND6 migration if your disk space seems to be going low...  From the KnowledgeBase...

Impact of Maintaining R5 Format ODS 41 Databases on Domino 6

Document Number:  1154044

ODS 41 is the database on-disk structure (ODS) for Domino 5.  ODS 43 is the database disk structure for Domino 6.  What is the impact of maintaining R5 format ODS 41 databases on Domino 6 Servers?

Upgrading to Domino 6 does not require that each database be upgraded to ODS 43.  However, if a customer maintains ODS 41 beyond the upgrade to Domino 6 they should be aware of the impact of this on system loads.  Domino 5 uses a different view index engine than Domino 6; as a result, if ODS41 is maintained, so must the Domino 5 indexes for each view so that the database is usable on a Domino 5 server.  

While running on Domino 6, the server will build new indexes using the new Index engine for Domino 6.  The result is duplicate indexes for each view.  It should also be noted that the index creation will happen on first database access. This will cause higher than normal CPU use and memory use as the new indexes are built.

Indexes can consume a large amount of database storage.  The amount used can be seen from the Files tab of the Domino 6 Administrator client; select the desired file and then in the right pane select "Database"  -->  "Manage Views".

The total amount of storage increase will vary, but is based on database content and view complexity.  Customers using database quotas should be wary of exceeding quota limits as a result of creating new indexes.

The ODS 41 indexes will be maintained even after conversion to ODS 43.  Customers wishing to reclaim this storage must run a COMPACT - D on the database.  The indexes for both Domino 5.x and Domino 6.x will be deleted.


Windows XP Service Pack 2 May Break Existing Applications

Category Microsoft

They just never make it easy for you, do they?  From XMLMania.com...

Windows XP Service Pack 2 May Break Existing Applications

Developers have been warned that their existing applications for the Microsoft Windows XP operating system may not work after the new Service Pack 2 (SP2) is released by Microsoft Corp. later this year.

SP2 will see improved security according to Microsoft, however backwards compatibility will be effected. Windows XP Service Pack 2 (SP2) will have new defaults, such as turning the Internet Connection Firewall (ICF) on by default to help protect users from malicious attacks.

Execution Protection will also be added to SP2, this service will stop applications from misusing memory.

Microsoft has warned developers to check applications with the SP2 Beta, and have gone to the extent of opening an online training course to help developers migrate to the update.

Internet Explorer will also see major changes after Microsoft's defeat in a court battle, against Eolas which resulted in the removal of patented technologies used in Microsofts Internet Explorer.


Book Review - Exploiting Software by Greg Hoglund and Gary McGraw

Category Book Reviews

Book Review - Exploiting Software - How To Break Code

Exploiting Software - How To Break Code - Greg Hoglund and Gary McGraw
1st edition, 2004, 471 pages, Addison Wesley

Target Audience
Software developers and network administrators who are responsible for or concerned with the security of the code they write or run.

This book covers software exploits and how they work.  

The book is divided into the following chapters:

Software - The Root Of The Problem; Attack Patterns; Reverse Engineering And Program Understanding; Exploiting Server Software; Exploiting Client Software; Crafting (Malicious) Input; Buffer Overflow; Rootkits; References; Index

Software security is foremost in the news today.  You can’t go a day without news on how another group has found and exploited some software flaw to create havoc on the internet.  It seems that the software bugs are found faster than the developers can patch them.  How can a software developer get ahead of the curve and write software that is more secure from the start?  Get this book.

The authors start out with an overview of software and how code is open to bugs and exploits.  By understanding the concepts of complexity, extensibility, and connectivity, you’ll start to understand how easy it is for software to be “broke” by others to gain some sort of advantage or control over it.  The rest of the book then goes into specific areas of attack and how they occur.  There is an abundance of “attack patterns” that are highlighted throughout the chapters.  These short sidebars will help you understand all the types of attacks that can (and will be) used against your systems.  After you read and digest this information, you will be much better prepared to write code that is designed to be more secure from the initial design through implementation.

A question comes to mind quickly when reading the book…  Isn’t it dangerous to put all this hacking information in one place where anyone can access it?  In my opinion, it’s more dangerous to not have this data available.  If a person wants to break your software or systems, they already know this stuff.  In the case of software security, it’s often the corporate developer who is at a distinct disadvantage as they are more concerned with getting their software to work in the first place.  By having a single volume that explains the concepts of software exploitation in detail, we can all start to write secure software instead of writing patches to fix flawed code.  

This book should be on the shelf of all software developers and administrators who are concerned about writing and administering secure software.  And that should be all software developers and administrators!  The information may be disturbing, but you need to understand it before others use the information against you.    


Book Review - PC Annoyances by Steve Bass

Category Book Reviews

Book Review - PC Annoyances

PC Annoyances - Steve Bass
1st edition, 2003, 175 pages, O’Reilly Publishers

Target Audience
Windows and PC users who want to stop living with minor irritations on their systems.

This is useful guide to solve PC and Windows annoyances, as well as tips on how to get the most out of your computer use.

The book is divided into seven sections:  

Section 1 - Email - General Email Annoyances; Outlook And Outlook Express 5 And 6; AOL; Eudora; Hotmail
Section 2 - Windows
Section 3 - Internet - Browsing; Google; Instant Messaging
Section 4 - Microsoft Office - Word; Excel; PowerPoint; Outlook And Outlook Express
Section 5 - Windows Explorer
Section 6 - Music, Video, And CDs - Music And Video; CDs And DVDs
Section 7 - Hardware

I generally have a pretty high pain and annoyance tolerance when it comes to computers.  For whatever reason, I tend to live with things rather than try and figure out how to get around them.  Reading through a book like this makes me realize that I don’t have to put up with irritants.  Steve Bass does a great job in PC Annoyances in showing you the way.

Each chapter has a series of “The Annoyance - The Fix” pairs that will outline a common annoyance on your PC, and then show you how to make the necessary change to solve that problem.  The author liberally sprinkles a number of sidebar tips throughout the book with titles like clutter reduction, technical tips, and helpful hints.  The writing has a light and humorous flavor to it, but the instructions are clear, concise, and easy to follow.  If the problem or annoyance can’t be resolved from within Windows or the particular software package, Steve will recommend low cost (or free!) software you can find on the web that will give you the power you need.  The book does focus a lot on Windows XP, but many of the tips will work (or can be adapted) for other Window platforms.

This book should appeal to a wide range of user types.  Newbies will learn how to do things they didn’t know existed.  Power users will find a number of tips to make them more productive than they already are.  Gurus will discover a few software packages that will make them say “hey, that’s cool!”  My favorite tip was on opening IE windows and the sizing of them.  I occasionally get into a situation where new IE windows open up in quirky sizes that I don’t like.  I couldn’t figure out why it happened and how to get it set back to normal.  With this book, I will no longer struggle with that.  Thanks, Steve!

Regardless of whether you’re a relatively new computer user, a power user, or a longtime guru, you’ll find something you didn’t know in this book.  And you’ll probably have fun doing it.  


iWatch Is Coming...

Category Software Development

There soon will be a new application for you to play with on OpenNTF.  It will in all likelihood be called iWatch, and it's a Notes client interface to the Google News Alert service.  

This application will allow you to subscribe to Google News Alerts from within a Notes client.  The emails received will be sent back to the database and processed automagically with Domino Java agents.  Then once a day, the app will send out a customized newsletter to you listing all the hits received on your subscribed search terms.  Your newsletter subscription allows you to pick and choose which news items you want to see, so you can use it in a department and not be forced into getting notified on everything out there.  Pretty basic stuff, but really powerful when you consider how important it is to receive links to news stories of importance to you from over 4000 news sources...  daily...  even immediately.  Heck, I've surprised Ed Brill on some of the stuff I've pulled out that he didn't know had become public knowledge...

I'll let you all know when it is available.  I have a bit more cleanup to do, but it's nearly ready.  We can all thank Marquam Group for allowing me to release it to open source.  I built it for them while I had some bench time, and they graciously consented to share it with us all.

Even better...  I already have an add-on market in place!  Carl Tyler of Instant-Tech got a copy of it earlier this week to test it out for me.  Not only is it working well nearly out of the box, but he's front-ended a Sametime bot onto the application already.  Very cool stuff.  You can see a demo of the bot at http://www.instant-tech.com/instant.nsf/root/livebots.htm .  Thanks for the testing, Carl, and thanks for pushing the limits already!


Now I know what happens when NTLDR isn't functional...

Category Software Development

This morning I was greeted with a black screen on our main desktop PC with the following words:


I'm a programmer...  how do I know what NTLDR is?  I rebooted, only to end up back at the same screen.  Bummer is, that machine controls our household internet access.  So I couldn't very well research the issue.  I went into work early and did a little searching...

Guess it's a file that needs to be present when you boot up a Windows system.  I tried doing a Windows 2K repair, but that didn't fix anything.  So, it was back to rebuilding W2K for the second time in 8 days.  I'm getting pretty good at this.  

I don't like it, but I'm getting good at it...  :-)


Book Review - Sally Stuart's Guide To Getting Published

Category Book Reviews

One of the library books I've had around for awhile is Sally Stuart's Guide To Getting Published by, who else, Sally Stuart.  I finished reading it over the last couple of days, and it's a so-so book.  If you're just getting into the writing field, this would be a decent concise guide to many of the things you need to know for your writing career...  getting started, the basics, the business of writing, and so on.  If you've been writing (and getting published) for awhile or if you've read a number of other books on the same subject, you probably won't find any new ground covered here.

Also, Stuart is the author of the Christian Writers' Market Guide, and this book is meant to be somewhat of a companion piece to the Market Guide.  As a result, you'll see more references to the religious writing market than you would normally see in a book on writing.  It's not intrusive and the core information is still valid, but just be aware it's there if that's something that offends you.

Overall, not a bad book for those starting to explore the field, but not much to offer those who have "been there, done that".


Book Review - Divided In Death by J. D. Robb

Category Book Reviews

I was really looking forward to reading this one on my trip back from Lotusphere, as it was released the last week of January.  But she crossed me up by not going directly to paperback, and I can't pay $21 for a book I'll read in two days.  So, after a relatively short wait at the library, I was able to enjoy my favorite author..  Nora Roberts writing as J. D. Robb in Divided In Death.  And it was well worth the wait.

In this latest offering, Eve Dallas is asked by Rourke to handle a possible murder case that appears to have been committed by his head of security, Eva Ewing.  Rourke has a real fondness for the lady and her mother, and wants Dallas to make sure it's not a setup.  The murder was of Ewing's husband and her best friend when she learns of the affair they were having.  The lovers are killed in bed and everything points to Ewing as the killer.  But for Dallas, it's just a bit "too" clean, and she quickly clears Ewing of the murder.  But if not her, who?  The plot revolves around spies for a Homeland Security group, a rouge hacker underground, Rourke's security company, and the brother of the husband.  Plenty of twists and turns in this plot.

And for character development, Rourke hacks the computer files of the Homeland Security group and finds out some previously unknown information involving Eve's childhood traumas.  He wants to kill those responsible, but Dallas knows she can't be a cop and stand aside if she knows what Rourke wants to do.  They have to determine what's most important to each of them as they work through this crisis.

As usual, great story and wonderful characters.  I'm really glad that Roberts can crank these out so quickly, as I am forever waiting for the next one in the series to come out each time I finish the current one.  


A big hockey night for Cam Sunday evening...

Category Everything Else

The season is winding down, and with it comes the annual East-West All-Star game.  There are four teams in each division, and they pick the top players for each side to play a game to highlight their skills.  Cameron (my goalie son) was chosen as one of the three goalies for the East team.  He's been playing for about two years now, and he was a little nervous to be playing against the best in the league.  He really has played well considering the defense (or lack thereof sometimes) in front of him, and I felt it was a well-deserved honor.

A picture named M2

So, he got to play the second period last night, which suited him just fine.  It meant he wouldn't get blown out early if the teams were mismatched, and he wouldn't have to win the game if it was tight going down to the end.  He came in with the score tied 1 - 1 and left with the East holding a 3 - 1 lead.  Shutout period!  The East team went on to win 4 - 2, which means that Cam was the only goalie to hold the other team scoreless...  Needless to say, he was pumped!

A picture named M3

For someone who was never interested in sports growing up (he turns 16 this year), he's done a remarkable job in a short period of time (2 years) at arguably the toughest position in sports.

Great job, dude!

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.


Thomas "Duffbert" Duff

Ads of Relevance...

Monthly Archives