In this post, we shall take you through my understanding of how and what went on in the Thought Works’ Master Class Series Seminar held on May 19, 2007 @ Hotel Royal Orchid , Bangalore, India.
Disclaimer: This post is made only to point out few areas of technology information which might be interested for different kinds of people. And those who would want to benefit from this can do so. This Post is our organization’s evaluation of the seminar and holds no other information or criteria in hosting this. Heurion Consulting has NOT been paid by any person to write this post.
Master Class Series Seminars are a new class of technology seminars that Thought Works have started in Bangalore India, This is their second year. Unfortunately I didn’t attend the first one.
The Programme was divided into 3 technology discussions each of them were in different segments of software life cycle. I shall not concentrate on the initial speech or the last vote of thanks because my concentration is on the technology discussion and how it will help us. Also as we know Thought works is known for their agile development practices, they are releasing new software for project management. The technologies discussed were as follows
- Database Refactoring
- Evolutionary testing
- Domain Specific Languages
Database Refactoring was presented by Mr. Pramod Sadalage and identifies use of evolutionary development methodologies such as Extreme Programming, Feature Driven Development to make it clear that developers and DBA need to work together in the same manner to be productive as a team. He presented information and material from his book on “Refactoring Databases: Evolutionary Database Design” on how to go about doing evolutionary database development and talked about techniques of database Refactoring, evolutionary data modeling, database testing, configuration Management of database artifacts and developer sandboxes. In his presentation, what we understood was more similar to how the Ruby on Rails technology looks at the Database to be part of the developer frame work. However we see that in his presentation he concentrated that even other technologies could adopt these principles. In his presentation we could list the following points of action.
- He explains the technique of Developer and DBA to be working together making a pair (This exposes to a concept called as Pair Programming and guys trust me, it works, I have done it some time back). He identified that DBAs should also be part of the cycle where the database elements are being decided. He pointed out that DBA == ROLE != Person
- He identified the need for the Database Scripts to be in the source control (similar to our DB/migrate scripts in the code. If some one is not using the Latest Rails framework, they wouldn’t know what is db/migrate scripts)
- He identifies by use of scripts it becomes easy for any person joining an organization to come to speed by automating scripts to create databases by use of ants, subversions, cruise control, etc
- He identified how to break all the DB migrations into delta scripts for easy management of the scripts. He demonstrated by naming the scripts with XXX_NAMEOFSCRIPT.sql where XXX refers to the version of the database and these scripts would contain 2 sections one for a Go and other for Undo action (very similar to our Migration script i.e. naming with 002_CREATE_TABLE and having a self.up and self.down sections in the migration files)
- He demonstrated these functions with examples and used svn and cruisecontrol for version controlling. We were able to appreciate cruise control’s usage in build creation. We understand that cruise control is used for creating versions of build and whenever we do a checkin to the svn, cruise control does a build and checks if the code is up to date. I think we need to try this out and see if this brings us advantage to us. For Ruby on rails, there is cruisecontrol.rb
Pramod also has a website www.databaserefactoring.com where he has identified many areas and methods of Refactoring.
For the question that I asked him that RoR already does all these things, so what is new for us? I understand that what we do is migrating data from ruby code and not sql scripts and for thousands of database entries; running migration from the code is costly? I don’t know how far it is true, but since it comes from the horse’s mouth, let me accept it until I find some one telling me that this is not true.
Evolutionary Testing was presented by Mr. Vivek Prahlad who is also one of the designers of the Frankenstein tool. In his presentation he pointed out the usage of their testing tool called Selenium which can do functional testing and UI testing. Selenium has the following features.
- It is an Open source tool, so we can write extensions to the same to support our testing needs. They expose some APIs
- It has cross browser support. Selenium, comes with plug-ins, which are added to each of the browsers, so with firefox, they have a plugin at tools à selenium and this plugin can be used to record information of testing and do the testing.
- It can test minimal Ajax implementation (but not complete Web 2.0 aspects. Well what features they support and they don’t support, I feel there are many, however what I felt was that this does not support is the Scriptaculous effects. If I have some time, then I shall find out more information on the same).
- It supports many languages including Ruby.
- Mainly for Functional Testing, but also supports UI testing.
Selenium has some features like Recording which helps to record actions on tests and run them on different browsers, These recordings can also be converted to code and write test scripts. The advantage with Selenium is that we can write code in Ruby on Rails. Selenium also supports DRY, use of methods, parameterization and also is object oriented. During the presentations he took through 3 testing patterns and explained how Selenium can support these operations. The patterns were
- Screen flow pattern
- Data Template Pattern
- Work flow pattern
P.S: When I spoke to Sidu one of the thought worker, he said Frankenstein tool also has Ruby Drivers. I think its worth checking it out.
Domain Specific Language section was presented by Mr. Srihari who identified a need of writing specific interpreters / rule engines for particular domains. He picked this from one of their Ruby on Rails projects where they wrote an interpreter and a parser which converts user’s English language to be interpreted by use of a parser and Rails project. This project used RACC (Ruby’s port of YACC) and for lexical Scanning they used Ruby’s string scan. However this presentation didn’t give us much information of the exact need and how their approach was. But it was informative to get an understanding that if we have to provide a language for the users to key in rules, then the best solution approach would be to use a Domain Specific Language which is understood by the users.
P.S: I didn’t appreciate this presentation until I found that there is a book written for this the link is as follows http://www.pragmaticprogrammer.com/titles/tpantlr/index.html . Now I appreciate what he was trying to tell us.
P.P.S: Sidu says “You may also want to mention that everyone’s favorite Rails Migrations are a classic example of a DSL.” Thanks for the information Sidu.
Other to these presentations, I was in a discussion with one of the Thoughtworkers regarding their Project Management Product called MINGLE. This is a project management tool for agile practices and helps in handling iterations and planning stories. This tool has the following features.
- Manage Agile projects
- Configurable to any industry
- Easy management
- Good UI
The beauty of this tool is that it is developed using Ruby on Rails and has lots of AJAX stuff in it. I got Mr. Kedar (a Thought worker) to give me a demo and it looked good. I understand the BETA release is some time in next 2 months and we can download and test. Also for a < 5 member team, it’s free. You can find more details of Mingle @ http://studios.thoughtworks.com/mingle-project-intelligence
Hope these are informative. We are planning to test CruiseControl.rb, Frankestine and Selenium and try and integrate with our systems. Once done, we shall put a post on this as well.
So till then….do the Ruby on the chuk book chuk book…..(The Rails….)
- Heurion Consulting Information Release
