It’s official: Apples run Windows


macxp.jpgIt’s official: Apples run Windows.

Apple’s newest machines use Intel processors, just like regular PC’s from Dell and HP. That meant in theory, we could have Apples that run both Apple software and Windows software. In reality, it took some time and about $13k of bounty money to make the whole thing actually happen. After the instructions are posted, individuals should be able to install Windows on top of Apple machines.

This is exciting for me because I have to use Windows stuff for work, but I’ve always wanted to play around with Mac OSX, and I really like the industrial design of Apple hardware.

It’s still not ready for mass consumption, because it’ll probably take a while for things like device drivers to work. What good is running Windows on an Apple, for example, if you can’t connect to the network? Geeks will hack away to get that stuff into place, and then a lot of us – myself included – will be plunking down $$$ for Apples. In fact, it’s great timing for me personally, because I probably won’t get a laptop in my new job, but I want a laptop for home. Macbook Pro, here I come…

Blogging, privacy, and my new job

1 Comment

Yesterday, one of my soon-to-be-former coworkers, Kiran, tipped me off to an NPR story on blogging and privacy. Steve Inskeep spoke with a grad student who writes a few Myspace blogs with his personal journal, political ramblings, and – whee – a blog about blogs. The student observed that he doesn’t know anyone who’s been denied employment based on the contents of their blog, but he knew people who had removed blog content with that fear in mind. Kiran said that before he met me, he didn’t know anybody so open about their lives as to maintain a blog.

It’s more than that, though: I don’t just maintain some random MySpace blog under an online name. I run my blog under, my real name, for all to see. I believe that a blog written under a real name gives some credibility, some weight, some authority. It’s less of a blog and more of a personal brand, a personal marketing site. It’s also a historical archive that lends some credence to who I am, and what I’ve been doing for the last several years. It shows that I’m not faking it.

I couldn’t go apply for a job right now with a faked resume saying I graduated from the University of Houston. Well, I could, but good HR folks could Google my name, find my site, read it, and discover that I never finished. Even if I doctored up my site right now to say that I finished, really savvy surfers could dig up an archived version of my site, step back through time to see the different copies, and read how I’d marketed myself differently over the years. Bam, busted.

Whenever a resume crosses my desk, I Google the bejeezus out of that person. I try to find every question they’ve asked on newsgroups, every reference to them and their employer, and their personal hobbies. I know I’m the rarity rather than the norm because my coworkers, managers and HR people are always dumbfounded by the amount of information I come across. You don’t have to write a blog to get busted – all you have to do is post a single question to a newsgroup or forum that shows your email address. “Ah, yeah, this guy posts questions regularly in the MS Access newsgroups, even up to last month. Why’s he still posting Access questions this basic if he’s applying for a SQL Server DBA job, saying he has years of experience?” Bam, busted.

The risk of living a somewhat online life is that if you lie about your life, you can get busted.

The reward is that if you consistently tell the truth, people can verify your history online. It’s almost like a reference check. My future employers can step back through time, look at each company I worked for, see my blog entries, and see what I was doing over the years. Until recently, that wasn’t something I promoted, but Kiran had been so impressed by my blog that he suggested I put a link right on my resume. That worked extremely well and it opened a lot of doors I hadn’t expected.

Enough doors, in fact, that I just gave notice at Kanbay/Adjoined after only five months. My last day will be Friday the 24th.

I cringe as I write this because I know I’m going to have to explain this five-month gig thing later. Years from now, hopefully very very many years from now, if I look for another job, I’ll have to explain why I only stayed five months at a company. I am so not a job-hopper – my last job was six years, and before that two at two years, but both were working with the same guy – I basically followed Wayne West to another company.

A non-blogger would give a BS excuse like “I was only a contract employee” or “The new position was a better match” or “I couldn’t stand the Kanbay merger” or something. Here, I find myself under my own spotlight, and I gotta be honest. I’m a permanent employee, I’m going into a similar position, and I think the Kanbay merger is a great move for Adjoined. At the end of the day, I just wasn’t personally fulfilled – this wasn’t the right match for me.

I’m extremely excited about the new company, and I’ll write more about it later. I don’t know their policy on blogging yet or if I have to sign an NDA about the company name, so I’ll keep my big virtual mouth shut until I get those policies cleaned up. After all, blogging is permanent, and you don’t want to screw that stuff up.

Segway is doomed


Ferrari.jpgI get a kick out of seeing quarter-million-dollar cars put in completely mundane positions. I’m not talking about things like Wrecked Exotics, a site that features expensive car accidents, but more like day-to-day tasks like a Rolls Royce at a parking meter.

Sitting at a traffic light today, watching a man load his dry cleaning into the hood of his Ferrari (remember, their engines are generally in the back of the car), I realized that I’m probably in the prime market area for Segways. There’s a ton of money around here, the money is spent on crazy items, everything is almost (but not quite) within walking distance, the city’s laid out for walkers, and the climate is great outside most of the time.

But I’ve never seen a person riding a Segway in South Beach. Not once. Well, there were a couple of women riding Segways and handing out music CD’s for Yahoo, but that doesn’t count because it was their job. I’m talking about people who actually spent their own money on a Segway and actually use it to go places.

I think if Segway can’t succeed here – or even get a single buyer – then they’ve gotta be doomed. People buy the most ridiculously expensive stuff here and flaunt it. I just got back from walking the dog, and I saw half a dozen Hummer H1’s and H2’s all blinged out with huge rims, lots of chrome, big stereos, etc all coming back from the clubs. So where are the Segways?

Software that makes my job easier


The Kanbay-Adjoined merger just got finalized, and the IT staff is asking us to prep our laptops for replacements. I figured I’d make a list of the programs I typically install when I first get a new machine. I’m not including the Microsoft stuff (Office, SQL Server, Visual SourceSafe, etc) that every SQL Server DBA needs, but just the other stuff that I can’t imagine working without. In no particular order:

Flock – awesome web browser based on Firefox, but integrates additional functionality like blog editing, mapping, Flickr uploading, and more.

Total Commander – Explorer shell replacement that resembles the old Norton Commander. Integrated FTP, favorite directories, directory comparison.

UltraEdit – powerful text editor with the ability to do search & replace in files.

Gaim – one client for all instant messaging programs. Better than running half a dozen.

GizmoProject – voice-over-IP. My phone calls come in wherever I’m logged in, and can simultaneously ring on both my computer and my cell phone. Cheaper than Vonage, plus more features.

Acronis TrueImage – backup program that can actually do backups while you’re using Windows. It also builds a separate recovery partition on your hard drive, backs up there, and offers a boot menu to do an emergency restore. Perfect for laptops who need to back up and recover on the road.

Royal TS – open source Remote Desktop client that saves passwords, lets me easily manage lots of connections inside a single window, and resize on the fly.

Case Studio – affordable data modeling tool with almost all of the features of the big boys, like Embarcadero and Erwin. Great support for SQL Server 2005. Very responsive support staff.

Float’s Mobile Agent – Bluetooth utility for Sony Ericsson phones. Syncs my contacts with Outlook, pops up caller ID info on the laptop when my phone rings, lets me send & receive SMS’s on the laptop without hassling with the phone’s keyboard. I’m really looking forward to picking up a Cingular 8125, but I’m a little bummed out that I’ll lose some of the slick SMS integration of FMA.

Attensa – RSS newsreader for Outlook that can sync with their online service. My RSS articles are synced between home and work, and I can access ’em on the road via the web as well. I haven’t started using it for podcasting yet, but when I get the new laptop, that’s definitely my next step. I’m using iTunes right now, but the drawback is that I can only sync at one place, either home OR work, but not both. When I leave work at the end of the day, I want to have the latest podcasts on my iPod for listening on the drive home. With iTunes, that’s not an option unless I use my laptop for my primary iTunes source, and with the size of my music collection, that’s a no-go.

Living on jambalaya out of the box


True story: we were talking entry-level salaries today at work when one of my coworkers said, “I don’t know how anybody can possibly live on $X here in Miami.”

My salary: about $5k below $X.

I immediately busted out laughing and admitted what I make, because I’ve never been the secretive type. And besides, he (and everybody else in the conversation) clearly made well above $X. Poor guy – he immediately backpedaled and said, “Uhhh, I mean, with a family. You don’t have a family.” Well, no, but I’m putting my girlfriend through school, paying for a new Jeep, and living on South Beach with a dog that gets more haircuts than I do. We’re not exactly scraping by on Ramen noodles – although I have to admit I’m eating jambala from a box mix at the moment. It’s not because I don’t have a choice, it’s just that I happen to really like Zatarain’s jambalaya with spicy sausage.

Cost of living isn’t cheap in Miami, but it’s not that bad, with one exception: buying a house. The real estate market here is utterly unreal, completely detached from any reality I’ve ever seen. People here obsess about realty. The guy in the next cubicle talks real estate all day long, trying to buy and sell his rental properties. It’s as if their jobs are just their part-time gigs, and their houses are the real deal.

The Miami Herald recently ran a series across several Sundays talking about the real estate market here. Half of the stories weeped over an upcoming slowdown, and the other half weeped about how people were priced out of the housing market. Add the two together, and you come to the conclusion that even if the market slows down, people will still be buying houses because they can’t afford housing at the current levels. It’s mindboggling.

But try as I might, I can’t get my head around these prices. In the 1949 building where we live, there’s a 2 bedroom, 1 bath condo with 910 square feet for sale for a mere $399k. That’s no garage, no covered parking, no laundry room (the w/d is in the kitchen), and a bathroom the size of my jambalaya box. The view’s pretty good and it comes with access to the rooftop “terrace” here, and we’re only two blocks from the ocean, but – I mean, come on, $399k?!? We’re renting for $1,350 for crying out loud. Why on earth would anybody buy in this market?

This is why people get into the mindset that you can’t scrape by on $X per year – because they’re trying to spend $3,000 a month on a house payment, plus property taxes and insurance. Heaven help you if you want a house with room to raise kids.

Every now and then I look back at the Houston Association of Realtors and check out home prices just to remind myself of what the rest of the US is like. $400k buys one seriously amazing loft in downtown Houston, not to mention a hell of a big house in the ‘burbs.

Maybe a year from now, I’ll look back and kick myself for not buying sooner, but right now, I have absolutely zero remorse for signing a one-year lease on this apartment. I love this neighborhood more and more with every passing day, but paying $400k for this – man, no way. No way.

Doing college homework

1 Comment

I dropped out of college over a decade ago without having a personal direction in life. Every now and then, other people ask why I don’t go back to college. Last night and this morning, I had the opportunity to do college homework – albeit somebody else’s.

More out of curiosity than anything else, I answered an ad on Craigslist from a college student struggling with a database management course. She was looking for an online tutor, and I thought, sure, why not? The last couple of days, I’ve gone through her homework assignments and gotten a chuckle out of the sheer irony of the whole thing. People tell me to go back to college so I can earn more money – instead, I’m earning money from OTHER people going back to college. Ayuk yuk yuk….

I can’t believe a modern college textbook teaches SQL by doing all joins in the “where” clause. Helloooooo, any graduate who goes out into the real world is going to get their clock cleaned for using that syntax. Mr. Anonymous Professor, it’s called ANSI-92. Look into it.

Resistance to blogging


I’ve encountered two instances this week where people dug in their heels and refused to even think about blogging as a communications medium.

#1: A Michigan friend of mine has been struggling with web development for years while trying to build a site to document his sailing travels. He wants a simple site – the history of the boat, a trip log, places he’s been, a guestbook, that kind of thing. He needs to be able to update the site from anywhere, via dialup or other slow connections. He’s tech-savvy enough that he bought an iPod and a USB hard drive on his own, but he doesn’t do computer work for a living or anything.

To me, that has “blog” written all over it. However, every time I try to show him blog tools, he gets hung up on the presentation quality. Blogs are not the most gorgeous web sites in terms of visual quality, and he wants something with a ton of photos with very specific layouts. So he continues to slog along with programs like FrontPage. He’s going to end up with a static, non-interactive site that doesn’t encourage visitors to keep coming back.

Worse, the site’s going to be tough to keep up-to-date, so he won’t want to keep posting frequent news. People who try to do date-based sites with FrontPage don’t do enough planning initially, so they keep creating new date pages with save-as, and they don’t have easy links between pages. Adding new months or trips becomes a big pain in the butt, and users have to manually update their links all over the place. End result: a site that’s rarely updated, especially as opposed to how easy it is to update a blog. I can update my blog simply by sending a text message from my phone or sending a picture from my phone.

#2: one of my coworkers is looking for ways to disseminate information across the organization. Different people want updates in different ways, and he wants to encourage a group conversation between employees to foster knowledge sharing and growth. Right now, we get information updates via email. When people share their opinion, they’re using reply-to-all. This kind of thing makes me cringe because it alienates people who might otherwise be genuinely interested in the discussion. Like me – I’d rather have this kind of “FYI” info segregated into a separate area where I can examine it at my leisure, as opposed to being shot straight into my email-equipped phone to alert me instantly. (No, I don’t have a properly email-equipped phone yet, but I’m working on that, hahaha.)

This also cries out for a blog. People could subscribe via email, via their RSS reader, or we could start a web-based blog aggregator a la Microsoft Channel 9 or Macromedia NA. Not all blog entries have to be public – they can set up different templates so that some blog categories are public, and some are internal-only.

I haven’t gotten a response back from that coworker, but the time lag suggests that if I haven’t gotten one by now, it’s probably not going to happen.

Why are these two guys alienated by the term “blog”? The friend says blogs have too much information, and that tells me that the “blog” term is too associated with the MySpace type of personal journal – or for that matter, this here blog of mine. But it doesn’t have to be that way: I use my separate survey blog to talk about news and issues in the survey industry, and you’ll never catch any personal stories in that site because it’s not appropriate. I build the site with a blogging tool simply because it’s the best way to build a site quickly, reliably, and with a load of features. I don’t have to worry about things like RSS feeds or building a comment system – it’s all already in there, ready to go.

Saying you don’t like blogs because they’re too personal is like saying you don’t buy DVDs because they’ve got too much porn. Sure, there are adult stores that sell adult DVD’s, but that doesn’t mean all DVDs are dirty. Sure, there are boring personal blogs, but not all blogs have anything to do with personal lives. I subscribe to several dozen blogs, and only a handful are even remotely personal. The rest are strictly business.

Podcasting, on the other hand – man, that’s still 99% noise and 1% signal.

Data mart limbo: how low can you go?


There’s a new blog about Dimensional Data Warehouse Architecture & Design written by Nick Galemmo, and his recent entries caught the eye of one of my coworkers. Galemmo asked “What on Earth is a Data Mart?” and comes to the answer:

“The Great Truth in Dimensional Data Warehousing boils down to this: To achieve success in building an integrated dimensional data warehouse, build a series of event specific atomic data marts. Don’t design or even worry about aggregates, those will fall into place later. Just make sure you are collecting the right events.”

I can definitely vouch for that. During the initial design phase of an atomic mart, look closely at each dimension and make sure it’s the most low-level dimension possible. For example, when building a sales data mart, if the lowest level of salesperson dimension is Sales Team #, then it’s not atomic enough. The mart needs to include the exact salesperson, if it’s available in the source. Once the data mart is in place, it’s expensive and time-consuming to revise the atomicity of individual dimensions. You can go higher, but you can’t go lower.

Good employees: cheaper by the dozen?


Chris Messina noted Google’s purchase of Measure Maps and blogged about it:

Kind of makes you wonder: is there room for the independent in The Acquisition Economy 2.0? …Especially when you can buy just an employee and leave his company behind?

I saw that and just had to respond, especially with my employer in the midst of being acquired. With today’s vicious non-compete and non-disclosure agreements, I think there’s less and less ability to buy off an employee you find valuable. If one of Adjoined’s competitors somehow found me irresistibly attractive, they can’t hire me without paying a crazy bounty to Adjoined. If one of Adjoined’s clients loves my work and wants me for life, same deal – or rather, no deal.

Sure, if the right opportunity came up, I could drag lawyers into it, but as an employee, this is not an option I’d want to take.

Furthermore, my hunch is usually that when I admire the work of a single worker, they probably have a good team alongside them. Where there’s smoke, there’s fire. Good people hire good people – and bad people hire bad people. It’s really damned hard to hire good people these days, so why not make a play for the entire team? If you gamble on a single employee alone, they might not like the new support network, might not like their new coworkers, might not like the new city, etc. Instead, hire ’em all together, and let the rest shake themselves out.

Run traces on your ‘bases


Database admins should run regular traces (aka profiles) on all of their database servers. Audit all login/logout events just to be aware of who’s logging into each server, from which machines, and how often.

Today, I caught one of the production application servers logging into a development database server – a bad combination. I checked with the application guys, and sure enough, someone had misconfigured the app server to hit the wrong database server.

Thankfully I caught it before we lost data, but it could have been worse. We could have run a production app on a tiny development database server for weeks, maybe months, without finding out. The only way we’d have found out is by losing data due to the development box going down – which isn’t backed up – and that would have been horribly bad.

Remember The Milk Review

Remember The Milk
Remember The Milk

Remember The Milk is the killer to-do list app, period. It’s a free web site to help you manage your to-do list. There’s tons of similar task management web apps out there, and here’s why this one is different:

I can set up multiple lists like work, personal, vacation planning, grocery list, etc. It sounds simple, but a lot of task management systems (like Outlook’s task list) don’t make it easy to slot your tasks into different lists. When I’m at work, I only want to look at my work tasks – not the list of chores I need to do at home.

I can share lists or individual tasks with other people. Erika can browse my home to-do list and add tasks. My coworkers can browse my work to-do list. But best, my coworkers can’t browse my home to-do list. These settings can be made at the list level or at the individual task level – so if I set up a task to get Erika a birthday present, I can hide that specific task from her, so she doesn’t see my list of ideas.

My coworkers can access my to-dos with all kinds of software. RememberTheMilk offers Atom RSS feeds and iCal feeds, so these guys don’t have to use RememberTheMilk directly in order to keep tabs with what’s going on with my database servers. They can just add a news feed to their existing RSS newsreaders, or use an Outlook plugin to get the iCal feed.

I can assign tags (aka labels) to my tasks. For example, I might have several tasks that require spending money, and I can tag all of them with the label “budget”. When I want to see all of the upcoming things requiring my not-so-hard-earned moolah, I can quickly search for the “budget” tag and see all matching tasks, regardless of which list they’re in.

I can set up smart lists of tasks. With the above example, I can set up a Smart List with all tasks with the budget tag, and it’s like my own custom report.

I can email myself tasks from my cell phone. I always come up with good (okay, mostly bad) ideas when I’m standing in lines, walking the dog, or going through the grocery store. I can whip out my cell phone, send a text message to my RememberTheMilk email address, and presto, it instantly adds the task to my to-do list. I can even set the priorities, deadlines, reminders, and more all inside the email if I want to get fancy.

I can get reminders anywhere, anytime, when it works for me. Remember The Milk will send reminders via email, instant messaging, and SMS. I can set what time of the day I want my daily reminders, and how many hours in advance I want reminders for tasks with specific due times.

RememberTheMilk is a great example of how software developers should keep an eye on good features in new web applications and software programs, and then figure out how to implement those features in their own applications. No matter what industry a programmer works in, there’s always great features coming out in other seemingly unrelated pieces of software.

The authors of RememberTheMilk drew inspiration from all kinds of other programs: tagging from Delicious, smart lists from iTunes, usability & fast response from Gmail, social bookmarking from – well, that’s from Delicious too, actually. But my point is that a good developer should always try to stay in touch with the cutting edge of software features.

Tagging, social sharing, smart lists, pervasive access – all of these will be a commonly expected feature in software packages by the end of the decade. Everybody’s software will have to have it sooner or later. Software developers that get this stuff out sooner will have a competitive advantage and gain market share. Software developers that don’t, and add it years later as an afterthought, will lose market share in the meantime. The recent release of IE7 will prove this one out, because Firefox and Flock will continue to gain market share as a result of their slick features like tagging and social integration.

Notes from our Caribbean cruise


Me on deck in Martinique

We’re back! We’re back at home with our beloved Ernie, on our beloved land. We had a pretty good and extremely relaxing time on our cruise.

The thing I like about cruising is that it’s so stress-free. We pull into the cruise port, unload our luggage, and we’re done working for ten days. By day two or three, I’m completely carefree, and by day three or four, I can’t remember what day of the week it is. As I write this on Saturday morning, I feel fantastic. That’s the good part.

The things we don’t like about cruising are the food, the very short port stops, and the seasickness.

We’re more the type to dive into local restaurants than go to the same buffet and dining room night after night. Even though they varied the menu, it all had the same mass-produced buffet feel. It wasn’t necessarily cheap, but it felt that way, and we’re probably more into food personality than ingredient cost. All cruise long, Erika and I pined for some good chips and salsa – very cheap, but unattainable in the buffet line or the restaurants.

I would recommend cruise-takers stick with the regular dinner seatings as opposed to the anytime-dining on the Princess “Sun Princess” ship, because it just doesn’t have good dining options to support an anytime-dining plan. It’s an older ship, built just before the anytime-dining craze caught on. Sure, technically there’s a few restaurants, but the poolside grill just serves burgers and brats, the Italian place has a small menu and tiny portions, and the Sterling Steakhouse is a complete joke. Princess separates half of the buffet at night and turns it into a faux steakhouse simply by adding candles to the tables. Come on, guys, gimme a break, we’re still sitting next to the egg station and the ice tea dispenser – lose the $15/person surcharge.

Fishing boat in St. Lucia

On this cruise with its several port stops, the islands seemed to blend together in a blur. They all had things that made them stand out, but the time just flew by. We’ve decided that we’d rather pick a single island, fly to it, and stay in a hotel near our main attractions. After we left Trunk Bay on St. Johns, I spent the rest of the cruise trying to get to another good snorkel spot, and couldn’t pull it off. We were so close! I wish we could have just stayed on that island itself, especially since we talked to another couple who were staying in nearby St. Thomas for a two-week vacation.

The one deal-killer for us, though, is Erika’s seasickness. There’s no point in having a vacation when one person is sick to their stomach half the time. Both of the cruises we’ve taken, she’s gotten seasick, so that’s that. Oddly, I didn’t talk to any other passengers who’d gotten seasick, but I guess if they were seasick, they probably wouldn’t be out all the time on the decks with me, hahaha.

I don’t want to sound like a party pooper. We had a good time, met some nice people, and completely relaxed. But it wasn’t our favorite vacation ever. Erika’s favorite is surprisingly the cruise to Mexico we took in February 2005, because she loved swimming next to the ruins of Tulum. My favorite is our Zihuatanejo, Mexico trip a couple of years ago because the food was so good and it had so much local character. Talking to some of the other cruises, Erika and I are extremely lucky to have seen so much of the world so far, and to have developed our own preferred travel styles and destinations.

The rest of this blog post is my travel notes taken during the cruise. A word of warning: this is way, way overly detailed. This isn’t really written for your own reading as much as it is for mine, so I can go back later and remember everything about the vacation. I’ll start uploading my travel photos Saturday and post a note on here when they’re available. It’ll take a while, because I shot several hundred.

And now, the long story:

Day One – Leaving Fort Lauderdale

Wednesday, December 28, 2005 – Photos from Fort LauderdalePhotos Around the Ship

We drove into Port Everglades in the afternoon and got into what turned out to be the slowest line of the day: the security checkpoint to get into the Port itself. Only two out of the five available lanes were marked “Open”, but drivers were using all five lanes anyway, leading to a last-second-merge with honks and all. Tip: when you drive into Port Everglades, go into the far left lane. Due to the design of the lanes, it’s the only one that doesn’t have to merge with anybody else, so that lane goes much faster. The taxis seem to have figured it out – every taxi I saw was in the far left lane.

After getting into the port, the signage left a lot to be desired. In a nutshell: before you leave home, call ahead to find out if the on-port parking garages are full. If so, use Park-N-Fly by the Fort Lauderdale airport, because nobody’s going to tell you that the garages are full until it’s too late, and you have to drive out of the port to park off site, and then endure the lines again while riding in a Park-N-Fly bus.

If the garages aren’t full, drive directly to your cruise ship’s terminal and drop off all of your luggage. (This is why the cruise lines send luggage tags along with the tickets – use them, and your luggage will cruise with you.) Then drive to the nearest parking garage. Shuttles run from the garages to the terminals every half-hour or so, but do yourself a favor and grab the nearest cab instead. It was $2/person to ride from the parking garage to the terminal – much better than waiting an unknown amount of time for a shuttle. Nobody around us had seen a shuttle, so we didn’t take that as a good sign.

Once we got back to the terminal, processing was very quick and painless. From the time we got in line until the time we stepped on the ship, I’m guessing it took maybe fifteen minutes tops. The only bottleneck: everybody had to line up to get Bahamas immigration forms from a single guy who was moving at the speed of light – light coming from a very dim bulb. Nice guy, though, as was absolutely everybody we came into contact with during the boarding process. Nobody was dull and routine.

We’ve only had one prior cruise, a Carnival one going out of New Orleans about six months before Hurricane Katrina hit, and Princess definitely does things much more smoothly than Carnival.

Sun Princess promenade deck

When we stepped aboard the Sun Princess, our positive comparisons to Carnival continued. The Carnival ship felt like a cheap 1980’s hotel with its loud, bright primary colors, neon lights everywhere, and faux-art-deco finishes. The Sun Princess was a mix of historical nautical decor (very dark woods, brass accents) and a mid-priced 1990’s hotel (reserved dark blues and greens, more real artwork, lots of marble). We felt much more at home on the Princess ship.

Our stateroom, an inside cabin on deck 9, was small but well-designed. We found it easy to move around, plenty of storage even for our ten-day cruise. Our steward, Reynaldo (aka Ray), displayed a horrified look on his face when found I’d pushed the two twin beds together. He stammered, “You…I…you….”

“You’re supposed to be the one who does that, right?” We both laughed, and he assured me that he’d come back with a set of sheets, blankets, etc. He chided me and told me I was the one who was on vacation, and he should let me do all the work. That attitude came up several times from different staff members: I really got the genuine impression that they wanted to do their job, and that they wanted to make my vacation worry-free and enjoyable. He didn’t give me any bad attitude at all, and was nothing but friendly.

The room only had one electric outlet, so gadget freaks, bring your USB chargers. I’d guessed this would be the case, so I brought my USB charger for the iPod and my phone. If you’re not familiar with USB chargers, they’re little electric cables that go from your laptop’s USB port to your gadget, and they charge the gadget using your computer’s power. That means you can recharge from the laptop without needing multiple AC outlets. Plus you can recharge from the laptop’s battery, useful in emergency situations.

We hit the buffet before the muster drill, and the food was another improvement from Carnival, although not a night-and-day change like the interior decor. The buffet held more choices, but all of them still seemed like Luby’s food. White fish with butter, beef with red wine sauce, tortellini in tomato sauce, etc. It was like walking down the frozen food aisle and reading off the Stauffer’s boxes. None of the food was bad, at least none that we tried, but we’ve got pretty high standards when it comes to restaurants. The food was tolerable, but I wouldn’t have paid $10 to eat at that buffet. The staff was quick to pick up dirty plates.

The muster drill was a complete joke. They moved our muster station from the Shooting Stars Disco to the casino immediately upstairs, and instructed us to sit anywhere we could – slot machines, roulette tables, the bar, etc. We were all so spread out that we couldn’t hear a thing. The supervisor happened to be the guy who managed the casino, and he spent more time on funny slot machine remarks than he did on life jackets.

Erika and I were more than a little surprised at the number of kids who readily put the life jacket whistles right into their mouth and started blowing. If there’s anything that never gets cleaned on a cruise ship, I gotta bet that’s the one. Norwalk Virus, here we come.

We got in line to talk to the Maitre D at 3pm because our travel agent,, had screwed up our dinner reservations. We wanted to change from anytime-dining to a fixed seating. In order to talk to the Maitre D, we first had to survive a line, then talk to the head waiter and convince him why we wanted to talk to the big cheese. The head waiter’s job appeared to be convincing people that anytime dining was okay, and didn’t suck. “It’s the same food, same waiters, same atmosphere – the only thing different is the color of the chairs.” He’d obviously given this speech more than once, and I sorry enough for him that I didn’t bother to point out that it couldn’t be the same waiters. One waiter doesn’t service dining guests on two different floors at the same time, and since one waiter always serves the same tables every night during a cruise, we would never see a fixed-seating waiter while eating in the anytime dining hall. But anyway, Erika and I gave in and left him to deal with the next irate guest. The couple ahead of us had already busted his chops trying to get a window table, and it was hilariously obvious that the guy was trying to pass the waiter some bills while keeping that unknown to the rest of us. He kept moving around so that his back was to the rest of the line, shielding his illicit transaction from the public. The waiter did his best to be politically correct and not take the moolah.

Leaving Port Everglades

We went above deck to watch the ship leave Fort Lauderdale. I tried getting a glass of wine from one of the deck lounges only to find that the on-deck selection of wine isn’t just limited, it’s non-existent. The poor waiter had to hustle upstairs to the wine lounge, get the glass of wine, and bring it back. And wouldn’t you know it, he brought the wrong kind. I’m not a wine genius by any means, but when I order a glass of Pinot Noir (a red) and the waiter brings back a white wine, I’m pretty sure it’s the wrong one. The waiter was really gracious, ran back upstairs, and fetched back another glass. I wouldn’t have cared what kind of red wine it was at that point – I didn’t want to make him run back a third time! Note to self: when ordering wine from the deck lounge, ask what kinds they have on hand first.

As we made our way out to sea and the sun fell below the horizon, the winds picked up and we figured we’d better go get warm. We headed to our cabin to read and take a nap, and we never came back out. We were both trying to recover from sore throats, so we missed the first night’s activities altogether.

Day Two – Princess Cay

The blue globe is the hand sanitizer

Thursday, December 29, 2005 – Photos from Princess Cay

From our inside cabin, judging by the ship’s motion, I thought we were in rough seas. I could see the bathroom towels swaying, could see the water moving from side to side in the toilet bowl, and guessed Erika would need to take her ginger pills pretty quickly. After showering and heading above deck, I could see that the sea was actually pretty calm, maybe 1-3′ waves. Strong winds, though. Still, I was surprised to see how much the ship moved in such small seas.

Upon entering the Horizon Court buffet for an early breakfast (around 6am), a water-free sanitary hand wash station guilts passersby into cleaning their hands before each trip through the buffet. As if that’s not enough, a staff member stationed nearby catches people and points them back to the hand wash. “Do you want to wash your hands first?” Combine that with the fact that all of the restaurant workers wore plastic gloves, even the bussers, and you get the idea that Princess is pretty serious about sanitation. It reinforces the Luby’s Cafeteria feel, but hey, I’d rather be healthy at Luby’s than be sick at a good restaurant. The Hand Wash Police remained stationed at the front of the buffet for the entire cruise, not just as an introductory-day thing.

The breakfast buffet fare consisted of yogurt, granola, cereals, fruits, and more pastries than I’ve seen at some bakeries. There was an egg station for cooked-to-order omelettes and whatnot. I’m a pastry guy, so I left quite satisfied, but fans of fresh pancakes and waffles should head for the dining room instead of the buffet.

Love Me TenderOur first shore excursion: Princess Cay. It’s not really an island, just a 40-acre stretch of Eleuthera Island. The island doesn’t have a dock of its own, so to get to shore, cruisers have to board a small boat called a tender. The cruise brochure said we’d be at Princess Cay from 9am until 4pm, which is do-able, but in reality, it was more like 10 to 2. They start giving out tender tickets at 9am, and the last tender leaves Princess Cay at 3:30.

I’d initially worried that Princess Cay would suck just because it’s owned and operated by the cruise lines. I couldn’t have been more wrong – it made for a great first day on the beach. The facilities were set up well, plenty of wait staff (brought to land by the cruise ship, evidently), lots of water gear to rent, and plenty of cabanas. It’s not the place to go snorkeling because the shores are rocky and the wildlife nonexistent, but sailors, floaters, and sun worshippers will have a great time.

Princess Cay Beach

Erika and I did absolutely nothing. For a few hours, we shuffled through a few pages of books, but mostly just watched the waves coming ashore, laughed at the little kids getting socked by the waves, and tried not to look at the two very large and aged women in front of us who confidently sunbathed topless. The horror.

The cookout food was apparently brought ashore from the ship and consisted of typical basics – burgers, brats, ribs, etc. Nothing bad, but nothing to get excited about, and certainly nothing island-y.

Erika and I both wanted a fresh coconut, but the closest I could get was pina coladas in coconuts carved up to resemble monkey heads. The monos did not join us in the trip back to the boat.

The tender ride back to the cruise ship was anything but tender: a rollicking, rolling romp through the waves. Thankfully it’s only around five minutes long, because passengers were hooting and hollering with each pounding wave. The lifeboat’s windows leaked water. A lot. Enough that passengers moved around, put up towels, and donned hats.

Bayview Reading Room

Erika found her way to the Bayview Reading Room while I took an afternoon nap. The ship’s library has a row of thick leather chairs with cassette tape players built into the armrests. They may be outdated, but they’re still comfortable, as Erika can attest to after falling asleep in them.

We went into the Marquis Dining Room for our first anytime dinner around seven o’clock. The menu and atmosphere was indeed just as good as the scheduled dining, with the advantage being a slower pace and more individualized service. The wait staff had more time to chat with us about their backgrounds, their time on the ship, and the menu items. The waiter saved me from a dessert choice I probably wouldn’t have enjoyed, but they couldn’t save us from our choice of champagne. We were still getting to know the different brands in the ship’s cellar, and it turned out we didn’t like the full-bodied one we ordered. Ah, well, we’d try something else the next night.

The show of the evening, a production show called Curtains Up, started out pretty badly. Erika and I aren’t exactly fans of musicals – this show is like a “Greatest Hits” for Broadway show tunes – and the two stars were overly cheesy to boot. Lullaby of Broadway has to be one of the dumbest songs I’ve ever heard, but you can’t blame the dancers for what they’ve been given to work with. They threw their hammy hearts into all of the songs, though, and everybody could find something enjoyable. Our favorites were the Cabaret numbers (hubba hubba) and Oklahoma.

Another staff kudo: before the show started, the theater waiter pleasantly took our orders for hot tea (a free beverage) and delivered it back promptly without any fuss. We weren’t trying to be cheap, but we just wanted hot tea to soothe our sore throats.

Note to late-arriving theater guests: either arrive on time, or don’t arrive at all. Under absolutely no circumstances should guests walk into the theater after the lights are out and the show has started. It’s extremely distracting to watch these bozos walk around from aisle to aisle, looking for a few seats grouped together. The show repeats at another time. Better luck next time.

Note to families: get everybody into the theater at the same time. Don’t trickle in one by one, thereby forcing everybody in your aisle to stand up and let you through individually, every three minutes.

The late night buffet at the Horizon Court still leaves a lot to be desired.

Day Three – At Sea

Me up on deck
Friday, December 30, 2005 – Photos at Sea

(If it wasn’t for these notes, I would have absolutely no idea what day it is. Erika and I settled into our cruise ship rhythms last night, and it already feels like home. Man, I’m ready for retirement.)

The morning ocean was as flat as open water could possibly be, and I can’t imagine having a better day at sea.

Every morning I head up on deck with the laptop, and I got a few people stopping to ask questions about it. It spans the extremes: an older gentleman had never seen a laptop before, and a young European crew member talked shop about his laptop’s 17″ wide screen and my Centrino processor, and everybody and their brother asked me if I got WiFi reception all over the ship. (I didn’t – it’s available in the Atrium 5th floor for free, but the signal is very weak.) None of the other guests appear to be morning writers like myself – rather, they’re more the type to lay down in one of the poolside deck chairs and bundle up in a towel in an effort to reserve a few precious chairs for their family. Everybody’s idea of vacation is different.

This ship is quiet. The rooms are quiet: we’ve never heard our neighbors. The deck is quiet: no music, no blaring announcements, and no annoying sales attempts. (They seem to confine the sales pitches to flyers they deposit at your door all day.) This is a heck of a place to relax. The average passenger age appears much older than the Carnival ships, at least evidenced by the very low number of families with kids that I’ve seen. The nightly events cater less to the party animals, and more to the show crowd.

This was the first formal night. I didn’t pack any formalwear, and as we’ve discussed with several other families, guys really get screwed on formal nights. Women can put on anything shimmery and get in, but guys have to get all dolled up in these useless suits and ties. I understand that at one time, cruising was a formal affair, but get with the times. When the restaurant pushes promo shots of booze every night at dinner, we’re not talking about a five-star restaurant here.

At lunchtime, the buffet offered food with a Mexican theme: fajitas, refried beans, chips, salsa, etc. Erika and I were excited at the prospect of good chips and salsa, but the kitchen crew let us down. There is no way to grab intact chips out of a bowl using plastic tongs. We ended up with a bunch of little chip fragments, and some pico de gallo. Hmm. High school cafeteria Mexican.

For evening entertainment, we settled on a comedy show by Don Friezen. He had a strong start, but tapered off into a long routine about a Southwest Airlines pilot on Percocet that didn’t quite make sense. Even the MC, who picked up the mike after him, said she didn’t quite understand that kind of humor.

Day Four – St. Thomas

Saturday, December 31, 2005 – Photos from St. Thomas and St. Johns

Docked in St. Thomas

To get the most out of a vacation, get independent guidebooks for your destination, and read them again and again. These people know what they’re talking about. We picked up the Frommer’s Guide to Caribbean Cruise Ports, and it suggested that the nearby island of St. John holds one of the best beaches in the world. They said going to the Caribbean and skipping Trunk Bay is like touring Europe without going to Paris. Our cruise wasn’t stopping in St. John, but we decided we didn’t want to miss this beach, so we planned our own private excursion.

After disembarking the ship around 10am, we took a private van taxi to Red Hook Bay, where ferries run to the island of St. John every hour. The taxi ride was a thriller in and of itself: tiny two-lane roads are strewn all over the mountainous island of St. Thomas, going up and down hills at crazy angles. We held on for dear life as the taxi driver explained how he’d found God earlier this year in the form of an 84 year old woman who read scriptures. I shall now tell you how I found God in the form of a 50-something taxi driver.

While driving, this guy told us a story about a near-death accident he’d had a few years back. The brakes failed because he hadn’t been maintaining them properly, and he had a vanload full of paying passengers going down a big hill. He held on for dear life, swerved around a lot, and rolled the van over. Thankfully, he said, nobody called his insurance company, and he had the tiniest amount of insurance on the van, just liability, $10k max per person.

He told us this story while we were going up and down hills in his van.

Now, I’m not a marketing guru, but I bet he doesn’t get too many repeat passengers.

Regardless of his driving style, we made it to Red Hook safe and sound. While in line for the $4 ferry tickets, we struck up a conversation with a Nashville couple staying in St. Thomas for a couple of weeks. They were taking a day trip over to St. John to eat at a place known far and wide (okay, maybe not) as the 3rd best cheeseburger in the Caribbean. 3rd best cheeseburger in the Caribbean? What kind of list is that? I suppose if one wants to end up with a best-cheeseburger-in-the-world list, one would have to start by analyzing region-by-region. Bizarre. Regardless, I liked their vacation style, and looking back, that matches our travel ambitions more than a 10-day cruise does.

The ferry and taxi rides exposed the area’s poverty. Residents ferried from one island to another to work, and boarded open safari-bus-style taxis to get to work, shopping, and school. All over both islands, cars just died by the side of the road, never to be resuscitated. I saw one car after another that had blown a tire, and then sat in a state of complete disrepair. Mentally, I kept building pictures of families who were barely scraping by, and then couldn’t afford basic repairs on their cars. Pretty sad.

Erika and I wondered how the islanders really felt about tourism. Sure, we’re bringing in money, but there has to be some bitterness when a steady stream of strangers blow through and blow cash without getting to know the natives.


Enough of that – let’s get back to my selfish vacation. 😀 Trunk Bay was indeed gorgeous, if not a little small. Okay, it was really small, especially compared to our huge, wide swathes of sand back in Miami Beach. As far as beach itself goes, the sand was good, but not plentiful by any means, and at first, I was a little underwhelmed. Sure, the water was clear, but come on – it still wasn’t clear enough for us to identify those rocky things we stepped on.

Then I got into the water, put on my optical-correcting goggles for the first time, and stuck my head underwater.

Holy moly. That’s some clear water, and those rocky things are dead coral!

The US National Park Service maintains Trunk Bay just like any other national park in the US, with guideposts, signs explaining the natural life, helpful trail markers, etc. But here’s the difference: this park is underwater. I snorkeled (again, for the first time) out into the water and started down the underwater coral reef trail. It’s marked with signs, explanations of different kinds of fish, and has helpful buoys where tired snorkelers can catch a breath above water. The coral trail runs from the ocean’s edge out to a nearby island and back.

I was completely amazed. We’re talking life-changing experience. I could see so clearly, so far down underwater, and even more, the underwater world held so many gorgeous living things! The experience was beyond anything I’ve ever seen, and the only thing I can possibly relate it to would be taking a swim through the tropical aquarium at a major US zoo. I’ve always seen those aquariums with their dozens of unique fish species and thought, “Yeah, right. They’re just stuffing all those totally different fish together to simulate what the entire ocean is like. Those diverse fish don’t all hang out in the same ten foot square area.” But they do! I could drift for a few moments and spot a dozen different species of fish all within a space the size of my bed.

I didn’t make it far on my first snorkeling attempt, not more than a hundred feet, and I came straight back to Erika – who stayed in shallow water because she doesn’t swim. I tried to explain how exciting the whole thing was, but I did a pretty bad job because I was still kinda freaked out by the ability to breathe underwater. I’m the kind of guy who doesn’t open my eyes in the shower, let alone underwater. Being able to both see AND breathe while scoping out all this cool stuff – well, I was just blown away.

I snorkeled out farther and farther, and I’m hooked. What an incredible time! It was worth the side trip, even though we only got to spend a couple of hours at Trunk Bay versus the four hours of ferry & taxi time it took to get from the cruise ship dock to the bay and back. I would heartily recommend it to anybody – but then again, that’s why we buy guidebooks, read them, and heed them.

High Tide Bar in St. Johns

We had about 45 minutes to kill while waiting to catch the return ferry from St. John to St. Thomas, so we walked over to the High Tide Bar. It’s a friendly, pleasant, open-air bar right next to the Cruz Bay ferry, and the (apparently American) owner was brilliant to set it up there. They got plenty of walk-up business from tourists taking the ferry. The menu offered locally styled food as well as American favorites.

We ordered conch fritters, chips & salsa, and Virgin Islands Pale Ale. I fell madly in love with the food and beer, and I promptly declared it the best food we’d had yet on this vacation. The chips appeared to be made of fried filo dough: soft, yet crispy. I liked the pineapple-based salsa more than Erika did, and we both hankered for some good old fashioned Mexican salsa at some point during this cruise. The Virgin Islands Pale Ale was light and very fruity. I pledged to look it up in my alcohol-distributor client’s database after the vacation to find local places that carried it.

Back on the cruise ship, the New Year’s Eve celebration required formal clothing, and since both Erika and I were pretty tired out, we decided to skip it. We grabbed food from the buffet and hit the bed for a nap at 8pm, saying we’d wake up at 10pm and join the festivities up on deck. At 10pm, we were still zonked, so we slept until 11:45pm. I went up on deck and found the boat completely deserted, including the pool bar – everybody was in the Atrium Lounge for the official party. So much for my impromptu affair. Instead, I hit the Horizon Court buffet and celebrated the countdown with a Filipino waiter – and no, I didn’t kiss him, hahaha. I was the only guest in the restaurant for a few minutes until the partiers came up from the lounge party, at which point I retired back to the room with Erika to watch TV and fall back asleep.

Day Five – Martinique

Sunday, January 1, 2006 – Photos from Martinique

Martinique coastline

This morning, I sat in a deck chair, sipped my latte, and watched the dolphins leaping out of the water in the shadow of the cloud-covered peak of a volcano.

Un-bee-lievable. The whole cruise was worth it for that moment, and you can watch it unfold in a movie I shot with my digital camera. (I’ll link to this later.) That one instant is a perfect example of why I tell everybody to carry a pocket-size digital camera that shoots movies. Play around with it until you’re comfortable enough to pull it out of your pocket at any time and be shooting video within five seconds. Life’s best moments happen at unpredictable times, and you want to be able to remember them forever.


At noon, the ship disembarked at Martinique, and hundreds of cruisers poured out into downtown Fort de France. The silence was deafening. Our Frommer’s guide had warned us that Martinique’s shops would be closed on Sundays, and the fact that it was New Year’s Day didn’t help either. Aside from a handful of t-shirt vendors, there was literally nothing to do. The restaurants were closed, the famous church was closed, the library was closed, etc., etc. This would have been a perfect day to take an excursion snorkeling or sailing, but we’d expected at least a few shops to be open, so we prowled the town. Nothing. We scored some t-shirts and a couple of paintings, and we stepped back onto the ship in less than two hours. Erika and I spent the afternoon lounging on the promenade deck reading and writing.

The ship’s dinner menu and the production shows took clues from French Martinique: both were very French, although the restaurant did a better job than the show. C’est Magnifique consisted of various Paris-inspired numbers meant to tell a story of love won and lost, but the female star’s bad wigs were so distracting that it was hard to keep a straight face. To add insult to injury, she had to do a song by Edith Piaf, one of Erika’s favorite singers, and those are some tough shoes to fill. I liked the outfits and the songs they chose, but – well, let’s just say Erika and I won’t be going to any musicals or revues anytime soon.

The pitching motion of the ship finally caught up with Erika just before the show started. She was uncomfortable enough that she decided to pass on the next day’s shore excursion, an all-day jaunt through St. Lucia via boats and buses – probably the least enjoyable thing possible for someone seasick.

Day Six – St. Lucia

The local pilot boards off St. Lucia

Monday, January 2, 2006 – Photos from St. Lucia

When big boats like freighters and cruise ships pull into local harbors, a local pilot gets on board the ship to help the ship’s captain find his way into the harbor and dock. The local pilots know the ins and outs of how to get the ships in safely.

I watched the local harbor pilot motor up to the ship and try to board. I’d never seen this before, and now I’ve got quite a level of respect for those guys. It’s enough to know how to drive a ship, but the boarding is the tough part: these guys have to jump from a little bobbing boat up onto a rope ladder, climb that, and get into the cruise ship – all in pitching seas. Whitecaps dotted the ocean’s 3-5′ waves. The pilot’s boat appeared to be doing its darndest to avoid bumping into the cruise ship, which was great for the mechanicals of both vessels, but didn’t do much for the poor pilot trying to climb aboard. Over the course of ten minutes, they must have made as many passes. Impressive. Talk about a case of the Mondays.

Due to her bout with seasickness, Erika skipped the shore excursion, The Best of St. Lucia by Land & Sea. We’ve since both agreed this would be the last cruise we take: she’s just too susceptible to motion sickness. I went anyway by myself, and I’m glad she didn’t go, because the van rides on this excursion were the perfect scene to shoot an ad for motion sickness medicine. One hairpin turn followed another, all the while going up and down mountain-side one-and-a-half lane roads with no guardrails and huge drop-offs. Throw in off and on tropical rainstorms, and it was a recipe for an accident.

Hurricane Hole in St. Lucia
Our first stop on the van tour was a photo-op of the bay where our cruise ship docked, and the second stop overlooked Hurricane Harbor, a bay where The Moorings (a charter company) keeps some sailboats. The guide explained boats pile in there during a hurricane because it’s a great place to ride out storms. My mind went back to our recent weathering of Hurricane Wilma in our condo building, with its steel-reinforced concrete walls. The thought of riding out a hurricane in a sailboat, no matter how safe the harbor, sounded utterly ridiculous. The live aboard lifestyle is not for me, no matter how cool it sounds, and no matter how many magazines I subscribe to. I’m a wussie.

The next stop took us into a poor coastal village whose main claim to fame was a clean public restroom. I kid you not. Our van stopped on a short street running along the ocean’s edge, not fifty feet from the water. At one end were the aforementioned restrooms, and along the rest of the street, vendors had set up small booths with t-shirts, banana ketchup, trinkets and hats. These were not big-time vendors – these were women and children clearly just scraping by, sharing street space with roosters and kittens.

Seaside fishing village on St. Lucia

Having sold our first home a few months ago and being just barely in tune with Miami Beach real estate prices, I couldn’t get my head around this little piece of oceanfront property. Call me materialistic, but all I could think about was how much this land was worth. It was half an hour’s drive from an airport and cruise terminals, just around the corner from great snorkeling, and there was the slightest bit of a town forming around it. Granted, getting water and sewage set up would probably present an obstacle, and the builder would have to design in some serious storm protection, but damn, we’re talking about oceanfront property with a street next to it! I’m glad I’m not in the real estate business: I would have been too tempted to call a bank right then and there, trying to scrape together money to buy that little patch. “Who do I need to bribe to make this happen?” Hahahaha.

Throughout the day’s drives, a similar theme kept showing up: guest houses in various states of disrepair dotted the south side of the island, the only side we toured. The guidebooks and our guide said that hotel development is concentrated on the northern side of the island. It looked like people had built mini-hotels all over the south side, without thought to beach access, nearby hiking trails, or any of the other amenities that bring in tourism. Build it and they do not come, unfortunately – takes a little more thought than that. (Kind of why I’m not in real estate – I just know what I don’t know, and I know it’s a lot!)

St.Lucia Drive-In Volcano

The van motored on, this time to Sulfur Springs, touted as the world’s only drive-in volcano. We drove into the crater, true to advertising, and hiked up higher to get a view of the bubbling, liquid-hot magma – oh, wait, turns out it‮s just bubbling black water. It’s really, really hot black water, so at least it’s got that going for it. It’s black because it’s so loaded with iron content, and it stinks because it’s loaded with sulfur. Natural gas companies add sulfur to their product so that customers can smell when there’s a leak. Sulfur’s strong, rotten-egg stench is easily detectable by anyone, anywhere, anytime, and the foul smell drives people away, so it’s perfect to get people out in the event of a natural gas leak.

Did I mention the smell?

Yeah. So, the volcano stank, as evidenced by some visitors covering their mouths and noses with their bandannas, shirts, used baby diapers, and whatever else was available that smelled better. Our guide explained that the sulfur water had healing, medicinal qualities that would make one’s skin look better. Who cares how good you look, though, when you stink this badly? I think I’ll stick with my current skin and scent.

The ever-present street vendors hawked necklaces supposedly made from the volcano’s lava, with the same healing qualities as the sulfur-laden water. Anybody who buys one of those is a true sucker: these necklaces are the exact same necklaces as we’d seen on the past couple of tour stops, made from the same material, and here’s the kicker – the necklaces didn’t stink. I don’t even understand why you’d want a healing necklace that reeks of sulfur, much less a regular necklace with that same smell, but hey – it’s working for the street vendors, and who am I to take away from their livelihood? I said nothing as some of the cruise folks handed over their money.

Fond Doux Plantation cocoa bean drying racks

We stopped at the Fond Doux Plantation, a cocoa and fruit farm, for a tour. The place felt like more of a plant garden than a working farm, but it was well kept-up and showed a lot of interesting plants.

The cocoa beans, 95% of which are sent to Hershey, are dried in open flat trays at two stages during processing. The trays are mounted on wheels so they can be easily slid into the barn when rain comes down, and we got an unintended demonstration of those wheels when an afternoon rainstorm popped up. From that point on, all afternoon, the sky would open up briefly at random times, despite a continuing bright sunshine. That’s the tropics.

Our guide had informed us that unlike other Caribbean islands, water was plentiful on St. Lucia thanks to a reservoir system. A few short minutes later, though, as we approached our next destination, she explained the lunch menu and said the first drink was free, but that we’d have to pay for water. Uhhh, what? I thought it was plentiful – but then again, so are the sucker tourists….

We lunched at The Still, a former rum distillery turned “resort”. Like West Michigan, “resort” seems to mean a hotel with a restaurant and a pool. I loved the open stone buildings on the grounds. If I built a home on St. Lucia, I’d want it to look just like this building. It’d be tough to survive a hurricane, but hey, if I could afford a house in St. Lucia, I could afford to split before the hurricane hit.

St. Lucia Dive Spot

After lunch, we drove to a dock and boarded the large catamaran Sun Kissed for our afternoon snorkeling tour. The crew was fun, the rum was free, and the views were beautiful. The weather wasn’t bad, but with a tight timeline, the crew decided to motor rather than raise sails. I was a little disappointed, because I was looking forward to the chance to see such a big boat under sail, but life goes on.

The catamaran pulled up to our designated swimming spot, the crew dropped the stairway in the bow, and the tour guide announced that we were free to start swimming and snorkeling.

Several people gathered around the ladder and…stood there.

I went up to the bow and found that nobody wanted to be the first one to descend the ladder and discover how cold and how deep the water was! So, being of questionable mind and an unquestionable lack of ability, I went first. I got a huge kick out of that – fifty-some people on this boat, and who’s the only guy willing to step into the unknown water? Me. That’s definitely not the way I see myself, and maybe I need to work on how I see myself. Anyway, down I went, and discovered that the water was bathwater warm and about six feet deep.

I continued my voyage of bravery and stupidity by soldiering off alone in the open ocean looking for coral reefs. Only after I made my way a couple hundred yards from the boat did I realize:

1. The boat had no lifeguard aboard.

2. There was no barrier island to protect me from the ocean waves.

3. I’m a 32 year old overweight guy with less than three hours of swimming time in the last five years.

4. The only other people with snorkeling gear still hadn’t gotten into the water yet, and they looked even less fit than me.

This was beyond “No Fear” territory and was well into “No Brains”. I scaled back my ambitions and confined my snorkeling adventures within a hundred yards of the catamaran.

St. Lucia dive spot

We were on the windward side of St. Lucia, the west side, away from the Atlantic Ocean. The windward side is relatively protected from ocean waves, but still nowhere near as calm as the Trunk Bay inlet at St. Johns. I had a great time just drifting along, face down, watching the waves pull the sand back and forth across the ocean bottom. But that wave action meant the water was cloudier than the crystal-clear St. Johns. I could still see the ocean bottom and the passing fish quite well, but they didn’t have the super-realistic snap, and the colors didn’t pop.

The only type of visible coral within a couple hundred yards of the boat was the yellow tubes. (Sorry, no scientific verbiage here, I’m a newbie at this underwater stuff.)

The fish were completely unafraid and swam within a foot or two of me. The quantity of fish was about the same as Trunk Bay – a few dozen fish for every square yard of ocean bottom – but they weren’t as large. I held discussions with the other snorkelers, and probably since all of us were relative newcomers to snorkeling, we agreed that this was one of the high points of our lives. There was nothing that could compare with sticking your head underwater and seeing a whole new colorful, lively world just below your feet. This wasn’t the excursion to take for people who just wanted to focus on snorkeling; it made a great cap to a day of seeing St. Lucia.

An hour later, the catamaran pulled out of our snorkeling hole and headed back for the cruise ship, plowing through one brief rain shower after another. We did our best to deplete the boat’s stash of rum, and the crew seemed more than willing to assist our efforts.


Out in the ocean, we witnessed a stream of increasingly more courageous fishermen. At first, we marveled at two guys out together in a small 25 foot craft with a single large outboard engine. If that engine failed, they could be in a lot of trouble pretty quickly. Then we saw one guy out alone in a 20 foot boat with a very small outboard engine, maybe 15 horsepower, not much more than a trolling motor. We were stunned that he’d even take on these rolling waves in the rain. If the rain and wind intensified, he could well be swept out to sea without enough power to fight the ocean, and he didn’t have a friend to help out. Clearly, these were people who didn’t want to be out at sea – they had to be. Finally, we saw a guy in a rowboat, pulling in his fishing line by hand! We were dumbfounded. This is the ocean, not some local lake or inlet, but the real, bona fide ocean. The ocean is something to be not just respected, but even feared, and this guy was out in a rowboat. Hats off.

Inside the boat, a member of the crew actually caught a mackerel as we sailed – well, motored – home. The passengers cheered his skill.

All in all, this excursion was worth every penny, and I’d recommend it to anybody with a strong stomach stopping over in St. Lucia. The faint-of-heart should be aware that the roads are winding and dramatic, and between the roads and the catamaran, motion sickness is a real threat.

Back on the cruise ship, the dinner service and food in the Marquis dining room surpassed our expectations, but with Erika’s escalating seasickness, we had to abort just before dessert. We skipped the comedy show as it was being held in the rocking-and-rolling Vista Lounge, very prone to wave motions due to its location in the ship. The evening’s scheduled island-style party up on the pool deck got cancelled due to inclement weather, but of course the rain stopped shortly after the cancellation announcement went over the loudspeakers. I spent the evening out on the promenade deck updating my travel notes and cataloging my photos. That one day alone, I shot over 500 photos!

The Sun Princess holds around 2,000 guests, but it feels much smaller than that by far. I’m not a raging socialite – I don’t even go to the bars – but by evening 6, I continuously ran into people I’d met and talked with. That evening on the promenade deck, several couples stopped and talked to me while I chilled out with the laptop and a glass of wine.

Day Seven – Grenada

Tuesday, January 3, 2006 – Photos from Grenada

Laundry day – or at least, laundry morning. The number of daily activities on board and on islands means we change outfits two, three or four times a day, burning through clean clothes at an alarming rate. I had packed about 20 shirts, but by evening six, I was down to three clean ones. I eyed the gift t-shirts we picked up in Martinique, but I decided I’d better do the right thing.

Guests can avoid the laundry room by paying $15 per bag for laundry service, but the bags are quite small while the washers & dryers are full size. I have a hard time paying what amounts to $30 per load for laundry when I have a couple of hours of idle time in the mornings, so I opted to do my own.

Laundry facilities on board the Sun Princess are clean, well-kept, cheap at 75 cents per load, and very small. Our floor had a laundry with two washers and two dryers. (I’ll spare you from pictures.) Erika advised me to go early to avoid the lines, but when I stumbled in with a duffel bag of clothes at 6:00 AM, the two washers were already running. I plopped into a chair with my laptop and waited for the other person’s two loads to finish. After he moved his clothes into the dryer and left, I started loading mine into the washers. As I put in the coins, a woman came in carrying clothes and tried opening the washers. I explained I was using them, and that she could be next. She said disgustedly, “You’re using BOTH of them? Come on.”

Just then, the first guy came back in to add dryer sheets, and thankfully, these two knew each other. “Oh, I should have known!” she exclaimed. “What the hell are you doing washing clothes this early?”

“Hey, you gotta get with it! These things are full 24 hours a day! You gotta get up earlier.” They joked and laughed, and I was off the hook. Whew. She made me promise twice that I’d go knock on her door after my wash finished. These laundry room people are ruthless.

By 8 am, I was done with the laundry, tired of fending off strangers from stealing my washer and dryer. I made my way up onto the deck with a couple of lattes, my iPod playing Jimmy Buffet, and watched the tenders scuttling back and forth to the Grenada shoreline.

With Erika’s bout of seasickness, we decided to skip the van and boat excursions and head for Grand Anse Beach, conveniently located just a couple of miles from the ship’s mooring. We took a $15 car taxi ride over, and we had an interesting question-and-answer session with the driver, a retired police officer. He pointed out some of the more interesting sights, including the former prime minister’s office up on a hill. Back in the 80’s, some Cuban rebels took over the building and the Grenada government asked the US for help. Reagan sent it in the form of a bomb dropped directly on the building. Gotta love that guy. No screwing around there.

Grenada suffered horribly during 2004’s Hurricane Ivan, and the effects were still visible on the vast majority of structures. Churches, libraries, homes and shops all had their roofs blown off and were still unrepaired. I’d guess that 50% of the structures were uninhabitable, and I saw no construction or repair work going on. The economy just won’t support a rebuilding effort yet.

Aside from the friendly driver, the short ride to the beach was pretty brutal. There was no infrastructure to support tourism: the streets all around the cruise ship docks are barely two lanes wide, and shared with locals walking around. Our taxi herked and jerked as it inched through foot and car traffic, usually staying below 5mph. I might recommend the water taxi service to Grand Anse beach over the car service, but frankly, I didn’t like that option either. The water taxis were comprised of skiffs loaded down with so many people that their hulls were maybe a foot over the waterline, if that. I had visions of one strong wave capsizing the boat right over, and I’ve seen too many passengers that couldn’t swim to shore – including me – in the strong currents here.

Me backfloating in Grand Anse

Grand Anse is a long stretch of beach, about 2 miles long. Stay with the side furthest from the cruise ships. Not armed with that piece of knowledge, we avoided the crowds – we’re not people-people at the beach. We went to the end closer to the cruise ships and rented an umbrella and sit-up beach chairs for $9.

Locals prowl up and down the beach hawking every kind of handmade ware you could imagine, along with some you can’t imagine. One guy walked up carrying nothing and said he was the “therapy man”, offering foot massages. Riiiight. While that would indeed be an unforgettable vacation memory, I somehow had to pass. They just don’t stop, either: we were visited by a vendor every 3-5 minutes.

I temporarily avoided the vendors by taking a swim only to discover why people don’t go to the north end of the beach. The first ten feet out are sharp rocks, and past that is thick seaweed. It takes a lot to get me out of the water, especially when the beach is crawling with street vendors, but I can only back float so long without getting bored.

No snorkeling here – the water was way too cloudy, less than a couple of feet of visibility. I would have been rather interested to see this forest of seaweed, too.

We packed up after less than an hour and walked over to the driver’s favorite beachside restaurant, Coconut Beach. I absolutely loved the atmosphere – very casual, right on the beach, sand on the floors – but the service was so casual as to be intolerable. Nobody would talk to us, and we gave up after sitting at a table for ten minutes without so much as a sight of a waitress. The prices on the menu were in Eastern Caribbean dollars, and converted to dollars, they were ridiculously high. The cheapest entree, fried shrimp with no sides, was $25. I can tolerate high prices with good service, but since nobody would talk to us, we walked out and caught a cab back to the docks.

Later that evening, I spoke with other couples who’d taken tours of the island. They came away with similar impressions of the island’s deep poverty and disrepair. One couple saw the national stadium, and it looked like the hurricane hit yesterday, with big chunks of concrete lying around. I wondered to myself how our recovery effort in New Orleans will compare to that.

I’m very much in favor of sustainable tourism, especially helping other cultures profit from their natural resources, but if I had the chance to stop in Grenada again, I doubt I’d get off the boat. I’d rather send an aid check than spend a day of my vacation here. Maybe an aid organization ought to start up something like that – have a virtual vacation in the country of your choice. You send a $200 check, and you get back a bunch of knickknacks, t-shirts and postcards. (Note to relatives: your knickknacks and t-shirts are en route, having been earned the old-fashioned way.)

The ship’s food got markedly better over the last couple of days, especially in the Horizon Court buffet. The past two days have brought good pastas and soups. The meat at the carving station was still burnt to a dry crisp, though: I actually dipped my London Broil in the tomato soup just to make the meat edible.

Day Eight – St. Vincent

Wednesday, January 4, 2006 – Photos from St. Vincent


Every night, the ship’s staff distributes flyers describing the next day’s port. These flyers describe the island’s history, culture, excursions and of course, shopping. Today’s flyer for St. Vincent was very thin on details, and the shopping section read, “The only shopping is in Kingstown.” That’s great, but Kingstown is in the middle of the island, miles away from the port, and we’d need to cross a mountain range to get there. Hmmm.

Erika and I disembarked nonetheless, just to see what we could see. The tiny port held half a dozen knickknack stores, some of which didn’t even accept credit cards. The port was surrounded with barbed wire, and leaving the grounds looked like leaving a government checkpoint. The other side held decrepit buildings, without a store sign or an inviting place in sight, so we turned back and came back on the ship.

We talked to a Canadian couple who’d taken a St. Vincent van tour and enjoyed it quite a bit. In fact, they thought it was the most secure, friendly island they’d seen. They’d also spoken with another couple who paid a taxi driver $20 to take them to a snorkel spot, which turned out to be great. So the word on the street: get far away from the cruise port and you’ll do fine.

The St. Vincent stop only lasted five hours, just long enough for the cruise ship to ring up a few excursions, and then we set sail for Port Everglades.

Afternoon activities at sea included a German Bierfest Buffet from 5:30 until 10. I’m not a big German food fan other than the sausages, but they had brockwurst, knockwurst, and a couple of other varieties, so I was a happy camper.

Days Nine & Ten – At Sea

Thursday – Saturday, January 5-7, 2006 – Photos at Sea

Sunrise on promenade deck

The last couple of days, the ship rocked and rolled more and more. I was impressed that nothing ever seemed to creak or groan with all this moving around – the ship felt screwed together really well – but everything moved around. Our stateroom near the center of the ship jittered from side to side for hours, and further toward either end of the ship, the ride was a big roller coaster. Saturday morning in the Atrium Lounge near the center, the Christmas tree fell over as I sat typing travel notes. I couldn’t understand all the motion, because outside, the wind and waves weren’t bad at all, waves being never more than 4-5′ tall. The only thing I could think was that the stabilizers weren’t working or had been turned off.

At sea, Erika stayed in the room for the most part and read or watched TV. The onboard TV channels don’t include commercials, which was great since we were going through Tivo withdrawal. The live CNN feed showed stock numbers during commercials, and the ship had special feeds for sitcoms, Travel Channel shows, and Discovery shows, all without commercials. Two thumbs up.

I stuck with the promenade deck. Every few minutes as the sun rose, I would climb out of my comfy deck lounge chair, take a few pictures of the sun and clouds for my computer wallpaper collection, and then settle back down.

The cruise staff planned plenty of events all day and night for both days at sea, and there was something for everybody. They pushed the art auctions a lot via nightly junk mail flyers distributed to each room. I’d read complaints from other cruisers about how the art was displayed so prominently around the ship, but it’s really just confined to deck 7 forward, and we enjoyed checking out the collections. I have a hard time complaining about an abundance of art.

Drifting boat off Puerto Rico

A bit of unplanned excitement occurred on Thursday when someone spotted a drifting boat nearby. The captain swung the big ship around to get a closer look, and we maneuvered within a few hundred feet of the tiny dinghy. Thankfully, it was empty. We hoped that the boat had simply drifted away from its mooring, unattended. The captain notified the US Coast Guard in nearby Puerto Rico, and we continued on our way.

The chef ran a sushi demonstration followed by a sushi buffet lunch in the Horizon Court Buffet at 11:30. There was a veritable stampede of guests packed around the small buffet tables – I had not seen that many people packed into a buffet area during the whole trip. The sushi left a lot to be desired, but it was still a refreshing change from more typical buffet food.

One of the funniest parts of the cruise occurred on the last day, Saturday morning, as I sat in the Atrium Lounge polishing up the travel notes. I overheard hilarious conversations between husbands and wives. Funny how ten days of close proximity affects people:

Older woman toting a small suitcase: “I told you I can’t follow you because I keep tripping over that damn big suitcase you’re dragging.” Husband: “Then let’s switch. You take your stuff, and I’ll take mine.”

Canadian woman to her husband: “Stop worrying about the money, eh? They just charge it to the card. Besides, it’s in US dollars. They don’t convert it to Canadian dollars, because they’re both dollars. They just charge it as is, eh?”

Grouchy curmudgeon: “I can’t sit still in this place for another half an hour.” Upbeat wife: “Three laps around the outside deck is a mile. The door’s over there.”

Pre-teen kid to his parents: “This is the part I hate. We see something really nice for once, and we have to leave it.”


It was all I could do to keep from laughing out loud. Erika and I have it pretty darned good: our stressed-out part is the start of the vacation, packing and preparing, not the end.

And that was our cruise! The final verdict is up at the top of this, but in a nutshell, I left completely relaxed and rejuvenated. As Erika declared, this last port was our favorite.

SQL Server 2005 Intellisense


With Microsoft touting Intellisense in just about all of their products, including Visual Studio, one would assume it’d show up in their flagship database product, SQL Server 2005. Unfortunately, the SQL Management Studio still doesn’t offer any prompting as you type in code, even though it’s based roughly on Visual Studio 2005.

Enter PromptSQL, an add-on product that offers Intellisense for SQL Server in several different editors. It supports not only Query Analyzer and SQL Management Studio, but also UltraEdit, my favorite text editor.

PromptSQL monitors your typing and helpfully pops up just like IntelliSense would. The best way to see it in action is to check out the screen shots on the home page of their web site.

It does a surprisingly good job for a standalone third-party application. You have to give it your SQL Server login information and it runs queries against your database to get the necessary information. It strikes me as a lot like Ajax, for whatever that’s worth.

It’s $50. At first, that seemed like a lot of money for something Microsoft usually includes for free in all of their products – but then if it was easy, I guess Microsoft would have included it in SQL Management Studio. I think I’ll buy it when I get back from vacation, but for now, I’m saving my money for more margaritas. 5 days and counting…

Multiple SQL servers, same SAN


My jaw hit the floor on this tech note from Microsoft: with SQL Server 2005 and a SAN, you can have multiple SQL servers hitting the same read-only reporting database.

This is really only a solution for reporting loads that require more work from the CPUs than they do from the drive arrays. If the report queries spend most of their time waiting on disk access, then this won’t offer much speed improvement.

However, as an example, I’ve worked with analysis functions that did math-intensive work on a relatively low number of records. We initially coded these formulas inside stored procedures and SQL functions, but the CPU load was too high relative to the amount of queries we’d need to run. When we scaled out to full production load, we would need more CPU power than was available from a single server. We ended up recoding the analysis work in standalone Delphi processing applications, adding processing queues, and so on, but it was a lot of management overhead.

With this new feature of SQL Server 2005, we’d have been able to keep the work inside SQL, make the applications faster, and reduce turnaround time for the reports.


To the guy who broke into my Jeep last night


Hi. I’m Brent. I’m the owner of the black Jeep.

I went out this morning to go to work, and I got nervous when I put the key in the passenger side door and it turned way too easily, meaning it was already unlocked. Then I noticed the pennies you scattered all over the passenger side floor. I have to admit that my first thought wasn’t a break-in, but that Erika had gotten sloppy when digging for change for a parking meter. We leave our leftover change in the Jeep’s center console, and it looks like you share our opinion on the worth of a penny.

I finally put two and two together when I started the Jeep. I usually make the same mistake morning after morning: I put the key in the ignition, start the Jeep, and then reach for the iPod in the locked center console only to realize that I have to turn the Jeep back off, take the key out, unlock the console, and get out the iPod. This morning, I was surprised to find the center console unlocked, and even more surprised to find the iPod missing. I thought maybe Erika took it inside to sync it up, copy some new songs over, but then I noticed that the cigarette lighter dock was gone too.

Evidently you took my emergency duffel bag from the back, too. I’m guessing you didn’t even look inside before you took it, and I can’t stop laughing when I think about you opening up your booty at home. I grew up in Michigan, so I always keep water, food, and some basic tools in my cars just in case I run into problems. Now you have your own emergency bag. Hope you enjoy those granola bars. I have a secret hope that you’ll return the next evening, unzip my Jeep’s windows, and put the emergency bag back complete with the water and granola bars. That would truly be funny.

I want to thank you for a few things.

First, thanks for not smoking in my Jeep. I really like that Jeep. A lot. I spent a ton of money on it specifically so I could have a nice, clean Jeep that was mine from the get-go, and it would piss me off if it smelled like smoke. I appreciate your courtesy. When I had my last Jeep parked at an apartment complex in Houston, people would sit in it, smoke, and drink beer. I kid you not. Maybe this says something about the healthiness of Miami Beach criminals. Maybe that’s why you took the water and granola bars, too. Maybe you’re a hipster, a discerning burglar. Of course, in that case, the first thing you’ll probably do when you get home is wipe out my un-hip MP3 collection.

Thank you for not slicing the windows open with a knife. I always said that if somebody broke in, I would hope they’d have the intelligence to simply unzip the windows rather than cutting them open, because those things are pretty expensive to replace. Looks like you had the good sense to unzip the back window and climb in that way, and that’s mighty nice of you.

Thanks for not trying to take the stereo out of the dash. It’s a navigation system, and I’m sure it’s worth some money on Ebay or something, but it is indeed useless without professional installation and a GPS antenna. Either you didn’t realize how expensive it was, or you realized how difficult it would be to install in a regular car, or you just didn’t have screwdriver-like tools with you to pry it out of the dash. Actually, you did have the tools with you – they were in the emergency bag. But I think we’ve established that you didn’t look in the bag before you actually stole it, or else you probably would have just left it. Anyway, thanks for not screwing up the dashboard.

Now, about your new iPod. I’d like to think you’re going down to the Apple store to pick up a dock and use the iPod yourself, as opposed to pawning it. I don’t care about the music on it, because that’s all backed up on our computer at home, but my heart sinks at the thought of Erika’s iPod in a pawn shop somewhere, all lonely, being touched by strangers.

Please do us both a favor: hang on to it. Try it out. Listen to the music on it. Give it a chance before you cast it aside. Take care of it, because it’s a physical reminder of a memory, of a point in time in your life.

That’s what the iPod was for me, anyway. I remember coming home from a Dallas trip, pulling into the driveway, and having Erika meet me at the door to help me unload the car. She wasn’t supposed to see the iPod box in the trunk, but she did, and she realized it was her birthday present. I loved seeing the look on her face – that was priceless. Every now and then, seeing the iPod would remind me of that moment, and that alone was awesome.

The iPod itself? Bah, it’s an old 3G one with 15gb of storage. Which leads me to my final thank-you – thanks for giving me an excuse to buy Erika a new gadget.

SQL Server 2005 icons


Ugly situation, but pretty iconMe talking to my developers: “Well, guys, I’ve got good news and bad news. Bad news first: looks like somebody forgot about today’s scheduled outage, and they were trying to load data when the network admins shut down the database server. The ETL database is now trying to recover the messy transactions, and the server could be down for a few hours.”

“The good news, though, is check out the cool new SQL Server 2005 icon for databases that are in recovery mode! Is that cool or what?”

Using UltraEdit for SQL editing


My former manager asked why I use UltraEdit for all of my SQL Server coding, and after pouring out the answer, I figured I should post it here as well for posterity.

There’s so many advantages you just take for granted after a while. I had to open it and do some editing to remember what all they were.

SQL Syntax Highlighting

It has color-coded syntax highlighting for just about any language imaginable via add-on word files. (Download the T-SQL word file off and append it to the end of the installed wordfile.txt to enable it.)

It automatically highlights the matching parenthesis. When your cursor is on a beginning parenthesis, UltraEdit highlights the matching end one, regardless of which line it’s on. That’s a troubleshooting lifesaver.

It can automatically use spaces instead of tabs, and you can set the number of spaces to use for each press of the tab button. Tabs work differently across different editors (Query Analyzer, Enterprise Mgr, UltraEdit, Notepad, etc), but spaces work exactly the same. Makes the code much easier to read.

It automatically indents and unindents based on the words you type. (This is defined in the wordfile.txt for each language.) When you start a “begin” statement and hit enter, for example, it automatically tabs in.

SQL Templates and Indenting

It has support for templates and code snippets built in. I have to confess that I never use those, though.

It can quickly comment out code. Highlight the lines you want to comment out, and click Edit, Comment Add.

UltraEdit theoretically has the ability to re-indent code like HTMLtidy cleans up HTML, but UltraEdit’s method is woefully inadequate. Instead, check out this online SQL formatter. It’s like HTMLtidy, but for SQL. Call it SQLtidy – or at least, they should have. Copy/paste a small stored proc in there and it fixes the indenting, cases, and puts one item per line. Great stuff. I ran across this when trying to clean up some horrendous sql at the new gig. Just standardize on a set of options, and then have everybody clean up their sp’s in here before they check them into CVS.

Plus, that tool even facilitates inline SQL – in the “Output” dropdown at the top, pick the programming tool you’re using and it’ll build the string for you, nice and clean.

Automatic Code Cleanup From The Command Line

There’s a command line utility for download and you can even somewhat integrate it into UltraEdit. Install the command line util, and then run it once from inside UltraEdit via Advanced, DOS Command. UE has a variable for the filename and can set the working directory, so once you’ve ran the command line utility, you can run it again for other sql files pretty easily. Just make sure you save your file before you run the command, so you don’t lose your changes.

I never got ambitious enough to use this company-wide because people have wildly different syntax styles, but this really makes it easy to standardize and clean things up. Saved me a ton of time at the new place – the prior “DBA” used Enterprise Manager’s graphical query builder to build all of his queries, and the [syntax].[and].[MIXEDCASE].[made].[bABYjESUS].[Cry].

File Comparison for Stored Proc Versions

UltraEdit also has a decent file compare utility. Use CVS to locally save the prior version of a stored proc, then open both the current and the prior in UE. Click File, Compare Files, and it’ll show both files side by side with the differences highlighted. Makes it easy to test new versions of sp’s and views because you can see exactly what changed. There’s also an extra-cost higher-powered file compare called UltraCompare, but it’s not worth the money if you’re just comparing stored procs.

It has some other obscure features, like search and replace with regular expressions syntax, but just as far as day-to-day commonly used stuff goes, UltraEdit blows the doors off Query Analyzer.

Ebay buying WHAT for HOW MUCH?!?


Ebay just announced they’re buying Skype for $2.6 billion dollars. Here’s the press release.

For those of you who don’t know what Skype is…exactly. That’s the point.

Skype is a free (FREE) online phone service so you can instant message with people, except you’re actually talking to each other instead of typing. It’s like free long distance. Free. Sounds like a huge moneymaker, right?

But wait, it gets better. Skype is not compatible with any of the other online voice chat services out there like Google Talk, Yahoo Instant Messenger, MSN Messenger, etc. There are tons out there – all … free. Free. FREE. Most of them are better than Skype.

And if you divide out the number of Skype users, Ebay is paying about $1,000 per user for Skype. A thousand bucks per person for a service that gives stuff away for free. Well, wow, of course it makes sense! What a deal!

It’s like I woke up in 1999. These numbers are totally disconnected from reality. Skype has no synergy for Ebay. I’ve bought and sold around a hundred things on Ebay, and every now and then I get questions from bidders via email. I have never gotten a single question via instant messaging, even though my instant messaging info is on my web site and on my auctions. Ebay wants to integrate voice services so buyers and sellers can talk to each other easier, but here’s the thing: they could do that for free without buying a company. All they have to do is offer to partner with any of the voice-over-IP companies out there, and the companies would leap at the chance to partner with Ebay and get their name out there. Ebay wouldn’t have to spend a cent. Much less two hundred sixty billion cents.

I’ve talked this over with other geek friends and none of us get it. Either Ebay’s really got a wild product up their sleeve, or they misstumbled badly. When they bought Paypal, all of us got it. None of us get Skype.

Database & Network Administrators are really Customer Administrators


The first thing administrators want to monitor is their resources: file servers, database servers, app servers, etc. That’s understandable, since they’re system administrators. In order to be really successful with monitoring, though, we need to think like customer administrators – for both our internal and external customers. Forget the hardware, and think about the people. How do our customers interact with our systems?

Let’s say we’re administering an ecommerce site. As a Customer Administrator, the basic customers are:

  • Outside money-waving customers who place orders
  • The shipping department who sends out the orders
  • The inventory people who replenish our stock

How do each of these groups interact with our system? The outside customers are the easiest to diagnose: they go to our site, browse our items, and hopefully place orders. We want to set up monitoring on each of those activities: using our server monitoring software, we need to make sure that our site works, that we have items in our store, and that people are placing orders.

Network Admin crying out in pain: “That’s not my responsibility! Why should I monitor whether people are placing orders or not?”

Well, network admins should care about the number of orders placed because it’s a critical customer statistic that will get the IT department into a whole lot of trouble if something goes wrong. You can monitor everything in the shop, but if somebody makes a programming error and the money stops coming in, everybody needs to know as soon as possible – and that’s where server uptime monitoring can step in and make you a hero.

Even better, when monitoring is done right, the IT department can catch when people place an unusually high number of orders – like if a pricing error discounts 19″ flat panel monitors to $5.99 instead of $599. Is it the network department’s job? Nope. But if you can catch it before anybody else, and if you can get the right information to the right people to fix the problem, then it’s easy to justify the IT department as a vital part of doing business online.

So our order monitoring needs to have at least three parts:

  • Alert when people haven’t placed any orders in 1 hour
  • Alert when we’ve gotten more than X orders this hour (may be 100 or 1,000 or 10,000 depending on the size of the organization)
  • Alert when one item’s sales have been more this hour than the last 72 hours combined (or appropriate timing rules)

Start with a small set of monitoring triggers, like 3, and then hone your alerts as you gain experience with your statistics. Get as curious about order statistics as you would about database server memory use: figure out new ways to analyze it. For example, you may want to alert when any one customer orders more than 3 of an item priced over $200. Even if it doesn’t indicate a problem, you can still suddenly find yourself in-the-know about your company’s business pulse. Imagine emailing one of your sales crew and saying, “Hey, a guy in Mississippi just ordered fifty flat panels. Maybe he’s setting up a temporary office for people displaced from the hurricane. You wanna contact him and see what else he’s shopping for?”

The more you know about the way your customers interact with your IT systems, the more you can help other departments – and the other departments will remember you as a valuable, in-the-know guy.

Network Admin with a frown: “Yeah, but that’s an easy example. That just relates to people with online stores. We don’t sell stuff online.”

And neither do I, but I can’t give you my exact examples here. I’d have to kill you. It really does work with any company.

Let’s say you run a fantasy sports site. Your customers:

  • Start new teams
  • Make trades
  • Play games against each other

Then set up an alert to tell you when no new teams have been started in X hours. Granted, you’re going to want to put this check on maintenance in the offseason, but we can write that into our query.

Set up another alert when no trades have been made in X hours. This would indicate a problem with your trading system.

Set up another alert when any games have a combined score of zero. Depending on the sport, we’d need timing rules in here – for example, in football, we would only want to alert on Sundays after 5pm. Zero scores would indicate a problem with your scoring system.

This kind of analysis helps alert us when the system is running, but it’s having specific problems. Likewise, when monitoring a mail server, don’t just monitor to see that it’s up, that it’s accepting connections on the SMTP port, and that it’s accepting connections on the POP3 port. Instead, look at how your customers interact with the mail server: they send and receive emails. Therefore, monitor the number of incoming and outgoing emails per hour, and send alerts when either sinks to zero. (Of course, we’ll need business logic on the outgoing emails – we may not want to alert on that outside of business hours.)

Network Admin starting to see the light: “Yeah, but my users will still call me first. I’ve got these really intense guys who live by their email, and they call me the instant anything’s wrong.”

Users won’t notice when they get no incoming emails from outside the building for an hour. Some days are just quiet. It’s the Customer Administrator’s job to make sure that the interactions are going properly, and only the company-wide Customer Administrator will know that NOBODY got incoming emails from outside the building for an hour, therefore indicating a system-wide problem.

Monitoring is never done. People who run uptime monitoring systems have to continually refine their alerting methods to strike a balance: we don’t want false alarms when something isn’t really down, and we don’t want the system ignoring an actual outage. Let’s say we set up our alerting so that it’s a little paranoid, and it gives us just 1 false alarm per month. When we’ve got 30 alerts set up, we’re going to get a false alarm every day. That gets a little annoying, and worse, false alarms make the IT staff think that every incoming alert is a false alarm. We can’t have that, and we’ll talk about that more in later blogs.

Back to our e-commerce site example: we still have our inventory and shipping departments. Remember, Customer Administrators need to handle all of their customers – internal customers are just as important as external customers. The shipping department is easy to analyze: they interact with our system by shipping out every order that gets placed. Our alerting needs to detect when unusual things are happening in the shipping department, so we want to:

  • Alert when we’re backlogged by more than 1 day (with some business logic for weekends)
  • Alert during business hours when no packages have been shipped in X hours, but some are waiting

That second alert may seem like overkill: after all, the shipping department will probably alert IT directly if they have a problem with the shipping systems and they can’t get packages out. Probably – but maybe not, and that’s what uptime monitoring is all about. After all, most of your alerts should almost always be up.

That’s the point of uptime monitoring: you don’t want to catch the 999 times out of 1,000 when the system is working. You want to catch the 1 time in 1,000 when the system doesn’t work. These systems may be IT, or they may be operational, like customers ordering huge quantities of mispriced items. The more you get to know your customers, the more effective your monitoring can be, and the more valuable the IT department is to the organization as a whole.

Network Admin: “Ah, so I can get a raise?”

Now you’re thinkin’.