The Distributed Demo

A letter to the extended team/business/qa mailing list:

There we were… 20 minutes to a 1pm demo. All was set the night before… some “safe” last-minute changes requested by the business analyst (Marc — in NJ).

scrambling to figure out why we suddenly couldn’t get [insurance thingy] RQAs to open, or to rate when they worked an hour ago. i (in PA) make some DB changes, cross fingers, try to open an RQA to test

[DB and App running on servers in the middle of PA]

12:46 <markhanson> i am about to faint [Mark is in CA]

tick, tick, tick

nothing

crap

12:56 <mmatrix>T-4 [mike is in CA]

(mike is viewing the demo via netmeeting and reporting to us.)

i flip caching back on

hell with the test, trust in the force

12:59 <mmatrix> uhoh; faultString (String): java.lang.StackOverflowError

and much else followed that i can’t print (*I* only said ‘crap’ on IRC!)

13:00 marc and harry start demo presentation in New Jersey…

at 13:03 I realized smth was up with Questionnairre #3’s meta data

i point some of the sql scripts that mark wrote long ago to help ensure qstnrs were properly formed…

bang, an errant condition for one of the rules! darn!

13:11 somehow, the choice that the condition was looking for lost its question!

mark: how did that happen?

jon: [shrugs in PA] probably me

I make a quick change to the DB to fix

13:15 <mmatrix> they are demoing right now 🙁

13:15 <mmatrix> (it’s like watching a train wreck in slow motion.)

jon: editng the RQA… waiting… it worked! Questionnairre is healed.

jon: okay, cache back on. do we need to bounce the server?

mark: no, just re-open RQA two more times and it will be cached

jon: cool, i am editing the RQA a 2nd time now

13:16 <jonkern> i am still waiting for a response [the RQA to return]…

13:16 <jonkern> app is transferring data now

13:17 <mmatrix> waiting for what? Do they [marc & harry] know about the problems?

13:17 <jonkern> got it! [The RQA]

13:17 <mmatrix> He [Marc] just did a create new

13:17 <mmatrix>

mark: hurry jon! hurry before Marc hits CONTINUE button

13:17 <jonkern> trying it [editing RQA] again now for 3rd time

jon: someone slow marc down for a few seconds! (I joke)

13:17 <jonkern> FAST, SWEEET!!

13:17 <markhanson> and marc hasn’t hit continue yet!!!!

13:17 <jonkern> and all without the usual demo rodeo clowns

13:17 <mmatrix> will it be too late?

13:17 <jonkern> nope. it [RQA] comes back fast now (<10 seconds) 13:18 <mmatrix> JK, if this works it will be the closest I have EVER seen a demo be cut

13:18 <mmatrix> he is creating new

13:18 <jonkern> ignore the men (and lady) behind the curtains

13:18 <mmatrix> hasn’t continued yet

13:19 <markhanson> i am lol and pinching myself to not lose consciousness

13:19 <mmatrix> here he goes

13:19 <mmatrix> doing BOP [a type of insurance line of business] it looks like

13:19 <markhanson> he hit continue

13:19 <mmatrix> … looks for a place to hide

13:19 <jonkern> did it come back fast???

13:19 <mmatrix> no

13:20 <mmatrix> still nothing

13:20 <markhanson> came back

13:20 <mmatrix> it is BACK!

13:20 <mmatrix> son of a GUN

Major applause and cheering from us!

And much more merriment was had when marc did rate the sample insurance applications and premiums were returned, and he made changes to the quote and re-rated and got different premiums. Sweet, the core concepts of the application were just proven. Yes, we can put a modern RIA front-end on a Phoenix back-end and get penny-to-penny match on the premiums!

Reflecting back… Mike was giving play by play description in the phone of the demo and what marc was doing. Mark was also talking to me on the speaker phone (and eventually other developers joined in). All the while, it struck me as listening to the Apollo lunar landing as someone was watching it, or being in mission control with different folks checking in, but I myself not being able to see.

What a rush!

Harry’s words sum it up:

  • The company is confident that we can deliver the tool to the agents to deliver small commercial insurance.
  • The company has given us a good report card in terms of what they were looking for.
  • Andy [President] is supporting us to the nth degree

[Team,] on tuesday afternoon you told me we could make thursday COB for friday QA build. We actually hit the goal on Wednesday afternoon (especially once Andrew discovered missing LOBs on TEST), and left Thursday morning for cardio exercises:

  • Ken innocently twiddled the main application file,
  • Jon and Mike added something to the qstnr for Marc only to realize it didn’t work and had to back it out, and
  • Jon missed one choice’s assigned question and broke the qstnr!!

Who needs espresso?

Savor the moment… there will be more, but this was a good one. Be proud! I am — of you.

What is Design?

Some recent discussions revolved going back and forth on DESIGN.

For me… design is a multi-faceted thing… Sometimes it is a very high-level part of the overarching theme of what drives an application’s details. Generally, the design is the means by which superior business advantage is gained by our clients.

  • For an insurance agent portal application (gather data about the insurance requirements and submit…) we are building now, one of the running jokes is “Everything is a Question.” That is because my overarching design of the system is a domain model surrounding the questionnaire aspect of the system. Add to the questions meta data for the rating system (to auto-generate the XML stream for rating). The entire UI is driven dynamically by the questions set up in a questionnaire — the sample questionnaire that demonstrates all API features and rules is a Diner! Need a piece of information sent to the backend rating system? Create a hidden question and some rules to assign the answer. Need a fancier UI for some questions? Add a CUSTOM_UI meta tag and the UI will kick off a different component for that question(s).
  • For a patient clinical summary system we designed, the overarching technical aspect of this design was the “Form” — basically a set of information needed for a patient. Working backward from this request, the proper data was pulled in by autonomous agents, shoved into a “worksheet” for processing. This multi-agent system used descriptive “Semantic Web” technologies such as RDF and OWL for knowledge representation, mapping, and processing.
  • For a fire department web-based preplanning system, i used a very brute force technique to implement 50 domain objects in J2EE. Though the 2-tier menu system is table driven, the bulk of the beans are repetitive. Yes, I thought about MDA. Yes, I thought about building it in a completely meta driven manner. But, this was a homegrown, entrepreneurial project, so we used a proven and simple technique that I could deliver more rapidly.

For the first two cases above, the combination of design ideas, sketches, wiki explanations and code will give you the fastest ticket to joining the team and becoming productive.

For the 3rd example, you could jump in on examining source code for any of the 50 objects and know all there is to know about the design and start coding.

design is in the eye of the beholder also… the facets of the design that you choose to share are generally for a specific reason. Maybe for the stakeholder to understand the business value that an advanced design provides… Or, a combination of showing the application architecture + the domain models + code samples for the entire set of layers for the technical architecture is what is best for developers. To discuss the UI design, that is a whole other ballgame.

Another way I like to think about folks (like Ron Jeffries) considering the “Code IS the design:”

  • code is reality
  • design is intent