Friday, November 21, 2008

Curved Connections

Pop Quiz: How many connections exist between Node 1 and Node 2?

Since connections are drawn on top of one another, it is not always easy to tell. This is a problem that many people using Zest have faced. To assist with this, I have added a new API on GraphConnection. You can now call GraphConnection#setDepth to curve the connections.

GraphSnippet11 shows how this API can be used. I still have to add the functionality to the JFace viewer, but the functionality should be there by the time M4 comes out.

Tuesday, October 14, 2008


Last weekend was thanksgiving in Canada, a chance to enjoy a great turkey dinner (by candle light in Victoria), take a day off of work, and kick off the new NHL season (Go Leafs Go!). This year I have a lot to give thanks for. Not only did my wife and I celebrate our 5th wedding anniversary and my daughter celebrated her first birthday, we also found out that we are expecting our second child (ETA January 2009). As well, on July 9th I successfully defended my PhD, bringing 13 years of computer science education to an end.

I started studying computer science in 1995 at the University of Waterloo. Throughout my undergraduate degree I had a chance to work at some pretty cool places, including Manulife Financial, ATI Technologies, and Trilogy Software. In 2000, when most of my friends were heading off to industry to take advantage of everything the dot-com boom had to offer, I decided to head back to Waterloo for a Master's degree. I studied reverse engineering under Dr. Andrew Malton in the Software Architecture Group (SWAG). I completed my Master's in 2002 and in 2003 I headed west. Landing in Victoria, I decided to start a PhD with the Computer Human Interaction and Software Engineering Lab (CHISEL) under the supervision of Dr. Margaret-Anne (Peggy) Storey. I could not imagine working for a more encouraging supervisor. Peggy, your kindness and enthusiasm will never be forgotten. In addition to studying at UVic, I was also given the opportunity to work with the IBM Centre for Advanced Studies (CAS). My IBM mentor was Ed Merks.

Now, after 13 years of school, I am finally heading out to the "real-world". Because of the enthusiastic community and great technology, I have decided to take a job that will bring me even closer to Eclipse. I will be working with Jeff, Chris and Scott at Code 9. I will be spending some time doing Zest development, but this job will also bring me much closer to Equinox and the Eclipse run-time space. I will be transitioning throughout the fall as I am still teaching a course at UVic and finishing off a few projects. I'm looking forward to working with all of you!

Friday, September 05, 2008

GWT and OSGi

A number of people have asked me how I configured GWT and OSGi. Some detailed steps are available here, however, following wiki pages is not always the easiest thing. I have created a small "hello, world" example. You can get the projects here.

To use this, simply import the zip file into eclipse: (File->Import, select Existing Projects into Workspace).

Once it is imported, you should have 3 projects in your eclipse workspace:
The GWT project is simply the GWT jars wrapped in a bundle.

The client project is the client side code, and the server project is the servlet we use (it simply returns the word "World" to complete Hello, World.)

I have included an external tool to compile the client side code. Make sure you select com.example.gwtclient ant_build.xml in the external tools list.

After this runs, you should refresh your workspace (press F5). Under the com.example.gwtclient you should have www directory.

Finally, you can use the provided launch configuration to actually launch OSGi, the Jetty engine and the servlets. To do this, go to Run Configurations..., and select GWT Example Launch.

This will launch the Jetty server on port 80. If you want to change this, go to the Arguments tab and set -Dorg.osgi.service.http.port=8080 in the VM arguments.

Once running, simply hit: http://localhost/index.html

If anyone is interested, we could extend this and make it part of the Eclipse Examples project. However, there may be some licensing issues as it currently includes the GWT jars.

Thursday, May 22, 2008

A p2 Success Story

With all the good / bad and the ugly posted about p2 lately, I thought I would share a positive experience I had today with Eclipse, Modeling and p2.

It all started when I saw a new video about ECore tools. If you haven't seen ECore tools, and you are a fan of EMF, you really should check it out. (It will likely be featured in my Ganymede Top 10 List). After the video I decided to take ECore tools for test run.

1. Grabbed the latest Ganymede milestone for modelers.

2. I launched Eclipse and tried to create an Ecore Diagram (using Ecore tools)

Problerm: the Ganymede package for modelers doesn't contain ECore tools.

3. I launched Help->Software Updates and searched for ECore tools

4. Ok, no ECore tools... So I selected "Manage Sites" and selected the Ganymede Site

5. Now when I search for ECore tools, p2 returns some Installable Units

6. After selecting Install, and accepting the license, Eclipse suggested I restart

7. And in less than 5 minutes, I was up and running with ECore tools.

While I realize that there are still bugs / features / requests outstanding, this was the first time in all the simultaneous releases that it truly felt like I could just point at a piece of software, and have it up and running without worrying about dependencies, 3-5 minutes to load the UM, broken connections, etc...

I know p2 doesn't work for everyone, but the negative comments often seem to overshadow the positive ones, so I thought I would share with everyone the good experience I had.

Note: I did not write this to start a war, or downplay the problems people are having; this was simply my experience today.

Wednesday, April 30, 2008

GWT 1.5 Milestone 2 Available


It seems that milestone 2 of GWT 1.5 is now available. Not huge news, but something worth nothing. See the google groups link for more information.

Monday, April 21, 2008

Should we post our own articles on DZone

Should we post our own articles on DZone? Is this frowned upon? If we have written an interesting article that we would like to share with the community, should we post it ourselves or wait for someone else to?

Please don't comment here, let's have this discussion on DZone (here). Vote the article up, not so people come to my blog (I really couldn't care less about that) but rather so people see the question, and post a comment.

Tuesday, April 01, 2008

10 Ways to get an Article on DZone

I like DZone. I have been reading stories posted there for a least a year now. It is a great place to go if you want to stay on top of new technologies. However, over the past year I have noticed similarities among many of the articles that find there way to DZone. Here are the top 10 things you can do to get your article on DZone.

10. Write about CSS rounded corners: Especially if you can do them entirely in CSS or HTML or DHTML or XHTML. There is a real shortage of articles on this.

9. Explain why something is dead or dying: Pick something you don't like, you don't want to learn or you feel is a threat and explain why it is dead or dying. Great choices include .NET, Java or Agile methods.

8. Agree with Google: Find something Google did or someone at Google said, and agree with it. It's even better if you mention that you thought of it 5 years go.

7. Disagree with Microsoft: There seems to be a hot trend of people disagreeing with M$ solutions, technology, whatever. Find something Microsoft did and explain why you would not have done it that way. (Note: It is important you get these in the right order.... Don't agree with Microsoft or disagree with Google. You are likely to start a comment flame war if you do.)

6. Link to something Linus said: Find something Linus said on a newsgroup or mailing list and link to it. Make sure you take it out of context too. This will improve your article.

6. Write about Scala: I'm really sorry to all you Ruby developers. If I wrote this a year ago you would have been mentioned, but today's language of choice seems to be Scala.

5. Talk about hiring programmers: This is especially important if you have never actually hired a programmer, because I love the opinions of bloggers who don't know what they are talking about. Another great idea (especially if you are a pointy hair boss) is to talk about being hired as a programmer. As a non-technical type you know exactly what to expect -- You, Mr. Non-Technical, I Wish I My Subordinates Respected Me, Guy.

4. Summarize or point to an old article: Find an old article. Not a week or a month old, but maybe something Joel on Software wrote in 2001. Point to this, it is sure to get votes.

3. Talk about your love / hate of closures: Nuff said.

2. Boldly state that dynamic languages are better than static languages: There is no if-ands-or-buts here. They are better, for everything you (and I) will ever do, end of story. Say so, you have the right!

1. Formulate your post as a top 10 List: It doesn't even matter if you actually have 10 items or not! People love to read top 10 lists.

Revoke Ed and Chris's Commit Rights! NOW!

I would like to request that the commit right's of Ed Merks and Chris Aniszczyk be revoked immediately. At the past two EclipseCon's these two managed to each win both the Top Ambassador and Top Committer awards, two of the three voted on Eclipse individual awards.

If either of them hopes to win all three awards, the Triple Crown of Eclipse Awards so-to-speak, or the Eclipse Awards Grand Slam if you prefer, one of them will have to win Top Contributor next year! This will be tough as both of them are such avid committers. It may be easier for them to battle for this final award if they both have to submit patches for each change they wish to make.

Of course, if we strip of them of their commit rights the evolution of PDE and EMF may slow, but really, who uses these technologies anyways? :-)

In all seriousness, congratulations Ed and Chris, and to Remy Suen (Winner of this years top contributor awards) and Eric Rizzo (Winner of top Newcomer Evangelist).

Monday, March 17, 2008

Why I haven't changed my language!

There was a very interesting question posted on TheServerSide, "What would make you change languages?" and for me the answer is simple, Tool Support. I have used Groovy and it was kinda neat, but content assist didn't work very well. Possibly because of some bugs or maybe the language is just too dynamic to fully support this feature. I have used JavaScript and 3 of us spent a 1/2 hour tracking down a extra character (we tried to call a method Foo=(arg1, arg2)), bad place to put an equal sign.

Back in my undergraduate days, life was simple. All I needed was vi and a command line. I was happy and I figured if you needed a tool to do your job then you were never going to be a "real" software engineer. Seven years later (and the Eclipse influence) this has changed. What does looking up a method signature somewhere really do for me? What does spending my time tracking down a runtime error that really should have been caught at compile time accomplish?

Sure, a lot of new languages have shorter syntax for common operations, all intended to save me a few keystrokes. Let's count:

var person = new Person; (about 15 keystrokes)
Person person = new Person(); (about 10 keystrokes)

See, with proper tool support I would use content assist and type P(content-assist) p(content-assist) = (content-assist) P(content-assist);[enter].

And it is not just content assist. It is refactoring, search, navigation, debugging, analysis and collaboration. It seems that some languages are easier to write tools for than others. Java and Javascript are almost the same age; why isn't there top notch tooling for Javascript (something like the JDT)?

I'll continue to try out new languages, but without excellent tool support, I'm not changing languages anytime soon.

Anyways, to each their own!

Friday, March 14, 2008

An Updated Design

Today I decided to use the CSS from my website for my blog. The new design should integrate my blog and my website a little more tightly. The update wasn't too hard to complete, but the CSS isn't pretty. Blogger seems to use some custom server side scripts to handle style and some of them weren't compatible with my existing CSS page. As well, I could not find a way to upload images as part of my template, so I am linking back to my main site for those.

Anyways it's done, and hopefully over the next few days I will get a chance to clean-up some of the code and remove the unneeded tags.

Friday, March 07, 2008

Small GWT / OSGi Problem

I thought I would document a small problem I had today in case others ran into the same issue.

If anyone has been to my website you know it's not that exciting. A few links, a picture or two and links to my blog. What is exciting (for me at least), is how I built it. My website is actually an OSGi engine (Equinox) with a Jetty bundle to serve up the pages, a small EMF model in the back end (to hold some links), and GWT to tie it all together. To be clear, this is overkill!!! But I enjoyed setting it up and I learned a bunch!

Now the problem. Today I decided to see if I could modify things on my site (both client and server side) and update it using the OSGi update command. (With P2 on its way this seems like a cool thing to do). However, after I did the update *BOOM* GWT died.

It turns out that GWT does some server side security checks and they use the classloader attached to the current thread to do them. However, this doesn't play very well with OSGi. To fix this I added:

Thread.currentThread().setContextClassLoader( MyActivator.getDefault().getClass().getClassLoader() );

This way, the same class loader that loaded my activator will be used when GWT does its security checks.

I'm not sure if this is the best way to fix this, so if anyone else has suggestions I'll try them out and let you know how they work. Also, I found this bug after I sorted all this out :).