Friday, January 23, 2009

I'm gonna get kicked off the island for this...

... and probably hunted down by lovely women with knives (possibly from a Caribbean island), but so be it.

I was hanging out in an online chat with some rather unsavory characters and they started talking about Post-Lotusphere Stress Disorder, leading to the inevitable top 10 list. I did not participate in the creation of this list, I'm merely the scribe capturing it for posterity. You will notice not every entry is numbered, there are more than 10 entries and there is no number 10. Creativity like this can't be bound by rules. Names have been redacted to protect the oh-so-deliciously guilty.

Top Ten ways you know you have PLSD

1. You have a sudden urge to put up a tent in your backyard, in Maine, in February, so family dinners will feel more natural.
2. You insist that all of you children's backpacks be yellow
3. All of your children's backpacks ARE yellow
4. You insist on rows of uncomfortable chairs in the living room for movie night.
5. You fill out an evaluation form after every television show you watch at home.
6. You fill out an evaluation form for completely inappropriate things. Out to the dining tent for you, mister.
7. You see a tchotke at a neighbors house and ask if you can have it if they swipe your card.
8. You get invited to a party, and don't tell your spouse just in case she wasn't invited.
9. You drink your coffee REALLY FAST so the Disney bots don't take it away mid-swallow.
for six months, every time you leave your bedroom you check to make sure you remembered your badgeholder.
You line up for lunch, even when eating at home.
you think it's normal to show up for work after only 2 hours sleep
You ask your spouse if you can stay in the same room you were in last year.
You are willing to listen to 5 minutes of crap talk just to get a free pen.
You keep asking your coworkers, kids, and spouse where you can get this year's CULT shirt from; they look at you in horror.
You ask the neighbors if it's ok to use their pool without a room key
You ask your spouse if she's coming to your session.
And if it merits a repeat.
You ask your neighbors if it is OK to use their driveway to park.
You ask your kid if he's filming your session
You put RFID badges on the cats.
you mutter "I can't remember if I'm swan or dolphin this year"
and then look for your two huge carp on your roof
you build a 3 stage waterfall from same said roof
In Maine, in February
You scream out SAKE! at the top of your lungs after finishing each drink
you wished they'd put your room number on your key, in case you ever need to go there
You applaud when your wife introduces a new dish for dinner, even though you seem to remember you should have had it years ago.
and you keep asking her, "Can I have this to go in a box, I'm late for my session"
You applaud after sex even if it wasn't that good. Then you hog the microphone for Q&A.
you have a favorite seat in every meeting room in 3 different disney hotels
You knock on neighbor's houses asking if they know where Jamfest (or SpeedGeeking) is.
You walk into your bedroom announcing, "OK, before we begin, please turn off all cell phones and pagers".
11. Every Wednesday night for four months, you randomly get on a bus.
12. You know what CULT stands for
13. You're jazzed because you have a CULT shirt for every day of the week.
you are hard-core because you have the original "Notes World Order" shirt.
14. You go home and claim to your spouse that you're going to be agile from now on.

hmm, "Brokeback Novak"... another CULT theme
beats my original suggestion, FSCK Portal.

Thursday, January 22, 2009

Cranberry lambic and root beer braised beef

The young lady who house sits for us loves root beer, so whenever we travel we buy some for her. There is usually some left and I find it too sweet to drink, so I was trying to think of a way to use it. While I was pondering this I remembered Myron bought a sampler of Samuel Adams beers and it included a cranberry lambic. A lambic is a type of beer from Belgium that started out 500 years ago as peasant home brew. The version produced today carries on the coarse and have an unrefined flavor. Fruit is often added to help counter the bitter aftertaste. It is too bitter for me to enjoy, so I wondered what it would be like if I combined the bitter lambic and the sweet root beer. The answer: DELICIOUS!








Ingredients Preparation

1 12oz bottle of root beer


1 12oz bottle of Samuel Adams Cranberry Lambic


1 – 1.5 lb stew beef


2T cooking oil


1t black pepper (for the beef)


1t black pepper (for the sauce)


1t salt (for the beef)


1t salt (for the sauce)


A medium-sized non-reactive pot with a lid in the 4 to 6 quart range. Nonstick is fine, but don’t use unenameled cast iron.


A simmer plate (assuming you’re cooking with gas)


A bowl or plate for holding the beef after browning.


  1. Toss the stew beef with 1t each of black pepper and salt

  2. Let stand 10 to 15 minutes at room temperature

  3. Heat the oil in the pot over medium-high heat until you see it ripple, about 60 – 90 seconds

  4. Add the beef and brown on all sides

  5. Remove the beef to a bowl or plate

  6. Reduce or turn off the heat so you can put the simmer plate on the burner, then return the heat to medium-high.

  7. Put the pot on the simmer plate and add the root beer and lambic into the pot.

  8. Bring to a boil and use a wooden spoon to scrape up the brown bits from the bottom

  9. Reduce heat to medium and simmer 15 - 20 minutes, or until the liquid reduces by a quarter to a third

  10. Add the beef, cover, and reduce the heat to its lowest setting

  11. Leave it to simmer for 90 minutes, stirring a couple of times to make sure there is enough liquid. Add water to keep the beef nearly, but not completely, submerged.

  12. Check it for doneness. You are looking for it to be tender enough that it comes apart when you press it with a spoon, but not so much so that you can see the beef separation simply by stirring it. This will take between and hour and a half and two hours, but you need to start checking early so you don’t overcook it.

  13. Stir in the remaining salt and pepper, adjusting to taste

  14. Serve with rice, pasta – or one of my favorites, Israeli couscous

Tuesday, January 13, 2009

a change of focus

I started this blog in 2006 mostly to vent about IBM and Lotus and poke fun at the zealot fanboys. In 2007 I was frustrated both with my job and the direction IBM was taking Notes and Domino so took a job doing Access and SQL Server development. I continued doing Notes development as a consultant to keep current with it. That continued until mid-2008. Shortly after ILUG I stopped all Notes and Domino work altogether.

Several things led to that decision. It was partly a final severing of the ties to my old job. It was also an admission that I will never be satisfied with Notes and Domino. The things that are important to me just aren't important to IBM, so it's time for me to move on. And about this time we had the fire at work in and that sapped all my spare time for several months.

We got our new HP blade system delivered at the end of December and I am in the process of learning how that works along with VMware ESX. I am also preparing for a complete rewrite of our internally built ERP software and transitioning to Ruby and postgreSQL.

On a more personal level, I am feeling very strongly drawn toward the culinary field. I have learned to love cooking over the past decade and it has reached the point that I am finding that is where my passion lies. Software development doesn't energize me anymore.

The focus of this blog will be changing. I will be posting about Ruby, postgreSQL, Linux, VMware, HP hardware, and cooking. It's going to be a hodgepodge and you'll never know whether you're going to get programming code or a recipe for soup.

Oh, and for the three of you who might care, I asked Yancy to remove me from PlanetLotus. Since the content hasn't been Lotus related for a long time and never will be from here on out, I thought it was best if I didn't clutter things with my off-topic chatter.

Wednesday, January 07, 2009

Domino 8.5 hot fix 1

If you're using Domino 8.5 be aware there is a hot fix already available. In a nutshell, adminp may not properly handle renames or deletes. I found a blog with a decent write up about it, including a link to Fix Central where you can drill down through six levels and finally get to the hot fix: http://www.lntoolbox.com/content/view/95/2/.

Sunday, December 21, 2008

conspicuous charity

I have been thinking a lot lately about philanthropy and charity. Even though I'm not a Christian I am very influenced by the Christian faith and by the traditional Christian holiday season. Despite my disdain for most people who call themselves Christians I do believe in many of the ideals the Christian faith puts forth. One of those tenets is that philanthropy is a duty, and giving selflessly is a virtue.

It seems like everything these days is about greed and ego. You take what you can and leave nothing behind. It’s not enough to do the right thing. You have to make sure everyone else to sees you doing it. When did everyone turn into attention seeking whores with a personal brand? So what if I Google my name and someone else turns up in the top of the list?

It isn’t the same, though, when you very visibly pull a community together to achieve an idealistic goal, then turn around and just as visibly hold your hand out for your reward. Doing something philanthropic then shouting it from the rooftops spits in the face of philanthropy. As someone else asked, "is it strictly charitable giving if you know up front you'll get an award for it?" In this age of self-aggrandizement there needs to be more doing and less quid pro quo, sine qua non. Loosely translated that means "something for something, without which there is nothing."

The recent election and economic meltdown seems to have brought out the absolute worst in many people. Nobody is feeling the least bit ashamed about demanding what they feel entitled to for the good deeds they do. Gays are up in arms because the preacher doing the invocation at Obama’s inauguration supported California’s Proposition 8.
“Let me get right to the point," Joe Solomnese, the president of the Human Rights Campaign, said in a harsh letter to the president-elect, "Your invitation to Reverend Rick Warren to deliver the invocation at your inauguration is a genuine blow to LGBT Americans."

Some members of the Hispanic community were complaining because not enough of their people were in the higher offices in Obama’s cabinet, so he appeased them.
"We're glad he listened to our voices and listened to the Hispanic community that came out and delivered for him on election day."

[I am not saying that the Hispanics chosen were not qualified. I'm merely saying that some members of the Hispanic community feels this was repayment for them helping Obama win the Presidency.]

The HRC, which I have donated to in the past, doesn’t speak for me (which is why I don't donate to them). And excuse me; isn’t the idea supposed to be that we are all just Americans and nobody should get special treatment? Why the racial divisiveness?

I really don't get it. It's beginning to look like I'm a dreamer, and I am the only one.

Tuesday, December 09, 2008

McCrady's: Sparkling Wines & Exquisite Dines

From McCrady's website:
Chefs John B. Shields and Karen Urie of Town House in Chilhowie, VA will join Chef Sean Brock in preparing a special dinner. Town House Sommelier Charlie Berg will join McCrady’s Sommelier Clint Sloan in pairing a variety of exclusive sparkling wines for each course.
I was asked by my friend Ann (the same person who helped us with Dining With Friends) to join her at this special event. Her husband doesn't drink and is allergic to shellfish so he wouldn't have enjoyed it much. A recent experience at McCrady’s dimmed my enthusiasm for the restaurant, but I was willing to give it another shot with some guest chefs. Both guests have impressive backgrounds. John worked at Alinea and Charlie Trotter’s, and Karen worked at Tru before spending five years as the lead pastry chef at Charlie Trotter’s. Those are all highly rated restaurants so I went into this with very high expectations.

Dinner was to start at 7:00, with a chef meet and greet at 6:30. Ann’s husband, Dennis, volunteered to be our designated driver since we were anticipating a Bacchanalian event. We arrived at McCrady’s at about 6:15 and sat at the bar and had a pre-dinner drink. McCrady’s makes the best Manhattan on Earth and Ann had her first Pimm’s Cup, which she thoroughly enjoyed.

At about 6:40 we were told we could go upstairs. As far as we can tell the chef meeting never happened, but the tables were about half full so I don't know for certain. It was open seating, so we approached a table with two couples already seated and they invited us to join them. One couple was Curt and Marti, the other was Eric and Debra, and they were all absolutely delightful. There was a bit of awkwardness as Anne and I explained that we were just friends, how we knew each other, and why we were there together.

While we were waiting for the dinner to start someone came around and asked if there were any food allergies or other issues the kitchen needed to know about. This led to a discussion at our table about foods we didn’t like. Eric and Curt had traveled together in South Korea, and agreed that neither liked kim chee. Their wives agreed, but both Ann and I said we liked it. Ann, being the delicate person she is, asked Curt if he had served in the Korean Conflict. Everyone laughed and I don’t think he was offended, and it kept coming up throughout the night.

I won’t do a blow-by-blow of every course since there were eight of them and this post would be even more obnoxiously long. Five courses were prepared by Chefs John and Karen, the remainder by Sean Brock. The overall consensus from our table was we preferred the flavors of Sean’s dishes. The others were interesting and very intellectual, but they failed the first rule of food: it has to taste good.

From the raw scallop with banana mousse to the sour milk with crispy milk bubbles, it was a challenging menu, to say the least. The highlights were Sean Brock’s chicken liver and hazelnuts, his blackened short ribs, and his truffle. The wine pairings were similarly difficult. I don’t have a list of the wines that were served and don’t remember them off the top of my head, but from what I recall the standout was a sparkling shiraz that we all thought was very good with the blackened short ribs.

We were all disappointed that this was supposed to be a celebration of sparkling wines but three courses were served with something else. One course was served with a white sherry that had the wonderful heady bouquet of sherry but the finish of retsina (which smells like turpentine). I don’t think any of us enjoyed that one. another course was served with Sapporo. Yes, Japanese beer. I could kinda buy that it was sparkling, but it didn’t pair well with the dish. And the final drink debacle was a concoction made of Meyers’s dark rum infused with sarsaparilla and vanilla, then topped with Mug root beer. It was served warm, which only enhanced the sweetness and cloying flavor. I saw another table ask for a second round, but only two at our table finished it.

Overall it was a delightful evening because of the company and I truly hope to spend more time with my table mates. When I’m paying $100 for dinner I expect to be wowed, and I simply wasn’t. I enjoyed every dish Sean Brock prepared and the service was stellar. The drink pairings were a rollercoaster, as was the food from the guest chefs. I won't be making a pilgrimage to Town House any time soon, and I'm not so sure I want to bother with Alinea, Tru or Charlie Trotter's, either.

But it did rekindle my hope that perhaps McCrady's can return to its former glory in my eyes.

Sunday, November 23, 2008

Why I'm done with PostSecret

I have been a fan of PostSecret since it launched in 2005. Every Sunday one of the first things I do is open up the site to read the new secrets. The point of PostSecret is for people to send in postcards that reveal a secret that nobody else knows. Since its inception some of the secrets have been funny or strange, and many have included disturbing personal experiences about trauma and abuse. Some have included PG-13 verging on R rated imagery.

For the last few months some of them are simply statements of fact about how someone feels. These have always annoyed me since they aren't really secrets, but none have really bothered me. Today the moderator of PostSecret, Frank Warren, posted what I felt was a horribly gruesome image, and the note from the submitter simply said it was disturbing. That was obvious and not a secret so Frank posted it for shock value, not because it was a compelling secret.

There is a separate site called the PostSecret Community, also moderated by Frank, where people comment on the week's secrets or share secrets of their own. Very quickly the disturbing image blew up with dozens of complaints and a mostly negative "WHAT THE HELL WERE YOU THINKING?!" reaction.

As far as I can tell Frank never participated in any of those discussions, but he did send an e-mail to all the members of this site asking:
Have you seen the secret and postcard that literally made one woman vomit?

For me the whole thing ran off the rails today. A non-secret was posted purely for shock value, then Frank spammed the entire PostSecret Community to make sure the flames are sufficiently fanned. I'm disgusted by the image as well as the fact that it was obviously posted for sensationalism, and by how Frank has handled the uproar. I won't be visiting PostSecret again.

You will notice that I have not provided any links to PostSecret. This is for two reasons. First, I don't want anyone to follow the link and see the image and blame me for their trauma. I'm nauseated every time I think of it. Seriously. Second, I don't want to drive traffic to any of the PostSecret sites. If you're determined to know what all the fuss is about I'm sure you'll find it without my help.

For anyone who wants to comment and tell me I'm overreacting, don't. I have a right to set the boundaries I find appropriate. This crosses several of them.

Thursday, November 20, 2008

I need cordless phone recommendations

I think I saw someone else post this a while back but I can't find it now. I've been trying to find decent cordless phones to use at home for years. All the 2.4Ghz and 5.8Ghz I have tried have poor range, poor reception, or poor volume. I have purchased various Sony, AT&T, VTech, Uniden and Panasonic phones through the years and pretty much all of them have had issues. Most recently I bought a VTech IA5824 5.8Ghz phone, set it up last night, and I only get about a 15 foot range before the static starts.

Can anyone recommend a cordless phone that actually works well?

business insurance and personal effects

I'll be posting some follow ups in the next few weeks regarding our progress in replacing equipment and moving to a fully virtualized infrastructure. We have been wrapping up our dealings with the insurance companies, and something very interesting came to light.

Last year we installed centralized network printers and copiers, and as individual desktop printers died we did not replace them. There were some people who insisted on a printer on their desk and brought in their own. The company did not purchase them or provide supplies other than paper and IT refused to support them, but management allowed it.

You can probably see where this is going...

We learned that personal effects coverage is an add-on for business insurance policies. In our case the maximum amount was $50 per employee. Nearly all the employees who had personal printers are claiming they cost $100 or more and they were very upset by this. While I feel badly that they lost personal equipment it really drove home our policy of not bringing it in to work in the first place.

So if you have something expensive (that you own) or of personal value at work, take it home or get comfortable with the idea that . All it takes is a faulty heating or air conditioning unit and it could be gone in seconds.

It's sad that it takes something like this to get management on board with IT policies, and it also made me aware of another piece of the DR puzzle that I had not even considered.

Thursday, November 13, 2008

It's official - no Lotusphere for me

I submitted my ILUG session for consideration and it was not accepted. Therefore I will not be attending Lotusphere 2009. Congratulations to everyone who was accepted, and I'm truly jealous of anyone else who is going to Lotusphere.

I do intend to still try to coordinate the Over The Rainbow group. It wasn't my idea in the first place, so there is no reason to should die just because I'm not there.

Monday, November 03, 2008

Lotusphere Over The Rainbow - 2009 edition

For the past couple of years there has been an Over The Rainbow group at Lotusphere to help GLBT attendees find other like-minded people. It's back again for 2009, this time as a Facebook group. Consider this your invitation to join in the festivities. Last year we got together for dinner on Saturday night, then again for drinks one night and met up to do the rides together on Wednesday night. I'll be trying to set up some more concrete events for Lotusphere 2009, but I wanted to get the word out early.

Friday, October 31, 2008

Republican Principles

I've steered clear of the current political mess, but this is just too good to pass up. I've never heard of salon.com and I came across this in my marumushi news map and it is an excellent read.

Republican Principles, from the GOP website:

I'm a Republican Because...

I BELIEVE the strength of our nation lies with the individual and that each person's dignity, freedom, ability and responsibility must be honored.

I BELIEVE in equal rights, equal justice and equal opportunity for all, regardless of race, creed, sex, age or disability.

I BELIEVE free enterprise and encouraging individual initiative have brought this nation opportunity, economic growth and prosperity.

I BELIEVE government must practice fiscal responsibility and allow individuals to keep more of the money they earn.

I BELIEVE the proper role of government is to provide for the people only those critical functions that cannot be performed by individuals or private organizations, and that the best government is that which governs least.

I BELIEVE the most effective, responsible and responsive government is government closest to the people.

I BELIEVE Americans must retain the principles that have made us strong while developing new and innovative ideas to meet the challenges of changing times.

I BELIEVE Americans value and should preserve our national strength and pride while working to extend peace, freedom and human rights throughout the world.

FINALLY, I believe the Republican Party is the best vehicle for translating these ideals into positive and successful principles of government.


Does the Republican Party really believe that? I think the evidence would point to a resounding "no". And now the funny part...
2008 Republican Principles (Chuck Lasker's perception)

I'm a Republican Because...

I BELIEVE the strength of our nation lies in military might and God's help, as long as we do His Will and make this a Christian nation while supporting Israel until the day Israel is destroyed and Jesus returns.

I BELIEVE that each person's dignity, freedom, ability and responsibility must be honored unless we can encroach on these in the name of safety or other short-term excuse that the idiot populace will accept.

I BELIEVE in special rights and justice for Republican politicians, Christian leaders, the extremely wealthy and lobbyists, regardless of cause as long as the money is right.

I BELIEVE in equal justice and equal opportunity for everyone else, regardless of race, creed, sex, age or disability, unless we're talking about lazy black people, illegal Mexican people, uneducated women, homosexuals, or, if justice and opportunity for disabled people costs businesses money.

I BELIEVE large corporate profits, stock market wealth and protection of monopolies will bring this nation opportunity, economic growth and increased prosperity for the upper one percent of incomes.

I BELIEVE government should talk about fiscal responsibility and allowing individuals to keep more of the money they earn, but should actually borrow and spend recklessly and place the full burden of taxes on those with lower and lower incomes and future generations for short term gain. Any taxes on the rich are socialism.

I BELIEVE the proper role of government is to advance Christian evangelical morals through tax code, control of education, judicial appointments, privatization and the proper Christian philosophies of wealth and warfare.

I BELIEVE the most effective, responsible and responsive government is government run by those who know best, and all means necessary must be used to work against poll access by the lowly, the lazy, the stupid and the poor.

I BELIEVE the Republican Party was founded by America's founding fathers to fight Roe vs. Wade, to protect "Under God" in the Pledge of Allegiance they wrote, to put "Under God" on our money, and to keep the Ten Commandments in our Courtrooms and government buildings.

I BELIEVE that we must never speak to our enemies, unless they're very big enemies with money and cheap labor agreements.

I BELIEVE in free trade with lower nations that provide cheap labor and higher profits and any attempt to induce labor or environmental equality on these nations is liberalism.

I BELIEVE you're either with us or you're with the terrorists. If you do not have the same beliefs we do, you are un-American and worthy of derision, abuse, vandalism, placement on no-fly lists and investigation.

I BELIEVE anyone labeled "liberal" is a socialist, which is actually communist, which is actually Marxist, which means evil.

I BELIEVE abortion must be made illegal, but stopping extramarital and teen sex is more important than reducing abortion rates, so I support abstinence-only education, blocking of access to birth control by teens, and punishing poor people for being lazy by blocking access to health care to those women who want to keep their babies.

I BELIEVE Americans must retain only those principles that we consider important while developing new and innovative ideas for bringing power to a Republican executive branch and reducing the power of the annoying Congress and the activist Courts.

I BELIEVE Americans value and should preserve our national strength and pride while working to extend peace, freedom and human rights to good Americans only, and to create international opportunities throughout the world to develop inexpensive manufacturing for American companies.

FINALLY, I believe the Republican Party is the best vehicle for translating these ideals into positive and successful principles of government, and I believe we must use any means necessary, including lies, smears, voter suppression, federal police, the Secret Service, warrantless spying, even the destruction of lives and reputations, to progress our God-endorsed agenda.


I don't know who Chuck Lasker is and I don't know the political leanings of salon.com. I think this is hysterical. The entire article is quite sobering, though. The Republican Party has shifted its ideals since Reagan started making changes, and now bears little resemblance to the party it was 30 years ago. Bush II's regime is almost diametrically opposite where the party started.

Thursday, October 23, 2008

New feature for my blog: translations

One of the suggestions at the blogging BOF at Lotusphere 2008 was to offer translations of your blog to encourage non-English speakers to read it. It's been on my list but never bothered to invest any time in it.

Ironically, I was reading a blog this evening and was a frustrated that it was only available in French. I looked around the page and noticed a block with language translations. When I clicked it I was surprised to see it was using a Google translator, which I didn't know about. I pulled apart the URL and very quickly had translated my blog into the most common languages spoken by my readers, then added them to a block on the left.

If you can spare a few minutes I'm sure your readers would appreciate it if you did the same thing. :-)

Tuesday, October 21, 2008

How to print full pages of records in Microsoft Access

Recently I was recreating a government form in Access that included some columns with background colors. Each row was a fixed height, and if a page was not completely filled there was a large blank space before the page footer printed. I needed a way to print extra records to fill the empty space. I did some digging and came across some sample reports from ACG Soft that included one for duplicating Detail rows. There wasn’t any documentation or comments in the code so I had to pull it apart and figure it out myself. It turns out it is surprisingly simple.
  1. Count how many records fit on a page. No programming involved in this and it should be a constant value.
  2. Count the number of records you will be printing.
  3. As records are printed compare how many have been printed with how many will fit on a page.
  4. When you run out of records to print, stop Access from advancing to the next record until you reach the number that will fit on a page.
Here is the code I ended up using.

Option Compare Database
Option Explicit

Dim RowCounter As Integer
Dim TotalRows As Integer

Const MAX_ROWS As Byte = 17
Const COLOR_WHITE = &HFFFFFF
Const COLOR_BLACK = &H0

Private Sub Report_Open(Cancel As Integer)
Dim ThisRecordset As DAO.Recordset

'Get the number of rows to be printed
Set ThisRecordset = CurrentDb.OpenRecordset("SELECT COUNT(*) FROM [qFuel Log Summary by State2]")

If Not ThisRecordset.EOF And Not ThisRecordset.BOF Then
TotalRows = ThisRecordset.Fields(0)
End If

Set ThisRecordset = Nothing
End Sub

Private Sub PageHeader_Format(Cancel As Integer, FormatCount As Integer)
'Reset the row counter for each page
RowCounter = 0

'When you hit a new page decrease the total rows to be printed by one page worth
If Report.Page > 1 Then
TotalRows = TotalRows - MAX_ROWS
End If

'Make sure the text is visible
Call SetForegroundColor(COLOR_BLACK)
End Sub

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
'This event is called every time a record prints.

'Keep track of the number of rows printed
RowCounter = RowCounter + 1

If RowCounter < TotalRows Then
'There is still more to do
Exit Sub
Else
'Make sure you do not overfill a page
If RowCounter < MAX_ROWS Then
'This keeps Access from advancing to the EOF marker and printing the Page Footer
Me.NextRecord = False
End If
End If

'Since you are not advancing to a blank record you have to hide
' the text so it does not print.
If RowCounter > TotalRows Then
Call SetForegroundColor(COLOR_WHITE)
End If

End Sub

Private Sub SetForegroundColor(Color As Long)
Select Case Color
Case COLOR_BLACK
Me!St.ForeColor = Color
Me!Mileage.ForeColor = Color
Me!Mileage2.ForeColor = Color
Me![Taxable Gallons].ForeColor = Color
Me![Tax Pd Gal].ForeColor = Color
Me![Net Gal].ForeColor = Color
Me![Tax Rate].ForeColor = Color
Me![Tax].ForeColor = Color
Me![Surcharge Rate].ForeColor = Color
Me![Surcharge].ForeColor = Color
Me![Net Tax].ForeColor = Color
Me![NetTax2].ForeColor = Color
Case COLOR_WHITE
'Some of the columns use a colored background so I can't just set
' all the foreground text to white. Also, some of the textboxes
' have a transparent background and others have white, so I can't
' just set all the foreground text the same color as the background.
Me!St.ForeColor = Me!St.BackColor
Me!Mileage.ForeColor = Me!Mileage.BackColor
Me!Mileage2.ForeColor = Me!Mileage2.BackColor
Me![Taxable Gallons].ForeColor = Color
Me![Tax Pd Gal].ForeColor = Me![Tax Pd Gal].BackColor
Me![Net Gal].ForeColor = Color
Me![Tax Rate].ForeColor = Color
Me![Tax].ForeColor = Me![Tax].BackColor
Me![Surcharge Rate].ForeColor = Color
Me![Surcharge].ForeColor = Color
Me![Net Tax].ForeColor = Color
Me![NetTax2].ForeColor = Color
End Select
End Sub

This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at nsftools.com.

Tuesday, October 14, 2008

Facebook fail chicken


I've never seen this before (unlike the Fail Whale)

Lotusphere 2009 housing is still good

Last year I ended up in a world of hurt trying to find a room for Lotusphere at the last minute. (Many thanks to Francie Whitlock and Jamie Magee for helping me with that.) This year I decided to be a little more ahead of the curve and went ahead and booked my room at the Dolphin.

Earlier tonight the Swan was waitlisted, and at various times in the last two weeks both the Swan and Dolphin have been waitlisted. You may want to book your room sooner rather than later.

SnTT: Merging web form data with a template PDF

The following was written by my friend Duston Suits. We discussed options and he was kind enough to share his solution and allow me to post it.

The problem


To apply on-line for insurance coverage from my organization, you have to: 1) Fill out the web form, and then 2) print it, sign it and mail it in. The problem is that creating an HTML form that is both useable and (more or less) universally printable is an exercise in futility. As an alternative, we have a PDF form with all the fields defined. If we could take the data from the web form, use it to populate the PDF form, then we can let the Adobe Reader handling printing, giving us a more consistent result with far less effort on our part. Merging a PDF form with an FDF file is a trivial task, the challenge was to get this to happen on a Lotus Domino server in the background.

The solution


The key part of the solution is an open-source (Windows-only) tool called PDFTK. PDFTK is a command-line tool with a number of capabilities, the key one for us was the ability to merge a PDF template file with an FDF data file and save the result in yet a third PDF file. My goal was to run a WebQuerySave agent to gather the data from the web form, write it to an FDF file, execute PDFTK in the background and then return a link to the PDF (or potentially a redirect to the PDF itself) back to the user. The next question was how to write the code to create an FDF file.
My colleague already had code to create an XFDF (FDF using XML) file from a Notes form, but alas, PDFTK couldn’t handle XFDF. Some research found the answer: http://www.tgreer.com/fdfServe.html. FDF files, as it turned out, were simple to create. Here’s the code for the WebQuerySave agent:

Sub Initialize()
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim docid As String

On Error Goto Errorhandler
Set db = s.CurrentDatabase
Set doc = s.DocumentContext
Call doc.save(True,False)
docid = doc.UniversalID
' Create the PDF File
PDFFileName = createFDF(doc)
Now send a link back to the user along with any other HTML you want.
Print {<a href="/} & PDFFileName & {">Click here to open your application</a><br><br>}
End sub


Function createFDF(doc As NotesDocument)
Dim docID As String
Dim fileName As String
Dim fdfFileName As String
Dim pdfFileName As String
Dim tempFDFPath As String
Dim destPDFPath As String
' Directory where we will write the FDF files that are created.
tempFDFPath = {C:\FDF-TEMP}
' Directory where the PDF files will be placed for the end user
destPDFPath = {C:\notes\data\domino\html}
On Error Goto createFDFError
' Use the docID as a file name to make sure it's unique.
docID = doc.UniversalID
hFile = Freefile()
createFDF = docID+ ".pdf"
' Create the full FDF and PDF file names
fdfFileName = tempFDFPath + {\} + docID + ".fdf"
pdfFileName = destPDFPath + {\} + docID + ".pdf"
Open fdfFileName For Output As #hFile
' Write the first part of the FDF file (the same for all of them)
Call writeFDFHeader(hFile)
' Now iterate through all of the fields on the form, find the ones we want and write the name/value to the FDF file.
Forall item In doc.Items
‘ In the case of our form, all the fields that we use in the PDF start with the letter S.
If Left(item.name, 1) = "S" Then
Print #hFile, {<< /T(} + item.name + {) /V(} + item.text + {) >>}
End If
End Forall
' Now write the FDF Trailer information (also the same for all of them.)
Call writeFDFTrailer(hFile)
Close hfile
' And now kick off a process to combine the FDF and the PDF. Of course hard code the paths at
‘ your own peril.
shellstring = {c:\pdf-template\pdftk c:\pdf-template\stdapp.pdf fill_form } + fdfFileName + { output } + pdfFileName
rc = Shell(shellString)
' and return the name of the file to the calling function.
Exit Function
End function

Sub writeFDFHeader(hFile)
Print #hFile, {%FDF-1.2}
Print #hFile, {%âãÏÓ}
Print #hFile, {1 0 obj}
Print #hFile, {<<}
Print #hFile, {/FDF}
Print #hFile, {<<}
Print #hFile, {/F (/formA.pdf)}
Print #hFile, {/ID [ <826851cbc19b7f5fba86369c981fe040> <159c51c6e0b4814ca2552f89ab9a1ed1> ]}
Print #hFile, {/Fields}
Print #hFile, {[}
End Sub

Sub writeFDFTrailer(hFile)
Print #hFile, {]}
Print #hFile, {>>}
Print #hFile, {>>}
Print #hFile, {endobj}
Print #hFile, {trailer}
Print #hFile, {<< /Root 1 0 R >>}
Print #hFile, {%%EOF}
End Sub

This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at nsftools.com.

One special note, the WebQuerySave agent must be allowed to perform restricted operations (set on the security tab on the agent properties.) Needless to say error checking is also necessary, your mileage may vary.

Happy forming!

Duston Suits
duston_suits@chip.state.il.us

Monday, October 13, 2008

the reach of the Yellowverse is long

Many of the links here contain videos that automatically start. I'm just warning you so you don't get blown out of your chair after rocking out to Dream Theater, Rush or Dethkl0k.

The closing speaker at Lotusphere 2008 was Alton Brown. Alton is a chef and TV personality best known for his long-running Food Network series Good Eats. He also works on the series Iron Chef America, where contestants battle each other by preparing five dishes based on a secret theme ingredient.

After Alton finished his presentation to us TAOSRI's, he took questions from the audience. The Yellowverse's very own Devin Olson suggested beer as a secret ingredient for Iron Chef. And guess what happened last night?

Bobby Flay vs Daniel Angerer in BATTLE BEER!!

If you want to know who won, check the episode list on Wikipedia. And thanks, Devin, for the suggestion. You never know when some crazy idea might turn into reality.

Monday, October 06, 2008

Vacation Writeup Part 2 - Antigua and Montserrat

It's been forever since I got back from vacation but people are still bugging me so I'll finish my vacation writeup. If you recall from my last installment, we were leaving Anguilla and visiting Montserrat. So what's this Antigua business?

Antigua


The flight from Anguilla to Montserrat included a stopover in Antigua where we would switch planes. We thought there might be trouble when the plane that was to take us from Anguilla to Antigua was late arriving. We paced nervously and asked the gate agent what would happen in Antigua since that was the last flight to Montserrat for the day. She said she had called ahead and they were aware our plane was late and they would hold the plane to Montserrat. When we finally landed in Antigua with 15 minutes before our flight I saw a Carib Air plane with its props spinning, and I had a sinking feeling. I knew that was our plane, and I knew we were going to miss it. Myron was more upbeat and pointed out it was 15 minutes early. No flight in the Caribbean was ever early.

We finally made our way to the customs desk, told them our flight number, and the agent radioed the plane... which had already taken off. We were furious, but this was only the start of a very long and frustrating experience. The customs agent disappeared for nearly 45 minutes and the other agent at the desk very specifically ignored us, even when we asked her direct questions. When the other agent finally reappeared she said the airline would put us up at a hotel for the night and we would take the flight the next morning. We asked to take our luggage with us since 1) we didn't trust them not to steal us blind, 2) we pack our non-essential toiletries (i.e., toothpaste and deodorant) in our checked baggage and 3) we wanted to change clothes.

Three hours later we left the airport without our luggage, which they could not find. It was not on the ground in Antigua and they couldn't find it in Anguilla, either. We were assured it would be located, put on a ferry to St. Martin, and flown to Antigua to catch up with us the next morning. "Fat chance," we thought. They couldn't get our luggage from Anguilla to Antigua when we handed it to them, and now they were supposed to track it down, send it to another island, get it on a plane, and delivered to Antigua? And so we left by cab to our hotel, which was the City View in downtown St. John's. It was a horrible hotel that smelled like mold and cigarettes. The armed guard at the gate to the parking lot and another armed guard in the lobby didn't do much to make us feel safe.

The next day we went to the airport and I was stunned to see our luggage being put on the plane. We boarded the plane (a tiny prop plane with maybe 20 seats) and were rather amused when the pilot refused to start pre-flight checkoff until they got the passenger manifest straightened out. He had 13 people on the plane and only 8 names on the manifest. The flight to Montserrat was uneventful. Myron and I sat in the front seats behind the cockpit and could watch the instrumentation. It was a neat experience.

Montserrat


Our original plan was to spend four days in Montserrat. We were going to land in the evening of Day 1 and spend it getting our bearings, then spend Days 2 and 3 visiting properties and tracking down various people Myron had met online. That got compressed and we hit the ground running a day late. Sun, our gracious hostess at the Bunkum Beach Guest House, picked us up at the airport and took us to a grocery store then on to our villa. We spent a while chatting, then called a realtor and started the house hunting.

We saw a total of ELEVEN houses that day between about 11:00 AM and 5:30 PM, with a break for lunch. It was hectic and dizzying. I ended up taking a picture of the listing that had the property name before we entered just so I could keep the pictures separate. Most of the homes we saw were built in the 1970's through early 90's. The majority were built as vacation homes and the intent was only to be there a few weeks a year. With the volcano becoming active many had not been stayed in for several years, and nearly all were in dire need of repair and updating.

We paused at around 1:30 to have lunch at The Gourmet Garden, and funky shack of a restaurant run by Marete, a Dutch lady who had been on Montserrat for a few decades. Later that day while riding around we came upon Marete walking from her house back to the restaurant, and offered her a ride. Myron commented "We already had friends in Montserrat!"

That first night we had dinner with our realtor and a few of her friends at The Royal Palms. It was a Chinese buffet prepared by the only Chinese restaurant on the island and served by Sri Lankans who had paid for passage to the Bahamas but were thrown overboard off the coast of Montserrat. It was a fun night and the food was surprisingly good. Joining us at dinner were two more Americans, one from Phoenix and the other from Maine. It was interesting to get their take on things and both were extremely nice.

The second day we had three more properties to look at, bringing the total up to fourteen. We visited the first two, then took a break to go back to Bunkum to call Myron's online friends Bill and Tina, a couple from Texas who moved to Montserrat about two years ago with their teenaged daughter. They invited us over and we spent a long time talking to them before we had to go see the last house.

That night we went to Tina's, a popular local restaurant in Brades. Myron tried the ginger wine, which was better than either of us expected. While there a middle aged white woman and an elderly black man sat down for dinner. She was very loud in a New York or New Jersey sort of way, he was barely audible. After we finished dinner and were waiting for our check she called to us to join them. What followed was an extremely uncomfortable experience. We told her where we were looking for properties and she insisted we were stupid. Her friend said we had to follow our dreams, and our dream couldn't be anyone else's. The banshee was just getting wound up and didn't hear a word of this. We finally extricated ourselves and bid her a good evening as congenially as we could, when we actually wanted to kindly request that she sacrifice herself to the volcano.

Our final day in Montserrat we had arranged for a snorkeling trip with Scuba Montserrat. Another guest arrived at Bunkum the night before and we offered to let her tag along. She did, and we had a delightful day. Our snorkeling trip wasn't until noon so we called Bill and Tina, who offered to take us to the top Garibaldi Hill where we could look down into Plymouth and over Fox's Bay. It was spectacular and very interesting to hear Bill talk about what had happened just since they had been there.

The snorkeling trip was fun, but it was overcast and the seas had been rough so visibility wasn't that good. At least the overcast skies kept it from being too hot. We stopped at Rendezvous Bay for lunch and we were all excited to see the tracks from sea turtles, who had come ashore to lay their eggs.

We asked our guides where to go for dinner and they recommended Jumpin' Jack's, a restaurant which was run out of a couple's house (their restaurant was destroyed by the volcano). What we didn't know was we were supposed to call ahead, so when we arrived they were settled in for the evening. They very kindly offered to prepare dinner for us, which consisted of a tasty sauteed wahoo (a type of fish), fried plantains, and pigeon peas and rice. It was all good (if a little underseasoned) and very traditional local fare.

That night there was a tremendous thunderstorm that woke Myron up a few times. The next morning we woke to a thin layer of mud covering everything. The rainwater had run into fissures in the volcano and caused an explosion of ash. The ash continued after the rain finshed so it stuck to everything, leaving ashen mud everywhere. It was interesting to experience this and Myron was like a four year old with a new puppy. I was a little less enthusiastic.

Conclusion


The island vibe was very laid back and friendly, with an undercurrent of mild irritation. Everything takes a while on Montserrat, some things aren't available with any regularity, and the local politicians are corrupt in a way expected for any banana republic. Before we make any decision to move we would definitely spend more time there. And we didn't find any properties that thrilled both of us. Myron had one favorite, I had another, but either would have been a tremendous compromise. It's going to take something truly special to make us give up what we have in Charleston.

Tuesday, September 23, 2008

now the waiting begins

Lotusphere 2009

Date : 9/23/08 10:48:40
Dear Charles Robinson,


Thank you for submitting your abstract for Lotusphere 2009.

Session Title: Domino Clustering and Server Migration Made Easy
Speaker Name 1: Charles Robinson
Speaker Name 2: Franziska Tanner-Whitlock

In early November, you will receive electronic notification of the status
of your session.

Looking forward to seeing you in Orlando in January.
The Lotusphere 2009 Content Team