Saturday, June 27, 2009

Kudos to the Eclipse Galileo Developers!

When 40% of all the commercial projects are failing due to one or the other reasons, the technique and style of the eclipse developers have successfully delivered one more annual release of Eclipse Galileo. This is one of the modern wonders. Nothing more than a set of 'strong minds' are required for this kind of achievement.

Any great idea can be spoiled by a careless mind. The same way, any small idea can be turned to a master piece by a great mind. The story of two magicians which wouldn't bring much excitement, when it got into the hands of a director like Christopher Nolan; it turned out to be one of my favourite movie and greatest hits. If you haven't watched the movie 'The Prestige', I urge you to watch it as soon as possible.

The enthusiasm and vibrancy of the hundreds of minds in the Eclipse community, the electric current generated by their thoughts; these are still attracting lot of new people to the community. Framework projects, RnD projects, graphical projecs, modelling projects, bio projects ....

There were many arguments last year. The complexity of some of the frameworks, the simplicity of some of the tools; the anger towards some of the eclipse processes; the sadness when the expected features had to be dropped out of the final delivery, the happiness when the customer/end user said '"See this new feature, Wow'".

Lot of emotions and lot of memories. The emotions which starts in the brain of a single person, when backed by the support of a highly motivated community results in successes similar to what happens in our Eclipse community.

Open source is not a charity always. Hundreds of businesses are thriving upon the open source model. When one of the basic values of humans is followed, ie, 'give and then take'; it results in success and content feeling. When we are following our values, when we are backed by a community with the same set of values, we are at our best.

Many team members were flexing their brain muscles for a long time. Then one of them said on 24th of June, "Guys, we are done for the year"; Its time to relax and celebrate now. Some celebrate the success over a cup of coffee, some over the dance floor and some with a vacation trip.

Life goes on; Eclipse goes on; Next year e4 is one of the most anticipated outputs from the community.

I dedicate this blog to all those gurus who developed the basic eclipse framework and donated it to the open source community; to those who still develop new frameworks in the open source; You people dared to go to the wild, never knowing the dangers behind the hidden rocks and trees, you cleared the path for the rest of us.

I like to convey my gratitude to the hardwork of the hundreds of developers who has worked towards the success of galileo, "Dudes, you all have done a great job. You guys are making our jobs easier".

How can this kind of success be repeated in the high percentage of failing commericial projects?

You need to think out of the bondaries of your organizations, you need to come out of your conventional thoughts, you need to use your brain for what it is designed. "Share" and put some thought behind it, you will start to get the returns. As Robert C Martin says, don't sprint, run the marathon. When your muscles get tired and gets deprived of energy, its your mind which needs to give strength. If the mind losses focus, then the body will fail, our actions become meaningless and the projects fail.

Focus on what you need to achieve. Put your mind and body for it. The results will follow. Its all a mind game. You are a reflection of your mind!

madhu

Thursday, June 11, 2009

Eclipse Galileo - A quick glance!


"I think there is a world market of may be 5 computers",
by Thomas Watson, Chairman of IBM, 1943.



Today computers are ruling the world. Who ever opted out of open source projects, wait and see on 24th of June, 2009. Around 50 projects are rolling out under the umbrella of Eclipse Galileo.

You had read it correctly. Its a half a century of projects on the release train waiting for the users to roll on.

Most of the tools required from the inception to the delivery of software projects are included.

You can draw UML diagrams, you can generate code, you can create workflows, you can generate parsers and models with a few lines of grammar.


And all these are totally free.

Lets have a quick glance of some of the new projects offered in galileo

TMF Xtext


Using Xtext you can generate your own text editor for your domain specific language. You can provide all the cool features like content assist, syntax coloring, outline view etc.

You do not need to spend late nights to write your own parser again. You do not need to design your own model. Xtext will generate a parser and model for you. What you need to do is to tell Xtext what it should do for you using a set of grammar files.

For more information you can check at http://xtext.org/

PHP Development Tools (PDT)

This is one of the main attractions of Galileo release - an IDE for the development of PHP projects. The existing features of WTP (web tools platform) and DLTK (Dynamic languages toolkit) are leveraged to develop a great IDE for the PHP developers.

Rush to http://www.eclipse.org/pdt/ to catch up with the show.

Accessibility Tools Framework (ACTF)

ACTF is a framework that will help developers to create functionalities which will enhance the accessibility of applications and content for people with disability.

You can find more details at http://www.eclipse.org/actf/

Eclipse Persistence Services Project (EclipseLink)

EclipseLink is a comprehensive open source persistence solution. EclipseLink has evolved from Oracle's TopLink product. This project brings around 12 years of commercial experience from Oracle's developers to the opensource community.

The eclipselink services include Object-Relational with EclipseLink JPA, Object-XML Binding with EclipseLink MOXy, Service Data Objects with EclipseLink SDO and Web Services for RDBMS with EclipseLink DBWS.

For more details, please goto http://eclipse.org/eclipselink/

Java Workflow Tooling (JWT)

JWT helps you to build your own workflows for your requirement, design and development time needs.

You can find the snapshots and more details at http://www.eclipse.org/jwt/

EMFT > MWE (Modeling Workflow Engine )

With MWE you can describe and execute workflows.The MWE is an extensible framework for the integration and orchestration of model processing workflows.

Check at http://wiki.eclipse.org/Modeling_Workflow_Engine_(MWE) for more details.


Memory Analyzer ( MAT)

Now you can find memory leaks and unnecessary memory consumption of your java projects using MAT. You can create reports to analyse the memory leak suspects.

Goto http://www.eclipse.org/mat/ to find more details.

Acceleo

Acceleo is part of the EMF 'Model to Text' projects. Based on the philosophy of MDA, it helps to generate code from your model.

Check http://wiki.eclipse.org/Acceleo

Xpand

One more candidate from EMF 'Model To Text' projects. The aim of this project is ... you guessed it. This is a language that is used for code generation based on EMF models.

You can find the details at http://wiki.eclipse.org/Xpand

To see the other existing M2T (Model to text) projects you can check at http://www.eclipse.org/modeling/m2t/


Riena

This is a platform for building multi-tier enterprise applications based on the RCP (Rich Client Platform). Riena broadens the usage of SOA (Service Oriented Architecture) of OSGi/Equinox technology.

Riena user interface components will support a business process oriented user interface for visualization and navigation needs.

For more details, http://www.eclipse.org/riena/

Sword Fish

Sword Fish is an extensible SOA framework based on Eclipse Equinox technology.

You can find more details at http://www.eclipse.org/swordfish/learn/learn.php


What we saw till now are just the tip of the iceberg. There are lots and lots of features in all the existing eclipse projects which are running for the last couple or more years.

You can find the details of the other galileo projects at http://wiki.eclipse.org/Galileo#Projects

madhu

Tuesday, June 2, 2009

Free minds lead to innovation!

Today my wife tricked me to wash a bundle of extra plates :O. She had an innovative plan to trap me. Anyway, am not in a position to reveal the plan.

Innovation is quite an interesting topic to speak on. We saw Dave's and Doug's blogs in the last couple of days.

Every idea springs from the mind of a single person. This idea can grow to a group of people who can add value to the initial root idea.

I felt it is apt to share Jiddu Krishnamurthy's view on innovation.

"
Conformity leads to mediocrity. To be different from the group or to resist environment is not easy and is often risky as long as we worship success.

The urge to be successful, which is the pursuit of reward, the search for inward or outward security, the desire for comfort - this whole process smothers discontent, puts an end to spontaneity and breeds fear; and fear blocks the intelligent understanding of life.

In seeking comfort, we generally find a quiet corner in life where there is a minimum of conflict, and then we are afraid to step out of that seclusion.

This fear of life, this fear of struggle and of new experience, kills in us the spirit of adventure; our whole upbringing and education have made us afraid to be different from our neighbour, afraid to think contrary to the established pattern of society, falsely respectful of authority and tradition."


Lack of fear means a free mind. A free mind can think without boundaries. New thoughts leads to innovation. And lots of innovations will keep us engaged.

... hmmn.. Lemme go and start washing the plates ...

Thursday, May 28, 2009

Startup City

Yesteryears' industrial age taught us to think production as a series of disconnected steps.

Raising captial, acquiring raw materials, recruiting workers, developing product, advertising, selling were all seen as either sequential or as isolated from one another.


In the new information age, the information gained by the sales and marketing people feeds the engineers, whose innovations need to be understood by the financial people, whose ability to raise capital depends on how well satisfied the customers are, which depends on how well scheduled the company's trucks are, which depends in part on employee motivation, which depends on a paycheck plus a sense of achievement, which depends .... et cetera, et cetera

Alvin Toffler in Power Shift (1990)


The ability of the employees to collaborate with multiple domains and technologies will be the key factor of success in the information age of future. Old management models like imposing work on employees with force of fear or money will produce mediocre outputs, or might even fail.

Employee motivation will be the key factor for high productivity.

From last week's Eclipse Community Survey, majority of the feedback were from firms which have 0 - 100 employees. I guess this trend means more startups, small to medium size companies are getting involved in Eclipse and open source.

Apart from very few super big firms like IBM, Nokia, Oracle etc not much companies have well thought about the importance and advantages of moving to open source.

Nevertheless,

If you have plans to start on your own,
if you are interested to learn about latest technologies,
if you like to watch the young entrepreneurs with the fire to succeed,
if you want to spend a day of worth,
and if you happen to be in bangalore next week,
don't miss this show.

100 startups are showcasing their products. Talks by CEOs from billion rupee firms!

If you are interested, you can register for the show - Startup City @ http://www.siliconindia.com/startupcity_09/index.php

madhu

Friday, March 20, 2009

Data Hiding

Today my blog is not directly related with eclipse. Lets have an OO discussion.

This started with a thought provoking arguement with one of my colleague. 

Problem - We have a public method which needs to return a data structure, say a 'List'. Which method signature attributes to a better design. (a) or (b)

(a) public List getRecords();
(b) public RecordCollectionVO getRecords();, where RecordCollectionVO is an object which internally stores a List instance.

Lets analyse both the cases. 

Arguements in favour of (a)
  1. The method is implemented based on design by contract.
  2. An extra class just to hold a list is an overhead.
  3. Tomorrow if the 'List' changes to a Map, anyway the module which access this module needs to make a few code changes. Then what the heck in changing the method signature as well. Why are you lazy to change one extra line of code?
  4. The chances for the data structure 'List' to change are rare.
Arguements in favour of (b)
  1. The method returns an object which hides the internal data structure which it uses.
  2. Tomorrow if the methods wants to return a Map instead of a List, the method signature will be unaffected. Hence which ever module that invokes this method doesn't need to change the way it access this method. 
I would opt for (b). Why?

Lets analyse a scenario which addresses both cases.

Case (a)

Consider three modules X, Y, Z.

Module X has the following method.
public List getRecords();

Module Y accesses module X and delegates the work to Module Z.
List list = moduleX.getRecords();
moduleZ.modify(list);

ModuleZ has the following method.
public void modify(List list);

I get a change request from my customer. I need to change the datastructure from List to a Map. In this case I need to modify the method signature, which inturn forces me to modify module X, module Y and module Z.

Case (b)

Consider three modules X, Y, Z.

Module X has the following method.
public RecordCollectionVO getRecords();

Module Y access module X and delegates the work to Module Z.
RecordCollectionVO rcVO = moduleX.getRecords();
moduleZ.modify(rcVO);

ModuleZ has the following method.
public void modify(RecordCollectionVO rcVO);

Now I need to change the datastructure List used inside RecordCollectionVO to a Map. In this case I do not need to modify the method signature. Thats good. But I have something more important here. I do not need to change even a single line of code in Module Y. The modules which need code changes are Module X and Module Z. 

If I can save atleast a single module from a single line of code change, I do not need to test that module again.

What ever, these are just two schools of thought. 

Thursday, March 19, 2009

Pragmatic Visuals!

A few months before, when I joined in my new project as a software developer, one problem was alarming me. This is a project which is running for the last two years. I need to understand the code to add value to the project.

If you have coded for at least a couple of years you might know that the programs of many software projects wear out by the sheer complexity of the programs itself. You need to be extra cautious to see that the programs do not rot.

I read hundreds of java classes in my new project which had thousands of lines of code. I generated the UML diagrams using IBM's Rational Software Architect. The diagrams were drawn in my 15" monitor. It was like looking at a football ground through a key hole. I could see bits and pieces of the diagrams in a single glance. I scrolled and scrolled and scrolled. My brain found it hard to store the previous images in it when I scrolled to new locations. Damn! I need something more magnificent, more useful.

I tried the eclipse pde incubator project - visualization tool to see the relation between the different eclipse plugins! Things are getting better and better.

Oh! World! We need to progress a lot with our visualization technologies to handle the complexity of already written code. May be... to generate code as well.

I wished I had a device like Tom Cruise had in Minority Report, where I can project the UML diagrams in the space around me. A 3-dimensional projection. I should be able to walk through the diagrams and see the connections between the classes, packages and plugins which makes up bigger modules. I should be able to turn the diagrams with small devices connected in my finger tips. I should be able to create new modules, modify it and generate code to see a running application with a few clicks.

With GEF-3d around the corner we may see some innovative tools in the near future.

Definitely human race will pick up to beat the complexity around us. See this video about a mind boggling gadget. No more descriptions, see it by yourself.

Thursday, March 12, 2009

Speed .... drhhhh

The Whetstone benchmark is a benchmark for evaluating the performance of computers.

According to Whetstone, you can see below the number of MWIPS (Million Instructions per second) for java and C++ applications in an Intel core 2 duo 1.8 GHz machine.

Java = Around 1000 MWIPS.
C++ = Around 1600 MWIPS.








Whetstone Results






If your application is slow who else can you blame now? Definitely your algorithms!!! Revamp all your old slow paced code.

Let your application top the throttle ... Speed up ... drhhhh

madhu