Steve Klabnik keynote speaker
Functional Reactive Programming in Ruby with frappuccino
Ruby's strengths lie in its ability to blend styles. We all know about OOP and Ruby, but it often leans functional, as well. There's a style of writing programs called 'Functional Reactive Programming' that is extremely useful in the Haskell world, but isn't really used in Ruby at all.
In this talk, Steve will show you FRP, an implementation of it in Ruby, and how to write programs in this style.
Steve Klabnik describes himself as Rails committer, Jumpstart Lab instructor and nomad philosopher!
Jim Weirich keynote speaker
Kata and Analysis
A Code Kata is a simple programming exercise, practiced repeatably by a developer. Much like a musician practices scales and finger exercises to develop his musical skills, a developer will practice code katas to develop his programming skills.
This talk will be a live performance of a simple TDD-based code Kata, followed by an analysis of the forces and choices involved in the feedback loop between the code and the tests encountered during the kata. By examining this interaction of tests and code, we come to a better understanding of how to use tests to actively affect the direction of our design. By reflecting on the process, we understand how to pick "what to test next".
This talk is targeted for developers who have started using Test Driven Design (TDD) and feel that they don't quite "get it" yet, and are looking for guidance in the technique.
Jim Weirich first learned about computers when his college adviser suggested he take a computer science course: "It will be useful, and you might enjoy it." With those prophetic words, Jim has been developing now for over 25 years, working with everything from crunching rocket launch data on supercomputers to wiring up servos and LEDs on micro-controllers. Currently he loves working in Ruby and Rails as the Chief Scientist at Neo, but you can also find him strumming on his ukulele as time permits.
Aaron Patterson keynote speaker
In this talk, Aaron will be speaking about upcoming technologies in Ruby on Rails. He will also be speaking about his experience as an Open Source Software developer, and how this relates to the work that he does in Rails. We'll talk about not just software development techniques, but also techniques for developing ourselves.
Aaron Patterson has been a programmer since 1999. He started programming Ruby in 2005, and got his first job programming Ruby in 2006. Since then, Aaron has written many Ruby libraries and joined the Ruby core team and the Rails core team. In his free time, Aaron enjoys embedded system development with Ruby, reading, and cooking. He one day hopes to become a professional programmer.
Andy Lindeman keynote speaker
Ruby <3 Open Source
As Rubyists, we depend on open source software to power large portions of our applications. Ruby is free and open source. High-quality frameworks like Rails are free and open source. Gems are ubiquitous.
Yet there are rumblings that Rubyists take more than they give. And open source requires giving.
In this talk, we'll reflect on the immensely positive impact of open source software. We'll also reflect on why it's necessary and worthwhile to give back. Finally, we'll close with some practical suggestions on how to get involved.
Andy Lindeman writes mostly Ruby and Rails for his day job, but he has had exposure to a lot of different technologies over the past few years including Java, Objective C, C# and various frameworks and tools. In his personal time, he tinkers with Clojure, Erlang, and Elixir. He loves open source software and mostly works with the RSpec project.
Nick Sutterer guest speaker
Off the Tracks - Challenging the Rails Mindset
Rails - a word that stirs programmer's blood. It brought us testing, easy web app building, database abstraction and hundreds of extension gems. Why not take it to another level and discover how to apply some simple OOP techniques in your Rails project? Let's explore concepts like view inheritance, representers and modeling your domain with plain Ruby objects and learn about some refreshing aspects of this framework.
Nick Sutter is proud to be a member of the Ruby open source community. His Cells and Apotomo projects have been bringing increased view modularity and event-driven programming to Rails for years. Do buy him a beer sometime!
Taking Ruby Community in India to a new level
So you are here at the only ruby conference in India, and have the following questions running through your mind:
- How come there aren't more events like this in India where I can meet fellow ruby enthusiasts across the nation on a more frequent basis?
- In fact, why isn't there an active ruby community in my home town? Why can't someone organize regular meetings so that I can get an opportunity to meet other local ruby developers in person and learn from them on a regular basis?
- How would it be if every major city in India have a size-able ruby & rails community solving real-world problems in the local community and creating job opportunities galore for the local developers?
This talk will address all that and more, while exploring the numerous ways in which you - yes, you who are reading this - can contribute towards making the Ruby community in India to scale new heights, irrespective of how long you have been programming in ruby.
Bring your community building hat, and explore with me the beautiful future we could create together for the Indian ruby community!"
Concurrency and Ruby
"With the rising popularity of JRuby and Rails itself allowing concurrent requests by default, it is about time we Ruby programmers learned something about dealing with concurrency.
This talk will focus on explaining thread safety, immutability and concurrency for the Ruby programmer and how to avoid basic pitfalls and write code that works well in a multi-threaded environment. We will also look at using libraries like Akka that provide a nice abstraction over writing multi-threaded code.
Finally, we will also look at how functional programming deals with concurrency in a better manner and what tools does Ruby provide to write more ""functional"" code."
Dissecting Ruby with Ruby
Underneath the beautiful veneer of our Ruby libraries lies a twisted tangle of writhing guts. Maybe you're curious how the pieces fit together or maybe you're tracking down a bug, either way it's easy to get lost in the blood and bile that ties our code together. In this talk you'll learn how to use simple and sharp Ruby tools to slice into large libraries with surgical precision. We'll do some live hacking on Rails on the stage and cover useful code probing techniques. Turn your impossible bugs into pull requests, and level up your programming skills by Dissecting Ruby with Ruby.
Inside Git Guts with Ruby
"Most ruby programmers use git in their daily use. I would like to show that git is beyond just commit and pull/push. I want to show how simple, the basic architecture of git is, so that people appreciate and understand it better.
My favorite reference on git is http://git-scm.com/book. I have a hard copy of the book. In fact, after getting inspired from the book, I conducted a training session on git internally in my company using these slides(http://dl.dropbox.com/u/51548306/git-hands-on-2.pptx)
In this session we will see how we can quickly customize git in Ruby and see the insides of Git. I will showcase commands like:
Shows the content of any git object. We will use this to walk through a chain of commits, their trees and blob objects
Reverts your last commit
git make subtree
Does everything required to do a subtree merge in your git repo
The whole presentation will be in terminal and we will explore the .git folder and see what the relevance, of a particular file/folder is.
Ruby, Rock and Roll
Muse is a Ruby domain-specific language for creating digital music. I will talk on how Muse can be used to create digital music through a simple analog software synthesizer, either transcribed from existing music scores, or algorithmically created out of data from various sources. Existing Ruby libraries to generate digital music mostly generate MIDI files that require you to run it through a synthesizer to produce the actual sound files. Muse actually generates sound files from the first principle and I will show you how I did it.
Split In Between
We are all building products - web products , ours or other's; or dreaming about it. And Rails, Agile and Sound OO design makes that simple. As simple as following well laid out instructions ( assuming off course, that a viable idea has first come out of *somewhere* and has *someone* chasing it).
What I intend to do with this talk is to ponder, publicly, on the consequences of introducing a simple design decision while going about *initial* brick laying - splitting the product into separate API and front_end processes from the very start; and consider the tech and biz consequences of this over time.
Duh. An API sounds very elementary; especially if your product is designed to have multiple front_ends spanning the web and mobiles. I would still think this an open topic and an excellent way of spending 25,000 minutes of collective time and here's why:
* I saw this decision taken on a project when it was spawned on which I ended up spending 3 years (and foreseebly another 5 years) on and have been wondering why ever since.
* Over the years, I have alternatively defended and opposed this design principle on grounds of - business scalability, over engineering, maintenance costs
* I have effectively used this design decision to generate drastic business viability in terms of: branding A/B, product pruning and A/B testing, 3rd party vendoring of front_end apps, localization and internationalization
* I have seen the technical consequences of this action play out: initial engineering overhead, cost bonus on front_end revamps, modularity and malleability of core business logic, offshore_ability of front_end modules
I aim to keep the talk lighthearted and with brevity in mind, intend to run through the core idea of a split, common rants, the trade-offs and consequences, business scalability and viability that this achieves, technical and maintainability consequences, ActiveResource and it's limitations, and my vision of the ideal JSONified almost_RESTful API approach.
krypt - OpenSSL alternative for ruby
"In this talk I speak about krypt - "platform- and library-independent cryptography for Ruby", and related work around it.
krypt aim's to overcome many of OpenSSL drawbacks and to be an OpenSSL alternative for ruby and other languages.
Cryptography can be overwhelming, so I would cover various overviews, and discuss projects spawned by krypt, why should people care about it, why jruby started using it and is moving from jruby-ossl to krypt completely.
I will also discuss Fuzzbert, a Random testing framework that krypt uses.
More info about krypt can be found at this post on Martins blog
About: "krypt" project was developed by Ruby core members Martin Bosslet along with Hiroshi Nakamura. It has since then spawned to various contributors and projects."
A survey on how to create an API using different libraries
The objective is to show that Ruby has a rich ecosystem for building API servers pick one that you like
Would be covering Grape and Webmachine for REST APIs and Celluloid for RPC Apis
Grape is like Sinatra but focussed on creating a REST API
Webmachine is a port of an Erlang library which treats the HTTP request-respose cycle as a state machine
Not covering rails-api as it is like Rails
Celluloid is a framework for building multithreaded programs Will be using it to build a RPC server
"We all love Ruby for writing software scripts, websites, applications. Would it not be awesome to use it also for interacting with hardware?
With the proliferation of internet connected devices or usually called as 'The Internet of Things' its become important to explore opportunities with hardware hacking for fun and everyday automation.
The talk aims to be an introduction of how to interact with an arduino kit using ruby, available gems and other possibilities. It is meant for beginners who are just starting out with Arduino / Ruby and want to see the what it beholds.
(This talk would mainly consist of my experience of working with these technologies, as I have just picked them up over the last couple of months and hence best suited for beginners.)"
Adventures with Microservices in Rails
"We've spent the last year working on a project where we've deployed 6 micro services into production, and we plan to carve out a few more. In this talk we will share our experiences with building a micro service based architecture - the good, the bad and the ugly.
- What are micro services - can we agree on a definition?
- When/Why/How micro services?
- Why NOT micro services?
- Managing Continuous delivery with micro services
- A few design principles that we followed"
The Tao of Ruby
Lao Tzu's ""Tao Te Ching"" is the second-most translated book in the world, after the Bible. It's 81 poems share with us a glimpse of philosophical thought from China, over 2500 years ago. These poems, like other substantial philosophical literature, have largely stood the test of time and still have lessons to teach. We will be reframing the lessons from the Tao Te Ching as lessons we have learned as the operators of humanity's greatest artifact.
On naming: Lao Tzu warns us that names are not eternal and that while names have their utility, we should recognize their limits. We see the same in our abstractions: we can walk too far down the road of pattern-recognition whether named patterns or patterns captured as an encoded abstraction; we can pile up too many abstractions or layers and in our attempt to separate ourselves from complexity we create a new kind of complexity; we can become overly invested in our abstractions, patterns, and layers -- and the names we give them -- such that they outlive their usefulness.
On returning: _why recently released a series of dark stories describing his exit from the public eye and from programming. One of his central themes was his preference for the greater longevity of human languages over computer languages. His fate is a warning: Being a programmer requires that we enter into our endeavour with a willingness to let go of what we create.
On usefulness: ""We turn clay into a pot; But it is the space where there is nothing that makes it useful."" Software is not a physical thing and, as such, most of its construction occurs within our imagination. The words we type into a text editor are only the recipe. Upon execution, these words come to life and a world of hidden beauty and complexity erupts. Even within the runtime environment of a program, there are hidden solutions and hidden problems. There is always more to understand.
On humility: ""Knowing others is wisdom; Knowing the self is enlightenment. Mastering others requires force; Mastering the self requires strength."" Programming is a social task. We must always remember there is no perfection to our craft and that compassion for our coworkers is essential. Here, I will go into a brief story about the worst programmer I've ever known.
Each of these themes (and others) will be explored with code which highlights the idea or exemplifies change over time as described in the passage.
Other themes may include: beauty vs. ugliness, avoiding greed, effortlessness, the impartiality of the universe, accepting disgrace, fruit over flowers, constancy and sustainability, leading without dominating, ""a great tailor makes few cuts"", weapons are instruments of fear, creating without claiming, soft (dynamic) overcoming hard (static), letting go of knowledge and opinions, avoiding distraction, ""without awe there is disaster"", the simple life, laws create thieves, ""a journey of a thousand miles starts with a single step"" / ""give as much care to the end as the beginning"", etc."
Ruby loves Unix
Applying beautiful Unix idioms to build a Ruby prefork server
"The Unix programming model has existed for more than 40 years now. Unix programming techniques and principles have transcended programming languages and frameworks du jour.
Also, Ruby was built for unix hacking. Implementing unix system calls in its standard library was the best perlism Ruby adopted.
Learning Unix programming and its idioms will make you a better Ruby programmer. Your ruby programs will be friendly citizens on your *nix server making them easy to administer. You will be able to daemonize your code at will. Your concurrent ruby code will be easy to grok and debug. You will have deeper understanding into the inner working of popular tools like the Resque job scheduler and the Unicorn web server.
This talk is divided into two parts. The first part will be a dive into the basic building block of the unix programming model: processes. We will learn the application of the myriad unix system calls such as kill(2), fork(2), execve(2), pipe(2) and friends to our processes and understand various important idioms. The next part will involve using the knowledge we've gained to build a Ruby preforking server. Our daemon will follow the classical master/worker prefork model wherein the master will fork and monitor its children and use the operating system to load balance work amongst available children. Our daemon will demonstrate classical unix idioms like daemonizing via double fork(2), administration via signals, IPC via signals and pipes, concurrency via fork(2) and many more."
BioRuby...Ruby in the living world
5 years after ruby programming language came into vogue(1995), bioruby came into existence in 2000, both developed in Japan. BioRuby project provides an integrated environment in bioinformatics for the Ruby language. This project is supported by University of Tokyo (Human Genome Center), Kyoto University (Bioinformatics Center) and the Open Bio Foundation.
On one hand we have the Bioinformatics, the large database of the huge genome sequences, the search algorithms to search the gene similarity between different organisms, gene-mutations using the popular search tool Blast, Fasta etc. BioRuby helps us to do the same searching thing using ruby programming language. As ruby is a pure object-oriented programming language(everything in ruby is an object) and being a easy to read and write, it's fun to use here without being lost in the plethora of genomic data.
Learn about the genes, which controls everything you do and find out how you can ease the task of your similarity with a mouse, and I am not kidding! Welcome to the ruby in the living world, integrating ruby with the Bioinformatics and have fun.
Manu Singhal is a Rubyist who develops enterprise mobile apps for Column Technologies. Besides programming he loves playing tennis and is a regular participant in Mumbai Marathon.
Doel Sengupta is a mobile and a web developer, using agile methodologies. I have used ruby and have taken part in several open source social projects. Apart from coding I like travelling, a complete foodie and loves cooking and photography, dancing. You can find me in http://doelsengupta.blogspot.in/.
DRuby for testing distributed systems
"Multiple small services are more scalable and favored over single monolithic applications. But, after you split the app into multiple services, you lose the flexibility of testing using Factories (data setup) and ActiveRecord (data verification). This talk explores a way to use DRuby to access factories/models across multiple services from an external Cucumber testsuite to test a distributed system like one big app.
- This talk is based on using druby for testing 2 experimental services and not based on real world usage: https://github.com/sathish316/druby-integration-tests
- * This talk uses the word distributed systems loosely to mean multiple small services in an SOA based architecture"
Turning blind eye to rails development "?"|"!"
"All of you are aware that rails makes task of web development a lot faster and easier. But here are a couple of questions to each one of you reading this ("?"). Have you been turning a blind eye to the fact that there are people facing situations that don't allow them to use the web application you develop the way you use? ("!"). To begin with, would you like to literally turn a blind eye yourself and understand how web applications could be used without looking at it?
I plan to reveal the concept of Web Accessibility implementation using W3C's WCAG and WAI-ARIA standards. Finally where can this really be put into rails."
Graph Databases - When crunching numbers is just not enough
"Do you really care about the temperature or humidity or wind velocity? Or do you actually care about catching cold in a windy weather or perhaps getting a heat-stroke in tropical summer?
When you track the Click Through Rates (CTRs) of your email marketing campaigns, do you really bother about the number of people who opened your emails? Or are you looking for the users of the system who are more likely to buy your product?
Which ones among your Facebook Close Friends are the most likely to hang out with you in case you asked them for dinner tonight?
Let's skip the number-crunching analysis that follows. How about building systems which directly take you to the answers you are looking for, without worrying too much about the numbers that play a role in between? This talk opens a perspective of arriving at a solution by applying graph theory in practice. Here we discuss common scenarios where a graph database could fit and scenarios where it need not fit. The talk covers some of the most popular Open Source graph databases available right now.
This talk also covers various Ruby bindings for some Open Source graph databases. Rubyists who are on their course of building software which involves recommendation, predictive analysis, collaborative filtering and context mining, should find this talk useful."
Create Pure Native Apps now with Ruby - YES WE CAN !!!
Ruby developers are no longer an outcast for creating pure native iOS applications. With revolutionary tool chain RubyMotion we can make use of every bit of powerful iOS SDK and the best part of this is without using Xcode ;)
In this talk we will first introduce you to RubyMotion and next dive deep into how RubyMotion works. We will further discuss how RubyMotion has an edge over iOS development using Objective C, we will discuss in depth on RubyMotions uber cool features like "terminal based development"; "RubyMotion flavored gems", "REPL" and many more
Write your Ruby in Style
"If you're living in a cave and coding all alone, then you can safely skip this talk !"
With increasing no of companies, teams and developers making Ruby their primary programming language and a literal explosion of open source libraries, we're done with the era of individual hackers and have entered into the era of large, distributed teams of developers building complex systems with Ruby (and Rails). Therefore, it's imperative that both our private and public Ruby code-bases remain consistently readable and maintainable, while they change hands over longer periods of time.
This talk will highlight the importance of following a consistent 'Style' when writing your Ruby and Rails code with lots of examples along with first hand experiences and opinions derived from years of working with Ruby on several small to very large Ruby code-bases. I will also provide useful references and demo tools which could help your team follow the best practices.
My goal is to make your teammates love your code. Or at least, hate it a little less :-)
Bhavin is an Entrepreneur, Consultant and Trainer who has been working with and promoting Agile Software Development for almost a decade and Ruby and Rails since 2006. He has organized, volunteered and spoken at various Agile and Technology conferences. Presently, he is building a team at MavenHive (www.mavenhive.in) to offer expert technical consulting to startups around the world.
This talk is about how ruby can be used to write exploits and carry out penetration tests using the Metasploit Framework which happens to be the largest ruby project so far. MSF provides array of commercial grade exploits and an extensive exploit development environment, all the way to network information gathering tools and web vulnerability plugins. I shall give a quick intro to the interfaces that MSF provides, different components of the framework, and how it can be used in different phases of security analysis and pen-testing. I shall mainly talk about the usage of ruby for scripting payloads and other exploits.
Security is something that is largely ignored by developers and other IT professionals. I intend to show how MSF makes it simple enough through the use of ruby.
NOTE: This is not a tutorial on security or vulnerability exploitation as RubyConf is not the forum for it. The main focus of this talk will be to demonstrate usage of ruby for pen-testing.
Audience: It can very well be a Beginner level talk since in terms of ruby, I'll stick to the basics; but I wont spend too much time trying to explain pen-test concepts like vulnerability, exploit, payload, etc; so a basic understanding of these would help.
Debugging is an art. And to be an effective artist, an artist must be intimately familiar with their tools. In this talk, we'll start gently and finish strong to ensure that there's something for everyone. We'll cover when to use a debugger, which debugger to use, and how to use the debugger, and how to quickly configure your debugger for maximum utility. We'll touch briefly on pry and why pry is not a debugger, except when it is.
Developers are always looking for ways to boost productivity. Effective debugging allows one to more quickly discover inaccuracies between our expectations and how the software actually behaves.