Reflections on Victoria

Thursday morning, I set off for Victoria, British Columbia, where my dear friends Daniel and Fanny live. When I found out that this year’s Sakai conference was to be in Vancouver, I figured it would be criminal not to take a few extra days, hop a ferry, and spend some time with those worthies — a plan aided by my dear wife who offered to care for the offspring in my absence. So, I braved the slings and arrows of American Airlines to get from Dallas to Vancouver. Both the flight from Austin to Dallas and that to Vancouver were running late, and in spite of the fact that we travelled across much of a continent, the only refreshment the airline provided was a single ginger ale. But all that was forgotten once I got into the Vancouver airport, only to step off of the plane and see that unique bastion of Canadian culture…

…Starbucks. Alas, my first impression wasn’t quite what I’d hoped. But the country quickly rallied and presented a series of delightful sights and smells: rhododendrons everywhere were in extravagant bloom, the air was rich with the smells of growing things, and I even spotted a couple of killer whales moving through the water while waiting for the ferry. The ship on which I crossed dwarfed the ferries I’m used to in Texas — it had six decks, three of which were for automobiles, two for people, one for mysterious ship stuff, and featured several places to eat and an arcade. Though the northern latitudes still provided light when we set off at 9:00pm from Vancouver to Victoria, there was enough mist to block what would have been beautiful views and allow me to have a nap without feeling particularly guilty about it.

On arriving in Victoria, I was promptly greeted by Daniel and our mutual friend Jonathan, who had conspired to come visit at the same time. After much enthusiastic wringing of hands and necks, we jumped into Daniel’s car and headed for his and Fanny’s apartment. Fanny treated me to some amazing white bean hummus (the ginger ale had long ago given out on me), and Jonathan and I retired to the tent that was pitched in the front yard for him and me. We slept well through the rain and chill that night, but decided that we would be better off on the couch and an air mattress for subsequent nights, due to the cold.

The next day I had my first experience with the Priests’ baking skills. They have been baking their own bread now for a while, and have become exceptionally good at it. While I’m not generally a big fan of white breads, they produced some baguettes, focaccias, and others that were just outstanding. After enjoying the fruits of their oven for several days, I’m determined to invest in a wire rack, a baguette pan, and the cookbook they use upon my return home. (As much as I like Jonathan, I was reluctant to snuggle up for warmth.)

After a delightful breakfast, we headed into the city to explore. We started by taking a brief tour of St. Anne’s Academy, where Daniel and Fanny had had their wedding, and proceeded on to the Royal BC Museum, which had some excellent exhibits on the First Nations (the natives who were here before the Europeans showed up), climate change, and a full-sized model of a wooly mammoth (covered in fur from a musk ox, as it turns out). The best part about the mammoth exhibit was that, every 10 minutes or so, it would emit a near-deafening clap of thunder, which inevitably caused whatever gaggle of schoolchildren was passing at the time to scream in terror. I was also pleased to hear my first Canadian “Eh?” at the museum, courtesy of one of the docents.

After leaving the museum and enjoying a delicious Thai lunch, we proceeded on to Beacon Hill Park, which features some great views across the water as well as the tallest totem pole in the world, a 176-foot painted cedar monster which is quite awe-inspiring. That evening, we made two pizzas for dinner — one with a variety of vegetables, and one with potato, which turned out to be surprisingly delicious. (Potato has become one of Daniel’s favorite toppings since he discovered it.) We then went up to the University of Victoria campus to stroll around a bit and to watch The Three Burials of Melquiades Estrada. The best thing about the University campus was that it’s nearly overrun with adorable bunnies which have very little fear of people.

The next day, we decided that we were going to go to the top of Mount Douglas and then canoe Victoria harbor. The view from the top of the mountain was spectacular. We could see miles and miles of Victoria stretched beneath us, and stayed as long as we could bear the chilly wind.

We then moved on to the harbor, a very active place, with lots of seaplane traffic, harbor ferries that shuttle busily about, and a huge variety of privately owned boats and catamarans. We loaded into a canoe provided by a rental company and embarked upon our grand water adventure. Jonathan and I took the rowing positions and started up the harbor, skirting several moored vessels and a giant barge. We passed under a bridge, and got an up-close view of one of the harbor ferries as it passed us…

…and immediately overturned our canoe with its wake. We were all very surprised to find ourselves abruptly in the chilly Pacific waters, and took several seconds of hysterical laughter and/or stunned, slightly panicked silence to adjust. After an abortive attempt to right the canoe in the deep water, we decided the best thing to do would be to head for shore, drag the canoe out, empty it of water, and then whack the guy who rented it to us upside the head with it.

We were, of course, squarely in the middle of the waterway, so chose a side at random and started for it. We were making negligible progress, due to our waterlogged, fully clothed condition. Fortunately, after only a minute or two of our futile flailings, a nautical Samaritan happened by and loaded us into his boat and dragged the canoe to a nearby dock. We emptied the water, frightened a few nearby society ladies, and decided to send Jonathan and me back to the rental place while Daniel called Fanny to come retrieve us.

Needless to say, the rental chap was a bit surprised to see us paddling back a mere 30 minutes after we had embarked with one less passenger in the boat. “What happened to your friend?” he asked worriedly. “Orca!” I shouted back. (I was still a bit cheesed that he’d told Daniel to sit on the top of a cross-beam, rather than in the bottom of the boat.) I eventually explained what had really happened, and was delighted to see Fanny pull up a few minutes later to bring us back to the apartment where we spent the rest of the day enjoying hot tea, hot showers, hot pasta, hot bread, and a movie.

The next day we broke our fast with more of Fanny’s delightful cooking and then headed up the island to French Beach. We had brought along a picnic, and Fanny enjoyed a book while the menfolk wandered up the sand to a huge rocky outcropping and went climbing among the cliffs, trees, and tidal pools. Jonathan stepped in some water, but fortunately received nothing like the drenching of the day before. We took some time to trade stone-skipping techniques, and Daniel’s skills increased noticeably (“from ‘none’ to ‘some'”, as he put it).

Evening brought another wonderful meal and a long conversation on energy-efficient building techniques, which Daniel has been researching assiduously of late, with an eye toward eventually building their own home once they return to Texas. His enthusiasm for the project is infectious, and has left me wondering if there’s any way that we could do something similar, perhaps combining it with some of the community-building ideas that obsess me for a few days every couple of months.

On our last day together, we packed up and spent the remainder of our time touring the Parliament building and ambling through downtown, visiting bookstores, restaurants, and gift shops, where Jonathan and I picked up a few things for various people waiting back home. The weather obliged us by being sunny and beautiful, and we had a great time enjoying the unhurried company of friends. Eventually the day waned, and we parted company, looking forward to the time when our Fanny’s visa application will be processed and our Canadian friends will be back in Texas.

Da Vinci Code

From my New York compadre, Ryan, in response to the Da Vinci Code protests:

form a prayer vigil by all means. but pray for our country. pray for our troops overseas. pray for our schools, and our children. pray for our homeless. pray for our hungry. pray for our sick, and our lonley. pray for our weak, and for those who feel they might be unworthy of the grace of God.

pray for goverment, for those who are in leadership above us. pray for w. pray for our churches. pray for our communities– one block at a time, if we need to. pray for parents. pray for the cynical. pray for the apathetic. pray for the abused. pray for the desperate. pray for those who feel lost, or afraid, or abandoned, or tired, or ignored. pray for me, forpetessake!

just… c’mon, people, don’t pray for the da vinci code. it’s a book. it’s a movie. it’s a story. we have bigger things to worry about.

TRACS Rap

Sometimes things up at work get really silly. Bonus points for whomever can identify which parts are me! (Colophon: produced in GarageBand with just its built-in effects. Unlike Greg’s stuff, it’s chockablock with loops. Thanks to Bill Jennings and crew for helping with the recording!)

Big Reconstruction

I’ve mentioned the conversion of the Rio Vista Dam here in San Marcos from its 100 year old design to a series of rapids. The city is doing a pretty good job keeping things on schedule and posting photos of the work in progress to help satisfy the community’s curiosity.

I’m sure looking forward to trying it out!

Dribs and Drabs

  • ITEM! Today is Emily’s 14th birthday. Happy Birthday, Em!
  • You know what I hate about aging? Not the nostril grooming. That I kind of expected — after all, those products must exist for a reason. The thing that took me completely by surprise: eyebrow dandruff. What the heck is up with that?
  • ITEM! Want to build your own radio station? Try Pandora. It’s super-nifty.
  • ITEM! John Rogers rants here about the administration’s indifference to the law as only an occasionally-Canadian, ex-stand-up-comic can.

The Fullest of Sundays

Chris and Becky decided this year that, for the 2006 birthday season, they would provide each of our kids with a ticket to The Lion King at the beautiful Majestic Theater in downtown San Antonio. After many weeks of eager anticipation, the day of the show finally arrived on Sunday.

We started off the day at church, after which we lit off for parts south, stopping at Schlitterbahn for two hours along the way. The older kids and I had a grand time banging around the park, riding on floating crocodiles, going down torrential flumes, and crossing pools on floating lily pads while Kathy and Maggie hung around the kids’ play area, reading and splashing down smaller slides respectively.

We then hopped back into the car and, after another 45 minutes of driving, arrived at Becky & Chris’ house, still dripping schlitterwasser from our suits as Meara, Dad McMains, Lana, and Mom McMains joined us for pizza and goodies. After gorging, we finished changing clothes, piled into cars, and headed for the Majestic, where our combined party took up an entire row. After a few minutes of impatient waiting, the lights dimmed and the show began.

The show was not at all what I’d expected. My mental image was sort of a Disney-On-Ice-Without-The-Ice thing. It turned out that the African sensibility that permeates the score of the movie had been extended to the art and costume design to great effect. The costumes didn’t try to hide the fact that there was a human being in each of them, but combined puppetry, sculpture, and dance so that the forms of the animals melded beautifully with that of the person inside. The actors handling the giraffes had stilts attached to each arm and leg; the hyenas had puppet faces in front, with the actors’ heads creating the characteristic hump in the creatures’ backs; the rhino had two actors in a skeleton that actually looked like rhino ribs; the antelope described graceful arcs, driven by a bicycle-derived contraption pushed along by another actor. In addition, there was a fair bit of shadow puppetry, which combined with the other stage goings-on made a striking and unique impression.

The music was polished and well-done. A small pit orchestra combined with percussionists sitting in the box seats to the left and right of the stage to create a lush soundscape, alternately dramatic and rollicking. Maggie was on her feet dancing merrily for the duration of <cite>Hakuna Matata</cite>. I was a little surprised when the music veered off into Tango briefly, and was disappointed that one of my favorite bits from the movie had been altered (where Timon sings about how tasty Poomba is to draw the hyena’s attention), but these were minor matters. The characterizations were well-done, with the boy who played young Simba and the actor portraying Scar particularly standing out.

Thanks again to Chris and Becky for putting the evening together; it was a great treat for us, and will live richly in our family memory.

Will Design for iPod

Hey, if any of you have some time on your hands, some medium-level technical skills (remember — girls only want boyfriends who have great skills), and a desire for a top-flight iPod or some free web hosting with Macrobyte Resources (the hoster with the…ummm…moster…yeah), check out their Patterns Contest. It runs until the end of the month, and is well worth being a part of.

A Programmer's Reflections on Vignette

Last week, after about a year of work by our team, we launched the first of our websites at the University using the new Content Management System we’ve been working on. It’s based on Vignette’s V7, a gigantic, sprawling, enterprise CMS system. (My standard joke: “Enterprise software is software that costs a million dollars and doesn’t work when you take it out of the box.”) I thought this an opportune time to post a few reflections on what I’ve learned of Vignette during the past two years I’ve been working with it.

First off, one must understand that Vignette’s offerings are not a single, monolithic product, but a suite of products which has been created by acquiring other companies and their software and then writing some integration pieces in-house to tie it all together. As a result, the quality and engineering foci of the various pieces are pretty divergent. Their Portal, for example, was bought from Epicentric a few years back, and is nicely engineered and well thought-out. The Content Management System, on the other hand, was developed internally by the engineering team and has a byzantine API and a number of bugs. (In fairness, the CMS portions are a good deal more complex than the Portal bits.) Finally, Dynamic Site, which is the presentation layer of the CMS, was actually written by their Professional Services organization, rather than their engineering team, and while it does what it does fairly well, it also has some big, gaping holes in its functionality that have yet to be filled.

I’m going to focus on the content management aspects of the system, since that’s what we’re using the most. Vignette provides web-based tools to manage structured content. Though these tools only work in a limited number of browsers, due to the extensive use of Javascript and failure to adhere to W3 web standards, they are quite powerful. Content can be reused, versioned, assigned to multiple presentation channels, searched, run through workflows, published to various stages, and rendered as XML, HTML, or any number of other formats. Thus, if you have people who can take the time to learn to use Vignette’s content management tools, it’s possible to do some very powerful things with your content. The interface to do all of this, however, is quite complex, and isn’t really suitable for use by people who don’t spend a significant portion of their day with it. As a result, we’ve ended up having to rewrite a fair portion of the content editing interface to make it manageable for the people in the University who will be maintaining sites — typically administrative assistants who only spend a few minutes each week making tweaks to their department’s site.

Initially, Vignette didn’t provide any application at all in V7 to present the system’s content, but instead relied on the implementors to write an application to pull content from the database via Vignette’s API. As I mentioned, Vignette’s API is not at all easy to come to grips with, nor is it particularly thought out. (For example, each content item in the system has two unique identifiers — a VCM ID and a GUID. Some API calls require one, and some require another. Not only is it not always clear which is which, but getting one if you only have the other takes some doing.) Several months after we started working with the system, however, Vignette introduced Dynamic Site, which is a framework on which to build content presentation applications. It includes some powerful content-querying features, and is a marked improvement over the void that preceded it, but still doesn’t provide a lot of flexibility in how a site can be structured. Our user experts deemed it too difficult for our users to be able to interact with directly, however, so we wrote around a fair portion of it as well.

As we got more content into the system, its lack of flexibility began to cause problems. I wanted to add some additional fields to an existing content type so that we could track more information. In most database driven applications, this isn’t problematic: you add the field to the database, maybe update a schema definition file somewhere, and you’re in good shape. Unfortunately, with Vignette, once you define a content type and have instances of it, changes to the content type are off-limits. When I contacted Vignette’s support about this seemingly-common task, their recommended solution was this: “1. Export all the instances of that content type. 2. Delete all the instances of that content type. 3. Make the changes you want. (You may have to delete the content type definition and rebuild it from scratch if the changes you want to make are extensive.) 4. Import your exported data into the newly modified content type definition.” Not a particularly viable approach for a production system.

When programming, one always comes across challenges, which I like to think of as a closed door. One thing I’ve really been enjoying about learning Ruby on Rails is that more often than not, when I put my shoulder to that closed door and push, I stumble because there was so little resistance. “Oh, I’m through and done already? Wow, great!” Programming for Vignette has been the opposite experience. I push, budge the door a few inches, get my fingers caught between the door and the frame, have to call some friends in to help push, and finally get the dang thing open. While it’s generally possible to get things done, it always feels like about four times as much work as it ought to be — an experience that tends to be a big joy-killer for a programmer.

There are some bright spots, however. As I mentioned, Vignette’s Portal product is well thought-out and implemented. It supports PortalBean, a proprietary interface for writing portlets, and JSR-168, the Java standard for the same task. It also supports WSRP, which allows it to publish portlets deployed on other, potentially non-Java systems. Vignette Business Integration Studio is a nifty visual programming tool designed principally for doing data migration and transformation which can talk to a variety of disparate systems. I quite like it as well. Though I haven’t worked with it, Vignette’s Builder also looks to be a very nice way to quickly build portal-based, database-backed applications as well.

So, where would Vignette’s Content Management System be a good fit? In the case of a highly-structured site with lots of traffic, consistent data and people devoted to content management, it makes reasonably good sense. The Olympics’ official site when the games were in Greece was run off of V7 and enjoyed good success. Vignette’s older content management software, Storyserver, grew out of software developed for CNET, a technical news and information site — the sort of application to which V7 is still well-suited.

At the University, however, our most important needs are flexibility, simplicity, and ease-of-use. These are, unfortunately, Vignette’s weakest spots. As a result, it has taken us an inordinate amount of time and consulting hours to finally get to the point where we’ve been able to field what is, ultimately, a pretty basic set of content management services. While there are aspects of our system that I am proud of, in general I’m left with a sour feeling that we’ve put in an enormous amount of effort for a fairly small payoff, and believe much of that to be a result of our decision to build on Vignette.

Yeah, You're Right!

On the way home from church today, the kids were discussing the latest Harry Potter movie. After minutes of loud enthusing, Maggie boldly proclaimed, “You know, they should really make a book out of that movie!”

Brain Activity and Gaming

During the time I was working at Origin, I bought and sold computer games at an alarming rate. This wasn’t because I spent endless hours playing games, but because the part of the games I most enjoyed was learning how to play. Once I had the mechanics of a game pretty well figured out, playing it through to the end had little appeal unless it had a particularly strong story I wanted to see the end of. I discussed this with a couple of my coworkers, and they confessed to the same thing — games held their attention only as long as it took to figure out new play mechanics, to sort through novel techniques, etc.

Thus, it was with considerable interest that I read this paragraph from Roger Ebert’s review of Silent Hill, the movie based on the video game of the same name:

Dr. Shlain made the most interesting comment on the panel. He said they took some four and five year-olds and gave them video games and asked them to figure out how to play them without instructions. Then they watched their brain activity with real-time monitors. “At first, when they were figuring out the games,” he said, “the whole brain lit up. But by the time they knew how to play the games, the brain went dark, except for one little point.”

Apparently in many cases, the meta-game of figuring out how a game works is a much more mentally engaging activity than the game itself. I would guess that the results — the “one little point” — would be different depending on the game, but I at least now have some empirical support for my short attention span.