Saturday, August 30, 2008

On Resources...

As I put the finishing touches on one of my presentations for EclipseWorld 2008 on this, the last day of blaugust, I'm reminded of how far the resource model in EMF, and in the Eclipse platform itself, for that matter, has come over the past few years. Nearly gone are the days where applications assume that everything is on the local file system or that a file extension dictates the content of a resource...

And, after reading Kevin's blog entry about declarative styling, I'm excited about how much farther we may yet be able to go. e4 will indeed change the way we, and the industry as a whole, think about Eclipse; if it doesn't, I believe it will have failed. I'm anxious to start making contributions, particularly in the area of the new platform's resource model. How do you plan on contributing to the future of Eclipse?

Friday, August 29, 2008

On Conferences...

As Ian pointed out recently, it's almost conference season again. Although I'm not sure whether I've recovered from the last one yet (EclipseCon 2008, the Washington and Ottawa OMG technical meetings, and two Eclipse/OMG Symposia), my autumn is shaping up to be a busy one. So far I'm committed to attending OMG technical meetings in Orlando and Santa Clara, and I'll be speaking at EclipseWorld 2008 in October.

I'm also hoping I'll be able to attend Eclipse Summit Europe (in November) for the first time this year. I've submitted a few talk proposals, so with any luck one (or more) of them will be accepted. If you're thinking of submitting a talk, now is the time to do it, as the deadline is on Monday! The Modeling symposium on the day before the summit should also prove to be interesting. It sounds like Ed will be there too, as will many of the usual Modeling suspects. Come join in the festivities!

Thursday, August 28, 2008

On Good Intentions...

They say that the road to you-know-where is paved with good intentions. Unfortunately, good intentions aren't enough to sustain a project at Eclipse. As I've said before, to be successful, an Eclipse project must adequately address its three communities (contributors/committers, users, and adopters). This takes work.

We've had to make some difficult decisions in the Modeling project lately, to deal with some projects/components that didn't quite pan out as they were originally intended. To be clear, Eclipse is not a hosting facility (i.e. dumping ground). It's an ecosystem where like-minded individuals can work together to build extensible frameworks and exemplary tools.

In the Modeling project, we like to think of it being relatively easy to create a project, but hard to keep one. We don't want to stifle innovation, but at the same time we hold our projects to the same high standards that Eclipse had gained a reputation for. The mechanism for creating Modeling projects may change a little now that the new Eclipse development process has been approved, but our attitude will remain the same.

The good news is that, while some projects fade away, new projects are always on the horizon. The Papyrus component of MDT was recently approved for creation (stay tuned for the announcement), and a couple more proposals for new MDT subprojects are in the works. If you're interested in being part of the excitement, let me know!

Wednesday, August 27, 2008

On Schedules...

The Pentaho BI Platform, on which ER/Studio Enterprise Portal is based, makes use of a Quartz database to schedule its jobs. Quartz is a full-featured, open source job scheduling system can can be integrated with virtually any Java application.

Unfortunately, the schedule administration interface provided with Pentaho is somewhat cryptic (and hence difficult to use), in part because it uses cron expressions to specify job schedules. There are several tutorials on cron triggers available on the Internet, so I won't provide a full tutorial here. However, I thought it would be helpful to describe what the format of a cron expression looks like and show a few examples that might be useful to, for example, set up a schedule for the synchronization of the reporting database with the ER/Studio repository database.

A cron expression is a string of six or seven fields separated by white space. Specific values, as well as certain special characters, are allowed for each field, as follows:

  • Seconds : values are 0-59, special characters include , - * /
  • Minutes : values are 0-59, special characters include , - * /
  • Hours : values are 0-23, special characters include , - * /
  • Day of Month : values are 1-31, special characters include , - * / L W
  • Month : values are 1-12 or JAN-DEC, special characters include , - * /
  • Day of Week : values are 1-7 or SUN-SAT, special characters include , - * / L #
  • Year (optional) : values are 1970-2099, special characters include , - * /

I won't go into detail on all of the special characters, but * means "all values" and ? means "no specific value" (useful when you want to specify either day of month or day of week but not the other). Here are some examples:

  • 0 0 0 * * ? = midnight every day (the default schedule in the portal)
  • 0 30 1 L * ? = 1:30 AM on the last day of every month
  • 0 0 2 ? * 0#3 = 2:00 AM on the third Sunday of every month
  • 0 0 * * * ? = every hour

It's important to note that schedules between midnight and 1:00 AM can result in either a skip or a repeat depending on changes due to daylight savings time.

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/") 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!

Friday, August 8, 2008

On Trojan Source...

Like me, Gord's product is also on the eve of its release. Oh, what a feeling! What a rush! The last time I felt like this wasn't all that long ago, actually. At the time, Ed blogged about how it felt like the end was nigh. Well, that end has since come and gone, and now everybody knows what Ed was really talking about. Personally, I think he should have entitled his farewell blog entry "So long, and thanks for all the FOSS".

Or is that FLOSS? The product I'm about to release is based on an open source platform that, believe it or not, isn't Eclipse (gasp). Their approach to open source, dubbed "professional open source", is somewhat... different from that of Eclipse. It seems ironic (at least to me) that a platform which boasts freedom from closed, proprietary software would switch to a more restrictive license mid-stream... it's almost like it was part of the grand plan all along.

So what does 'open source' really mean, then? According to the Open Source Initiative (OSI), which officially owns the definition, the distribution terms of open source software must comply with ten criteria. The OSI maintains a list of the open source licenses which have successfully gone through their approval process and comply with these criteria; both EPL and that other license are on it, as are many others. So what's the big deal? Just ask one of the customers or OEM partners who, if they want to adopt the next major version of said platform, may be forced to decide between releasing some of their software under the new open source license and purchasing a commercial license for the platform...

Wednesday, August 6, 2008

On Search Providers...

I mentioned that I spent a lot of my time recently on a deep dive into one of Embarcadero's products that's about to release in the coming weeks. I had planned on giving a "sneak peak" as to what it's all about, but it turns out that Greg beat me to it (thanks, Greg!).

Rather than repeat everything that Greg said, I'll focus on a lesser known aspect of one of the portal's main features. Despite the incredible value of its shared reports, explore dashboard, ad hoc query interface, and administration console, perhaps the most popular (and most scrutinized!) feature of the portal thus far has been its search capability.

One of the cool things (at least in my mind) about the search capability of the ER/Studio Enterprise Portal is that, like other Web-based search interfaces, it can be integrated into the search bar of your favorite browser. I'll walk through the steps to do this for Internet Explorer as an example.

1. Select the 'Find More Providers...' item from the search bar's drop-down menu.

This will take you to a Web page where can choose from among several exiting providers or create your own.

2. From a different browser window, type 'TEST' into the search box of the ER/Studio Enterprise Portal and hit .

This will take you to the Search Results page.

3. Copy and paste the URL from the Search Results page (the "&x=8&y=6" portion at the end isn't necessary), specify a name for the new search provider, and press the 'Install' button.

This will open a dialog asking you to confirm that you want to add the search provider (click 'Add Provider').

4. Choose the new search provider from the search bar's drop-down menu, type in your text, and away you go!

To avoid having to log into the portal each time you want to search, you can also add your user name and password to the URL before pressing the 'Install' button in step 3 above by appending, for example, the string "&userid=MyUserID&password=MyPassword".

Tuesday, August 5, 2008

On Status Quo...

What the heck is Blaugust, anyway? Well, it's what James has been calling the month of August lately in light of a little challenge we have going within the program management team here at Embarcadero (yes, another fest). blaugustFEST is a contest to see who can reach out to the community by blogging or commenting on a blog entry a minimum of twenty times during the month of August. So, keep your eyes peeled for some creative blogging by James, Gord, Wassim, and others... it could prove to be quite entertaining.

I don't mention Ian above because, alas, Ian has decided to move on to another pasture (I don't say greener since, as Ed often says, the grass on the other side only looks greener because you're looking at it from an angle). So, things aren't exactly status quo around here, for various reasons.

I'm glad. Not about Ian leaving, because we'll really miss him, but about things not being status quo. The problem with status quo is that it tends to stifle innovation. I get frustrated (and did just recently, in fact) when faced with a situation where "our users have come to expect that it works this way, and if we change it, we'll never hear the end of it". I'm sure many of you have been in the same boat. There's no doubt we'll be facing scenarios like that with e4.

There's this old story about a woman who always cut the ends off a roast before putting it into the oven. When asked why by one of her kids, she realized she didn't really know - her mother had always done it that way. The next time she saw her mother, she asked the same question, and her mother explained that she had to because she didn't have a large enough pan to fit a whole roast.

The real challenge, IMHO, is to face opposition in the name of progress. Sometimes we need to consider new, potentially better, ways of doing things. That's what innovation is all about, after all...

Friday, August 1, 2008

On Blaugust...

Not unlike John, it seems as though I dropped off the face of the planet(s) nearly three months ago. James has a great expression for this kind of phenomenon - "going dark". Well, I can assure you that while I have been dark in the blogosphere of late, I've been bright in other spheres.

So where have I been? So much has happened since my last entry, it's hard to remember it all...
  • I participated in the e4 Summit in Ottawa. I know, old news, but now there's an actual proposal for the e4 project. What area will you be contributing to?
  • I had a chance to meet with my CodeGear brethren in Scotts Valley for the first time, and I'm very excited about what we'll be able to accomplish now as a combined company. Stay tuned!
  • I co-hosted the second of two Eclipse/OMG Symposia in Ottawa, and I'd venture to say that it was even more fruitful than the first!
  • I played a part (as lead of the MDT project) in ensuring that Ganymede, in all its glory, was successfully released. w00t!
  • I took a much needed vacation (they're never long enough!) - one week camping in New Brunswick and a second week at a chalet in Charlevoix. Oh, the stories...
  • I helped orchestrate a summit for Embarcadero's Software Consultants in Toronto. What a great team!
  • I did a deep-dive on one of my products that is about to release in the coming weeks.
I'll be taking time to blog about each of these activities (and others) in more detail over the next month because, as of today, it is Blaugust after all!