Monday, December 31, 2007

it's coming

I have begun my migration to Blogsphere. Not being a Domino web developer I'm struggling mightily, but it is coming along. I'll be sure to post how I did the migration from Blogspot / Blogger to Blogsphere. It's not going to be easy.

Here is a preview of what I have so far: http://www.cubert.net/. Not much so far. Watch this space for updates, or check the new URL if you want to watch me struggle. :-)

Friday, December 28, 2007

SnTT: Hiding an ActiveX control when you hide its layer

My friend Adam (aka Wombat) is working on an app for doing employee badges. The badges will have the employee photo on them, so the plan is for the HR people to take pictures of employees, crop them down, and print out the badge on a special printer. Adam already has an employee management system built in Notes, but he had never worked with image editing before. I pointed him in the direction of an imaging component. He settled on one, figured out how to make it work in Notes, then started adding it to his employee management system.

The users wanted to just click a button, have something pop up that would let them select the picture and crop it, then they just save it. That was easy enough if he launched a separate document, but that was a little intrusive. His first approach was to put the control on a form and call it using NotesUIWorkspace.DialogBox. However, ActiveX controls won't display at all if you use DialogBox.

The next approach was to use a layer, which worked... mostly. The problem was the control would remain visible after the layer was hidden:


Adam figured out that by adding a call to MessageBox after RefreshHideFormulas the control (the big box with DEMO in the center above) would disappear. He was okay with that solution, but it was another box for the users to click and I knew there had to be something less intrusive.

He sent the app to me and after extensive testing I learned that any change in focus would cause it to render properly. Eventually I stumbled across using Tab, which would consistently make the artifact disappear. Then the great hunt for how to get Tab to work.

Adding SendKeys "{TAB}" after the RefreshHideFormulas call always generated an "Invalid Procedure call" error. I went through everything I could think of short of closing and reopening the document -- which would have cleared the artifact, but was a little too harsh for such a simple thing. No matter what I still got an "Invalid Procedure Call". I finally decided to dig into my API toolkit. And after numerous failed attempts I decided to get medieval and dragged out keybd_event:

Declare Sub keybd_event Lib "user32" (Byval bVk As Byte, Byval bScan As Byte, Byval dwFlags As Long, Byval dwExtraInfo As Long)
Const VK_TAB = &H9

Then to call it:

keybd_event VK_TAB, 1, 0, 0

What it does is it stuffs the keyboard buffer with a Tab, and executes it immediately. That's what SendKeys supposedly does, too, but this works! No more weird artifacts, no errors, it just silently does its job. It isn't cross-platform, but Adam is in a Windows-only environment so this was an acceptable solution for him. He's using an ActiveX control so it's definitely not cross-platform anyway.

You can easily extend Notes with ActiveX controls, but presenting them in a way that makes them easy for users to interact with can be a little tricky. Maybe one day IBM will make controls on DialogBoxes display properly, and perhaps they'll get them to hide when you hide their containing layer. Until then hopefully this tip will help anyone else who has struggled with a similar problem. :-)

Geothermal works!

Our utilities company provides us with a year to year comparison of our gas and electricity usage. The October bill surprised us tremendously, but the November bill has proven that it is a trend.



Our total gas and electric bill for 2006 was nearly $260. This year it is closer to $130. Our heating season is only 3 - 4 months so we won't enjoy this level of savings for long. I'm sure going to enjoy it while it lasts, though.

I have some hunches about the increase in electricity. It is likely a combination of the geothermal pumps that run constantly to circulate the fluid, and us being gone for two weeks during a cold snap and the person house sitting turned on an electric blanket that we found was still on when we got home. I'm going to look at the pumps and see how many KWH they use and calculate how big of an impact they are having.

Wednesday, December 26, 2007

most (un)likely

In Facebook there is a Superlatives app that lets you vote on what your friends are most likely to do or be. One of my friends proposed this:



I think that is more UNlikely. :-)

Wednesday, December 19, 2007

Toolbox for troubleshooting processes and connectivity

I have had a rather nasty issue for the past month or so with a VB6 application I'm rewriting in VB.Net 2005. It uses free threading in VB6, and it's not done very well. It memory leaks like crazy, floods the DB server with connections, and crashes a lot. With the previous author using advanced techniques like "Dim X As Variant" and then assigning it to everything from strings to objects to function addresses -- all in the same procedure -- troubleshooting was exceedingly difficult. In the course of making sense of this madness I amassed a toolbox of free tools and Windows utilities you can use to troubleshoot processes and connectivity.

Stuff built into Windows (XP)


ipconfig - The first place to check when you're having network issues. Use this to verify the IP address is set, and add the /all switch to make sure you have the correct DNS entries.

route
- The second thing to look at when you're having network routing problems. With the print flag it shows you every identified route from your computer.

Free tools


Process Explorer - This gives you an accurate and complete picture of how memory is allocated and everything a process has loaded. It will even tell you every Registry key a process touches, which can be tremendously handy.

[Side Note: Task Manager has numerous limitations, but two really stand out as truly egregious. First, it doesn't accurately report virtual memory. It actually tells you the private bytes a process has allocated, which is not the VM size. Second, it doesn't tell you external modules (DLL's, spawned applications) a process has loaded. If you see that an app is hanging you don't know if it's a problem in the application or one of the DLL's or applications it calls. Process Explorer plugs both these holes, and a whole lot more.]

Network Monitor - Allows you to capture and analyze TCP/IP packets.

Wireshark
- A network protocol analyzer that takes the Network Monitor to new levels. It can be used with everything from TCP/IP to USB and FDDI. This is the ultimate tool, but it does have a steep learning curve.

iperf - This handy utility will measure the bandwidth, delay jitter and datagram loss between hosts. This is most useful in WAN scenarios so you can verify what the bandwidth is between locations, but you can also use it as an indicator of network congestion on a LAN. Note that this is also sometimes called lperf, with a lower case "L" at the beginning. The correct name starts with a lower case "i".

I also want to mention that a great collection of tools is available from Sysinternals. This was a private company making tools (such as Process Explorer and Network Monitor) to plug holes in the base offerings by Microsoft. Microsoft bought them in 2006, but the same people are still working on the tools so the quality is still great. There is a wide range of tools, so you'll probably find something useful. :-)

8th Annual Lotusphere session database now available

Ben has one again shown his commitment to our community by pulling this together on his own. Get your copy by starting here.

Tuesday, December 18, 2007

Ed Brill: Perception is reality

(the post title is a trackback link)

Karen Demerly (comment #16) makes an extremely compelling argument:
So what is IBM/Lotus doing to change the perception of IBM/Lotus? I think that's been asked here before. It's obviously not always about price points, or ship dates, or whether the refresh button is F5 or F9.

I think IBM ought to be throwing Lotus products off the parade float - giving it away, putting it in the hands of every youngster in the world. Our kids should grow up on IBM software. Then their perception will be changed, won't it?

This is exactly where IBM has always failed: IBM has never really marketed to consumers. Lotus never targeted Notes at consumers, either, but the world was different then. Most homes didn't have a computer, they were strictly the purview of business. IBM bought Lotus just as the consumer appeal of the Internet was building, but Notes and Domino continued as business-focused products while the widespread consumer adoption of the Internet passed it by. IBM/Lotus added Internet-oriented features to Notes and Domino and supported a wide array of protocols, but it was always in the context of business use. They never made any attempt to make Notes or Domino sexy or have mass appeal.

While they were ignoring the consumer side altogether IBM didn't count on a company like Microsoft entering the picture. Microsoft wanted a piece of the business pie but couldn't compete solely on technical merit, and had no chance of getting a foothold in large enterprise IT shops. So they started mudslinging and spreading FUD while they flailed about trying to create (or buy) products to compete with IBM's Lotus offerings. They used smaller companies who were less risk averse as their starting point, eventually ending up with some products that are mostly good enough for fairly sizable companies.

The number of these smaller companies that were started in the 80's and 90's and grew to be megacorps dwarfs the number from the previous 40 years. And virtually all of them grew up with Microsoft products. New companies in the new economy were looking for small and agile solutions that were easily integrated and extremely flexible. They didn't care if they had to rip it all out and start over every year, they only had 40 employees. By the time they grew to 400 employees Microsoft was so firmly entrenched that they couldn't back out.

IBM was still lumbering along in the old mindset while the world was changing around it. They had Domino, which with some TLC and attention could meet the growing SMB needs. Instead of responding to this by focusing on Domino they went the Workplace route because it was big, monolithic, and fit traditional business models IBM was comfortable with.

I agree completely that IBM needs to get Lotus products into consumer hands, because those are the products most relevant to consumers. They don't care about autonomic computing but they do care about having a one stop shop for all their needs. I don't think I've ever heard any end user type say "damn I wish I had more applications to open!" No, they want to open one application and have it do everything they need. Notes can do that. Domino could be scaled down and reworked so it could be used as a personal web server and file server.

Until IBM groks in fullness that consumers ultimately drive business IT they're going to be losing market share -- or at least the perception of market share.

Monday, December 17, 2007

Is multi-tasking making us dumber?

One of the business blogs I have in my Netvibes is Tim Berry. In a post today he picked up on an article from The Atlantic (via Paul Barsch)which states that neuroscientists have discovered that multitasking actually makes our brains atrophy.

Multi-tasking messes with our brains in several ways. At the most basic level, the mental balancing acts that it requires—the constant switching and pivoting—energize regions of the brain that specialize in visual processing and physical coordination and simultaneously appear to shortchange some of the higher areas related to memory and learning.

Certain studies find that multi-tasking boosts the level of stress related hormones such as cortisol and adrenaline and wears down our systems through biochemical friction—prematurely aging us. In the short term, the confusion, fatigue and chaos merely hamper our ability to focus and analyze, but in the long term they cause (our brain) to atrophy.


That buzz you get from Twitter-ing, Facebook-ing, RSS-ing and blogging, all while on Skype and rearranging your iTunes playlists is just your brain telling you to slow down. Sometimes being a Luddite geek is a good thing. :-)

Sunday, December 16, 2007

SnTT: Resolution-specific content (Windows only)

Okay, so it's not Thursday. As part of this application I'm working on I want to maximize visible content by making the UI fit to the whole screen. I'm using embedded views, which can be set to autofit both the height and width of the screen, but the height will get set to 1", which is about 3 - 5 lines. So what do you do?

I did a semi-hack to come up with something that's mostly good enough. It consists of:
  1. A two-frame frameset. The top frame has a header form, the bottom is computed to display a content form.
  2. Multiple content forms for the resolutions I know users will be using. They are named, for example, Content_1024x768 with an alias that is just the resolution.
  3. Some Win32 API code to get the current screen resolutions.
  4. Code in the header form's QueryOpen to get the current resolution.
  5. An interesting technique I learned from Kevin Pettit via SuperNTF for caching the resolution.
Here is how it fits together. The QueryOpen event of the Header form contains the following:

(Options)
Option Declare
Use "LS.BE.Win32API"

Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim profile As NotesDocument

Dim resX As Long
Dim resY As Long

Call GetRes(resX, resY) 'LS.BE.Win32API

Set db = session.CurrentDatabase
'Here is the technique I lifted from SuperNTF
' You create a profile doc, but you don't save it
' This creates an in-memory cache but doesn't bloat the database
Set profile = db.GetProfileDocument("ServiceDatabase", Session.UserName)
Call profile.ReplaceItemValue("ScreenResolution", Cstr(resX) & "x" & Cstr(resY))

Set profile = Nothing
Set db = Nothing
Set session = Nothing
End Sub

The real magic happens in LS.BE.Win32API script library:

(Declarations)
Const HORZRES = 8
Const VERTRES = 10

Declare Function GetDesktopWindow Lib "user32" () As Long
Declare Function GetWindowDC Lib "user32" (Byval hwnd As Long) As Long
Declare Function GetDeviceCaps Lib "gdi32" (Byval hdc As Long, Byval nIndex As Long) As Long

Sub GetRes(X As Long, Y As Long)
Dim hDesktop As Long
Dim dcDesktop As Long

'Get the handle to the desktop
hDesktop = GetDesktopWindow

'Now get the device context of the desktop
dcDesktop = GetWindowDC(hDesktop)

'And finally, get the dimensions of the desktop
X = GetDeviceCaps(dcDesktop, HORZRES)
Y = GetDeviceCaps(dcDesktop, VERTRES)

End Sub

The Content form is computed as follows:



When the frameset opens the Header form's QueryOpen grabs the screen resolution, then the content frame pulls that out and uses it to calculate the form to load. What this gives me is a way to create resolution-specific content and dynamically put it into a frame. Unfortunately this is a Windows-only approach, but I'm sure something similar could be done using Java.

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

Imitation is the sincerest form of flattery - Part 2

Subtitle: Why Development by Collaboration Is A Good Thing

First I borrowed from Notes 8 to update the UI for an app. Now I'm borrowing even more heavily from Ben Langhinrichs to make that application even more functional.

The challenge: Take four databases that have been in development for over five years and slowly grown into one application and provide a single cohesive interface. Provide a compelling UI that is intuitive and, well, prettier.

It's a pretty tall order, and it's something I have wanted to do for years. The core to these records is the workflow section, which was really rather simplistic. It consists of anywhere from two to six steps, with different groups responsible for each phase. The challenge was to present this in a coherent way without unnecessary screen clutter. The previous implementation was like this:

Lots of redundancy, lots of visual clutter. I started thinking about how I could use layers, and I remembered Ben's use of layers to put controls beside a section title. Perfect! It took some work to get it laid out (and a couple of e-mails to Ben), but I finally got it.













I came up with a technique I call section tables. This lets you present a single cohesive table to users, but they break apart to provide more information. I am using it for workflow. Here it is all collapsed...






And with a couple of sections expanded.












Here is a sample database for you to look at while I'm finishing up this application. I'm still pulling everything together to make it cohesive but I'll be doing some posts detailing how I did all this. Without the resources offered by the community I don't think this would be possible in such a short amount of time, and I'm humbled to be standing on the shoulders of giants.

Friday, December 14, 2007

Microsoft's idea of backwards compatability

Office 2007 SP1 was released recently. Anyone who installed it and recompiled their Access projects (accde, ade or mde) discovered that the application is now only usable by someone who also has Access 2007 SP1. Microsoft is aware of the problem and has included three options for correcting it:
  1. Install Office 2007 SP1 on the computer -- *duh*
  2. Create the compiled application on a computer without SP1 installed -- *double duh*
  3. Use the 2007 SP1 version of the Access 2007 executable file -- are you freaking kidding me?!
Apply Office service packs with caution.

Thursday, December 13, 2007

'tis the season for anniversaries

Quick, where were you on December 16, 1947? Chances are I don't have any readers who were even alive, but you're all reaping the benefits of that fateful day. It's when the transistor was invented by Bell Labs! :-) Computerworld has a nice writeup about how the transistor has changed our world. It makes me wonder what the future holds.

With all the craziness of the past few months I managed to miss a couple of more somber but very important anniversaries. Long-time readers may remember that Myron's father, Theodore Pstrak, died on December 2nd, 2006. Both Ted and Helen (Myron's mother) are of Ukrainian descent, and they have a pragmatic (some would stay stoic) outlook. When Ted died Helen related a conversation she had with her father shortly before he died in which he said "Die is die". There isn't anything the living can do to bring back the dead so you have to move on. We have, to the best of our ability, but that doesn't mean Ted isn't still remembered, missed and loved.

On October 12, 1998, Matthew Shepard was murdered in Laramie, Wyoming. The murderers used a "gay panic" defense, claiming that Matthew's sexual advances caused temporary insanity. Eventually one threw the other under the proverbial bus, brokering a deal where he would testify in exchange for not getting the death penalty. In an act of compassion Matthew's parents arranged a deal where the second murderer also would not get the death penalty. Matthew's father is quoted as saying life in prison shows "mercy to someone who refused to show any mercy."

This sparked a national debate on what constitutes a hate crime. Matthew's parents created the Matthew Shepard Foundation to champion equal rights, and the Matthew Shepard Act is making its way through Congress. This legislation would add gender identity and sexual orientation to the federal definition of a hate crimes. It passed the House in May and the Senate in September. The president vetoed it. It was then attached to a Defense Department authorization bill and resubmitted, but was dropped a few days ago when it failed to gain the necessary support. It is painfully obvious to me that "liberty and justice for all" is a foreign concept to our current administration.

Wednesday, December 12, 2007

Rooms for Lotusphere are all gone!



















I guess I should have booked earlier. Where does one acquire a "corporate travel department"? Looks like I know what I'll be doing this weekend.

UPDATE (12/16): Thanks to everyone who expressed concern that I'd be sleeping in my car and bathing in the fountain outside the Swan. I have a room and am all set. :-)

Monday, December 10, 2007

If you use MS Access 2003 do not upgrade to Office 2003 SP3

Since I'm responsible for an ERP written in Access (yes, a full ERP in Access 2003) I'm extremely apprehensive of anything that might affect Access on end user's PC's. Office 2003 SP3 doesn't disappoint. There are several known issues but they pale in comparison to the problems being reported in the wild. These include Access applications that simply stop working in SP3, design elements being corrupted, and subforms that stop inserting records. Scary stuff indeed.

Couple this with Microsoft having to release the Access 2007 runtime three times -- and it's still got problems -- and I'm wondering if they do actually QA this stuff before they release it. I had a friend who worked for Oracle who used to joke their testing consisted of "SELECT * FROM Emp. Looks good? SHIP IT!"

Friday, December 07, 2007

Guess what company they're talking about

Here are some excerpts from a few blog comments. Can you guess what software vendor is being taken to task?

If you guys were in action, you'd have a beta.

Silence isn't exactly the way you develop a platform and engage developers. Silence isn't exactly the way you interact with customers and collect their pain points and desires to create a feature list for the next release. In the end, silence is a good way to create false expectations and alienate your developers and customers who care enough to follow this blog. People who follow this blog are not exactly your casual users. We are your power users. We are your core developers. We are your fans.

I'd like to point out that the community hasn't been confusing silence with inaction, but has been (correctly) equating silence with *uncertainty*.

You have zero credibility with developers. You need to be upfront, honest, and open.

So who is being raked over the coals? It's actually Microsoft and this is taking place on their own IE blog. The post from last week had a similarly icy reception. What has web developers so riled up? Well apparently there was a meeting in Redmond this week to discuss IE8. The only information coming out of that was that the next version of IE is going to be 8. No information about features, plans, or anything else, even to people who are design partners. It has been a year since IE7 was released and the IE product manager has been virtually silent about any future plans. Bill Gates committed to a 9 to 12 month release of IE updates, so some people are pretty pissed. Read more about it at Computerworld and Molly Holzschlag's blog.

See, MS developers do call MS to task sometimes. :-)

Tuesday, December 04, 2007

IdeaJam blog widget

Matt has updated the IdeaJam blog widget. I missed this when it was posted back in November.

UPDATE: Bruce has posted another version.


Wednesday, November 28, 2007

Buffer overflow vulnerability in Lotus Notes file viewer for Lotus 1-2-3 attachments

Technote 1285600:
Question
Sebastián Muñiz from the CORE IMPACT Exploit Writers Team (EWT) at Core
Security Technologies contacted IBM® Lotus® to report a potential keyview buffer overflow vulnerability in Lotus Notes® when viewing a Lotus 1-2-3 (.123 extension) file attachment. In specific situations it was found that the possibility exists to execute arbitrary code.

To successfully exploit this vulnerability, an attacker would need to send a specially crafted Lotus 1-2-3 file attachment to users, and the users would then have to double-click and View the attachment.


The advisory will be available at the following URL:
http://www.coresecurity.com/index.php5?module=ContentMod&action=item&id=2008

Answer
This issue was reported to Quality Engineering as SPR# PRAD777KP, and we have received a software update from the technology vendor involved. You must contact IBM Support to obtain the patch, which is available for Notes 7.x and 8.x client versions.
Note: The issue impacts only Windows-based Notes clients; it does not impact the Domino server.

Workarounds for Notes 7.x and 8.x client versions:

Option 1: Contact IBM Support to obtain the patch for the Notes client.

Option 2: Alternately, you can disable the affected file viewer by following one of the options in the "How to disable viewers within Lotus Notes" section of this technote.


Workaround for Notes 6.x client versions:

We are currently working with the technology vendor involved to investigate options for the Notes 6.x client versions. This section will be updated with more information by November 30th. Until a final solution is determined, you can disable the affected file viewers by following one of the options in the "How to disable viewers within Lotus Notes" section of this technote.


Workaround for Notes 5.x client versions:

If you are interested in protecting yourself from this vulnerability, we recommend disabling the viewers as described in the "How to disable viewers within Lotus Notes" section of this technote. There is no software fix available for the Notes 5.x client version.


How to disable viewers within Notes:

Option 1 : Delete the keyview.ini file in the Notes program directory. This disables ALL viewers. When a user clicks View (for any file), a dialog box will display with the message "Unable to locate the viewer configuration file."

Option 2 : Delete or rename the problem DLL file, which in this case is l123sr.dll. Be aware that the DLL file name starts with lowercase "L". When a user tries to view a 123 spreadsheet file type, a dialog box will display with the message "The viewer display window could not be initialized." All other file types work without returning the error message.

Option 3 : Comment out specific lines in keyview.ini for any references to the problem file (dll). To comment a line, you precede it with a semi-colon (;). When a user tries to view the specific file type, a dialog box will display with the message "The viewer display window could not be initialized."

For example:

[KVWKBVE]
;81.2.0.5.0=l123sr.dll
;81.2.0.9.0=l123sr.dll


Additional Background
In general, users are strongly urged to use caution when opening or viewing unsolicited file attachments.

The attachments will not auto-execute upon opening or previewing the email message; the file attachment must be opened by the user using one of the mentioned file viewers. In some cases, further user action is also required to trigger the exploit.



via Computerworld

Tuesday, November 27, 2007

unsubscribe from terror

Governments take for granted that you support their actions in the
war on terror. The truth is you’ve never been given a choice. Until now.

This is your chance to say NO, I didn’t sign up to a world governed by fear
culture & accepting of racial discrimination. I didn’t sign up to secret detention,
torture, rendition and the ill treatment of prisoners at Guantanamo Bay.

Most petitions ask you to add your name to a list; this one asks you to take it off.




via woonjas

Lotusphere websites oddity

I left for vacation on November 9th. I come back to find this in my Inbox:

Date: Tue, 13 Nov 2007 13:19:07 -0500 [11/13/2007 06:19:07 PM America/New York]

The Lotusphere Content Team would like your input on final content
direction for Lotusphere 2008...

A couple of paragraphs later it goes on to say this:

Deadline to submit your preferences and BoF vote is November 23, 2007

Umm.. okay... so roughly 10 days to provide feedback? That seems a little short to me, but I guess the show must go on. I'm honestly a little ticked off since I purposefully registered early just so I could provide my input.

Anyway, I didn't get back from vacation until November 25th but I decided to try logging in anyway. I did this because the session abstract submission is still active so I figured the preferences app would probably still be up as well. It is, and it accepted my selections even though the breakout sessions list is already finalized.

This isn't a complaint so much as an observation. The devil is in the details, and this is yet another example of where IBM drops the ball. Instead of letting people submit abstracts and preferences after the deadline it should give a "Thanks for your interest, voting/submissions are closed" message. In typical megacorp fashion, they leave the user in limbo wondering whether their submission was actually processed.

back from vacation

I'm back from Barcelona and the cruise and catching up on the real world. Pictures and a writeup to follow soon. Here is a brief rundown: Barcelona scares me, the Azores are beautiful, northerly transatlantic crossings suck, and a ship captain should have just as much responsibility to his passengers as his home office.

Thursday, November 08, 2007

Lotusphere Over the Rainbow group back for 2008!

At Lotusphere 2007 someone reached out and made the first ever attempt to organize gatherings of GLBT attendees at Lotusphere. Or the first I know of anyway. It was a blast and we had a great time, so I spoke with last year's organizer about repeating it for Lotusphere 2008. We agreed we would like to publicize the group better for 2008 and organize things a little better.

To that end I created a Google Group: LSOverTheRainbow. Membership is open to everyone and you can choose to participate or not, as little or as much as you like. Once you join you can send invitations from the group to any of your friends. I didn't lock down postings or set them to be moderated, so have at it.

For the record, please don't think I or anyone else is the leader of this group. This is just a convenient place to congregate and an easy way to disseminate information. So post a discussion, start a conversation, meet some new people, and make the most of networking at Lotusphere. :-)

Everyone is welcome but please understand this is a group targeted at gay, lesbian, bisexual and transgendered people. If you have an issue with any of those groups you probably shouldn't join. :-)

Wednesday, November 07, 2007

Blue Ginger

When we went to Boston recently we booked our flights around when we could get reservations at Blue Ginger in Wellesley, MA. Blue Ginger is the restaurant of Ming Tsai, a chef of Chinese descent who grew up in Dayton, OH cooking with his parents in their restaurant. Ming is best known for his show East Meets West on Food Network, as well as Simply Ming on Public Television.

I started off with a peach Manhattan, and Myron had a house special concoction I didn't write down. :-( Both were excellent, and I'm now on a mission to find a good peach liqueur so I can recreate the Manhattan.

When we finally had to make decisions from the menu we were seriously torn. We wanted one of each! For appetizers we finally we settled on the tuna poke, which was sublime, and the foie gras shui mai. The shui mai were tasty but the dumpling wrappers were rubbery, gummy and sticky all at the same time. The sauternes and shiitake broth they were served with was an amazing combination of flavors.

I selected the Chile Tea Rubbed Duck Breast with Fresh Plum Sauce and Peach Teriyaki as my entree and Myron had the Sake-Miso Marinated Alaskan Butterfish, which is one of Ming's signature dishes. My duck was rubbed with smoked paprika, cayenne, and sugar and served with a johnny cake topped with duck leg confit and a small bed of baby watercress. It was served a perfect medium rare, and the flavors exploded. My mouth was tingling nicely all the way through dinner. The duck confit and the johnnycake could have stood up on their own as an appetizer. The confit was meltingly succulent, the johnnycake had a firm texture and a wonderful corn flavor.

Myron's butterfish was cooked to perfection, and the delicate flavors all balanced well. Everything on the plate enhanced the flavor in a delightful way. The soba noodle sushi was very tasty, but the texture of the nori was an odd counterpoint to the butterfish.

The wine list was relatively small at seven pages and still managed to offer a lot of variety. The prices, though, where astronomical. Wines I can buy for $10 were priced over $50. Wines I had purchased in other fine dining restaurants for $45 were $80 here. I expected it to be expensive, but that was just absurd. We opted for a glass of wine each and were pleasantly surprised when we were given a small decanter that contained enough to fill each of our glasses twice. I chose the d'Arenberg Shiraz, Myron had the Fairview Sauvignon Blanc. Both were delicious and paired well with our main courses.

The food at Blue Ginger is absolutely sublime and rivals the finest restaurants I have been to anywhere in the world. However the decor leaves a lot to be desired. The restaurant is located in a converted retail space in a section of storefronts in Wellesley, MA, about 20 minutes from Boston. When you walk in the open kitchen is to your right, down the length of the restaurant, and a small bar area is to your left. The first thing that struck me were the support columns. The columns are built out about 3 food square and trimmed in light blonde wood. The tops angle out, making them look like inverted coat racks. The white and light colored wood is repeated throughout the restaurant. The floor is covered in nondescript institutional vinyl tile. With all the surfaces being so hard, and the kitchen open to the dining room, the result is an extremely noisy environment.

The odd decor and the noise were our only complaints about Blue Ginger. Dinner for two was pretty pricey and I expected something a little nicer than what Blue Ginger offered. I'm glad I had the experience, but I'm not sure I'd go back.

on vacation

My last couple of trips have been for weddings, but now I'm finally taking a real vacation! This is the final stop in my year of insane travel. We're flying to Barcelona on Friday, November 9th (landing on Saturday the 10th), then getting on the Oceania Regatta for a 12 day transatlantic cruise on Tuesday, November 13th. I'll be in Bermuda on Thanksgiving Day. :-)


Day
Port Arrive

Depart
1 Barcelona, Spain


5:00PM





1









Barcelona, Spain









5:00PM









2









Cruising the Mediterranean Sea














2
Cruising the Mediterranean Sea








3









Cruising the Atlantic Ocean














3
Cruising the Atlantic Ocean








4









At Sea, International Waters














4
At Sea, International Waters



5 Ponta Delgada (Azores), Portugal 8:00AM

4:00PM





5









Ponta Delgada (Azores), Portugal




8:00AM




4:00PM









6









Cruising the Atlantic Ocean














6
Cruising the Atlantic Ocean








7









Cruising the Atlantic Ocean














7
Cruising the Atlantic Ocean








8









Cruising the Atlantic Ocean














8
Cruising the Atlantic Ocean








9









Cruising the Atlantic Ocean














9
Cruising the Atlantic Ocean



10 St. George, Bermuda 8:00AM

4:00PM





10









St. George, Bermuda




8:00AM




4:00PM









11









Cruising the Atlantic Ocean














11
Cruising the Atlantic Ocean








12









Cruising the Atlantic Ocean














12
Cruising the Atlantic Ocean



13 Miami, Florida 7:00AM



I plan to relax a lot and recharge. Thanks to Vitor Pereira for helping us plan our day in the Azores.

Tuesday, November 06, 2007

a perfect fit


This past weekend I installed my new Sharp Aquos LC52D64U in my den. I measured obsessively to make sure it would fit between the counter top and the bottom of the bookshelves. This replaced an older 54" rear projection TV that ate 1/3rd of the den. Instead of the incredibly expensive Sharp mounting bracket I purchased a Rosewill mounting bracket from Newegg. It's been up since Saturday with no problems. And yes, that's the Food Network on screen. I was watching Throwdown with Bobby Flay. :-)

Believe it or not, this was very much an impulse purchase. Bruce Elgort sent me an e-mail inviting me to participate in a friends and family promotion from his employer, and it was a deal too good to pass up. We love the TV and the space it allowed us to reclaim, so thanks Bruce!

Just in case you wonder about the dated look of the paneling, our house was built in 1955 and the paneling and the built-in book cases and cabinets are all original. It's thick knotty pine, which is hard to find these days that hasn't been painted. It's not a look everyone likes, but we do. I redid the ceiling about two years ago, stripping off the popcorn / cottage cheese texture and painting it a color called Melted Butter, then doing the 6" stripe of a color called New Penny. The weird thing sticking down at the top of the picture is the bottom of a ceiling fan. Every room in our house has a ceiling fan, we couldn't survive the summer without them.

Killer Presentation Skills

Just to show I'm not a sore loser, here is something for the people who were chosen to speak at Lotusphere.


Sunday, November 04, 2007

Lotusphere 2008 speaker selection is complete

Thank you for submitting an abstract for consideration for Lotusphere 2008.
Unfortunately, we are unable to accept your session submission -- we
are simply unable to accommodate all of the incredibly 'top-notch'
submissions. We truly appreciate the amount of time and energy you
put into writing your session proposal - this was a year of extremely
tough decisions!

We thank you for your interest, and look forward to seeing you in
Orlando in January!

Sincerely,

The Lotusphere 2008 Content Team


Oh well. There is always next year. This just means I'll have more time to socialize. :-)

Friday, November 02, 2007

Last day for early bird Lotusphere pricing

I meant to post this earlier, but I've been a little busy. Today is the last day to register for Lotusphere 2008 at the low, low price of $1895! Even without the CLP love (yeah, I'm still ticked about that) it's still a good deal. Where else can you get a week of training, attend amazing events -- I mean come on... they rent a Disney theme park for an evening! -- and hang out with amazing people?

worst ... week ... ever!

The following is a total rant. I've just got to get this out.

Recently I blogged about our Exchange server getting toasted. That was just a warm up. Here is the timeline of the ongoing catastrophe.
  • Monday October 7th, 2007 - New network administrator starts.

  • Friday October 12th, 2007 - Old network administrator's last day. I'm in Boston. A problem is reported with files not updating on a DMZ server. Together with the new network administrator they determine it was an issue with SQL Server replication. They reinitialize the replication snapshot in such a way that it kills the security on the destination database and prevents customers from accessing it.

  • Monday, October 15th, 2007 - I walk into the SQL Server replication mess and work on getting that cleaned up. The actual problem was a firewall rule they changed that was blocking FTP uploads to the DMZ server. Meanwhile, new network administrator is busily installing software which he says will help him document our infrastructure. This, in turn, installed .Net 3.0, which requires a reboot. He doesn't restart because it's the middle of the work day. The cluster services on our SQL Server and Exchange boxes to go haywire.

    New network administrator doesn't notice the services failing and proceeds to install all outstanding Windows Updates on all servers. He also installs Internet Explorer 7 on all of them, even the DMZ server which didn't even have IE installed at all for security reasons.

  • Wednesday, October 17th, 20007 - The cluster failures are affecting user productivity. The PC Tech notices there are amber and red lights flashing on the drive arrays for Exchange and SQL Server. Exchange flambe (linked above) ensues. New network administrator earns the title Retarded Network Monkey (RNM). Restoring Exchange and rebuilding mailboxes takes the better part of a week.

    While this is going on there are weird problems with ISA and IIS servers. It turns out that while all the environment is horribly unstable RNM continues patching servers. One patch on the DMZ server takes our customer-facing ASP.Net 1.1 website offline. It takes nearly two days of research before my boss finds and fix the problem. I'm fixing SQL Server replication again after another patch kills it.

  • Tuesday, October 30th - Guess what? More patches are applied. SQL Server replication breaks again. Our ISA server goes bonkers and won't route outbound traffic. ISA rules are implemented with no rhyme or reason in an attempt to route traffic through a secondary connection.

    We finally have our first departmental meeting to discuss the problems we have been having. RNM makes it clear he doesn't think he had anything to do with any of the problems. He mentions he's in the middle of applying patches to the DMZ server and our SQL Server cluster. In the middle of the work day. Again. I bite my tongue until it bleeds. We come up with a change control process and a new edict: NO NEW PATCHES until everything we have is stable.

  • Thursday, November 1st - I finally have SQL Server replication rebuilt and stable. Users report that files they FTP to the DMZ server aren't showing up. It turns out the rules implemented on Tuesday broke FTP, but it's also eating the response so the clients think they files are going through. This is the same rule that was first implemented on October 12th. RNM decided to re-enable it, but added the nice touch of not providing any error messages this time.

  • Friday, November 2nd - Exchange is intermittently unreachable. I haven't checked the servers yet, but I'm thinking it's the cluster service failing and it has something to do with more damned patches.
The final tally for RNM: 22 days on the job. 244 patches applied to 18 servers. 3 hard drives crashed. 22GB of e-mail lost. I've personally spent at least 10 of those 22 days fixing broken stuff. The PC Tech hasn't had a chance to work on any user problems in two weeks. I can't even begin to calculate the productivity impact.

If you've read this far you may be wondering why there are so many outstanding patches. It's two things: First, the previous admins had an "if it's not broke don't fix it" mindset. Secondly, and more importantly, the previous network admins actually read what the patches were for and only applied the necessary ones. They also researched what the patch did and checked for reports of problems before he applied them. That's why things like .Net 3.0 wasn't applied to the DMZ server, because the prior admins knew it would cause problems with the ASP.Net 1.1 websites. They should probably have documented this somewhere, or at least flagged the patches so they didn't show up. I'll admit we were seriously behind on getting patches applied, but the shotgun approach of "apply everything and fix what breaks" is NOT acceptable to me.

You may also be wondering why RNM still has his job. I honestly don't know. If I were in charge he wouldn't be here. Since I'm not, I may not be here much longer myself. Someone who claims to have experience that would contraindicate doing stuff so stupid it brings down a production network shouldn't need a babysitter.

Tuesday, October 30, 2007

Outlook vs Notes

I've been working with Outlook 2003 for a few months, so here are my observations on Outlook 2003 and how it stacks up to Notes.

Tabbed UI's ROCK

Lotus introduced the tabs in R5, and it was good. No longer did you have to try to keep track of all those open e-mails and Notes databases applications in the Windows task list, now everything was neatly confined to a single UI. Microsoft went a different direction and added the ability to group similar taskbar items. This doesn't serve the same purpose at all.

For starters, instead of quickly scanning a list you can easily see...








you have to click outside the current UI window, look at a list, and select from it.














It's a lot more mental context switching to go through. Also note that in Access I have the Provide Feedback form open, but you can't tell that here. You have to know that the second thing in the list is the currently open element. Since Notes makes the switching mechanism part of the same UI as the work being done there is no question. It gets even better when you have multiple copies of the same Access database open, such as when you're comparing versions of an application.

Where Am I?

Here is an exercise to try from Notes (I'm using Notes 8 Basic):
  • Open your mail
  • Right-click the calendar icon and select "Open in new window"
  • From the new calendar window, click the mail bookmark
  • Notice how it jumps back to the first window. The new window is fixed so it can't load something that is already open.
Outlook isn't as smart. If you do this you'll have two windows with your Inbox.




Becomes...




Grouped taskbar buttons makes this even more fun.
















Since Outlook doesn't have tabs, this is the best you can do. One thing I do wish both Notes and Outlook had was a better way to flag which window is the original or first. For Outlook it's the one with the Outlook icon, and it's always either the leftmost in the taskbar or the bottom of the stack. As I close the windows, though, they eventually split apart into separate taskbar buttons when there is enough room. That's a little jarring and disorienting.

I like the tabs in Notes much better, but even then you can get tabs from the same application intermingled with others. It's hard to separate the e-mail with a link from the documents, views or databases the link opens. Notes 8 Standard offers the option to group tabs by application, but I've already expressed my opinion about Notes 8 Standard. :-)

Flexibility Is Good

When I used Notes on a daily basis I was bugged by all the reply and forward options. Eight ways to reply to an e-mail seemed like massive overkill to me. Three different ways to forward a message? Are you kidding me?! After working with Outlook for a while, I see the logic.

In Outlook you have two options for replying: Reply or Reply to All. You have one option for Forward. You set the default for whether they include history in the Options dialog(s). At first that seemed like enough, but then I realized it's probably 50/50 what I reply with history versus what I just reply to. In Outlook this means either deleting the history half the time, copying and pasting it in half the time, or it's a trip through the options: Tools > Options > (Preferences tab) E-mail Options button. Set up the reply style, reply to the message, then go back and undo all that since I don't want that to be the default.

You have exactly ZERO control over whether attachments are included. They are never included on a reply. They are always included on a forward. Want to reply with attachments? Use Forward. Don't want the attachments on a forwarded e-mail? Manually delete them.

I can understand that most users typically only use one style of reply or forward and Outlook works for the majority. But I can't imagine I'm the only person in the world who doesn't want to reply with history to every single e-mail I get. In Outlook I feel forced into that.

What Outlook Gets Right

Setting up a mailbox is just a tab on the user account while you're setting them up in Active Directory. Not having to deal with ID files is nice. The lack of options in Outlook means people can't get confused as easily. Outlook's offline mode is also nice in that it's just a checkbox. I check "use Exchange cached mode" and it automatically sets up the synchronization for me. I never even know it's happening. It would be nice if there was something in the Notes setup routine that would let you configure that during install (and script it for large rollouts).

Conclusion


Maybe 8 years of working with Notes has me so accustomed to it that I can't see the good in Outlook. I find the features anemic and administration is rudimentary. As for the much-vaunted usability, I wonder why Outlook 2007 introduced a Notes-style bookmark bar and doesn't fully implement the Ribbon UI?