Moved In

I have finally moved into my new (and hopefully last) home after five months of renovation madness and two months in temporary housing.

My first night (20 Feb) was a late one; I unpacked boxes and cleaned until about 2am, then had to get some project-related email out. President’s Day weekend was no vacation, and my first night was doubly strange with my familiar things unpacked in an unfamiliar setting and the setting itself transforming into a home from a hollowed-out shell with construction debris everywhere. There’s enough finished space for me to exist but leave the the contractors enough room to work because …

The renovations are not done. The furnished apartment had me hemmoraging green and living like a refugee, my possessions a distant memory. Now I just feel like I’m living in a warzone. At least it’s my warzone with victory on the horizon. The first day of Spring will likely see me settled.

I’m deliberating not taking any more pictures until it’s done; the pain and suffering in between has left enough mental scars that I don’t need physical or digital reminders. This has been an exhausting, all-consuming project with a budget blown to smithereens due to three things: Upgrading materials and technology, seat-of-the-pants design/changes, and working on an accelerating schedule. These were acceptable trade-offs given the horror stories I’ve heard of renovations running more than a year with a mambo line of contractors. It looks like we’ll make it through without me defenestrating contractors, designers, or myself–tempting as 31 floors makes it.

Signing off from my new home. Huzzah!

The Least of Many Evils

I have a production install this Friday, and I’m trying to put together everything for the turnover. One problem with Documentum’s Application Builder (DAB) tool is that it doesn’t install everything–especially permission sets–that I’m using heavily for this app. So I’ve spent the last few work-days looking at various ways to manage the move from dev to qa to prod. I’ve done this a bunch of different ways over the years, and no approach has been completely satisfying.

  • API/DQL Scripts — Documentum comes with tools like isql and sqlplus for interactive sessions using a SQL-like language or the underlying DMCL API. Both tools will take files as input, and every platform has these tools. The good is offset by the bad–no control structures. It’s a matter of faith (and luck) that the scripts will do the right thing when run on a partially-configured system.
  • Real Programs — I’ve written some smart programs to assess the state of the docbase and do the right thing. Languages like perl and python can make for some sophisticated scripts, the latter even using the Java API (DFC) within Jython. Greater control comes at the cost of greater complexity, a good thing when there’s time to test. Not having that, I’m reluctant to go into full-blown development mode.
  • Manual Creation — The ultimate fallback position is to print out my spreadsheets and build everything outside the docapp first in the administrator tool. It allows me to be the ultimate control structure which in theory needs minimal debugging. I don’t really want to spend my entire Friday night with a flaky web application and a docbase that’s had more work with less positive effect than Joan Rivers. The upside is I’m less likely to need that special shampoo after this kind of Friday night date.
  • Dump and Load — Another tool can serialize (or in python-speak pickle) any Documentum object and even pulls out all related objects for reinstantiating in context. It’s not good with large docbases, and it has a history of bad behavior when running over Sybase. Worst of all, it often brings too much context; all kinds of other things will come along for the ride that will require removing by one of the other methods elaborated here.
  • dm_procedure — I’m not a docapp alchemist, but I do know that it can run snippets of client code called dm_procedures before and after various stages of installing a docapp. Unlike every other approach, this one integrates the execution into installing the docapp. I like the turn-key approach since ideally I should be handing this over to an application support group rather than doing it myself. That either requires me documenting the pants off the install or having something simple and mostly foolproof. The enormous downside is that these code snippets are done in docbasic, a dumbed-down version of Visual Basic that includes functions to use the DMCL API. Those functions take string arguments that are concatenations of method names, identifiers for sessions and objects, and plenty of arguments. Doing DMCL in perl is painless with variables embedded in strings, but in docbasic it’s a real pain

I’ve done all of these things before, usually with more time and never with wonderful results. I refuse to just choose the least of many evils though; before calling it a day I started looking into calling the Java API (DFC) from within docbasic.

I’m not a huge fan of the DFC; it has some of the things I hate about Java in spades: unwieldy long names, class and method proliferation, and it attempts to be helpful to beginners at the expense of the flexibilty experts need. There are a few good things about DFC programming; an IDE like Eclipse brings some nice debugging and program-by-numbers features like code completion. It’s also getting harder and harder to find other API programmers, so the DFC has become my Lingua Franca with other, newer Documentum people.

Of course the IDE stuff doesn’t work for Java embedded into docbasic code. I’ll take a few hours tomorrow to see if docbasic takes some of the drudge out of DFC programming like Jython does, add a few generic dm_procedure/docbasic/DFC templates to my library, and at least know why never to do something like this again if it doesn’t work.

Aftermath

My 42nd year didn’t start well. The day itself had all the drama of HGTV meets Lifetime:

Episode 15340
12:00am JKTV 1440min TV-PG
Renovations continue to fall behind schedule causing friction with the general contractor. New friends, virtual and otherwise, appear as John’s personal life unpauses for a few hours. A night out on the town ends when a budding romantic relationship becomes more of an entanglement.

The weekend was more HBO than Lifetime, but you’ll have to wait for the DVD for the details. One thing I will share is the restaurant where I met V&N. Giwa is a great place for tasty Korean “fast food”; it’s on Sansom between 16th and 17th Streets. Everything was good including the kimchi which was hot but scaled back for an American palette. One word of warning though: It’s very small and our meal was punctuated with blasts of cold each time the door opened.

++johnk

Oh no! I’ve incremented myself again!

I blog in honor of my 42nd birthday today–as good an excuse as any.

I meant to restart the blog with the new year after months (years?) of silence; deleting spam on my old blog with my old provider became a full-time job that didn’t pay the bills. A new provider and a fresh install of WordPress should take care of that!

I held off since the big news I wanted to deliver with that first post, that I’d finally moved into my new home, didn’t happen. After weeks of rushing the contractors to finish the renovations by my birthday, I still have to report no joy.

So no more waiting of birthdays, move-ins, or arbirtrary calendar dates! With this post, my blog is back in business. Stay tuned for more to come about life, liberty, and the pursuit of happiness from the war zone that is my home.

The best way to stay tuned is bookmarking my RSS feed. RSS, it’s a Good Thing(tm).