Wednesday, December 31, 2008

Perspectives of Simplicity!

2008 fades away .... A new year is waiting for us! With surprises, twists and turns!

A beautiful prose to think about by Grady Booch,

"Simplicity is an elusive thing. Consider the design of just about any relevant Web-centric system: it probably consists of tens of thousands of lines of custom code on top of hundreds of thousand of lines of middleware code on top of several million lines of operating system code. From the perspective of its end users, simplicity manifests itself in terms of a user experience made up of a small set of concepts that can be manipulated predictably. From the perspective of those who deploy that system, simplicity manifests itself in terms of an installation process that directly addresses the most common path while at the same time makes alternative installations accessible and intuitive. From the perspective of the developers who build that system, simplicity manifests itself in terms of an architecture that is shaped by a manageable set of patterns that act upon a self-consistent, regular, and logical model of the domain. From the perspective of the developers who maintain that system, simplicity manifests itself in the principle of least astonishment, namely, the ability to touch one part of the system without causing other distant parts to fall off."

Wish you all a wonderful year ahead!

Sunday, December 28, 2008

Eclipse Rich Ajax Platform (Eclipse RAP)

How can a platform that supports only standalone applications sustain in this new internet world? Can standalone applications stand against the plethora of web applications?

The future of application development will be centered around web.

Business requirements are changing every day and every hour. We require a rapid application development platform to cope up with the speed of the business changes. Eclipse is one of the most successful platform in this area.

The world is moving faster. People have no time to wait. The expectation from the software developers have increased due to the increased business competencies.

The web has changed the world like never before. Today in India, you do not need to wait in the long queues of the railway station. With a few clicks you can make reservations through http://www.irctc.co.in/. And take a printout of the train ticket. All this from the comfort of your home or office.

Ten years earlier, Google became the preferred search engine because it was faster than any other website. If your application can reach the masses, the probability for its success is more. Why should the end user wait for an application installation? Why should he wait for the application installation again for each upgrade of the application?

The power of the rich UI of Eclipse as a web application, a rich client which works as yesteryears' thin client. Tomorrow to write java programs you may not need to wait till Eclipse loads up. You can just open your favourite browser and select a URL which opens eclipse in your webbrowser.

Eclipse Rich Ajax Platform aka Eclipse RAP moves in this direction. Check http://ondemand.yoxos.com/geteclipse/start

The Package Explorer, Properties View and most of the eclipse widgets can be accessed using your browser. This is based on AJAX.

For more info, please look @ http://www.eclipse.org/rap/

Friday, December 26, 2008

The Journey of a Gene Machine!

I have been reading 'The Selfish Gene' by Richard Dawkins for the last few days. It says that what ever we do is the action and reaction of our genes. And our genes do whatever it can for its survival.

Basically we are machines which are controlled by our genes.

Anyway my genes are making me study more about software system architecture. I have almost thousand million million genes inside me which are advicing or ordering me to learn this new branch of science.

I wrote my first computer program 10 years before. Thats none other than a 'Hello World' program in 'C'. A few years before that, I had written programs in the ancient language of basic. I didn't consider myself into computers at that period when I learned 'Basic' . I was more interested into poetry and literature during those days.

I learned C first. Then learned HTML - the first scripting language I uploaded to my brain. In 1999-2000 period I created my first familly website. I uploaded the web pages to the internet at an internet cafe at Trivandrum, the south most city in India. This is one of the beautiful cities in India with beaches one one side and hills on the other side. Once I finished the upload I was overwhelmed with happiness.

I started my engineering degree on Computer Science & Engineering during 2000-2004 from University College of Engineering, Kariavattion. I learned C and C++ during this period. We did a graphic intensive application which resembles the windows GUI using C and C++.

I stepped into IBS Software Services Ltd on 21st June, 2004. This is one of the most exciting days in my life. For 6 years my dream was to be a software engineer. And this day I was officially declared as a Software Engineer.

I learned the basics of Java at IBS. We had a great leader VK Mathews as the founder of IBS. A man with a great vision. From 2004 to 2006 I was immersed into various J2EE technologies - swing / jsp / servlets / struts / EJB / JMS .... phooh!!! More than I could grasp. I was a rolling stone. But I learned a new lesson. A disciplined approach on what we do differentiates a normal programmer and a software engineer.

On 11th September of 2006 I had to bid good bye to IBS. I joined Robert Bosch Engineering and Business Solutions Ltd. Here my first assignment was to be part of a standalone application in Eclipse. I started to learn Eclipse. From enterprise applications to standalone applications :). I was always curious about different kind of software applications.

After two years working in Eclipse, I would see myself as a baby trying to walk in Eclipse framework. I am trying to get up but I often fall.

In future, I need to work in one of the open source projects to get more exposure in software engineering. I scanned through most of the projects and I have shortlisted two projects.

1. Eclipse RAP (Rich Ajax Platform)
2. TMF Xtext

The first one is more web related and second one is more modelling stuff. Both areas are of my interest.

I may look more into xtext. This is a project developed by a company called Itemis in Germany. Ed Merks the EMF project lead has recently moved to this company.

I believe the best way to harness my skills is to work with the best in the business. Hope 'my genes' are satisfied that I am moving in the right direction ;).

Sunday, December 14, 2008

Getters and Setters

Excerpts from Ketan Padegaonkar's blob

"Why do we need getters and setters anyway ? Do they not break encapsulation ? There’s two schools of opinions I’ve come across here. One that likes to follow the javabeans specfications. The other that says hates getters and setters for the reason that objects then tell you who their friends are (Disclosure: I belong to such a group). Objects should expose behavior and not their friends that may help you out."

Interesting!!! Now lets analyse a few points on getters and setters.

Objects like value objects and model elements which are used to store only data will require getters and setters to access the stored data. What about the rest of objects which we see in our daily developer life. Can we live without getters and setters in those objects?

For eg: (In Java)

Parser parser = new Parser("c:\temp\FileToParse.xml");
parser.parse();
parser.getFile();

The 'parser. parse()' method makes sense. What about the 'parser.getFile()' method?

The parser will return the current file which it has parsed. Can we live without this getter? This is an extra information. Do we need to expose this extra information to the user of this parser?

Extra info is always useful. But isn't too much info cumbersome?

Are these extra getters adding oil to the current fire of 'lots of dependencies between packages' which is the case of many huge applications we see today? One day these haphazard dependencies will kill these applications one after the other.

If the getFile() method is exposed by the parser, it will be used by some of the client programs. But if the getFile() method is not exposed by the parser, then the client will depend on the parser to only invoke the 'parse()' method.

The above example is too simple. But hope you got my message.