Wednesday, August 27, 2008

On Changing Tack...

In the world of sailing, the term 'tack' is fairly overloaded. In one sense it refers to the front bottom corner of a sail, in another it refers to the side of the boat on which the main sail is being carried (relative to the wind), and in yet another sense it refers to the action of turning the boat through head to wind (e.g. changing from a port tack to a starboard tack). When on a windward leg in a race, it's important to pay attention to variations in the wind direction that may force you to point the boat closer to the wind ("head up") or further away from the wind ("bear away") in order to stay on a close hauled (i.e. fast) point of sail. In sailing terminology, these are referred to "lifts" and "knocks". Generally, a knock on one tack corresponds to a lift on the other tack, so if you're frequently getting knocked, it's advantageous to tack (see, I told you the term was overloaded).

I've found that the same often applies in software development - a change in the way you are attempting to solve a problem can put you in a better position than you would have been with the original approach. I have been "knocked" for over a week now trying to regenerate the source code for the UML2 component of MDT in a runtime workspace. I've always done it this way because I typically need to use recent changes in UML2 itself to regenerate the UML2 source code. No matter what I tried (clean workspace, more memory, builder settings) I could not get one of the code generation templates to compile. What was most frustrating was that the same template compiled successfully in my development workspace.

So, I decided it was finally time to change my approach and make use of a PDE enhancement that was made as part of the recent Ganymede release. I used the 'dropins' folder as my workspace (e.g. -data "C:\Eclipse 3.4 MDT Galileo\eclipse\dropins") and the settings for my runtime workspace as the development properties (e.g. -dev "file:C:/Eclipse 3.4 MDT Galileo/eclipse/dropins/.metadata/.plugins/org.eclipse.pde.core/MDT/dev.properties") and, voila, I was able to bootstrap UML2 and my template compiled successfully. Not only did this solve my problem, but it also means I have one less workspace to configure and maintain!

Tuesday, August 26, 2008

On Memory...

It's been a week now since ER/Studio Enterprise Portal was released, and so far the response has been overwhelmingly positive. Yesterday I mentioned that, while testing the portal, I find the Tomcat service management utility helpful. One of the things, in particular, that I do is change the amount of memory that the application server's Java virtual machine makes use of.



The portal isn't officially supported on Windows XP, but it will run on it. Depending on how much RAM the machine has, and how many other applications are running, the maximum memory pool needs to be lowered to something like 1024 or 512. There's a way to do this via the command line as well:


"c:\Program Files\Embarcadero\ERStudioEnterprisePortal1.0\tomcat\bin\tomcat5.exe" //US//Tomcat5ERSPortal --JvmMx=1024

Monday, August 25, 2008

On Service Management...

It's hard to believe that blaugust is drawing to a close... where did the summer go? Given that I have a few more blog entries left before I hit my target for blaugustFEST, I'll be spending some time this week covering lesser known aspects of Embarcadero's ER/Studio Enterprise Portal product (launched last week). While somewhat product-specific, I hope that this information will also be of general interest to those of you who may be using Tomcat as an application server or Pentaho as a business intelligence platform...

The Enterprise Portal makes use of Apache Tomcat as its application server, and installs it as a service in Windows. One of the things I've found, while testing and using the portal, is that I often want to know the current status of this service and/or do things like shut it down and start it back up again. Fortunately, Tomcat provides a service management utility to do this and other maintenance tasks related to the service. To launch it, type (something similar to) the following from a command prompt (or in the Run dialog available from the Start > Run... menu item):

"C:\Program Files\Embarcadero\ERStudioEnterprisePortal1.0\tomcat\bin\tomcat5w.exe" //MS//Tomcat5ERSPortal

After doing this, an icon will appear in the system tray (on the right-hand side of the task bar). If you double-click the icon, a window will open which allows you to start/stop/restart the service, change the way it logs on to Windows, set the logging behavior, configure the application server's Java virtual machine, among other things.


Friday, August 22, 2008

On Walk Thrus...

How green are you willing to be? With all the talk these days about global warming, carbon offsets, ecomuseums, and the like, two recent drive thru experiences have got me thinking.

A few weeks ago, my wife and I were at the window of a leading coffee company's drive thru to pick up the drinks we had ordered, and were somewhat surprised when they were handed to us in a tray. We explained that we had no need for a tray since there were only two drinks which could probably be managed just fine with the cupholders in our vehicle, and asked that the tray be taken back. To our dismay, the dutiful employee refused, saying that the tray had been used (despite our argument that it in fact had not). We suggested that perhaps they should ask their customers whether they would need a tray at the time the order is placed, but were told that, due to a new policy that was being enforced, employees were not allowed to ask that kind of question. We asked how, then, environmentally conscious customers could avoid wasting trays that they have no intention of using, and the response was that customers should remember to specify explicitly that they will not need a tray when placing their orders. Upon asking what we were to do with a tray that we clearly had no use for, we were directed to a blue recycling box several feet ahead of us in the drive thru... which, not surprisingly, was overflowing with "used" drink trays. Stupefied, we got out of our vehicle, picked up the trays that were strewn about, added ours to the pile (after stomping on it a few times), and pulled away, questioning whether that coffee company deserved our business in the future.

Just today, I was waiting in the drive thru of another leading coffee company (this time, a Canadian one) with my regular Friday lunch crowd, and was drawn into a recurring argument about minimization of greenhouse gas emissions via idle reduction. One of my friends has always maintained that an anticipated idle of longer than ten seconds justifies turning off the engine and restarting it. Another friend argued that, as he learned recently, the threshold is actually 60 seconds. In the midst of the discussion, they both stopped and asked whether vehicles needed to idle at all in drive thrus. They then proceeded to put the car in neutral, turn the engine off, get out of the car and, I kid you not, push the vehicle along, despite puzzled stares from patrons inside the restaurant and obvious looks of frustration from the drivers of the vehicles behind us.

Both of these are examples of fastidiousness. As with all things, I think it's important to have standards, and it often pays to be fastidious, especially in a role like mine. But sometimes we need to question whether those standards make practical sense...

Thursday, August 21, 2008

On Triads...

Word on the street is that I'm not the best program manager ever. At least, that's what the T-shirts say. Regardless of whether you can believe everything you read, and given that I'm often asked what it is that I do for a living, I thought I'd take a moment to explain what exactly a program manager (PGM) is...

A program manager at Embarcadero is a cross between a product owner (in the agile sense) and a project manager. We "own" the user experience; that is, we determine how requirements get turned into functionality that appears in our products. Organizationally, as a program manager, we're part of two triads.

As part of the external, or customer-facing, triad (the "cone of silence"), a program manager works with a product manager (PM) and a product marketing manager (PMM) to gather requirements, assess the market, validate product roadmaps, and analyze the competition. Being a keelboat racer, I like to think of this triad as as the strategic part of my job. In sailing, strategy is what you'd plan to do to win the race if there were no other boats on the course. For more insight into this side of the business, check out the interview that Greg did recently with my PM (Jason Tiret) and PMM (Josh Howard).

As part of the internal, or engineering-facing, triad, a program manager works with a software development manager (SDM) and a quality assurance manager (QAM) to deliver a product which satisfies its requirements, on time and with quality. I like to think of this triad as the tactical part of my job. In sailing, tactics is how you actually make it around the course when there are lots of other boats out there trying to do the same thing. There are typically two kinds of software projects: time-based (where the product is released on the scheduled date, even if the scope needs to change to do so) and content-based (where the product is released with the planned content, even if the date needs to change to do so). At Embarcadero, our projects are of the former kind, and "he who ships, on time, speaks".

Oh, one more thing. We're always looking for good people, so if this role sounds attractive to you, drop me a line. ;)

Wednesday, August 20, 2008

On Darkness...

Speaking of darkness, I spent some time yesterday producing updated XMI serializations for UML 2.2 and was reminded of some recent banter in the blogosphere about UML's apparent demise. As original author of the de facto reference implementation of the UML 2.x metamodel (i.e. the abstract syntax), I feel the need to offer my perspective on the issue.

In my opinion, tool vendors have failed. MDD is a sham, at least the way it has been employed in tools to date. Rather than contorting the artifacts, interface, and user (!) to meet the needs of the model or modeling language (UML, DSL, or otherwise), tools should be applying MDD (and visualization in general) where it makes sense to bring about real productivity and result in better quality software. I know there’s increased productivity and quality to be gained from modeling because I (and many others I know) have experienced it. But then I tend to be more accepting of the whole “no pain, no gain” mentality than most users. Tools need to evolve to make consumption of this stuff painless.

What's interesting to me, despite reports of UML's decent into darkness, is that a once long-time detractor of UML has recently changed its tune and started incorporating support for it into one of its tools. Maybe this really is the beginning of the end. UML is dead! Long live UML!

Tuesday, August 19, 2008

On People...

At the risk of getting sentimental, I'm going to get sentimental for a moment. Today, Embarcadero Technologies released ER/Studio Enterprise Portal 1.0, the first product I've been directly involved in launching since leaving my previous employer just over a year ago.

Looking back at how we got to this day, I'm reminded of a major reason why I came to Embarcadero in the first place - the people. A lot has been, and will be, said about the many virtues of this product. But when I think about it, I can't help but focus on the people that persevered through many challenges so that this product could see the light of day. This is what the word "team" is all about. w00t!