Archive for the 'Programming' Category

Mylyn for Eclipse – Distraction Free Computing

October 18, 2007


I am a huge fan of distraction-free working. In our current digital life, distractions are constant – the email, the mobile phone, the instant message, the text message, the rss feeds. One doesn’t have to seek information anymore, it drops down on your door step and clutters it.

The Mylyn plugin for Eclipse is a refreshing new concept, especially for people like me that are addicted to the information channels. Mylyn is primarily a task focused UI refactoring of Eclipse, although it has other great features like task repositories. IBM Developer Works has a detailed, two-part article on Mylyn.

As this InfoQ article lays out, the main features of Mylyn are:

  • Task-Focused User Interface – the interface automatically hides items which are not part of the current task, and keeps track of what items are related to a given task
  • Integration with Task Repositories – draws lists of tasks from Bugzilla, JIRA, and Trac as well as several other providers
  • Rich editing and transparent offline work – automatic caching of task changes, and automatic synchronization when back online
  • Complete Eclipse 3.3 integration – utilizes new Eclipse 3.3 facilities such as pervasive hyperlinking, editor-based content assist and Forms support

The name Mylyn kind of struck me as a strange name, and so here is the story behind the name from the author himself.

We outgrew the old name. Mylyn started out as the implementation of my PhD thesis… The new name is a tribute to the “myelin” substance, which accelerates your thoughts by making neurons much more efficient at conducting electricity. We’ve heard users claim that the Mylyn tool increases their efficiency to the point where they feel like they are coding at the speed of thought.

Speed of thought? You sure get close with this tool.


Server Side Push and Comet

August 10, 2007

At my current project at work, we need the ability to push events/data to clients using a typical web application which already has some XHR elements in it. Our current approach has been to use a Java Applet and let it make a socket connection back to the web server. This persistent network connection allows us to send events to the client, independent of client’s own requests. However, this solution is not super clean, mainly because applets are old-school and it takes an insane amount of effort to maintain the applet-JavaScript communication.

So, I set up on a quest to find other technologies available for server side push, and came across Comet. Comet is essentially a style of programming that allows event-driven server-side push data streaming. The best example of Comet is Google Talk inside GMail. Zhou Renjian has already cracked this and created a plain JavaScript implementation. There is no dearth for implementations of this technology. However, none of those fit our needs exactly.

Fortunately, many web containers are already beginning to realize the value of such technology. Most of the major containers look like they will have support one way or another in the near future. Jetty is working on continuations. Tomcat is introducing a CometEvent. WebSphere is relying on DOJO. Weblogic has an AbstractAsynServlet.

In any case, I ended up using a persistent XHR connection between the server and the client. This worked like a charm, although I haven’t been able to test the scalability part of it yet. Fortunately , or unfortunately, our project does not have high performance expectations, and so it will take some more time until I can figure out the scalability aspect of this solution.