Monday, June 23, 2008

Cruising the Caribbean

I just got back from a cruise through the Caribbean -- it was my first cruise and a lot of fun. Here are my tips and observations about it.

The ship was the Carnival Conquest, and it was a 7-day tour from Galveston through Montego Bay, Grand Cayman and Cozumel. The ship is large, with a few pools, a casino, many restaurants, music and entertainment venus, etc. and over 3,000 passengers.

First, it's convenient, and easy. Almost everything available on the ship is low-key, which enforces that you relax, at least until port. Swimming, sunbathing and eating seem the main activities. Gambling, drinking, trivia and some festive adult games (diving for toys in the pool, etc.) are also set up.

Kids
The kids were adequately taken care of at the "Camp Carnival" which is basically a pair of festive play rooms for younger and older kids, respectively. After being dropped off in the 2-5 year old room for a few hours a couple times, my girls, 2 and 4, started to ask to stay with us instead, and near the end we kept them with us almost all the time. My older daughter would go if the schedule had something really appealing (anything involving candy, teddy bears or dancing was a sure winner for her). I also saw a few teary-eyed kids there almost every time I went, so I assume they didn't' all want to be there.

Money Thresher
One thing that was a disappointment was the extent to which Carnival and the port visits in particular form an unstoppable machine to separate us guests from our money. A few fees I incurred:

Tips: $280 (included in your bill unless you decide to adjust it)
Internet: $0.75/minute, which quickly adds up
Soda, alcohol, juice
Spa services (they market this heavily, including phone calls and fliers)

I don't gamble, but there's also a Casino ('nuff said)

The excursions were also pricey (locals were selling tours and activities for much less) and once in port the locals were working every angle to get some cash. Taxis and shops are expensive hard sells, and I have a feeling that taxi drivers are paid to deliver cruisers to specific shops, beaches and the like. Perhaps it's the weak dollar or simply that cruise passengers are easy marks found in such huge concentrations around the ship terminals.

Culture
A pleasant surprise about the cruise is that while it is marketed and branded in the US, the ship is fundamentally an international operation. The staff was from Indonesia, India, Central America, Belarus, Russia and other places, and the culture was very personable; warm though a bit less efficient than you might expect in the US. The ship itself is flagged out of Panama.

Tuesday, June 3, 2008

Starting work for Mark Logic

In about a week, I'm going to start working for Mark Logic, who make the MarkLogic Server, which stores and queries XML content.

I've been primarily an "Object Guy" for years now, and am interested to see how systems will evolve that are oriented around transforming XML.

Mark Logic's CEO writes in his blog:

Elimination of three impedance mismatches: Java/XML, XML/relational, and Java/relational. Java is object-oriented, XML is hierarchical, and relational databases are tabular. The mapping between these three different data models generates a lot of zero-value-added work in developing an application. When you’re XML top-to-bottom, poof, that work’s all gone.
Which really makes me think about how to best build systems that are XML-centric. Previously, I'd thought about XML as a data format for data interchange or storage, but not as a true architectural decision.

Actually, XML still isn't an architectural decision -- it's the ubiquity of any data format that changes things, not the use of XML per se. When there are impedance mismatches that have to be dealt with, it's natural to map everything into and out of objects (hub-spoke model) and gain all the advantages of modeling the core of the system as objects. But when there there's an opportunity to drop all the impedance mismatches, objects get dropped as well.

Now I'm considering that the ubiquity of XML suggests that some systems should be fundamentally functional -- operations and transforms that are applied to XML Trees. Objects, in contrast, are all about encapsulating data and functions together.

So the question that I'm excited about answering is what new approaches work in an XML-centric world. Scala comes to mind, since it is object-oriented but also functional, and has native XML support. This paper, Scalable Programming Abstractions for XML Services gives some details about that.

At this point, I'm still not sure, so watch this space....