Monday, November 8, 2010

Modeling in Europe

I've been in Europe since October 27th. The trip started with a visit to Zurich to attend the Eclipse Enterprise Modeling Day hosted by UBS. It was very well organized and a great success! This was my first visit to Zurich and I was fortunate to have time for sightseeing with Frank before heading off to Ludwigsburg on October 31st. Zurich is a fantastically beautiful city!

The day before Eclipse Summit Europe, was the face-to-face Eclipse Board of Directors meeting, so the week was off to an interesting start. I was still organizing the content for the Modeling Symposium the following day. Agile preparation I like to call it though some might use the word procrastination.

I think the symposium was a great success. It was a chance for a large number of presenters to demonstrate their favorite technology in action and gave the attendees a diverse overview of many topics they might not learn about otherwise. Each presenter was kind enough to write a brief abstract, which I've included in this blog.

Semi-automated Model Transformations with Mitra and GEF3D

In OMG's "MDA Guide," model transformations are described to "be done manually, with computer assistance, or automatically." Research generally focuses on automated transformations. However, fully automated transformations can not always be applied. In this mini talk, we have a closer look at computer-assisted transformations (CATs), a language for programming them (Mitra) and, as CATs require user interactions, a 3D user interface based on GEF3D. As a result, model elements can simply be dragged from one model to another model, and when dropped these elements are automatically transformed. We demonstrate CATs by means of Jacobson's robustness analysis (known from the Rational Unified Process) and a tool for adding markers to arbitrary Ecore-based models.

Jens von Pilgrim mentioned that modeling without diagrams is like Tour de France without mountains: sure you can do it, and it's maybe even easier, but it takes out all the fun. He shows how he can drag from one diagram type to another, i.e., to transform a use case diagram into a class diagram.

Advanced Features for Migrating Models with COPE

When an Ecore model evolves, existing instances may need to be migrated. To automate the migration of these instances, COPE records the instance migration together with the Ecore model evolution in an explicit history model. The history model specifies the sequence of coupled operations that have been performed. A coupled operation encapsulates both Ecore model evolution and instance migration. Instance migration can be further automated by reusing recurring coupled operations. In this demo, we show the more advanced features of COPE to inspect and refactor the history model as well as to reverse engineer it from two versions of an Ecore model.

Markus Herrmannsdörfer demonstrated how he can use the information for transforming one Ecore model to another into a script that can transform an instance of the first model into an instance of a second model.

Modeling Eclipse Plug-in Artifacts

An Eclipse plug-in is a complex component based on heterogeneous artifacts, e.g., source code, manifest, XML files, properties files, and so on. We will demonstrate how EMF can be used to produce a homogeneous representation of these artifacts and provide a comprehensive model of an existing plug-in. We will illustrate how this model can be used to check development rules or refactor plug-ins.

It was cool to see Frédéric Madiot demonstrate how every last detailed aspect of an Eclipse plug-in is represented as Ecore-based model! He then proceeded to show all the things one can do with this information, e.g., implementing additional quality checks such as the need (for the Eclipse release process) for there to be an about.html file, as well transforming a plug-in from being Eclipse 3.x-based to e4-based.

Only One Click to an EMF Application

We will demonstrate how to develop an example application with the EMF Client Platform and EMFStore. A developer only needs to define an Ecore model for the application´s entities. Based on the EMF Client Platform this already defines a basic User Interface for editing. EMFStore allows storing and distributing the instances of the model. Everything just with the click of a button, that is launching an Eclipse instance with the model plug-in.

Jonas Helming and Maximilian Koegel did three quick demos. The first showed how one can rapidly prototype model designs and test their capabilities with a high-quality editor, i.e., one with forms for editing properties. The next showed the CVS-like ability of their model repository. And finally they showed how they can integrate their repository-approach with SVN.

The CDO Model Repository – Being Connected and Unconnected

In addition to the traditional connected mode, the Helios version of CDO comes with a sophisticated offline mode that has been inspired by distributed versioning systems like Git and is almost transparent for end user applications. If you feel uncomfortable with replicating the entire history of all branches of your master repository you may be interested in this demo. We’ll present the brand new offline workspace facility, which provides you with a more CVS/SVN-like workflow: checkout, update, commit. In combination with our new EFS implementation you can seamlessly integrate your CDO-managed object graphs with any existing Eclipse technology that is based on IFiles, while still being able to access the underlying object graphs.

One of the coolest things Eike Stepper shows is the integration with the Eclipse File System where the repository contents are surfaced as IResources.

Papyrus in Action

We will introduce the Papyrus team during the session, and we will then present the MDT Papyrus project itself. The talk will focus on the UML2 abilities of the tool, full compliance towards UML2 specification, and Domain Specific Modeling Language development facilities using UML2 profiles. We will also demonstrate the various possibilities of tool customization and finally we will present the road map for the next releases.

Remi Schnekenburger and Patrick Tessier showed some of the Papyrus capabilities, such as customizing the diagrams based on stereotype application.

Acceleo on e4

During this presentation, you will see a prototype of the modeling project Acceleo on the e4 platform. That presentation will also give you the opportunity to hear the feedback of this experimental transition to e4 with its advantages and drawbacks.

Stephane Begaudeau showed some of Acceleo's nice integration features, such as its own perspective with views that show things like all the objects accessed when generating a particular artifact; an important traceability feature.

Reconciling Multiple Representations for BPMN 2.0.

The new BPMN 2.0 standard provides a good basis for interoperability between Process Modeling tools and engines from different vendors. An EMF metamodel allows one to read and write standard compliant files and offers a good API for all kinds of tools. Such a metamodel was committed to Eclipse MDT project. However it was not as simple to create as you might have thought: Unfortunately OMG defines both, a CMOF metamodel and an XML Schema, resulting in two official file formats that such an implementation must consider. Fortunately EMF provides a solution for almost everything. I’ll demo how you can merge the two sources, the EMF tricks that were used, and how finally the BPMN implementation works.

Reiner Hille-Doering talked about the incompatibilities between CMOF, with multi-inheritance and typed references verses XML Schema which single inheritance and untyped reference. The difference between these two ways of defining the model needs to be reconciled to produce a single model capable of reading and writing the exchange format implied by each definition. Because it's a large model, he defined an automated way of merging the two to produce a single result annotated with extended metadata.

Dynamic Domain Models for JUnit using EMF, redView and Xtext

Implementing unit tests for business applications means running the same test classes again and again with different inputs and expected outputs. This session should demo, how EMF, redView and Xtext can be used to create reusable test instances which can be configured by dynamic domain models.
  • Xtext defines the test case specific domain model
  • redView renders and binds a matching ui at runtime
  • EMF stores the information in a key-value-map

Florian Pirchner showed how they can use model changes to dynamically update JDT's AST to reflect those changes.

Bonita Open Solution: Leveraging Modeling Power for Customization

We will see how the BonitaSoft team leveraged power of Modeling to turn a simple RCP-based modeler into a highly customized and user-friendly application. I will talk about some GMF-based customization in Bonita Open Solution Studio, and show how this customization is done with repeatable code generation to ensure agility and maintainability.

Aurelien Pupier showed two of their GMF-based editors. Their editors have nice contextual palette that make creating models very easy. They've done a good job making a stylish application.

Typesystems for Xtext Languages

Ever wondered about how to efficiently write the constraints for checking the correctness of non-trivial typing rules in Xtext languages? This short talk introduces the Xtext Typesystem framework which supports the declarative definition of a wide range of typing rules for Xtext languages. I will show a few slides to explain the background and how it works, and then I'll demo how to integrate a typesystem with an actual Xtext language editor.

Markus Völter showed a grammar for a simple expression language and proceeded to demonstrate how a simple type system can be constructed from that. E.g., define the types of the literals (i.e., of the leaf expressions) and then the rules for deriving the type of composite expressions.

Modeling Meets JDT: Leverage Java Types in Your Models

A tight integration with the Java Types and the Java Development Tools (JDT) is a sweet spot especially, but not only, for textual modeling. That's why we developed a lightweight EMF representation of the Java VM types, their operations, and fields as part of the Xtext framework. In this short demo I'll show how we used the abstractions of EMF and the power of dependency injection by means of Google Guice to allow a seamless integration of modeling components with Java VM types. Especially interesting is the dedicated EMF resource implementation that allows clients to work transparently with the Java reflection layer or the available information from a JDT based Eclipse Java project. Furthermore, I'll give a short demo on how the Modeling Workflow Engine (MWE) leverages this feature to provide a highly extensible configuration language including advanced tool support for users.

Sebastian Zarnekow started with a simple DSL to show how, with the use of the JVM type model, it's possible to refer to Java classes. It seamless derives its information either from JDT or via Java reflection, depending on your environment context. Very cool and powerful stuff.

Xdoc - When Writing Documentation is Fun

Xtext comes with extensive documentation published as Eclipse Help, as HTML on our website as well as PDF for printing and offline reading. The documentation is written in Xdoc, a markup language tailored for the purpose of writing documentation for Eclipse projects. This is a short demo of Xdoc and its editing features.

One of the things Sven Efftinge requested is for folks to post information on 328477 about their use of Xtext. He then proceeded to demonstrate the capabilities of Xdoc, a DSL similar to wiki and TeX for writing documentation, with a simple example document.

Diagram views of Xtext Grammars (5 minutes)

The Xtext Syntax View visualizes the syntax of your Xtext language in a railroad diagram. It helps to analyze, debug, and document your Xtext based languages.

Jan Köhnlein's very quick demonstration of his railroad diagram pet project was very cool, so much so that I neglected to get his picture! So I took his snapshot during the beer and pretzel reception right after.

Eclipse Modeling Platform

The Eclipse Modeling Platform (EMP) is an industrial quality integrated software platform to enable complete chains of model-centric tools in organizations focused on model driven development. The requirements for EMP are being set by some of the largest companies using model driven development. EMP will be developed as an Eclipse Industry Working Group supporting a collection of open source projects and encouraging a commercial ecosystem of value-added tools and services. The platform will be based on existing Eclipse modeling technologies but focus on better integration, quality, scalability and usability for modeling professionals.

This talk will give an insight into what is being done in the Modeling Platform Industry Working Group (MPIWG) and who is collaborating in this forum. It will also reflect the relation of the EMP to the existing Eclipse modeling projects and explain why these are promising days for getting this started.

Stephan Eberle gave much the same talk as he did a the Eclipse Modeling Day in Zurich last week.

The rest of the conference, as expected, was fantastic as well. I didn't get to attend all the talks I would have liked to attend, but face-to-face time is one of the primary reasons for traveling to these types of events, so it often takes priority. As with all good things, it came to an end all too quickly.

Friday November 5th, the day after the conference, was a face-to-face meeting of the Modeling Platform Industrial Working Group. It was held at the conference center. Stephan Eberle and Martin Mandischer have been doing a fantastic job gathering requirements, analyzing the gaps that need attention, and outlining a plan for making it happen. Things are progressing well.

No trip to Germany is complete without a stop in Berlin, so that's where I headed Friday night to meet up with Frank, who had been there all that week. We even had a chance to visit Dresden on Sunday. Neither pictures nor words can do that city justice!

Today is our last full day in Germany before heading home to Vancouver tomorrow. It's been a great trip and I'm sure we'll be back soon.

Monday, October 4, 2010

Eclipse Modeling: A Smith for the Cloud

Google Web Toolkit is cool. In combination with App Engine and Google Plugin for Eclipse, it facilitates the rapid development of applications that run in the cloud. It exploits a familiar language, i.e., Java, as well as familiar tools, i.e., Eclipse's Java Development Tools. As such, you can reuse a great deal of existing expertise. There's even a project wizard to get you up and running quickly.

Unfortunately, Google Plugin’s project wizard produces merely a "hello world" type application, so there remains a great deal to learn before you can do anything truly interesting following best practices. Now, where Google Plugin’s tools trail off, EMF's tools kick in. Starting with a simple description of your data structures, you can generate a fully functional application focused specifically on your domain of interest. My demo at Google’s Eclipse Day last month showed this in action. Now, with the help of my colleagues at Cloudsmith, we have everything nicely packaged up so you can easily try it at home. It’s all documented in the EMF for GWT wiki. Prepare to soar into the clouds.

Of course those of you familiar with Eclipse modeling know that EMF produces simple natural APIs of hand written quality in which complex relationships are simply expressed. But those of you more familiar with GWT and App Engine, and with technologies like Roo, will likely expect to be dealing with Data Transfer Objects that describe denormalized models which are mapped via JPA onto App Engine Datastore’s entity-based back-end. It’s tedious, painful and stilted, not to mention totally unnecessary. Just say no to DTO. With EMF, you can focus on the creative task of describing your domain, rather than on the tedious task of mapping high level concepts onto low-level persistence technologies, and you can exploit REST to its fullest. EMF is truly a smith for the cloud.

Monday, September 27, 2010

A Fine Demonstration

I'm in Germany once again. Frank had his immigration interview at the Canadian Embassy in Berlin last week, so I came along. I'm glad that the flight to Germany from Vancouver isn't all that much longer than the flight from Toronto: only about 2 hours more.

The other day I went to the New Palace in Potsdam; it's one of the finest demonstrations of German culture, art, and craftsmanship I've every seen, and I've seen quite a bit this past year and a half!

Demonstrations of craftsmanship is exactly what we want for the Modeling Symposium at Eclipse Summit Europe next month. If you have something cool, new, and interesting you'd like to show in action, please contact me as soon as possible at ed dot merks at gmail dot com.

As a general reminder, I'd suggest to register for ESE immediately; keep in mind too that the Nestor hotel runs out of rooms, so book now or plan for long walks. I'm really looking forward to my next trip to Europe. It will include not only Ludwigsburg and Berlin, but also a side trip to Zurich for Eclipse Enterprise Modeling Day. If you're interested in that, please register. Meanwhile, I'm plodding away with the EMF for GWT infrastructure to enable those interested to play with it at home. Stay tuned for fruits of that labor. Come to ESE to see it in live!

Wednesday, August 25, 2010

Taking to the Clouds

I've been working hard these past weeks in my evil secret lair. Well, maybe not so secret, given that the results are, in true open source fashion, open: 323050. But it's definitely evil: among my tasks this week has been rejecting 6 out of every 7 Eclipse Summit Europe modeling submissions. I'm sure no one will take it personally and I'll remain ever so popular. Not! In any case, I'm taking to the clouds today!

That's right, I'm headed for Google's headquarters, with my brand new passport anxiously awaiting its first stamp of approval. (Did you know that a trip through the washing machine will launder all evidence of ever having been to the states?) It's Eclipse Day at the Googleplex where I'll be unveiling my master plan: world domination for Eclipse Modeling. Resistance is futile. Expect to be assimilated soon.

Monday, July 26, 2010

Looking Ahead, There's No Turning Back

Time moves in but one direction, forward, so it's generally best spent looking ahead. It helps avoid hitting obstacles, something in which our girls take a personal interest.

Subjectively it moves slowly or quickly, but rarely slowly or quickly enough. With our move to Vancouver and the Helios release quickly receding into the past, there's definitely no turning back. One thing I can say for certain, neither pictures nor words can fully reflect the beauty that is British Columbia.

Did you know that the Helios release included 26 modeling projects? That's one for every letter of the alphabet! How many will be in Indigo? Time will tell. Modeling is most certainly an exciting place to get involved. Not quite as as exciting as wake boarding, mind you; yes, that's really me on the board!

Speaking of excitement and getting involved, our next main event is Eclipse Summit Modeling, err, I mean Europe. With all the excellent modeling content, it's all too easy to get the names confused. I'm a little torn on how to split the slots between tutorials and symposia; we have two half day slots. Probably it will be best to have a half day tutorial and a half day symposium. Given we can have only one tutorial, I'd like one that covers a broad range of technologies in a cohesive way, so I'm going to try to force people to work together on that. I'd also like a symposium that's more interesting than the one I organized last year, i.e., more discussion, less lecturing, more demos, fewer slides. Action packed is the goal. Oh well, that's my problem. Your problem is to get something submitted as soon as possible; the deadline is August 16th---no you can't wait until September---and the early bird contest deadline is August 2nd---only days away! Hurry, time waits for no one.

Looking ahead further, I'm a little concerned about the future of the Ecore Tools project. We had to give it a transfusion of life blood, Kenn's, Cedric's and my own, just to get it built for Helios, but it really needs some active committers for Indigo. Interested? It's a fairly big challenge to tackle, though not as big as this "stick" Else is trying drag out of the water. She's too ambitious to notice it's more of a log really. Not only that, the boat itself is tied to it.

Looking ahead on the personal front, I've been working hard on my own secret project: generating a GWT application that exploits App Engine. I suppose it's not really a secret given that I'm publicized to present this topic at the Modeling Day at Googleplex 2010, err, I mean the Eclipse Day... I'm making excellent progress. I'll be able to share the details when the gem is a little less rough. It's so very nice to be doing some really solid technical work for a change.

Friday, May 7, 2010

Patently Ridiculous

Imagine you had an existing Java data model---a plain old one not based on EMF---that you wanted to map to an EMF model so you could take advantage of all of EMF's cool features. If your data model were a simple bean-style model, you could easily induce an Ecore model from its API; after all, that's what EMF's @model annotations do. You could then easily map instances of the plain old Java model to instances of your EMF model, perhaps using Java reflection, bringing together the old and the new.

What an exciting and innovative idea, you would exclaim to yourself, and to those around you, as you jumped for joy, reveling in your own brilliance.

Sorry to disappoint you, but don't bother. IBM has patented that: 7506303. The lesson learned? Just because something is simple and obvious doesn't mean you can't patent it. So run, don't walk, to your nearest patent lawyer, turn your obvious ideas into incomprehensible legal babel, file a claim, and then sue someone's assets right off their balance sheet, perhaps with the help of a patent troll. Surely such patented ridiculousness serves primarily to suck the lifeblood of the software sector much like collateralized debt objects did the vital stuff of the financial sector.

Friday, April 30, 2010

Change Begets Change

Change begets change. Nothing propagates so fast. I've not blogged in a couple of months amid the whirlwind of change that has become my life. I often feel more than a little in over my head these days.

Change is inevitable so best to embrace it, make it work in your favor. That being said, it's important to choose the path forward carefully, and the company you keep, wisely. It's all too easy to make a wrong turn or to pick up bad habits. Can you say gambling?

My life was on a very steady course up until the time I left IBM. That particular radical change was the beginning of many to follow; it was voluntary and good even in hindsight. But it was carefully planned like the rest of my life. The demise of my partner of 27 years, on the other hand, was untimely, arbitrary, and beyond my control. Such things make one reconsider life's carefully laid plans. It's clear that time is fleeting and that one must make the most of today because there is no guarantee for tomorrow. Workaholic Ed died and the phoenix that rose from his ashes took a really good look around. Guess what? There really is time for me to swim 2km every weekday morning. Go figure!

Looking around a little further, I discovered that I have the greatest neighbors in the world. Okay, granted Warren is a bit of a princess.

So's Linda come to think of it.

But they've helped me more in the last year and a half than one could reasonably expect from another human being. For example, they've looked after my girls for countless weeks whenever I traveled; the girls love it next door. Last week, they even threw a birthday party for Else, the most recent addition to my dog collection.

Most important of all, they've helped make my Frank feel more than a little welcome in his new home in Canada.

Warren and Linda are the epitome of what it means to be good friends and I consider myself fortunate for having them in my life.

Looking around further still at what's happening with modeling at Eclipse and beyond is also eye opening the the extreme. Talk about change that begets change! I'm more than a little gratified and relieved to see that it's taken on such vibrant life of its own. I don't need to obsess quite as much about driving the vision of modeling forward. There are so many others who do that job even better. I've learned an important lesson: don't push the river, it follows by itself! As Kim so aptly put it: Eclipse is like family. What a great family and what a great place to be. Thanks Cloudsmith and itemis for helping make it economically viable for me and for all their other great contributions to the Eclipse community.

Speaking of great places to be, it struck me a few months back that I'd much rather live back in British Columbia. I grew up there. My parents, brother, and sister live there. I like the weather better there. I can grow a more interesting garden there. Frank and I can build a new life together from scratch there. I only moved to Ontario for IBM. So I bought a great property with this view.

My house is already sold, I've got a rental house lined up, and I've scheduled my move for the end of May. Of course there are more changes yet to come.

I write this blog today from Berlin, in summer like weather, as I anticipate traveling to JAX in Mainz next week where there's an Eclipse day and a Modeling day. Could life get any more interesting and exciting?

Oh yes, and it turned out workaholic Ed didn't really die, he was merely transformed into a more well-rounded version of his former self. I've spend the past several weeks porting the core EMF runtime to GWT and modifying the generator to produce GWT-enabled models and edit support on top of that runtime. It's all committed to CVS in time for M7, but I've not had time for documentation yet. Modeling in the clouds; stay tuned for yet more change.

Tuesday, February 9, 2010

How Active is Your Committer Representative?

Now that we're in the middle of an exciting Eclipse board of directors election campaign, you're probably asking yourself, how will I decide for whom to vote? You might well be swayed by folks like Bjorn who are actively campaigning; Bjorn's always got interesting new ideas. Then again, you might prefer Boris' more subtle approach of simply encouraging you to vote; I like that approach a lot! Or you might like Chris' approach of tirelessly and visibly helping to promote our community; how can you not like Chris for that? On the other hand, Doug's more edgy approach could well be just your thing; he's always thought provoking. Clearly it helps to be visible, so I'd better not be too quiet if I want another opportunity to be on the board; I doubt that simply looking pretty in pink will help...

One thing you might consider is how actively involved are the candidates. Here are some statistics about project involvement.

Most of the candidates are quite involved. There are of course a multitude of statistics one might consider, e.g., number of commits. For that you could compare the dash statistics for caniszczyk, bbokowski, dschaefer, bfreeman, and emerks. Great, just what I needed: a sad, ugly reminder of how unproductive my 2009 was; at least 2010 is off to a better start, both personally and professionally. Check out this lovely one-of-a-kind Kim Horne original water color that I recently had framed to hang in my office as a beautiful reminder of the diversity and creativity of our community.

In the end, the choice of representative is necessarily subjective. I'm sure folks will choose wisely based on who most closely represents their own point of view as well as who is most likely to make effective positive contributions. Having seen Chris and Boris in action first hand, I can definitely recommend them for their experience and for having represented the commiters well.

Monday, January 25, 2010


It was bound to happen: I was finally asked to be a model. I kid you not. The truth is stranger than fiction. It happened at Upper Canada Mall. Leaving a store that sells leather jackets, I was interrupted by a plaintiff "Excuse me sir, would you mind helping us out for a second." It turned out I was just the right build to act as a model for the lady's husband; she and two other ladies were picking a jacket for him. Being incredibly helpful and generally unable to say no, of course I obliged, volunteering my own opinion on which jacket fit best. All the while, visions of an easy life on the Paris runway just standing and modeling flashed before my eyes. But then I started to feel just like a piece of meat and I decided to keep my regular day job where looking pretty isn't all that important.

Life continues to be far too busy. It's pretty much impossible to balance my personal life with all the other demands on my time. I'm writing this post today from Berlin which is in the grip of a frigid winter not unlike the kind one normally expects in Toronto, so I feel right at home. Last weekend I was in Vancouver getting married. Tomorrow I head over to Munich where Peter and I present at OOP 2010; no, I will not be presenting in German though my German is definitely improving, something one might expect when you marry a German. The more German I learn---I can almost follow a conversation now---the more frustrated I am with not knowing more. This coming Thursday Ralph has arranged another Eclipse Stammtisch so I plan to attend that; I'm sure much German will be spoken. Maybe I'll see you there. I just hope it's not so cold.

I don't head back home to Toronto until February 2nd, but I expect to be back in Berlin yet again for the Modeling Code Camp at the beginning of March. Itemis does trainings like this as well. It's unfortunate that more people don't take advantage of the opportunity to get a jump start on exploiting open source technology. It might seem cheaper to muddle through on your own but suboptimal design decisions are likely a much bigger hidden cost down the road. EclipseCon will be yet another cost effective opportunity to learn new things, and yet another reason to travel. There will certainly be a great deal of modeling content. Too bad we couldn't accept more submissions. After EclipseCon I expect a short break in the travel schedule before I head over to Germany yet again for the JAX conference in Mainz. Maybe I should just move to Germany to save all the travel time.

Friday, January 1, 2010

On the Balance

The new year is a time to reflect on how life is unfolding, to chart an effective course forward. Those who are wise consider carefully all the things for which to be grateful so that all the ways in which life inevitably short changes them loom less large. They temper their drive to satisfy their own personal needs and desires with consideration for their impact on the world around them. Life is a balancing act without a simple, obvious, optional strategy. Of course it's better to give than to receive, but only a fool gives to the greedy; something particularly germane in an open source community.

The wise avoid spending in inordinate amount of time focused on all the things around them that might be changed for the better because most of those things are beyond their control, not to mention the fact that "Better for whom?" is not always entirely clear. Instead they focus primarily on the very small number of things upon which they can personally have the most significant impact, always keeping in mind that the easiest things to change, and the biggest source of problems, are themselves.

For me personally, 2009 has been in part an extremely bad year; I've had to learn some painful lessons. Life is short, don't waste precious minute of it. Unfortunately everyone has to learn this lesson their own hard way, based on direct personal experience. I generally did my job poorly, or more positively stated, there's much room for improvement. I'm most grateful to itemis and Cloudsmith for their generous funding of my work and to my family, friends, and the Eclipse community for their support. All things considered, 2009 has also been an extremely good year; I've learned some my lessons exceedingly well and most importantly I've found the one thing I want most of all. On the balance, life is only as bad as you choose to perceive it and only as good as you take action to make it. Let's make 2010 an excellent year!