Speakers
- Clifford Berg
- David Bock
- Scott Davis
- Rick DeNatale
- Esther Derby
- Robert Fischer
- Neal Ford
- Chad Fowler
- Andrew Glover
- Stuart Halloway
- David Hussman
- Yehuda Katz
- Rich Kilmer
- Carl Lerche
- Matthew McCullough
- Joe O'Brien
- Andrea O. K. Wright
- Russ Olsen
- Bob Payne
- Christopher Redinger
- Johanna Rothman
- Brian Sam-Bodden
- Ken Sipe
- Brian Sletten
- Kevin Smith
- Venkat Subramaniam
- Nathaniel Talbott
- Laurie Williams
Rich Kilmer
Richard Kilmer is the founder of InfoEther and Ruby Central.
Presentations
MacRuby and HotCocoa
MacRuby is an implementation of the Ruby language that runs on the Objective-C runtime under OS X. MacRuby is based on Ruby 1.9 but contains substantial modifications including the merging of object models (every Object is an NSObject), using the Objective-C 2.0 generational garbage collector, moving core types (String, Fixnum, Array, Hash) atop their Objective-C counterparts and replacement of standard libraries to more optimally integrate with OS X. MacRuby is also undergoing a substantial internal rewrite and this talk with discuss the new Roxor LLVM-based virtual machine and new Obj-C based IO subsystem.
MacRuby includes a unique library, HotCocoa. HotCocoa is a thin, idiomatic Ruby layer that sits above Cocoa and other frameworks. Cocoa classes have extremely verbose method and constant names. A substantial amount of code is written to just instantiate and configure instances of these classes. Interface Builder is used by most developers because it hides the complexity of manually configuring controls, but at the expense have having to use a GUI builder and the obscuring those configuration options inside the IB user interface. One of HotCocoa's chief goals is to allow Interface Builder simplicity, but in Ruby code. Buttons, Sliders, Windows, WebViews...the whole works...HotCocoa simplifies this process by creating a mapping layer over the top of Objective C classes. HotCocoa adds Ruby-friendly methods, constants and delegate techniques that look refreshingly simple, but do not prevent full use of the Cocoa APIs.
This talk with introduce MacRuby and HotoCocoa and show demonstrations on how to use it to quickly build OS X desktop applications with Ruby.
Context-oriented Programming with Ruby
If the model layer of MVC has ever left you feeling hollow inside, this talk is for you. For the model side of MVC, building simple graphs of objects are where most of us are at with Ruby. With libraries like ActiveRecord and DataMapper we feel we can work in the world of objects and get full object-oriented expression and automatic persistence into a relational database. For many though this just isn't enough, especially as the requirements of the model layer get more complex. In addition to complex object relationships, schema evolution creates problems because of its relational database foundation. That's some of the reasons for the resurgent interest in object-oriented and schemaless databases to hold our model object graphs.
What if simple graphs aren't the end though? What if the act of relating objects could adjust the actual behavior of those objects? What if the data persistence layer could understand and enable this contextualization of objects? This talk will discuss an innovative approach to the model layer of programming which we've named context-oriented programming. Context-oriented programming allows you to declaratively express the structure of objects and then, based on that structure and how those objects contextually relate to each other, assume different behaviors. Not limited to fixed schemas, objects are stored in CouchDB allowing a specific object to be viewed differently as the state of that object changes, avoiding traditional schema evolution problems. CouchDB also facilitates replication and scaling to massive numbers of objects. This talk will introduce this new paradigm through the project we are building it for, an extensible Electronic Medical Records system. The EMR system had the requirement for hands-off model layer, and one that could evolve on a per-practice basis but also enabling sharing objects across practices. Come to this talk and see how you can use context-oriented programming for your future projects.