Thursday, April 28, 2011

Can Meditation improve programming skills ?


Positive influence of meditation in emotional well being, mental faculties and general mental/physical health is well known and well supported by research too. Therefore, one might think meditation will greatly help software engineers to develop their mental skills which are related to programming skills. However, as far as I know not much research is done on this subject yet and hence we don't have evidence yet to prove this hypothesis.

Looking at it from a different angle, games like Chess which require players to concentrate for long durations and help them become objective and develop their analytical thinking can also help people to improve their mental faculties. This is well acknowledged around the world and in many countries chess is already in the primary school curriculum, sometimes even as a mandatory subject!

Recently Word Chess Federation, FIDE has signed a interesting agreement with the World Meditation Academy. Among other things, FIDE will from now on offer scholarships for chess players to  attend meditation courses. Many other sports are also using mediation as a part of trainings, but this I think is the first time a sports governing body has so openly endorsed meditation as a tool which can help the game. In fact the connection between Chess and Meditation should not be a surprise. More about this piece of news can be found in here.

Now, I have personally seen good chess players also performing well as good software engineers (computer programmers). So, can there be a link between meditation and programming too. Will it be a good try for kids who like to become good computer programmers in future to pay some attention to meditation and chess or at least one of them ?

I personally think there (judging by my own personal experience all 3 fields and judging by what I have seen in others) is a good healthy relationship between these fields in terms of the mental skills needed to excel in those. While meditation can help in Chess and programming, will the reverse of that be true as well ?

If anyone have evidence or know about any research done on these, feel free to share it with us. This is one such place I know of where similar discussions are already happening.

PS : It seems like there are already initiatives to get programmers into meditation. Google for instance is conducting Mindfulness workshops at their campuses.

Mindfulness with Jon Kabat-Zinn
Cognitive Neuroscience of Mindfulness Meditation
How the Essence of Mindfulness Parallels the Nuts and Bolts of Science

Thanks Black_Irish at reddit for providing above links. More on this can be found at the discussions at reddit

Tuesday, April 19, 2011

Ceylon - The New programming language to take on Java !


News of the day (oh well, may be yesterday) is that the newest upcoming programming language to take on Java's enterprise market share could be Ceylon. A big thank to my good friend Damith for putting me on this news.

Yep, you heard it right. (Check the date of this post if you don't believe me. See, it's not April 1st!) The very first thought to spring out screaming is why that particular choice of name ? Well, I think it's a easy guess (and I'm taking a personal risk of being wrong here).

Folks at Sun Microsystems used to drink lot of coffee while developing the new programming language they intended to take on C++, when they were faced with the task of choosing a name for it, they choose the place where their favorite beverage is coming from. Java. So I bet good folks at RedHat are drinking tea and buckets of it! May be it is the ultra healthy Green Tea. Well, good for them! at least they have got their beverage right, Ceylon Tea!

Back to the language itself : Some have rushed to call Ceylon the (would be) Java Killer. Although the creators of Ceylon themselves are more cautious and pragmatic. Oh, I forgot to give the original article yet. Here it is.

According to the Gavin King (as mentioned in the article above) lead of the Ceylon team at RedHat, New language will have following goals : It would run on the JVM and feature static typing, automatic memory management, and built-in modularity. 

Following current problems in Java were also given. Tied too much with XML, absence of a good way to design a user interface, A lack of language-level modularity, issues in Java meta-programming, Java SE (Standard Edition) SDK lacks modernization and is bloated etc.


In one of my earlier posts I made a case for Java Script (or something similar with a sexier name) to be the next big thing in programming. I was prepared for comments like "JS, r u sure? Java and JS are miles apart" or in that line of thinking. The given article says : "Java also has survived amid competition from dynamic scripting languages such as JavaScript". Well, at least the official comparisons have started to appear on that count. We will see more and more items on this line of thinking in the months to come...

Back to Ceylon vs Java. Now then here are my interpretations :
1) Language is being made by a very capable team at RedHat who are already "unapologetic fans of Java" So it's a safe bet (unless they make some really bad design decision upfront) that the new language will be a better one than Java. When Subversion team wanted to build on existing CVS and make a better one out of it, they did it, for instance. These folks know the strengths and weaknesses of Java so this part is a safe bet I guess.

2) The point above does not in any way imply Ceylon will beat Java at the enterprise software market. Being just a better language is not enough for that! Developers should have a very compelling reason to switch over to a new language. I think Ceylon will not beat Java in a hurry and become the top language in that sector in any time soon. There is simply too much inertia for Java right now. Unless.... well, lets get back to that in little later.

3) I'm not sure how important it is to have a "good way of designing a user interface". While it is certainly a good thing to have, I think the days of thick clients are on decline. To be the best future language, this user interface design part (assuming they mean thick client user interfaces, like in Java Swing) will not contribute that much. However it will be hugely important to have a light weight framework (MVC preferably) to develop web applications, may be that should be very close or built in to the language components it self, or may be the language should make it really easy for others to develop such frameworks. Web applications are going to be the future, current Java frameworks (struts, JSF etc) suck.

4) Having a JVM and automatic memory management is a must these days nothing surprising there.

5) To beat Java at their own game, one need some revolutionary new features, aspects or paradigms. Let's see whether the new language has got any. May be they have few cooler stuff hidden on their sleeves but if they have I didn't hear King mentioned any yet. Let's see what we mean by revolutionary changes.. How did Java beat C++ ?

Java had cool features C++ could only dream of. Java introduced (or got it right and made it popular) memory management,  a huge issue in C++, a JVM a very novel concept which gave them the theme "write once runs everywhere" (or "write once debug everywhere" depending on which camp you are in), garbage collection etc  These were Huge improvements in those days that C++ folks have migrated en mass.

What would we like to have in a future language which would embarrass Java ? Here is my List, for more see in here :
1) Dynamic language features (such as in LISP, Ruby) lot of meta programming.
2) More support for scripting. macros etc
3) Do away with Type Safety and statically bounded types (this would be a  tough one for a enterprise language)
4) Inherent support for web applications. (Java introduced JSP, where to go from there?) and AJAX in particular.

Success of Ceylon being a Java Killer will depend on those factors (and also probably few others I have missed) I think. So far I haven't heard much on those lines.

Ceylon would be a better language but will it be better enough to convert Java followers, that's the question!

However, there is no doubt that the King and his team at RedHat have got the most important thing absolutely right. The name!! that will certainly give the new language some wind initially. (partisan thinking here, take no notice! :-) )

Going to have my cuppa now.. and I like the green type.

(Image source http:/www.decidetostayfit.com)

Online Games of a different kind - and for free !


We are developing an online gaming site!

People could challenge others and play games online, keep records, play and organize tournaments, play matches with selected opponents, replay their past games, pass their university exams, complete their office work etc.  It would be so much fun! (except for last 2 items in the previous sentence).

To make it even more interesting, there will be few AI driven computer players as well. With ratings, rankings leader-boards, records etc

What will be the difference of our site with other such online gaming sites in abundance ?

Well, there will be few :

1) Our site will not require users to install any additional plugins or other software to play. No flash, flex, java applets etc They will just work from a "vanilla" web browser  just out of the box! no hassle, very light weight and universal. Yea it really will work from everywhere even on browsers running on iPhone, Android, iPads etc

2) The games running on the site will not be just animated flash games where users are just required to time their mouse clicks/drags. We believe a computer game could and should do lot more than that! Our games would mainly be board and puzzle, they would have classic games as well as few home cooked one but all would require some series analytical/calculation and strategic thinking from the players. There would be AI computer players for each and every game! Typically these games would be good for brains (comes under the category of IQ Enhancers) while fun to play!

3) It would be Free to play. It would be fast, lightweight and will not bother your system or browser performance. No hassle!

Can we achieve all that at once? We believe yes! and very soon we all will be witnessing that and playing with each other!!

So, who would be paying.. where will the money comes from ?

There are few plans. We might go for few sponsored on site ads, or may be there will be a little "donate" sign with a picture of a hungry programmer (kidding) in a corner, or may be there will be even cooler fantastic feature set for subscribed users.

Or may be non of above!

We will also be developing mobile versions for games in the site which prove to become more popular than the others. (hopefully all of them!) Some of these mobile versions will be free for all to play while few others might appear in various app stores. If it looks like there are enough players who think it's worthwhile to buy those games from app stores then, I guess we don't need to put adds in our gaming site after all!

So in short, we will leave the money problem open for the time being, there are various options we could take judging by how things will proceed.

For the time being, let's just say that we could play some very interesting, addictive and challenging games online with friends, totally free!

In the next post we will have few sneak peaks on what those games exactly are... We would love to know what you think. Who knows, if you have a cool request to make, we might just be able to deliver that for you!

Like to play a game ?

(image source from : http://frenchboxing.blogspot.com)