Monday, 26 January 2009

Diversity: It's Essential

As most of you know by now, I love diversity as the spice of life, so naturally I'm very pleased with how well how my new cichlid tank is doing. Wikipedia describes the cichlid family as "both large and diverse," just like the modeling community!


The diversity of EMF's documentation is improving as well. James Sugrue along with the fine folks at DZone helped to create a brand new refcard titled Essential EMF. I hope the community finds it useful. James will be doing a book review later in the week and there will be books available as prizes, so stay tuned. James and I make a fine pair, if I may say so myself.


Speaking of fine pairs, this Thursday Eike Stepper and I will be presenting a webinar about CDO. Attendees will be eligible to win a copy of the second edition of the book.

Saturday, 24 January 2009

Mega Modeling Mania: The Sequel

I'm feeling rather reflective these days. Is it merely coincidental that abstract reflection is one of the key aspects of modeling that makes it so powerful? Certainly the modeling community is vibrant, diverse, and rapidly growing, and that reflects well indeed!


EclipseCon will be an opportunity for the community to show its stunning colors.



I've proposed a BoF: Mega Modeling Mania: The Sequel. Last year's success simply screams for a sequel. With so much diversity, there's always an interesting new perspective.



It's important to keep in mind that although those in the foreground will tend to catch your eye, there's much more going on in the background, than you might notice.



There are many ways to look at any one particular thing, so a BoF will be a perfect place to look at familiar things from a surprising perspective.


You might learn something from seeing old things in a new way.

Sunday, 18 January 2009

The EMF Ultra Slim Diet

Are your objects feeling bloated? When you look in the memory analyzer, do unsightly bulges around the heap upset you? Do embarrassing OutOfMemory exceptions mar your social life? Well hide in shame no longer. With the new EMF Ultra Slim diet, you can quickly shed those unwanted bytes to a reveal a new and slimmer you. That's right, this is not a gimmick. Go to your GenModel now, find the "Root Extends Class" property, and enter the special promotional code below.


Then regenerate your model, sit back, relax, and let EMF do all the work. Unlike other fad diets, with EMF Ultra Slim, there is no risk of nausea, hair loss, depression, insanity, or premature death because no drugs are involved. Of course smaller objects have to work harder to get the same job done, so you may experience a small decrease in performance. If this disturbs you in the slightest, immediately stop the treatment, or better yet, take the steps outlined below to allocate the fields you really need to get the most out of life.

Please note that Ecore itself has taken the EMF Ultra Slim challenge so extenders of Ecore may notice that the eContainerFeatureID has disappeared, unless of course they too take the EMF Ultra Slim challenge themselves, in which case, references to this field will vanish along with the unsightly extra bytes it consumed. If this disturbs you, recall that I've repeatedly explained that extending Ecore is done at your own risk because binary compatibility of the implementation classes is not guaranteed. If you're feeling inclined to complain about that, please address all correspondence to Hello!@DoILookLikeICare?.com and prepare for a long wait because you're more likely to see the moss in this picture grow than to get a response.


How does this copyrighted new miracle treatment work without the aid of drugs? The wonders of open source reveals all. MinimalEObjectImpl has only two fields: an int eFlags field and an Object eStorage field; they are private, so I can change them in the future. The flags field is used to represent three things: whether notifications should be delivered, the container feature ID, as well as bits to indicate what's in the storage field. It's designed so that the field needs no initialization, i.e., the default value of 0 represents the correct ground state. Additional values, such as the container, adapters, dynamic class, dynamic settings, proxy URI, and resource are maintained in the storage field. If only one such value is needed, it's stored directly in the storage field. If more than one is needed, an array of objects is allocated to hold all the required values.

But wait, there's more! The adapters list is no longer stored as a list. It's stored as an array with a wrapper list being allocated only as needed. Not only that, if this array has the same contents as that of the container, the array of the container is shared. This fits very nicely with a common pattern of usage where all objects in a containment tree share the same adapters. It's a thing of beauty.


So what if you decide really want a field all the time for some specific value because you know your objects will always have it and you'd like the storage field itself not to end up allocating an array to hold multiple values. Worry not. By overriding two or three simple methods in your derived class, you can make that design choice yourself. The nested Container class of MinimalEObjectImpl does exactly that, i.e., it allocates a field to store the container. After all, most objects are contained by other objects so having a field for this is a good thing.

So what will this fantastic new therapy cost you? Not a penny, just the time it takes for one simple treatment. Of course generous donations to Eclipse will be most welcome. Don't forget to mention EMF Ultra Slim when professing your undying gratitude to Eclipse; in addition to a fast mirror, you'll receive a special reusable "fast help" coupon that you can use in the EMF newsgroup. As a footnote, MinimalEObjectImpl is the very first file I've ever committed that actually contains my name: "Copyright (c) 2009 Ed Merks and others."

Wednesday, 14 January 2009

With Modeling the Sky's the Limit

Models give you the freedom to soar effortlessly.


Modeling is universally applicable in all fields of engineering. I'll bet, for example, that the plane above was modeled in software before anyone actually built a physical model of it. Given its universal applicability, it's no surprise to see the rapidly growing range of software applications that are driven by models.

An excellent example of model driven software development in practice is Skyway Builder. I have always found it particularly odd that more hasn't been done in the past to exploit modeling in the web space. For some strange reason, although modeling is often used to help build the tools and runtimes, it isn't often surfaced as a useful concept in and of itself by those tools and runtimes. I suppose that's much like OSGi being used to build JEE servers, and then being hidden by them. However, given that XML Schema is a modeling language, it's somewhat more inexplicable.

Not only does Skyway Builder make heavy use of EMF and GMF to build its tool infrastructure, much like Web Tools does, it also surfaces various powerful domain-specific models to the end-users who exploit them to design web applications declaratively and graphically. The design captured in the various models is employed to generate the actual application using JET.


This approach provides clients with a better long-term investment because their designs are captured in a high-level way that can be reused in the future as the underlying web application space continues to shift in unexpected directions.

Of particular interest in the upcoming version is the new two-way mapping between Skyway and UML. They've recorded a short video showing the technology in action. It highlights the integration with Rational Software Architect, but more relevant to the Eclipse modeling crowd, the technology itself works directly with open source UML, the basis for RSA. Even from that perspective, it's a great example of how Eclipse helps disparate organizations better integrate their tools with the help of common underlying models. With modeling, the sky's the limit.


For me personally, it's gratifying to see Eclipse's modeling technology used not only to build all this cool stuff, but more so to see integration with UML and, most important of all, to see the model driven software development concepts embodied by Eclipse reflected back in the Skyway user's experience. For example, the round-trip engineering between UML and Skyway is just like the two-way mapping between Ecore and UML, so of course I'm going to like it! It's clear that modeling isn't just great for building tools and runtimes, it's also valuable directly to the end users, even in the web space.

Saturday, 10 January 2009

Wordle is Better Than Tea Leaves!

Kenn's recent blog inspired me to create a Wordle representation of my own blog. What a great way to kill time in the most pointless possible way. If you suffer from obsessive compulsive disorder, repeated clicks of Ctrl+R will provide endless satisfaction; beware of infinite loops though. Best of all, if you stare at the results for a while, suddenly you'll realize it's like reading tea leaves, only simpler because you can actually read the words.


If you look closely at this particular result, you'll realize just how insightful it is when it reveals that Eclipse gave life


to a really important open community centered around people


where there is always much that is new!


Of course it's not surprising to find a great modeling platform.


Nor is it shocking to find discover that the generated model code is just excellent.


Of course we know that Ecore and EMF are closely associated, but look at how nicely p2 fits in!


In the end, it's clear that you can totally provide for your business needs better at Eclipse


because at Eclipse, we focus on developers,


and you can always count on getting help now!


Not only that, Eclipse provides source for everything


so we can make the common conclusion


that the world is good.


What kind of hidden messages does a wordle analysis of your writings reveal?

Thursday, 1 January 2009

It's a Matter of Perspective

Have you ever noticed how much changes depending on your point of view?


Even just a very slight change of perspective can make a significant difference.


As such, two people looking at the same thing from different view points will actually see different things.


They might argue about how it's possible that other people sees things differently.


While it's so clearly green for one person...


It's so obviously blue to another.


It's best to keep this in mind when arguing about perceptions. Try to take a very close look from every point of view you can imagine.


Only then will you see reality as it actually is: a diversity of shifting sizes, shapes, textures, and colors strongly influenced by the eye of the beholder.