I’ll be speaking tomorrow at the Google Testing and Automation conference about Frankenstein, a functional testing tool for Swing that I’d co-authored with Chris. I’m really looking forward to the conference, and I’ll be posting about the sessions over the next couple of days. All the talks are going to be published on YouTube.
ThoughtWorks Master Class series in Bangalore and Pune
The ThoughtWorks Master Class series is an annual event that covers contemporary Software Development topics drawn from real world experiences. This year’s seminars will be held at Bangalore on the 19th of May, and at Pune on the 26th of May.
The topics this year are:
Refactoring Databases: Evolutionary Database Development (Pramod Sadalage)
Pramod’s talk is based on his 2007 Jolt Productivity Award winning book. He will be talking about aspects such as Database refactoring, Evolutionary data modeling, Database testing, Configuration management of database artifacts and Developer Sandboxes. Pramod pretty much pioneered most of the techniques we currently use to manage databases on our projects at ThoughtWorks, so I’m really looking forward to his talk.
Evolutionary Testing: Adapting to Changing applications (me)
More on this in my next post
Domain Specific Languages: Real World experiences (Akshay Rawat and Sreekanth Vadagiri)
Akshay and Sreekanth will be sharing their learnings about building DSLs on some of our projects. Apart from giving an overview of DSLs, they aim to answer some of the following questions:
- When are DSLs appropriate?
- What are the pitfalls?
- What does it take to implement DSLs?
If you’re in India and would like to register for either one of the seminars, the registration page is here. (There is no registration fee)
Deploying Rails Applications - talk at Barcamp Bangalore 3
I did a talk was on Deploying Rails Applications at Barcamp Bangalore 3. Around 20 folks turned up, which was great considering that it was one of the last talks of the day. The LCD projector needed a fair amount of tweaking before it finally came to life, so we ended up starting a bit later than planned.
The slides are here.
The audience had questions about virtualization, Nginx and debugging RoR apps, and we ended up with a nice discussion on Rails hosting options. Gitu has a pretty flattering review of my talk:
Deploying Rails Applications – Vivek Prahlad
This was a kind of a neat demo i liked the most. Vivek gave a neat presentation on deploying Rails applications and also gave a real time experience of how it works behind with his blog. FYI his blog runs on RubyonRails.
One of things I talked about was about how I’d used a combination of Monit, Cron, Nginx, PostgreSQL and Mephisto to create this site. My aim had been to put together a self-healing setup that would essentially take care of itself with minimal manual intervention. (This blog runs on a 256MB VPS from SliceHost. The site has been up for approximately one and a half months, and the total memory usage is around 200 MB. The mongrel cluster runs a pair of mongrels).
Monit is really what brings it all together – it now seems to be the monitoring tool of choice for RoR applications. (If you’d like to know more about Monit, check out this post). I especially like the natural language syntax the the Monit configuration uses:
# eating up memory? if totalmem is greater than 60.0 MB for 5 cycles then restart # high cpu load? if cpu is greater than 50% for 2 cycles then alert # hung process? if cpu is greater than 80% for 3 cycles then restart # bad, bad, bad if loadavg(5min) greater than 10 for 8 cycles then restart # something is wrong, call the sys-admin if 3 restarts within 5 cycles then timeout
I was pretty happy with how the talk went, considering that I’d put the slides together after putting up the topic on the board!
Barcamp Bangalore 3
BarCamp Bangalore 3 was held at IIM Bangalore on the 31st of March and the 1st of April. Barcamp is an unconference, which means that the content of the sessions is driven by the the participants, rather than the organizers. The session schedule is here.
Here are a few pictures from the first day:There were a lot of familiar faces from the the previous Barcamp, which was held at the ThoughtWorks Bangalore office: Sowmya, Siddhi, Kiruba, and many others. This time around, there were a lot more attendees, but a proportionately smaller number of speakers. Unfortunately, that meant that a couple of slots had no takers on the first day. I did a talk on Deploying Rails Applications – more on that in my next post.
Siddhi has put together a nice roundup here. Some of the sessions I’d attended were:
Digital Study Hall / Digital Green – Randy Wang and co.
The Digital Study Hall is a non profit project that aims to get rural students to benefit from good teachers, by creating a system with elements of YouTube, Kazaa and NetFlix. The aim is to record content using cheap equipment, and share the content between schools using a variety of channels. The project uses a simple, but very effective technique they call Postmanet, which is essentially a snail mail based content replication system.
An amusing tidbit from Randy was about how they’ve observed teachers competing among themselves to deliver the best lectures à la American Idol. Digital Green is a similar project for farmers to share best practices and information with each other. Both the projects are in the early stages, but do seem to have a lot of potential.
Principles of Programming and JavaScript – T.B. Dinesh
Dinesh’s talk was about his experiences with using Javascript as the programming language for teaching Principles of Programming. His main rationale was that the JavaScript runtime was easier to access than the toolchain required for most other languages. The audience, however, seemed to disagree. I think some folks seemed to be confused about browser compatibility issues, which don’t quite come into the picture if you consider javascript as a language in it’s own right.
CruiseControl.rb – Sidu, Srushti and Swaroop
CruiseControl.rb is the new continuous integration tool for Ruby / Rails applications from ThoughtWorks. Sidu, Srushti, and Swaroop spoke about CI in general and how to go about using CC.rb. There’s a working demo of cc.rb here
Discussion: Are we ready to move to Products from Services – Savita Kini
This was a spirited discussion on whether the Indian Software industry is ready to migrate from services to products or not. I’m not quite sure whether the discussion led to anything concrete, but it was fun nevertheless. Someone mentioned that he felt people look for jobs with the Indian IT majors in order to get married – that had everyone in splits!
Asia Pacific Testing Conference
I was at the Asia Pacific Testing Conference in Singapore last week. The two day conference was the first of its kind in the APAC region – around a 100 folks participated. The agenda was quite packed, especially since the speakers had half hour slots to do their stuff.
Here are a few pictures from the conference and the area around the venue:The audience was quite new to agile – most of the folks I’d met used variants of waterfall. Interestingly, a lot of the speakers talked about how it becomes difficult to handle changes if you’re following a waterfall model. When requirements changed, the advice seemed to be to either refuse to implement the change, or to notify every single stakeholder about it. Another common theme was about how the CMMi does not address testing explicitly. During the breaks, I ended up chatting about how agile addresses both of those issues, and how developers and testers collaborate closely with each other on agile teams.
I especially enjoyed the talks on Exploratory Testing and Test Strategy and Automation for Complex Systems. The automation talk was about a small team of testers went about automating different aspects of testing their system to great effect. Wilfred Soon delivered the second half of the presentation, and he had the audience in splits with his one liners.
My talk on Web Test Automation with Selenium went quite well – I managed to complete the talk, which included a couple of demos, within my half hour budget. A couple of folks mentioned that they were keen on trying out Selenium on their projects, mainly because of the support for testing Ajax applications. Funnily enough, someone came up after the talk and asked if I was one of the founders of ThoughtWorks! Now I don’t quite remember talking about anything that even remotely suggested that :-)
One of my messages was around how test code is code, and how the practices and principles that apply to good code apply to good test code as well. Refactoring, DRY, and abstraction are just as valid for test code (More on that in a future post, maybe?). One of my demos was around refactoring Selenium RC tests, which definitely got the testers in audience excited – most of them had never seen refactoring in action before.
During the talk, I’d mentioned Continuous Integration briefly. The majority of the audience was used to nightly builds, and found CI intriguing.
The presentation is here
Overall, it was a good conference – I made a lot of friends, and I hope to be back the next time around as well!
Gnunify '07
I was at Gnunify, a conference on Free / Open source software, last weekend. ThoughtWorks had recently opened a new office in Pune, and it was great to catch up with ThoughtWorkers old and new.
I did a talk on the Google Web Toolkit, an Java framework for developing Ajax applications. We’d built one of the first GWT applications at ThoughtWorks India, and the second half of the talk was mostly about lessons learned from that experience.
The presentation is here
Some of the talks that I’d attended were:
Anant Narayanan on ‘Extending Python with Ctypes’
Anant spoke about how Python can be integrated with C libraries via ctypes, a pure Python mechanism for wrapping C libraries.
A. Sundararajan on ‘Java – always Open, now Free’
Sundar covered Sun’s roadmap for open sourcing Java. The plan seems to be to provide the entire JDK as open source (under GPL 2) around April this year. The javac compiler and the Hotspot virtual machine are already available. There are apparently a few legal knots that remain to be resolved around third party software that the JDK uses. The JCP will continue to exist, and Sun will still continue to control changes to the Java language.
Vijay Khambalkar on ‘Open Laszlo’
Vijay did a short talk on Open Laszlo, an open source, Flash/DHTML based Rich Application platform. Laszlo’s programming model is a mix of XML and JavaScript, and the compiler can output either Flash or DHTML. There are a couple of demos showcasing the kind of applications that can be built on the Laszlo platform here and here.
Marco Jansen on ‘Agile Project Management’
Marco’s talk was an overview about how we run our projects at ThoughtWorks. The audience really got into the thick of things, and there were quite a few good questions around introducing Agile to teams.
Narayan Raman on ‘Testing Web Applications with Sahi’
Narayan spoke about Sahi, his Open Source web testing tool. Sahi was originally created as a means to automatically reproduce bugs, and it was later extended to become a full fledged Web testing tool. According to Narayan, around 12 projects are actively using Sahi, and another 40 projects are evaluating it.
Sidu and Ram on ‘Continuous Integration’
Sidu and Ram spoke about the motivation for using Continuous Integration, along with strategies for migrating towards CI. Their talk was well received, and there were a few questions around optimizing slow builds (I do hope to blog about speeding up slow builds sometime soon, BTW). A short demo would have definitely have helped drive the message home.
Tony Wasserman on ‘How to run a successful Open Source project’
Tony’s talk was an entertaining look at what makes Open Source projects successful. His fundamental message was that successful Open Source projects have a lot in common with successful companies:
- A strong core team.
- Good management
- A strong community
- Clear goals
Dibya Prakash, Ruby on Rails workshop
Dibya did a Ruby / Rails workshop – the lab was packed to capacity, and it was great to see the level of interest in Ruby / Rails at Pune. Interesting, I got to meet quite a few students who’d been doing their projects in Rails.
Here are a few pics from the conference:
First Post!
I’ve finally got around to getting my blog up and running. I’m using Mephisto, a fantastic Ruby on Rails based blogging engine.
So why Mephisto? Dan Webb pretty much nails it:
For me, the single most important requirement of any CMS system I use is that it’s easily hackable. I don’t like the idea of being locked into a certain featureset or way of doing things, especially for my own site, as I really want to be able to evolve the site and try out new ideas. All of the blogging systems around now do have quite substantial plugin architectures some of which are really quite nice but at the end of the day if you plan on writing a lot of custom code for a site you’ve got to pick a blog tool based on a platform you like.
Under the covers, I’m running nginx, a lightweight, high performance http server, mongrel, and postgresql, along with monit for system monitoring.