Sunday, February 1, 2009

Stagnant pools in the remains of the economy?

I found a metaphor for the financial crises and looming recession that explains why I'm pessimistic. I see the change in the flow of money in the same way that I see the gulf stream affecting and stabilizing the world climate.

Many people I talk to seem to view this recession like all others -- companies got sloppy, overbuilt, over-hired, began to tolerate inefficiency, etc. But I see it as more systemic. The entire ecosystem will change as the flow of money changes. A couple years ago, money moved from saving nations to the US (as a borrower nation), into individuals' bank accounts, and then out to... well to whatever   people   buy when they have an extra couple hundred thousand in the bank. Along the way the great flow of money branched a couple times, with financial wizards and real estate brokers siphoning off a good bit. In turn, they did whatever they do with a couple hundred thousand extra in the bank.

Of course it was ridiculously overinflated home prices that made the whole system work. Nobody would otherwise let the money flow from the bank to the homeowner, or onto the secondary markets, or provide the financiers and brokers an opportunity to take a cut ... and now many of these parties refuse to do it anymore.

But the point is that I now have a metaphor for this. As an old professor of mine taught, a physical model for a sociological process is a great way to generate insight. When the gulf stream stopped about 12,000 years ago, it reallocated heat from Europe to the rest of the word in addition to causing global cooling. From this observation of the physical model, we hypothesise (but not conclude!) that the shift in financial flows may both dampen the world economy and reallocate money around the globe.

Another insight from the phsical model comes from looking at what happens when rivers change course. "River species may become locally extinct and are replaced by species that can survive in the stagnant pools left behind. "

Wednesday, December 3, 2008

Someone just used the phrase "Um ... no." and it struck me as interesting, and I asked myself what it means, and why it sounds disdainful.

I think the "Um ..." part connotes someone thinking about how to say something nicely since it mimics a pause in speech -- it sets up the "no" as a punchline to a little joke: "I tried to think of a reasonable way to disagree, but something was just so wrong that there's no way to sugarcoat it."

It has a real economy of words to it, and it's neat that its meaning comes from spoken cadence and the implied thoughts of the imaginary speaker.

Friday, November 28, 2008

Consumer confidence, or sanity?

Today's NY Times says that people are "less interested in consuming than at any time in the last four decades." I think that's a good phrase; it does not assume anything about panic, hardship or "consumer confidence" but rather states accurately what is being measured. Being less interested in consuming certainly sounds a lot healthier than a society that's lost its confidence.

The bubble economy may have been enabled by easy credit, but I suspect it was driven by a competitive consumerist psychology that only became unfashionable about two months ago. Something I can't quite put my finger on tells me that it's now fashionable to buy a bit less and a bit smaller.

It feels a little like a power outage at work. All of the artificially important things that people do in order to succeed become blessedly impossible, so people sit down wherever there's some natural light, and chat until the computers turn back on.

Happy "buy nothing day."

Wednesday, November 5, 2008

Adding metadata inside an OOXML document

I spent the day getting some metadata into a .docx file by poking it into the underlying wordprocessingML files -- principally the document.xml file. It's been pretty miserable, so I'm posting a few things in case you're having the same kind of day.

First, be aware Word 2007 will throw non-descriptive errors if there are any extra tags in the document (it will tolerate extra attributes but promptly throw them away upon save), and there are very specific .zip options that have to be used to re-create the .docx file. I'm using a nice free tool called Package Explorer to view and edit the .docx files in development, and inserting into my company's product: MarkLogic Server for production (which un-packs and manages the .docx archive as well).

Secondly, there are three kinds of metadata (for custom extensions) tags: smartTag, customXml and sdt. My brief description of all three:

<sdt> a reference to some data in another xml file inside the .docx zip archive. I didn't do much with this format.

This is a (possibly validated?) representation of XML where you can specify a schema of your choice for validating your metadata. This does NOT allow you to put the xml you want directly inside the OOXML. It allows you to encode your own xml using OOXML tags. E.g. instead of <myuri:myelem>myData</myuri:myelem>

you have to do something like:

<customxml uri="myUri" element="myElem">
<w:r><w:t>myData which I'm annoyed is showing up in the word doc</w:t></w:r>

A couple issues with customXml include that you need to put an entry into schema.xml for all the uri's that you use. E.g. to skip the uri="" attribute, you must add <w:attachedschema val=""> to schmea.xml. Doug Mahugh says that is a bug in Word 2007, btw.

smartTag seems to be what I was looking for, but is the least blogged about or otherwise documented outside the spec. It's in part 3 of the spec on page 19. One trick here is that MS Word 2007 (all hail) seems to discard smartTag elements around paragraphs upon save. Instead, I used this tag inside a paragraph (w:p) tag as a sibling to the run (w:r) tags and it worked.

With smartTag you can specify some meaningless URI as a namespace, an arbitrary element name, and then put whatever data you want in, and it won't show up in your word doc. OTOH, you still have to use wordprocessingML/OOXML to awkwardly encode your xml as attributes:

<w:smartTag w:uri=""
<w:attr w:name="fullCompanyName" w:val="Google"/>

In the above example, you really mean to say: <stockticker fullcompanyname="Google"> but you have to meta-encode it into the other XML format instead. Fortunately, you can use pretty trivial XQuery (or XSLT if you prefer) to convert it back.

For completeness I should metion that you can also squirrel additional data into the .docx zip archive if the data is at the document level rather than paragraph or block level.

BTW, the overall point to this is that I can now search the .xml that is implicitly authored with MS Word for specific paragraphs based on my custom tags. I'm going to use XQuery (including XPath) to do this against an XML database that holds both the binary zipped form of the .docx files and unzipped xml content from Word.

Sunday, July 20, 2008

GDP and the Language of Utility

I read a great article in Harpers last month ("Our Phony Economy" by Jonathan Rowe) where Rowe rails against the use of GDP as a yardstick of how the country is doing.

It's a good article, full of stuff like:

A socialite who buys a pair of $800 pumps from Manolo Blahnik appears to
contribute forty times more to the national well-being than does the mother who
buys a pair of $20 sneakers for her son at Payless.

...the best kids are the ones who eat the most junk food and exercise the least, because they will run up the biggest medical bills for obesity and diabetes.

The overall point being that things that are really "productive" in the most important ways often don't show up in the GDP, but harmful things do. (productive to what, and harmful to what? that's the real question being asked...)

The thing about this that interests me the most is that the words "Economy," "Country," and "GDP" have gotten collapsed: in many situations they are interchangable even though they don't mean the same thing at all.

I think it was the super-genius Gregory Bateson who figured out that language doesn't limit what we can say, it limits the questions we are able to ask. If a guy from Miami is asked what kind of snow fell on his vacation he doesn't need to speak innuit to answer and say that it was soggy with big flakes. But an Innuit may implicitly mean this whenever she asks what the weather was like; in fact she may not be able to ask otherwise.

In Rowe's article, he mentions that when we hear that the economy is doing well, we actually mean that there was an increase in GDP. I do it myself all the time - how are things going means markets, GDP, etc., not where we are headed as human beings. I need to dance around linguistically to ask that kind of question, and when I do ask that, I wonder if people generally know what I'm talking about.

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.

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.

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....