Archive for May, 2006

Caché’s Jalapeño

As we have seen in some of the earlier posts, the key difference and advantage of ORM (Object Relational Mapping) with Ruby on Rails and ORM with J2EE is the implicit mapping of objects to the relataional model. Caché is going to introduce a J2EE persistence framework called Jalapeño shortly. Jalapeño aims at mapping POJO’s (Plain Old Java Objects) to the relational model without explicitly specifying the mapping information. It is interesting to see that there is a healthy competition that is created here in the persistence area. I think there will be more such frameworks coming up following the convention over configuration paradigm. Convention over configuration reduces the burden of the developer from creating lot of configuration files that map the objects and enable more dynamism and loosely coupled systems. On the negative side these frameworks are hiding the intricacies of the working principle and this could potentially cause a newbie to start working the easier way and make him/her not aware of some foundations.

Blink this Caché’s Jalapeño at blinklist.com    Bookmark Caché’s Jalapeño at blogmarks    Bookmark Caché’s Jalapeño at del.icio.us    Digg Caché’s Jalapeño at Digg.com    Fark Caché’s Jalapeño at Fark.com    Bookmark Caché’s Jalapeño at Furl.net    Bookmark Caché’s Jalapeño at NewsVine    Bookmark Caché’s Jalapeño at reddit.com    Bookmark Caché’s Jalapeño at Simpy.com    Bookmark Caché’s Jalapeño at Spurl.net    Bookmark Caché’s Jalapeño with wists    Bookmark Caché’s Jalapeño at YahooMyWeb

Comments      Cosmos

Grid Computing

When there is complex processing requirement and at the same time with a requirement of high response throughput, Grid computing could be a solution on your plate. Grid computing offers powerful computers interconnected and share processing of a request. The request is parsed into chunks and distributed to the processors. The result from the processors are aggregated and form the response. Grid computing requires a facility to host these computers in a restricted environment to manage and configure. It is a costly affair and is generally used where information processing is critical and involves complex computations.

But internet has made grid computing easy in certain ways. For example Seti@home is a project that collects information from satellites and analyzes them to search for extraterrestrial intelligence. It uses the idle processor time of the personal PC’s spread across the world connected to the internet. Once the user agress to the terms and conditions, an agent is downloaded and installed on the personal computer. This agent typically runs as a screen saver and it uses the computer’s processor when it is idle time (rememer the coffee breaks and lunch time?). Once a unit of work is complete it sends it back to the server for aggregation with other completed units and receives another unit of work for processing. This type of computing is called scavenging grid. The advantage is that it is the cheapest form of grid computing but the scope where it can be applied is limited and is also dependent on the internet user’s acceptance to run it. And another disadvantage is the time it takes to process a complete request. World Community Grid is yet another example of scavenging grid. It aims at processing complex scientific research to determine cure for diseases like aids.

Yet another common grid computing type is the data grid computing. Data grid computing is used when volumnious data needs to be processed. The data grid computing is supported by high end database systems that can store volumnous data and distribute the data to different processors for processing. For much detailed explanations on grid computing refer the wikipedia.

Blink this Grid Computing at blinklist.com    Bookmark Grid Computing at blogmarks    Bookmark Grid Computing at del.icio.us    Digg Grid Computing at Digg.com    Fark Grid Computing at Fark.com    Bookmark Grid Computing at Furl.net    Bookmark Grid Computing at NewsVine    Bookmark Grid Computing at reddit.com    Bookmark Grid Computing at Simpy.com    Bookmark Grid Computing at Spurl.net    Bookmark Grid Computing with wists    Bookmark Grid Computing at YahooMyWeb

Comments      Cosmos

A day with the daffodils

Compassites launched the first COACH program last week. COACH stands for Compassites On A Cause for Help and is a program aimed at stretching our hands to help the deprived in the society. Last weekend the navigators at Compassites visited an orphanage named Karuna mother’s home. The orphanage is run by Mrs. Roopini Chandra who takes care of 45 abandoned children. I became very emotional when I heard that some of these children had been dropped off by their own parents just after few days of their birth.

Step 4 - fold this wayThe daffodils were bright and beautiful and welcomed us as their own brothers and sisters. I had the pleasure of teaching them how to make a paper cap. I was happy that my Origami hobby came into use finally. The amount of happiness and smile that brought these children when they completed the paper cap along with me was a feeling of immense satisfaction that no money or fame can bring. We spent the day with them, having lunch together and projecting “Tom & Jerry - The Movie” and “Hanuman” movie. Emotionally we bid farewell and wished them for a bright and prosperous future.

Blink this A day with the daffodils at blinklist.com    Bookmark A day with the daffodils at blogmarks    Bookmark A day with the daffodils at del.icio.us    Digg A day with the daffodils at Digg.com    Fark A day with the daffodils at Fark.com    Bookmark A day with the daffodils at Furl.net    Bookmark A day with the daffodils at NewsVine    Bookmark A day with the daffodils at reddit.com    Bookmark A day with the daffodils at Simpy.com    Bookmark A day with the daffodils at Spurl.net    Bookmark A day with the daffodils with wists    Bookmark A day with the daffodils at YahooMyWeb

Comments      Cosmos

Foundation Stone #8 - Understand concept Vs technology

My friend Deepa had mailed me couple of days back after reading one of my post, “Foundation Stone #6 - Keeping yourself updated“. Here is the snippet from the mail.

“In one of ur post, Foundation stone#6-Keeping yourself updated……

“When someone says that he/she knows a particularly technology what really matters is whether he/she
knows the concept behind that technology. If one is good in the concept then it is matter of
spending some time to really work on that technology.”

I am still not able to understand the terms concept and technology…..gimme an example.

It was a good question, how do you draw a line between, when you can say that you know a concept and when can you say that you really know the technology behind it or to be put simple when you can apply and edit it. I thought about it for some time and replied to her. I thought this would be useful for everyone as well. Here is the snippet from my reply mail, what exactly I wrote back to her.

“Let me first clarify your first question Concept Vs Technology. I will try to explain it with an example rather than trying to define it. You have a car and you are driving it. You can think of what happens inside when you are shifting gear or accelerating it. If not technically how things work, you at least know what are the components and what their responsibility is. But at the same time if your car doesn’t start or you feel it has problem, you cannot get into it and try to fix it, if you want to then you need to know technically what it takes to do the repair. Understanding how things work is conceptual, but working on it to create/modify is technical. Every model or concept has a scope and you can create/edit technically only within that scope. For example you cannot technically edit your car to make it fly. However if you were successful then you cannot call it car anymore but it will start belonging to the conceptual model of flying because you have to apply the principles of flying to make it really fly.

Hopefully you are not getting confused. Let me give you another example for concept vs technology. Lets say you are watching TV. You are a user here, but lets reverse your role, say when you are watching a TV, I want you to think about how do you see those pictures in motion? What really happens? You maybe able to answer this question depending on your conceptual knowledge on how TV works. If you put that question back to me, I can explain how a TV works. But if your TV gets repaired I cannot fix it, you need to go to a person who knows conceptually as well as technically how a TV works. Did it help?

She understood it, hope you understood it. Questions/Comments welcome.

Blink this Foundation Stone #8 - Understand concept Vs technology at blinklist.com    Bookmark Foundation Stone #8 - Understand concept Vs technology at blogmarks    Bookmark Foundation Stone #8 - Understand concept Vs technology at del.icio.us    Digg Foundation Stone #8 - Understand concept Vs technology at Digg.com    Fark Foundation Stone #8 - Understand concept Vs technology at Fark.com    Bookmark Foundation Stone #8 - Understand concept Vs technology at Furl.net    Bookmark Foundation Stone #8 - Understand concept Vs technology at NewsVine    Bookmark Foundation Stone #8 - Understand concept Vs technology at reddit.com    Bookmark Foundation Stone #8 - Understand concept Vs technology at Simpy.com    Bookmark Foundation Stone #8 - Understand concept Vs technology at Spurl.net    Bookmark Foundation Stone #8 - Understand concept Vs technology with wists    Bookmark Foundation Stone #8 - Understand concept Vs technology at YahooMyWeb

Comments      Cosmos

Idempotent methods

Have you ever noticed a method in your project or programs which act and respond the same way whether you call it once or n number of times irrespective of the situation or variation in inputs? Meet the idempotent methods. Idempotent methods are not different from any other methods in terms of how they look and feel or syntactically constructed. But how idempotent is different from any other method is in the way it behaves during the run time. Idempotent methods are monotonous methods in essence even if you call them any number of times it still responds back as if it was called once. Probably you are unaware that the HTTP GET, PUT, DELETE and HEAD methods are idempotent methods. For example the GET method of a particular page request would always bring back the same content how many ever times you call it under any different situation. Hence web server implementations assume this and cache the GET requests. That is yet another reason that you should use the POST method for the web requests. You can read more about it with a good example here in Wikipedia. Ironically idempotent methods are free of side effects. Idempotence is also a mathematical concept. Again more about this, here in Wikipedia.

Blink this Idempotent methods at blinklist.com    Bookmark Idempotent methods at blogmarks    Bookmark Idempotent methods at del.icio.us    Digg Idempotent methods at Digg.com    Fark Idempotent methods at Fark.com    Bookmark Idempotent methods at Furl.net    Bookmark Idempotent methods at NewsVine    Bookmark Idempotent methods at reddit.com    Bookmark Idempotent methods at Simpy.com    Bookmark Idempotent methods at Spurl.net    Bookmark Idempotent methods with wists    Bookmark Idempotent methods at YahooMyWeb

Comments      Cosmos

Troubleshooting Tip #7 - Beware of side effects

You are very sure that you have written the program syntactically right, logically right, but the output doesn’t seem to be the one you are expecting. You think that the logic is correct and the input is correct but still you dont get the expected output. One of the possibility for the failure of your code could be a side effect of a certain statement. Maybe you are hearing this term for the first time, but I am sure after looking at the below example you would say “Oh is this called side effect?”

public void foo(int x, int y) {
  if (x > 30 && (y=x*2) > 30) {
    x = x + 10;
  } else {
    x = x + 5;
  }
}

Assuming the above code is a java code, if I pass a value of 10 and 30 to x and y respectively what values of x and y do you expect once the if condition is executed? If your answer to this was 15 and 60 for x and y respectively then you are wrong. What happens here is a side effect. Remember the truth table of logical gates? Lets look at the truth table of AND gate.

X Y Output
0 0 0
1 0 0
0 1 0
1 1 1

What it signifies is that if both the inputs are true then the output of AND is true, but otherwise even if one of the input is false then the output is false. Now consider in a condition when the first expression evaluates to false. Since the result of the overall condition is going to false, there is no use in evaluating the second expression, hence the second expression is not evaluated at all. In software engineering terms this is called short circuiting. Side effects could come in different forms and short circuiting is one of them. Side effect depends on the programming language execution style as well. Be on the lookout for one when you write the code. Side effect could happen when you try to use short cuts and try to be more cryptic in your code. In the above example the expression y = x*2 should be taken out of the if condition for the expected result.

Blink this Troubleshooting Tip #7 - Beware of side effects at blinklist.com    Bookmark Troubleshooting Tip #7 - Beware of side effects at blogmarks    Bookmark Troubleshooting Tip #7 - Beware of side effects at del.icio.us    Digg Troubleshooting Tip #7 - Beware of side effects at Digg.com    Fark Troubleshooting Tip #7 - Beware of side effects at Fark.com    Bookmark Troubleshooting Tip #7 - Beware of side effects at Furl.net    Bookmark Troubleshooting Tip #7 - Beware of side effects at NewsVine    Bookmark Troubleshooting Tip #7 - Beware of side effects at reddit.com    Bookmark Troubleshooting Tip #7 - Beware of side effects at Simpy.com    Bookmark Troubleshooting Tip #7 - Beware of side effects at Spurl.net    Bookmark Troubleshooting Tip #7 - Beware of side effects with wists    Bookmark Troubleshooting Tip #7 - Beware of side effects at YahooMyWeb

Comments      Cosmos

Foundation Stone #7 - Be customer focused

Most of the time when we test the code or application, we always think of the happy path that everything looks great, think of it as a job, run through a set of test cases, and say your work is done and report the status. But have you thought who are you trying to satisfy here? Your lead? Your manager? Your colleagues? Not really, it is ultimately the customer who is going to use the system. Have you ever looked at the application from his eyes?

Lets say you are going to a restaurant. What kind of a service do you expect? What will make you more comfortable as a customer of the restaurant? Or put this way what should the restaurant do differently in order to please the customer and make him visit or recommend the restaurant to his circle of friends/relatives? As a customer in the restaurant you expect quality proactive service for example it might add a lot of value if the bearer suggests what items are available, what item you may like depending on your taste, or says the speciality of an item and so on.

When you are developing an application for a customer, the key thing that you should constantly be aware of is to view it from a customer’s perspective and think in terms of how well you could present it in a way it makes it easy to use. What additional information (if at all) can you give so that it adds more value and how do you project it? Such questions should be constantly on the thought process not just in the mind of developers, but also from everyone in the team. Everyone in the team should have that customer focus and the goal should not be just to deliver the product, but to deliver it with customer satisfaction.

I have added this as a foundation stone, because if you are a starter, you better cultivate this as a habit. If you are already in this industry and you dont think about satisfying your customer in every day work, it is not too late to cultivate this habit. Practice it and this can take you a long way.

Blink this Foundation Stone #7 - Be customer focused at blinklist.com    Bookmark Foundation Stone #7 - Be customer focused at blogmarks    Bookmark Foundation Stone #7 - Be customer focused at del.icio.us    Digg Foundation Stone #7 - Be customer focused at Digg.com    Fark Foundation Stone #7 - Be customer focused at Fark.com    Bookmark Foundation Stone #7 - Be customer focused at Furl.net    Bookmark Foundation Stone #7 - Be customer focused at NewsVine    Bookmark Foundation Stone #7 - Be customer focused at reddit.com    Bookmark Foundation Stone #7 - Be customer focused at Simpy.com    Bookmark Foundation Stone #7 - Be customer focused at Spurl.net    Bookmark Foundation Stone #7 - Be customer focused with wists    Bookmark Foundation Stone #7 - Be customer focused at YahooMyWeb

Comments      Cosmos

Build Automation #13 - Using Nant

Nant is a build automation tool almost similar to ant but for the .Net world. Even though I started off my career with Visual Basic, I lost touch with Microsoft world since 8 years. I haven’t really done a HelloWorld on .Net. Hopefully this would be a good starting point for you to start using Nant to automate your .Net application.

Blink this Build Automation #13 - Using Nant at blinklist.com    Bookmark Build Automation #13 - Using Nant at blogmarks    Bookmark Build Automation #13 - Using Nant at del.icio.us    Digg Build Automation #13 - Using Nant at Digg.com    Fark Build Automation #13 - Using Nant at Fark.com    Bookmark Build Automation #13 - Using Nant at Furl.net    Bookmark Build Automation #13 - Using Nant at NewsVine    Bookmark Build Automation #13 - Using Nant at reddit.com    Bookmark Build Automation #13 - Using Nant at Simpy.com    Bookmark Build Automation #13 - Using Nant at Spurl.net    Bookmark Build Automation #13 - Using Nant with wists    Bookmark Build Automation #13 - Using Nant at YahooMyWeb

Comments      Cosmos

Next entries » · « Previous entries

Creative Commons License  This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.