Tuesday, January 26, 2010

[Conf] Cloud Computing at OOP 2010

Today I attended the session called "Cloud Computing ohne Buzzwords - und wie sieht die Zukunft aus" at the OOP 2010, provided and overview of Cloud Computing and their effects to present Software Architectures. Till this day I had no experience with Cloud Computing, and this session gave me the opportunity to hear some basic information about Cloud Computing and the benefits and risks that such a paradigme comes with. Good canditates are Amazon or Google. Both provide a wide range of services around the topic Cloud Computing.

A very interesting point is that RDBMS do not work very well in  the Cloud and alternative systems such as "NoSQL" becomes more popular through Cloud Computing:

Next Generation Databases mostly address some of the points: being non-relational, distributed, open-source and horizontal scalable. The movement began early 2009 and is growing rapidly. Often more characteristics apply as: schema-free, replication support, easy API, eventually consistency, and more. So the misleading term "nosql" (the community now translates it with "not only sql") should be seen as an alias to something like the definition above [Source: http://nosql-database.org/]

From my point of view, new kind of software systems make use of new platforms, such as Facebook, LinkedIn, Twitter in order to persist their data. And these platforms use this new mechanism to persist data. There are already interesting frameworks, such as CouchDB, Amazon SimpleDB and many others. A list of NoSQL candiates can be found here.

The session also provides some other interesting information:
  • Characteristic of Cloud Computing
  • Public and Private Clouds
  • Grids vs Cloud
At present Cloud computing is the new Hype and Software Engineers must track this topic!!

Friday, January 15, 2010

[Misc] Software Carpentry


In "Interviews with Innovators" Jon Udell talked recently with Greg Wilson. Greg Wilson is well known for his "Software Carpentry" courses. These courses did not focus on computer science students but mainly on students from other scientific disciplines like Chemistry, Physics or generally engineering studies. His goal in the "carpentry" courses was, as I understand it, to teach scientists who need Software for their work the essential tools and practices. I have the feeling, that this is pretty similar to our "best practice" efforts like our websites, this blog and the book.

However, the motivation is very interesting. One nice example he gave comes to my mind: He occasionally noticed that scientists (using apparently Matlab and the like) use functions mainly for code that is not used any more. Pretty counterintuitive? Well: they use to write the code (as it is possible in many scripting languages also e.g. in Python) in "Spaghetti" script style; as soon as they make major updates they put unused code (that they still want to keep for some purposes, because they also are not aware of versioning tools) into a function, because code in a function is not executed automatically. Nice approach ;-)

However, aside these extreme examples there is, in my opinion, a lot to learn also for education in "regular" computer science classes. As Wilson puts it in an example:
"The research money and PBS Nova programs focus on artificial hearts when in fact all the increase in longevity comes from clean water, anti-smoking campaigns, better nutrition, vaccination and the like. These routine public health measures that no longer are exciting, so they are actually loosing ground."
The same is probably also true in Software Engineering education: 95% of  engineering, but probably also of IT students will not develop the next "Google" but some Web-Forms that connect to a database and produce some reports. But this should be done in an efficient and maintainable way.

I believe this is an interesting thought: we write develop and focus on the latest "cutting edge" technologies, probably leaving the majority of developers behind and probably even worse: confusing them more every day with always new approaches and tiny improvements instead of focusing on the problems the majority of developers and companies have.

Listen to the interview and share your opinion!