Ruby Conference India 2011 - Logo

RubyConf India 2011

India's second RubyConf is happening in Bangalore in May 2011. RubyConf India is presented by the Ruby Community in India and supported by RubyCentral and the Innovation & Technology Trust.
Royal Orchid Hotel, Bangalore
28th & 29th May

Keynotes

Here are the keynotes:


  • Chad Fowler
    :speaker => "Chad Fowler"
    Chad Fowler is an internationally known software developer, trainer, manager, speaker, musician, organiser. Over the past decade he has worked with some of the world's largest companies and most admired software developers. He loves to program computers and, as part of his role as CTO of InfoEther, Inc., spends much of his time solving hard problems for customers in the Ruby language. He is currently the VP of Engineering at Living Social. He is co-organizer of RubyConf, RailsConf, and RailsConf Europe and author or co-author of a number of popular software books.
    :talk => "Service"
    As software developers, testers, and project managers, we all make the same thing: experiences. No matter what your profession, the service you provide to your customers is what they'll remember the most. This presentation will put "service" in perspective and give you techniques to provide remarkable customer service.

    Chad's talk is available in Keynote format (17.7 MB) and in PDF format (8.4 MB).

    Video of the talk is available here.

  • Nick Sieger
    :speaker => "Nick Sieger"
    Nick Sieger is an engineer at Engine Yard, working on JRuby and leading the effort to make the Java Virtual Machine a robust yet easy-to-use deployment platform for Rails and Ruby web applications. He created and co-maintains the JDBC adapter for ActiveRecord that JRuby on Rails uses for database connectivity, as well as the Warbler tool and JRuby-Rack library for dealing with Java application server deployment. He maintains a blog on Ruby and JRuby-related topics here.
    :talk => "Happiness : Ruby :: Freedom : JRuby"
    Happiness is an infectious feeling. When Matz set out to make himself happy by creating Ruby, did he have any idea what he had set in motion? And yet, here we are, a worldwide community of computer programmers collectively discussing how to improve our own lives and the lives of others. Inspired by Matz, we sense an opportunity to leave the world a better place than the way we found it.

    Closely intertwined with happiness, freedom is also infectious. The freedom to use the best tool to solve a problem. The feeling of being liberated from legacy code. The freedom to deploy your code anywhere. Using JRuby enables these situations with an extremely low friction and barrier to entry.

    Ruby and JRuby are just programming tools. Can they really engender and promote happiness and freedom? As inanimate bits residing on spinning rust, perhaps not. But as the intellectual property of our community that connects us, empowers us to solve real problems and share our stories, the answer to that question becomes more positive.

    Video of the talk is available here.

  • Yehuda Katz
    :speaker => "Yehuda Katz"
    Yehuda Katz is a member of the SproutCore, Ruby on Rails and jQuery Core Teams; during the daytime, he works as an architect at Strobe. Yehuda is the co-author of the best-selling "jQuery in Action", the upcoming "Rails 3 in Action", and is a contributor to "Ruby in Practice". He spends most of his time hacking on open source - his main projects, along with others, like Thor, Handlebars and Janus - or traveling the world doing evangelism work. He blogs at yehudakatz.com and can be found on Twitter as @wycats.
    :talk => "Building Rails Apps for the Rich Client"
    We all know that Rails is great for building traditional web applications that serve dynamic HTML pages. But more and more, people are reaching to other tools, like Node.js, when they build web applications with a lot of logic in the client. People often use the argument that when you remove the view helpers, there isn’t much of value left in Rails.

    In fact, because the Rails framework made an early bet on the REST architecture, it is extremely productive for building applications that mostly communicate over HTTP using JSON payloads. In this talk, Yehuda will talk about what makes Rails so good as the server for rich clients, and how to structure your application to take the most advantage of these properties.

    Video of the talk is available here.

  • Ola Bini
    :speaker => "Ola Bini"
    Ola Bini works as a language geek for ThoughtWorks in Chicago. He is from Sweden, but don't hold that against him. He is one of the JRuby core developers, and has been involved in JRuby development since 2006. At one point in time, Ola got tired of all existing programming languages and decided to create his own, called Ioke. Then he did it again, and started work on Seph. He has written a book called "Practical JRuby on Rails Projects" for APress, and co-authored "Using JRuby for the Pragmatic Programmers", talked at numerous conferences, and contributed to a large number of open source projects. He is also a member of the JSR292 Expert Group. His main passion lies in expression engines and trying to figure out how to create good YAML parsers.
    Ruby turned 18 in 2011. In many countries around the world, that means Ruby is now an adult. During the evolution of the language, there have been many, many improvements. What started out as a small language has grown larger. However, the more code we write in Ruby, the more we realise that there are things that could be better. And we are also realising that there are things that just plainly shouldn't be there.

    In this talk, I would like to explore some of these aspects, with an eye towards what Ruby 2.0 will be, and what the language could look like if you started from scratch. The Ruby language and the Ruby ecosystem is a fantastic place to be, but the best feature of it is that we are not afraid of evolution.

    Ola's keynote is available in PDF format (4.7 MB).

    Video of the talk is available here.



Talks

Here are the selected talks along with the speaker bios, in no particular order:


  • Bhavin Javia
    :speaker => "Bhavin Javia"
    Bhavin is an Agile Rubyist with several years of experience in designing, developing, testing and deployment of business critical applications in a wide variety of domains. He spent many years at ThoughtWorks, working and leading adoption of Ruby as a viable platform for enterprise class applications in India and abroad. A passionate proponent of Agile methodologies, he was a founding member of ASCI (Agile Software Community of India).

    Bhavin is the founder of Ennova India, a Bangalore based startup with an aim to offer cutting-edge consulting and development services to small businesses and startups. He is also a part of the core team at Ennova - an Australia-based startup company that is focused on providing the construction and engineering industries with great software products like Envision and development services through Encode.
    Quality is one of the most important factors in deriving business value from software. However, many teams find it difficult to incorporate the appropriate quality and testing practices into their development processes. A test strategy helps create a shared understanding of what testing will be required, and how and when it will be executed.

    The Ruby and Rails communities have embraced testing and code quality as core values, and a rich ecosystem of tools has developed. Despite this support, many developers and teams overlook the creation of a test strategy as it is thought to be an unnecessary overhead that is traditionally associated with formal/waterfall style development methodologies. However, a well developed Test Strategy can be the difference between great software and a maintenance nightmare.

    This presentation will explain the process of defining quality (internal and external) for Ruby and Rails applications including metrics and targets. It will then explain the process for creating and executing a Test Strategy that ensures the intended quality objectives are achieved. Additionally, it will explain how to align a Test Strategy with the typical practices of a team using Agile or Lean methods.

    Learning Outcomes:

    1. Definition of Software Quality and appropriate metrics and targets
    2. Purpose and role of Test Strategy within an Agile development environment
    3. Creation of a Test Strategy tailored to suit Ruby and Rails applications
    4. Testing tool selection within Ruby ecosystem
    5. Approach and benefits to Ruby developers focusing on code quality

    Bhavin's presentation is available in PDF format (1.5 MB).

    Video of part 1 of the talk is available here.

    Video of part 2 of the talk is available here.

  • Brian Guthrie
    :speaker => "Brian Guthrie"
    Brian Guthrie has been writing bad Ruby code for five years, every line of it worse than the last. He started his Ruby career in Boston, and after joining ThoughtWorks went on to write increasingly bad Ruby code in Chicago, New York, Texas, California, and India. He is currently writing the worst Ruby code of his career in Melbourne, Australia. He is thrilled to return once more to India to share his mistakes with the vibrant Ruby community there, in the sincere and humble spirit of collective mistake-repetition avoidance.
    Ruby on Rails is a famously opinionated framework that handles ninety percent of the problems a typical web application faces. But what about the last ten percent? Every app has to jump off the Rails eventually, whether that means integrating with an external web service, importing data from another database, or providing enhanced search functionality. In this talk I'll lead you through some patterns for handling those cases, and discuss certain features of Rails 3 that let you leverage the best pieces of the core framework without resorting to ugly hacks. Finally we'll discuss what a new, more modular core framework means for a post-Rails world.

    Brian's presentation is available in Keynote format (24.4 MB) and in PDF format (9.4 MB).

    Video of the talk is available here.

  • Nick Sieger
    :speaker => "Nick Sieger"
    Nick Sieger is an engineer at Engine Yard, working on JRuby and leading the effort to make the Java Virtual Machine a robust yet easy-to-use deployment platform for Rails and Ruby web applications. He created and co-maintains the JDBC adapter for ActiveRecord that JRuby on Rails uses for database connectivity, as well as the Warbler tool and JRuby-Rack library for dealing with Java application server deployment. He maintains a blog on Ruby and JRuby-related topics here.
    The JRuby team has been proclaiming JRuby on Rails as the cure to legacy Java blues for years, but we've been lacking a compelling example that developers can use as a guideline for how to achieve this. We'll discuss and demonstrate three possible approaches, allowing for a minimal, medium, and large amount of reorganisation to an existing project. Each approach will build upon the previous one, showing developers how they can take an incremental approach to introducing Ruby into an existing Java environment to increase development productivity.

    Nick's presentation is available in PDF format (3.8 MB).

    Video of the talk is available here.

  • Habibullah Pagarkar
    Chirantan Mitra
    :speakers => ["Chirantan Mitra", "Habibullah Pagarkar"]
    Chirantan Mitra is better known as Chiku. He is a developer at ThoughtWorks with experience in working on complex domains mostly involving Ruby or C#. He has been programming since the age of nine - he loved it back then and still does so now. He conveniently forgets his Twitter handle from time to time, but remembers to share his code.

    Habibullah Pagarkar is almost always known as Habib. He juggles various roles at ThoughtWorks, but is primarily a software engineer. He abhors waste and loves efficiency - not just in software. In his spare time he can be found cycling along Bangalore's Old Airport Road. He very rarely updates his website, but regularly tweets as @mhabibp
    The presenters, Chiku and Habib, were team members on a distributed Agile Software project. Their job was to quickly write mission critical Rails applications, and they practiced various aspects of Continuous Delivery. Over the duration of this project, they noticed the evolution of interesting patterns that were thought to be great ideas. Many were, some weren't.

    Chiku and Habib will be pair-presenting their learnings in a way that mirrors the eternal tussle that a developer faces daily - convenience versus quality. One of them will assume the role of a devil and persuasively present a code-fragment that mirrored one such anti-pattern. The other will then take over as an angel and explain the problem inherent in that code-fragment, and proceed to clean it up. They will then swap roles and proceed to the next point.

    At the end of this presentation, the audience will have the knowledge of identifying and subsequently fixing similar manifestations of these problems in their code.

    Habib and Chiku's presentation is available in PPT format (11.3 MB) and in PDF format (5.2 MB).

    Code samples used in the presentation are available here.

    Video of the talk is available here.

  • Prateek Dayal
    :speaker => "Prateek Mohan Dayal"
    Prateek is the technology backbone for SupportBee.com. After graduating with a B.Tech in Electronics and Communication Engineering from IIT Guwahati, he worked with various startups in the Embedded Software domain. He left his job 4 years back to start Muziboo.com - to follow his passion for Web, Ruby On Rails and Music. Muziboo is currently on auto-pilot mode, and he is focussing fulltime on SupportBee.com. He blogs here and here
    jQuery is great for websites that need simple AJAX interactions and some effects (example Youtube/Flickr). However, if you want to build complex single page web applications like Gmail or Mobile Me, you need something more than jQuery. Keeping track of DOM elements to be updated in response to a particular action or result of an ajax query can become overwhelming very fast.

    Frameworks like Sproutcore, Cappuccino and Backbone.js provide structure to your javascript code. Backbone supplies structure to JavaScript-heavy applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions and views with declarative event handling.

    In this talk, we will go over building a simple Backbone.js application with Ruby on Rails backend and discuss some tricks and techniques that I have discovered while building supportbee.com. The outline of the talk is:

    1. Motivation for using a framework like Backbone.js. A quick comparison with Sproutcore and other frameworks
    2. Creating models, views and collections in backbone.js
    3. Setting up a controller to route requests (and preserve the back button behaviour)
    4. Setting up backbone.js to play nicely with Rails' ActiveRecord::Base.include_root_in_json
    5. Handlebars for templating
    6. Jammit for easily packaging all asset files (including javascript files for backbone's models, views and templates)
    7. Compiling handlebars’ template files and making them available to your code for rendering in a global variable
    8. Using as_json to customize the json serialization of Rails’ model
    9. A technique to make as_json use an included association’s as_json. The change can be seen at here
    10. Thoughts on testing a full page app. Also some thoughts on creating a restful API using restfulie

    Prateek's presentation is available in Keynote format (0.9 MB) and in PDF format (0.7 MB).

    Video of the talk is available here.

  • Pavan Sudharshan
    Janmejay Singh
    :speakers => ["Janmejay Singh", "Pavan K Sudarshan"]
    Janmejay (JJ) is a developer working at ThoughtWorks, Inc. in the Studios division. He has around 5 years of professional experience. He blogs here and shares his code here.

    Pavan is a developer working at ThoughtWorks, Inc. in the Studios division. He has around 5 years of professional experience. He blogs here and shares his code here.
    Test Load Balancer (TLB) is a tool that can automatically partition tests into multiple subsets, each one of which can be executed in parallel. The execution can happen on different physical/virtual machines or on the same machine as different processes or threads. The more the partitions, the less the number of tests executed on each one, and since all of the partitions start at the same time (and finish almost at the same time) overall test-execution time gets divided by the number of partitions you make. Test-running is by far the longest step in most (if not all) builds, and cutting down test-running time speeds up the build and hence the feedback loop. TLB can be used for any kind of test-suite - unit, integration or functional tests.

    In addition to balancing, TLB does other interesting things like re-order tests within a subset (set of tests that run on a partition) before they are executed. For instance, it re-arranges tests to execute failing ones (that failed in the previous build) first, hence ensuring early feedback.

    Most build servers (like Hudson, Go, TeamCity, Bamboo, etc.) and even tools like capistrano/cluster-ssh provide parallel execution capability (capability to execute command(s) on different machines at the same time). However, parallelization of tests needs a tool that can decide what tests need to be run in each such parallely running process across machines. This is where TLB comes in.

    This talk will introduce the audience to TLB concepts and include a demo of using TLB to partition RSpec and Test::Unit suites. It'll also include a case-study on how TLB helped cut build time from approximately 70 minutes to 11 minutes (which can of course be further reduced) just by throwing more hardware at it.

    JJ and Pavan's presentation is available in PDF format (1.5 MB).

    Video of part 1 of the talk is available here.

    Video of part 2 of the talk is available here.

  • Nicolás Sanguinetti
    :speaker => "Nicolás Sanguinetti"
    Nicolás (probably better known as foca) has been working with Rails since 2006, and with Ruby since 2004. He's constantly looking for ways to improve the way we write and test web applications in a way that makes them easier to use and maintain.

    He contributes to a few open source projects here. He lives in Montevideo, Uruguay, where he works as an engineer for Cubox.
    CoffeeScript is a great way to write javascript. It provides many abstractions that simplify the language, and a few syntax niceties that make it much less noisy than pure javascript. We'll cover the basic syntax and how it differs from regular javascript, and see some examples. Moreover, Rails 3.1 will ship with CoffeeScript by default, so this is a great time to get up to speed with it!

    Foca's presentation is available in Keynote format (5.8 MB) and in PDF format (2.4 MB).

    Video of part 1 of the talk is available here.

    Video of part 2 of the talk is available here.

  • Mark Madsen
    :speaker => "Mark Madsen"
    Mark Madsen was appointed as the Chief Technology Officer of Castle Rock Research Corp. in January of 2010 but has been leading the technology group as a Director since shortly after his return to the company in 2007. Since that time Mark has grown the development team at Castle Rock from 10 developers to 100 developers spanning 2 continents and 3 cities. The expansion has provided Castle Rock with the capacity to deliver both web applications (primarily .NET and Ruby on Rails) and mobile applications (primarily iOS and Android) to their growing customer base.

    Mark has been involved in mobile application development since before the dawn of the iPhone (in 2007) and has built the technology group at Castle Rock with mobile in mind. This is most evident in Castle Rock's mobile educational platform, SOLARO, which launched with the iPad App Store this spring. SOLARO gives students access to a variety of standards-aligned supplemental resources through their choice of iOS, Android or Web apps.

    From OSX Dashboard Widgets to Industrial Process Control apps on WinMo, Mark has written code that runs on just about everything. His 15 years of software development experience and passion for building usable software is apparent in everything he does.

    Mark holds a degrees in Physics, then Computing Science, from the University of Alberta (after pursuing a career in computational physics and then deciding it was the "computational" part he enjoyed).
    :talk => "MacRuby"
    My intent is to deliver a functional talk on MacRuby that not only introduces features and capabilities, but gives attendees a quick path to practically using MacRuby in their everyday development. I intend to go through important MacRuby specifics like working with Apple frameworks including (but not limited to) threading with GCD, data management with Core Data and Scripting Applications. During the talk, I intend to code two quick examples of everyday MacRuby while delivering tips and hints needed to quickly get running code. Attendees are encouraged to bring their laptops and code along.

    Mark's presentation is available in Keynote format (1.3 MB) and in PDF format (1.1 MB).

    Video of part 1 of the talk is available here.

    Video of part 2 of the talk is available here.

  • Aakash Dharmadhikari
    Niranjan Paranjape
    :speakers => ["Niranjan Paranjape", "Aakash Dharmadhikari"]
    Niranjan has spent five years writing code for a living. He started out at Infosys, wised up to the game and moved on to ThoughtWorks where he spent two pleasant years first working on Java and then on Ruby. All told, he's spent about three years building Ruby and Rails projects thus far. He left ThoughtWorks early in 2010 to co-found C42 Engineering, a boutique Ruby and Rails services firm based out of Bangalore.

    He is the co-author of several obscure open source projects such as Wrest, PoxPaginate and Goldberg. You can find the full list of the projects he hacks on at here and here.

    Aakash has spent five years working on software projects in a variety of companies; an Indian Services giant, a Fortune 500 company and a funded product startup before moving on to co-found C42 Engineering, a Ruby and Rails services firm based out of Bangalore. He has worked on Ruby for the last year and a half; before that, he'd spent four years on Java. He is a committer on the Goldberg project and his open source contribution can be found here.
    Discussing language constructs with fellow developers in the context of solving a particular problem is something we do routinely. While most such conversations are productive and useful, a fair portion degenerate into angry brawls. A pattern we've observed in the latter situation is that a surprising number of times the argument is that, "Why shouldn't I use language feature X to achieve objective Y- after all, the language supports X."

    In this talk, we will cover various features provided by Ruby that, while awesome, should be used with caution. We will cover:

    1. The appropriate situation where a certain language construct should be used
    2. Situations where I've seen it misused
    3. The underlying principles that will guide you as to how to use it best.
    4. Alternative approaches that achieve the same effect

    Here's a brief list of language constructs we will cover:

    1. if and switch-case
    2. return
    3. raise (exceptions)
    4. private/protected methods
    5. variable method arity (includes ActiveRecord style constructors that take any number of arguments tunnelled through a hash)
    6. Class methods
    7. Inheritance
    8. Custom instance allocators as factories (overriding Class#new)
    9. Re-opening classes, especially classes from the core libs
    10. eval

    Niranjan and Aakash's presentation is available in Keynote format (5.5 MB) and in PDF format (0.6 MB).

    Video of the talk is available here.

  • Sherin C
    :speaker => "Sherin C"
    Sherin is an Engineering Lead at MobME Wireless Solutions Pvt. Ltd. Sherin has 3+ years of programming experience in Ruby/Python, integrating various services from India's largest telecom operators Airtel and Vodafone. This at scale, for VAS(value-added-service) products with over 4+ million subscribers.
    Consuming web services is an inexorable practice nowadays. You could be eating your own dogfood(internal) or a third partys'(external). The consuming process can be modelled either as multi-threaded or event driven. Ruby accommodates either way with stable library support(eventmachine, threadpool) and implementations(JRuby, Ruby-1.8 or 1.9).

    This talk will:

    1. Weigh the tradeoffs in choosing a model by detailing an implementation each in:
      -- JRuby (threadpool without GIL)
      -- Ruby 1.8, 1.9 (eventmachine and threadpool with GIL)
    2. Dispel misconceptions regarding choice of synchronous or asynchronous I/O

    Sherin's presentation is available in Keynote format (9.8 MB) and in PDF format (1.8 MB).

    Video of the talk is available here.

  • Vishnu Gopal
    :speaker => "Vishnu Gopal"
    Vishnu is the CTO of MobME Wireless Solutions Pvt. Ltd and has been a developer for 10+ years. He has worked at SlideShare Inc. in its early years, building the backend, and then moved on to do a degree in HCI from University College, London. He now heads a team of 40 Ruby developers working in the mobile core network sector. He still programs more than his job description warrants.
    The Dragon Book by Aho and Ullman teaches many great things about writing compilers and parsers. But writing a compiler from scratch is often a daunting step for a fledgling programmer. Yet, compilers are useful little things that extend our craft in surprising ways. Ruby provides wonderfully accessible libraries to dive into compiler construction and the talk will focus on one of them: Treetop

    The talk will detail the construction of a simple filter language and using Treetop to parse grammar and interpret it, and then make it work. Treetop makes it very simple and intuitive to add new operators and new syntax, and the talk will walk through the addition of a new operator to the language. Towards the end, a simple cross-compiler will be discussed that translates our filter language into fast C.

    Vishnu's presentation is available in PDF format (2.2 MB).

    Video of part 1 of the talk is available here.

    Video of part 2 of the talk is available here.

  • Yashasree Barve
    :speaker => "Yashasree Barve"
    Yashasree Barve has been working at Tata Consultancy Services for the last 13 years as a technologist. She has worked as a developer, designer and architect across multiple domains such as Insurance, Retail, and Hi Tech using various front-end technologies such as Java, Java 2 Platform, Enterprise Edition (J2EE), Ruby, Ruby on Rails, and so on. She switched from Java to Ruby around 3.5 years back, and is now enjoying her work in the field of Ruby development. She has been a part of and in awe of the journey of her development group towards Ruby adoption. She has also been instrumental in bringing together the Rubyists in TCS through a community, and periodic Ruby Roundtables. Apart from Ruby, she is passionate about Agile methodology and Open Source. Her other interests are Web 2.0, Enterprise 2.0, Emergent Design and Evolutionary Architecture.
    This talk will highlight the story of an Enterprise that adopted Ruby and Rails as its preferred technology for development in its quest of being Agile over the last four years. This step brought in a makeover in the way the development team functioned as well as the way the operations performed their job.

    I would love to share my experience when the development teams embraced Ruby and Rails. The dev teams imbibed and personified the DRY concept by building and institutionalizing enterprise wide gems and plug-ins such as LDAP Management, Single Sign On, Authentication and Authorization, Usage Tracking. The team created an app that allows bootstrapping a new ruby application with enterprise specific plug-ins, configuring Continuous Integration, and deploying to shared dev box in minutes. The dev teams got hooked on to the engineering practices such as automation testing, automated deployments utilizing the power of Rails framework and components such as Capistrano. The adoption of Ruby truly changed the thinking and functioning of the dev teams.

    I would also like to talk about how the operations teams opened their world to open source, specifically Ruby. After the initial resistance to open source, the Ops teams now love the Ruby and Rails infrastructure. Ruby gives them immense opportunity to maximise automation, monitoring and management of applications. The Ops team is now inching towards one click deployment of applications across environments, surely a dream come true in any enterprise.

    Yashasree's presentation is available in PPT format (1.7 MB) and in PDF format (2.7 MB).

    Video of the talk is available here.

  • Karthik Sirasanagandla
    :speaker => "Karthik Sirasanagandla"
    Karthik Sirasanagandla is an application developer at ThoughtWorks India. Karthik has over 5.5 years of experience, primarily in Java/J2EE Platform. In his current capacity, he works on both development and deployment of a JRuby on Rails application; this experience has transitioned him from being a hard-core Java techie to a passionate Ruby programmer. An avid reader of both technical and non-technical books, he also occasionally blogs here.
    By personal experience, while transitioning from the world of Java to the world of Ruby, I felt great pain and agony, whenever I read statements like "Everything in Ruby is an object; classes themselves are objects". It took me more than a while to get it all right. I am of the belief that the experience is the same for many who transitioned to the Ruby platform. If you didn't experience this...lucky you! My reason for this experience is that during the early days of learning Ruby, I felt that the Ruby Object Model is some advanced topic as it is comes under Ruby Meta-programming, and that I can do away with it until I'm more than an intermediate level Ruby developer. In reality, though, any decent programming in Ruby meant understanding rightly - the Ruby Object Model. Understanding the Ruby Object Model helps not just in learning Meta-programming, but also improves code design with enriched knowledge and appreciations of the object model.

    In my presentation, I intend to talk about the Ruby Object Model, elaborating on the concepts of visualizing classes and objects in Ruby, how they are different from Java, method look-ups in Ruby, class/static methods in Java/C# vs. the ones in Ruby, mixins over inheritence and composition etc. All these concepts will be communicated by means of code snippets and no-nonsense visuals (object-like diagrams).

    Karthik's presentation is available in PPTX format (0.2 MB) and in PDF format (0.8 MB).

    Video of the talk is available here.

  • Brian Guthrie
    Srushti Ambekallu
    :speakers => ["Srushti Ambekallu", "Brian Guthrie"]
    Srushti Ambekallu has been involved in all areas of a project lifecycle - inception, development, business analysis (& even a bit of project management, but don't hold it against him), all the way to deployment. He has worked with multinational companies & startups. He spent the first few years working on .Net & Java and Ruby projects at ThoughtWorks before moving on to co-found C42 Engineering, a Ruby consultancy based out of Bangalore where he now works as a developer. He's worked with Ruby for a year and a half now.

    As far as open source is concerned, he is the author of XStream.net & Goldberg and has contributed features and bug fixes to other projects like Mogli & the Mail gem.

    Brian Guthrie has been writing bad Ruby code for five years, every line of it worse than the last. He started his Ruby career in Boston, and after joining ThoughtWorks went on to write increasingly bad Ruby code in Chicago, New York, Texas, California, and India. He is currently writing the worst Ruby code of his career in Melbourne, Australia. He is thrilled to return once more to India to share his mistakes with the vibrant Ruby community there, in the sincere and humble spirit of collective mistake-repetition avoidance.
    The Ruby community has driven a lot of technical innovation in deployment and configuration management over the last few years, and so the idea of delivering high-quality software rapidly should be familiar to most of us. But although our tools are state-of-the-art, getting them to work together properly can be surprisingly frustrating. In this talk, I'll explain how to implement a high-quality rapid build and deploy process using standard CI tools, Bundler, RVM, and Capistrano. I'll also discuss how to coach your developers, QAs, and client to be "production-ready, any time."

    Brian and Srushti's presentation is available in Keynote format (14.5 MB) and in PDF format (7.3 MB).

    Video of the talk is available here.

  • Bratish Goswami
    :speaker => "Bratish Goswami"
    Bratish works as a senior software engineer at Castle Rock Research, Kolkata, India. Born and brought up in Kolkata, Bratish received his master's degree in Computer Science from Beneras Hindu University, Varanasi, India, and started working as a software professional thereafter. As a passionate programmer and an opensource evangelist he tried and tasted lots of programming languages in his student-hood and finally settled with Ruby in his career. Other than computer technology, his other interests include painting, literature, movies, music and photography. His blog can be found here and can be reached at bratishgoswami AT gmail DOT com or bgoswami AT crri DOT co DOT in.
    Redis is a fast, in memory, persistent key/value store. It is often referred to as a remote data structure server, since keys can contain strings, hashes, lists, sets and sorted sets.

    The first part of the talk will walk the audience through the basic features of Redis, starting from the installation to the supported data structures and the simple command set to manipulate them along with some stats related to them. Through its Ruby port Redis-rb, Redis datatypes resemble datatypes of Ruby, which makes it very natural to the Ruby programmer to use it. The simplicity and the power of Redis with Ruby will be discussed in this part. This will include a parallel hands-on session depicting operations and snippets.

    The second part of the talk will cover some real world use cases. Places where Redis with Ruby is used successfully and places where Redis can win. Detailed review of a few libs/apps built around Redis. Benchmarks, master-slave replication and Redis-cluster will be discussed. And finally, places where Redis is not a good fit.

    The whole talk will circle around the concept of a perfect jugalbandi between Ruby and Redis.

    Bratish's presentation is available in PDF format (0.1 MB).

    Video of the talk is available here.

  • Niranjan Paranjape
    Sidu Ponnappa
    :speakers => ["Sidu Ponnappa", "Niranjan Paranjape"]
    Sidu Ponnappa has been writing code since he was six. He spent several years in high school writing and re-writing UI widget libraries in BASIC before discovering C++ and Object Orientation in junior college, which helped keep him occupied through his engineering degree. He's worked with Ruby since mid-2006; his first attempt at a startup used Rails 1.0. He has also spent a few years working on .Net, Java and Ruby projects at ThoughtWorks. He has spent the last year helping co-found C42 Engineering, a Ruby consultancy based out of Bangalore where he now works as a developer.

    On the open source front, he is involved in the Wrest, Pox Paginate and Goldberg projects, and has contributed features and bug fixes to the RSpec project.

    Niranjan has spent five years writing code for a living. He started out at Infosys, wised up to the game and moved on to ThoughtWorks where he spent two pleasant years first working on Java and then on Ruby. All told, he's spent about three years building Ruby and Rails projects thus far. He left ThoughtWorks early in 2010 to co-found C42 Engineering, a boutique Ruby and Rails services firm based out of Bangalore.

    He is the co-author of several obscure open source projects such as Wrest, PoxPaginate and Goldberg. You can find the full list of the projects he hacks on at here and here.
    The Ruby ecosystem is pretty awesome when it comes to developing or consuming HTTP APIs. On the publishing front, the Rails framework is an attractive option because it supports publishing what are popularly (but inaccurately) referred to as 'RESTful' APIs quickly and effortlessly. On the consumer side, the Ruby ecosystem provides several very fluent and powerful libraries that make it easy to consume HTTP based APIs.

    Since a significant proportion of projects today require that APIs be both published and consumed, many of them wind up choosing Ruby as a platform for the reasons mentioned above. This talk is targeted at folks that are currently on such projects, or anticipate being on such projects in the future.

    We will cover:

    Consuming HTTP APIs:

    1. The basics of making HTTP calls with Ruby
    2. The strengths and weaknesses of Ruby's Net::HTTP across 1.8, 1.9 and JRuby (possibly Rubinius if we have the time to do research)
    3. Popular HTTP libraries that either make it easier to do HTTP by providing better APIs, make it faster by using libCurl or both
    4. Different approaches to deserializing popular encoding formats such as XML and JSON and the pitfalls thereof

    Producing HTTP APIs using Rails:

    1. The basics of REST
    2. What Rails gives you out of the box - content-type negotiation, deserialization etc. and the limitations thereof
    3. What Rails fails to give you out of the box - hypermedia controls etc.
    4. What Rails does wrong - wrong PUT semantics, no support for PATCH, error handling results in responses that violate the clients Accepts header constraints etc.
    5. How one can achieve Level 2 on the Richardson Maturity Model of REST using Rails
    6. Writing tests for all of this

    At the end of this, our audience will understand how you can both consume and produce HTTP APIs in the Ruby ecosystem. They will also have a clear idea of what the limitations of such systems are and what the can do to work around the limitations.

    Sidu and Niranjan's presentation is available in Keynote format (5.3 MB) and in PDF format (2.9 MB).

    Video of the talk is available here.

  • Munjal Budhabhatti
    :speaker => "Munjal Budhabhatti"
    Munjal Budhabhatti is a lead consultant at ThoughtWorks. He has over 13 years of experience in designing large-scale enterprise applications, and has implemented innovative solutions for some of the leading data centers, microfinance, and financial organisations in Africa, Asia, Europe, and North America. He spends most of his time creating well-designed applications using agile processes.
    ThoughtWorks has been working with Rackspace, one of the leading hosting companies in the world, on a large scale data center automation project using Ruby. We want to share some insights on how Ruby enabled Rackspace, with a small development force, to challenge Amazon.

    1. Developers investing time learning and programming the domain and not the framework
    2. Ease of refactoring for major domain changes such as ipv6, architecture
    3. DSLs allowed SMEs, instead of developers, to easily tailor business logic while reducing everyone's work load
    4. Powerful Enterprise integration with disparate system via Atom, REST, custom message queue, and even SOAP
    5. Realtime manipulation of interdependent systems for integration testing
    6. Ruby philosophies and communities
    7. Q&A


    Munjal's presentation is available in Keynote format (0.9 MB) and in PDF format (0.3 MB).

    Video of the talk is available here.

  • Pankaj Bhageria
    :speaker => ["Pankaj Bhageria"]
    I've been coding since college. Before moving to Rails, I've worked with C, C++, PHP, .NET, Java, Perl, etc. Around four years ago, I built my first Rails app for an NGO. I am currently working with Sumeru Software Solutions as a technical lead. My path of learning Rails was not so smooth. Not wanting others to go tread the same path, I started my blog http://www.railsguru.org. I have also conducted Ruby on Rails training in Bangalore. I plan to conduct some more in the near future. I am an expert debugger. I like to get into the framework/plugins and check out what exactly is going on there. I like to learn, teach, code, dance and meditate.
    This talk will take the audience on the path of building a basic version of a web framework like Rails. Most of us think of Rails as a black box. We do not know, or we haven't tried understanding what is happening behind the scenes. Starting from a very basic Rack server, we will build up a Rails framework with features like routing, controller, action, default views, filters, model, etc. It may not be exactly the same as what happens in the actual Rails framework, but it will help explain the concepts.

    Some basic knowledge of Ruby is expected. I will teach some dynamic Ruby that is required for to follow this talk. Finally, we will develop a web framework that will be similar to Rails. Since we will be developing only the basic features, the number of lines in this solution will be very less.
    People would be astonished that we actually built a Rails framework in very few lines of code.

    Why should we build our own framework when Rails already exists?
    1. Make the Rails black box more transparent, i.e. help us understand what's happening behind the scenes
    2. This will encourage people to go and hack the framework
    3. It will increase people's confidence which will encourage them to contribute to Rails

    Pankaj's presentation is available in PPTX format (24.6 MB).

    Video of the talk is available here.

And there's more! Watch out for keynotes by Yehuda Katz, Ola Bini, Nick Sieger, Chad Fowler (via videoconf) and Yukihiro "Matz" Matsumoto (pre-recorded video presentation).