September 4-6, 2008
Most people probably think of Input/Output operations as pretty trivial stuff, especially in a language like Ruby that handles so many of the details for us. While it’s true that it can be easy to read or write a little data, I/O is a vast topic covering a lot of ground.
This advanced training will be a highly focused Ruby workshop designed to increase attendee knowledge in many different aspects of doing real world I/O in Ruby applications. I/O is everywhere, so the skills learned in these lessons should benefit any programmer in their day to day work.
This will be a brain engaged event featuring quizzes, two labs with hands-on help available, and group discussions. Participants will receive a T-shirt at the end of the training.
In order to fully take advantage of the capability of your Web Framework, you have to know how to use it to solve complex problems. In this talk we’ll look at how to solve some Advanced programming problems. Each topic will be discussed, and then the audience will be provided some code to refactor themselves using these principles. This way developers will walk away from the tutorial with real experience with dealing with some of these advanced issues. Here is a small preview of the topics that will be covered:
Traditionally, testing is seen as the last step in the software development cycle. It’s that tedious step where you show that the software you’ve already written does what it claims. Testing in this manner is boring, and few developers like to take the time to do it.
Red / Green / Refactor turns testing on its head. Instead of becoming an ‘after the fact’ effort, testing becomes an integral part of the development cycle. Instead of a tedious effort that consumes extra time, we find that driving design via tests and specifications actually cuts down on debug time and code defects. Not only does testing become fun, but we get to deliver more reliable and robust code … faster.
Jim Weirich is the Chief Scientist for EdgeCase LLC, a Rails development firm located in Columbus Ohio. Jim has over twenty-five years of experience in software development. He has worked with real-time data systems for testing jet engines, networking software for information systems, and image processing software for the financial industry. Jim is active in the Ruby community and has contributed to several Ruby projects, including the Rake build system and the RubyGems package software.
Joe O’Brien is a father, speaker, author and developer. Before helping found EdgeCase, LLC, Joe was a developer with ThoughtWorks and spent much of his time working with large J2EE and .NET systems for Fortune 500 companies. He has spent his career as a developer, project manager, and everything in between. Joe is a passionate member of the open source community. He co-founded the Columbus Ruby Brigade and helped organize the Chicago Area Ruby Users Group. His passions are Agile Development in the Enterprise, Ruby, and demonstrating to the Fortune 500 the elegance and power of this incredible language.
A well designed object oriented system consists of a group of object cooperatively interacting to achieve a common goal. Unfortunately, this large web of interacting objects makes testing difficult. If you need to create a large number of collaborating objects just to test a single object, testing becomes difficult and slow.
Mocking attacks the “web of collaborators” problem be providing fake objects to stand in for any needed collaborators. The fake objects act sufficiently like the real objects so that tested code can be run in isolation. Using mocks appropriately can lead to better code coverage and faster running tests.
This 3 hour training session will cover the use of FlexMock, a powerful Ruby mocking library. Topics covered will include: simple mocking and stubbing, method parameter matching, mocking complex behavior and techniques for database isolation.
Labs:
Jim Weirich is the Chief Scientist for EdgeCase LLC, a Rails development firm located in Columbus Ohio. Jim has over twenty-five years of experience in software development. He has worked with real-time data systems for testing jet engines, networking software for information systems, and image processing software for the financial industry. Jim is active in the Ruby community and has contributed to several Ruby projects, including the Rake build system and the RubyGems package software.
Joe O’Brien is a father, speaker, author and developer. Before helping found EdgeCase, LLC, Joe was a developer with ThoughtWorks and spent much of his time working with large J2EE and .NET systems for Fortune 500 companies. He has spent his career as a developer, project manager, and everything in between. Joe is a passionate member of the open source community. He co-founded the Columbus Ruby Brigade and helped organize the Chicago Area Ruby Users Group. His passions are Agile Development in the Enterprise, Ruby, and demonstrating to the Fortune 500 the elegance and power of this incredible language.Maybe you inherited a mess of a Rails project – or perhaps your own codebase is poorly-tested, not very DRY, or just generally confusing. Worse yet, maybe your Rails site has slowed down to a crawl or even stopped working entirely. Whatever the reason, it’s time to refactor.
In the first half of the day we’ll go through real-life examples of (bad or just plain shameful) code we’ve written and refactored, give tips on how and when to start, and show you how to avoid the need for a future refactor. In the second half, we’ll introduce common Rails performance pitfalls, how to diagnose them, and how to solve them. We’ll also talk about other ways to speed up your app.
Throughout this lab heavy course we’ll show you how to wrangle ugly code and inject best practices wherever possible. Some of the topics that we’ll cover include:
This will be a interactive course; feel free to bring your own code samples, questions, and examples. You’ll leave with loads of knowledge to occupy your brain noodle, a new found sense of purpose and self worth, and plenty of the ever-present con-swag you know and love.
Adam has a passion for elegant solutions and beautiful code. He’s a Ruby (and Rails) evangelist who advocates test driven development and web standards. Before joining Intridea, Adam worked at Revolution Health building large-scale applications used by millions of people each month.
A former computational scientist, Pradeep was writing simulations in Ruby well before the language became fashionable. Since then, he has been working with and thinking a lot about social networks, machine learning and applying mathematical models to social data. At Intridea, he’s responsible for researching and developing emerging web technologies, launching new products and writing beautiful code. Chris Selmer
Chris is a Ruby on Rails architect at Intridea with over 10 years of project leadership and hands-on development experience. He specializes in leading small teams on fast-paced development projects. As Director of Client Solutions, he oversees Intridea’s client services efforts. Chris spoke at Railsconf 2008 on developing web applications in 48 hours, is an active member of the Rails community, and helps run the Washington DC Ruby User Group.
From understanding Ruby community best practices to following âÄúThe Rails WayâÄù âÄì the thoughtbot team will provide knowledge gained from our experience building rails backed web applications. You will learn how to maximize the readability, maintainability, scalability, and consistency of your codebase âÄì and youâÄôll learn how to apply practical concepts from a leading Ruby on Rails development shop. YouâÄôll learn the following concepts and how to apply them as we step you through building a Rails application:
By starting with the Rails template (default plugins, configuration options, etc) we use for our client work, youâÄôll be able to hit the ground running. WeâÄôll discuss some of the conventions and design decisions used in the template.
At thoughtbot, we practice design driven âÄì the user interface for the application is created before the actual development begins. In this course we will be building an small Rails application for which most of the user interface is already built. We will introduce the application weâÄôll be building throughout this of the user interface is already built. We will introduce the application weâÄôll be building throughout this course, and then lead you through adding some base functionality for the application weâÄôll build throughout this course.
After developing the base of our application in Section 1, we will add additional functionality, through the presentation of modifications to existing screens, as well as the additional of new screens, that will expose the need to address more advanced topics, such as more complex active record relationships, metaprogramming, and offloading additional processing with rake tasks, and other approaches to asynchronous functionality.
At this point, we have a good deal of code in place for our application, and weâÄôll show you how to refactor parts of it into reusable components. YouâÄôll learn how to build gems and plugins, how to properly manage them in your applications, and how to contribute back to the Rails community by distributing your work.
Now that the application is complete, its time to deploy. This section will cover deployment best practices, including proper use of source control management (trunks and tags), effectively using Rails environments (staging and production), and capistrano, and our recommended production Rails stack. Additionally, we will cover application monitoring options, both open source options such as exception notification, God, and Monit, as well as commercial tools like Scout and Five Runs.
In addition to gaining real world experience and knowledge that will prove invaluable during your next Rails project, youâÄôll be armed with the following: The full source code to a small Rails application âÄì useful as a base for your next project. Printed material outlining and explaining all of the concepts covered above A thoughtbot t-shirt to impress your future clients
Thoughtbot is a technology consulting firm that specializes in building web applications with Ruby on Rails. WeâÄôve built over 30 Ruby on Rails powered web sites and web applicationsâÄîfrom small boutique applications and internal toolsâÄîto public facing applications for Fortune 500 companies. We regularly publish our thoughts on our blog, GIANT ROBOTS SMASHING INTO OTHER GIANT ROBOTS. We have written, released, and now maintain several open source Ruby projects, including Shoulda, Paperclip, Jester, and Squirrel. Members of the thoughtbot team have presented at RailsConf, Mountain West Ruby Conference, Scotland on Rails, as well as at other industry conferences and meetings. Chad and Jon co-authored the book âÄúPro Active Record: Databases with Ruby and Rails.âÄùConcerned about performance on your next project? Worried about scaling, caching, and optimizing your web app? Merb + DataMapper might be the development stack for you.
Merb and DataMapper are two projects inspired by Ruby on Rails. Merb is a small, explicit, and beautifully written framework that is easy to understand and easy to learn. Merb lets you quickly build web applications that perform better and scales further. DataMapper began as an alternative ORM to Active Record, but has moved beyond just database storage. It provides a common persistence and querying framework for any storage model, including relational databases and more.
So what does this all mean for your project? Well, with Merb + DataMapper, you can deliver a high performance, highly scalable website in about the same development time as Rails.
The course will be a thorough introduction to both Merb and DataMapper. We’ll examine the two projects from the perspective of a Rails developer, then run through building a sample application, and finish off by touching on a few more advanced topics like scaling, caching, and digging into the internals of both projects. If your a Rails developer excited about the new developments in the Ruby community, this training session is for you.
Brian, Ben, and Aaron are partners in software consultancy specializing in Django, Ruby on Rails, and most recently Merb development. The team has closely followed the progress of both Merb and DataMapper since their respective 0.9 rewrites, contributing to the projects whenever possible. The team uses Merb + DataMapper as their primary web stack on all new projects.
Ruby 1.9, currently in development, has already introduced a wide range of syntax and language feature changes to the Ruby language (some of which have been backported into 1.8.7). We’ll focus on 1.9’s changes and emphasize concrete steps needed to update existing Ruby 1.8 applications. The talk will address specific points of difference between the two versions; the new object literals, enumerators, text processing changes (encodings and oniguruma regular expressions), new scoping rules, and Fibers.
A Ruby developer since 2001, Bruce Williams has been pleased to see his favorite language rise out of obscurity the last few years—and pay the bills in the process. A developer for FiveRuns, Bruce also does a bit of independent consulting, has contributed to or served as the technical editor for a number of Ruby and Rails books, speaks at conferences when inspiration strikes, and is an aimless open source hacker and language designer in his copious free time.In this talk I will dig up some of the lesser known, but super useful Ruby projects and show them to the masses. I’ll explain why you would use these each of libraries, explain key methods from the API, and show example code so the audience can see them in action.
The goal is to raise overall familiarity with these libraries. Because I’ve selected four different libraries with very different purposes, I hope this talk will contain something for everyone.
An overall theme of the selections was to select tools that can help you get some extra speed out of Ruby. Many people say that Ruby is slow, but the flat truth is that it doesn’t need to be. With the proper tools, you might just be surprised by how fast we can make Ruby go.
Projects covered:
Design patterns are all about making the right decision. Making the right decision consistently leads to successful software. This presentation will help you learn how expert Ruby coders make the right decisions by demonstrating and explaining some of the most useful Ruby Best Practice Patterns. These patterns are inspired and informed by Kent Beck’s seminal Smalltalk Best Practice Patterns book and taken from Rein’s upcoming Ruby Best Practice Patterns book. The examples are gathered from some of your favorite Ruby gems and from Ruby itself, by way of Rubinius!
Outline:
Ruby developers have a growing number of frameworks to choose from for building web applications. On the client, web developers have a growing number of Javascript frameworks to abstract browser quirks, dazzle users, and make life easier.
So how do you choose the right tango partner for your chosen Ruby framework? This talk will give the rundown on the ins-and outs of using Rails, Merb, Camping, or Sinatra with Prototype, script.aculo.us, jQuery, Mootools and YUI.
Most folks know that Rails has Prototype and script.aculo.us baked right in. But what if you want to use jQuery or some other framework? We’ll walk through the options form drop-in replacement via plugins to side-by-side support for multiple frameworks.
Merb is catching on with the cool kids perhaps because of it’s install-what-you-need approach. So where does client-side support fit into Merb’s modular architecture? Does a blank slate mean more freedom or more code to roll yourself?
If Rails is a Swiss Army knife, Merb is a Bowie knife, and Camping and Sinatra are scalpels. What kind of support can a Javascript developer expect for parsing JSON, using Ajax, etc.
Audience is intermediate Ruby developers, comfortable with writing helper methods and installing plugins/gems.
Wynn Netherland is Founder and Pixel Pusher at Squeejee, a Texas-based web development shop. Ruby helped save Wynn from the dark years of .NET, making it fun to code on the web again. When he’s not slinging front-end code, he can be found on the front porch strumming his six string.It’s an interesting fact of human nature that you can’t do something every day and not secretly suspect that you’re good at it. Which goes a long way toward explaining why everyone thinks they write fine code. To combat this self-delusion you can use metrics to take a hard look at your application. This talk will discuss the ways in which you can measure how good your Rails project really is. And how to fix the bad parts.
Using a daily metrics build (run every day by CruiseControl.rb) you can compile a ‘hit-list’ of the worst methods in your application. Then your team can spend some time every iteration trying to refactor these methods. In my talk I will discuss 4 tools to identify problems:
All of which are pretty easy to use, especially if you use metric_fu—a Rails plugin (blatant plug). Once you’ve figured out where the badness is, you must fight it. While showing examples, I’ll be discussing:
For folks who want to understand the rare ‘Ruby Developer’ creature and their native habitat, the Ruby community, there are some important qualities to recognize and understand. The ‘Ruby Developer’ is an interesting creature – similar enough to other developers to fool some at first glance, with some important differences to be considered.
At FiveRuns, we assembled a completely new team, rewrote and launched a new version of a successful product, juggled many parallel projects & sub-projects, successfully navigated which parts to do in-house, which parts to contract out, and when to do them – with no fatalities. While there are certainly plenty of examples of similarly successful projects, what made the difference was the special qualities that come with Ruby Developers and the Ruby community.
Some of these qualities include:
For this talk, we will explore these and other qualities, their pros & cons and some specific suggestions about their creative and respectful use.
Steve is a maker of software products, with over twenty-eight years in software development. Starting with hacks in the UNIX kernel and winding his way up through the stack, he has made stops along the way to build community web products for excite.com, play with Smalltalk, and fall in love with various technologies and ideas. With an emphasis on products that are simple and elegant, he blends his passions for solving problems in software, creating something of true value and working with bright and creative people to lead those product development efforts. Read Steve’s blog at http://stevesanderson.com.A Grammar is an object similar to a Regexp. It specifies an input pattern to match and it integrates well surrounding Ruby code because it is simply an object. Instead of specifying the “pattern” using operators in a string (or file like most other parsing packages), operators and other methods to create build larger Grammar objects from smaller ones. This results in a Ruby DSL that resembles BNF. With a Ruby DSL, there is quite a bit more flexibility, better integration, and seamless actions (using blocks).
To give an idea how a complex Grammar is formed, here are some of the Grammar molecules and combinators/operators/methods along with the equivalent Regexp:
E(?a) : a
E(?a..?z) : [a..z]
ANY : .
NULL : (?:)
EOF : \Z
Recurse { |f| ... f ... } : (?<f> ... \g<f> ... )
x|y : x|y
x+y : xy
+A : (?=A)
-A : (?!A)
x.optional : x? : x|NULL
x*n : x{n}
x*(n..m) : x{n,m}
x.repeat0 : x* : Recurse { |g| g+x | NULL }
x.repeat1 : x+ : Recurse { |g| (g|NULL) + x }
x.repeat0(y) : x*?y : Recurse { |g| y | x+g }
x.repeat1(y) : x+?y : Recurse { |g| x + (y|g) }
One aspect of the grammar package that has been used
extensively to increase flexibility is duck-typing. Here are the major
“duck types” along with some uses:
Like Regexp, Grammar handles ambiguous alternatives by simply letting the first match win. Unlike Regexp, Grammar does not backtrack by default when an alternative fails after it started to match. This is because Grammar is mostly an efficient LL(1) parser and this helps detect a mismatch right where it occurs. Fixed length or unlimited backtracking is still possible by using the #backtrack method on a Grammar. With Grammar, context may also be used to resolve (ambiguous) alternatives, whereas almost ever other parser generator requires context-free grammars.
The way recursion is handled and optimized is another interesting aspect of Grammar. First, a tail-call optimization is made so that right recursive Grammars will imply a loop. Secondly, and most important is that even left recursion is handled. The only other known techinque for handling left recursion in an LL parser is [Frost2008], which incurs a performance penalty. The novel techique used by Grammar results in left recursive grammars being even more efficient than right recursive ones (after tail-call optimization), similar to LR parsers.
Eric Mahurin has 15 years of experience in IC hardware and software design with primary areas of expertise being computer arithmetic (i.e. adders, multipliers, shifters), cell design/analysis (timing, power, reliability, verification), and layout generation/analysis (a lot of computational geometry along with graph theory). He has worked at AMD (Athlon and Opteron), EDA companies, and currently works at Intel on a SIMD arithmetic unit. Eric developed an interest in parser generators after writing many ad-hoc parsers for various formats used in IC design. He stumbled upon Ruby in 2005 in a quest to write a parser/lexer generator where the grammar could be specified in the target language. Eric and his wife live in Austin.As of Leopard, Apple has made Ruby a first class citizen for developing desktop applications. At some point everyone has an idea for a great desktop application. With a good number of Rubyists using OS X these days I want to give an introduction to what is possible with RubyCocoa so that when that great idea shows up, they know their options.
This talk introduces Ruby Cocoa, listing the major frameworks. Examples of apps using RubyCocoa are given (the most popular right now being GitNub). An example application is also be created showing the power of Cocoa plus the power of being able to write in Ruby and having access to gems.
I also cover recent developments related to Cocoa and bridges: MacRuby, nu, RubyObjC and talk about pros and cons.
Lightning talk at Mountain West Ruby Conf 2008 on RubyCocoa
Brian runs roobasoft, LLC (roobasoft.com) and spends most of his time making web applications with Ruby and desktop applications for Mac OS X with Cocoa and Objective-C. Lately the two world’s of Ruby and Cocoa have been merging as he’s been spending more and more time with RubyCocoa. Brian is married and has two small daughters who happily consume the remainder of his time.What do you do when your entire business is run on a ruby infrastructure. You have a set of command line applications for data collection, another suite of daemons and command line processes for massaging that data, several Merb clusters for providing both internal and external data services, and Rails applications for internal business management and external customer usage.
In this presentation we will present the trials and tribulations of the growth of Collective Intellect’s code base layout, library and module organization and approaches to application deployment we have gone through over the past 2+ years.
This talk would be a case study in using Ruby to deploy, monitor, and manage a cluster of servers running in the Amazon Web Services virtual cloud.
The example cluster is operated by OtherInbox.com, a consumer-driven website that automates email tasks and spam blocking. Every system administration task imaginable is carried out using Ruby, which means the developers can enjoy all of Ruby’s benefits without having to delve into shell scripting, writing cron tasks, or use of other languages. It also means that porting the application to run on different operating systems is a trivial task, because Ruby is the glue connecting the Ruby components together; all that is required is a Ruby interpreter.
Two key Ruby technologies have matured in the previous 18 months which make it ideal for almost every layer of managing a cluster of servers:
When combined with these Ruby workhorses, developers today can spend much more of their time writing Ruby code, and less time struggling with the vagaries of their production environment:
The talk would also include a discussion of using several different AWS gems to make cloud computing simple, by illustrating how Amazon’s S3 and SQS services can handle asychnronous work and communication between servers.
Mike Subelsky is the lead developer of OtherInbox, an Austin-based startup using Rails to help consumers deal with email overload. He was a freelance web developer for two years before joining OtherInbox. Prior to becoming a full-time Ruby hacker, he served as a U.S. Navy information warfare officer with overseas assignments around the world for seven years. He has also worked as a civilian cybersecurity analyst for the Department of Defense and in private industry. He is the author of random-data, a open-source Ruby gem used for prototyping new Ruby applications, and two of his recipes are featured in the recently-released book Advanced Rails Recipes. He holds Bachelor and Master of Information Systems Management degrees from Carnegie Mellon University, and is a Certified Information Systems Security Professional. He blogs about Ruby and Rails at subelsky.com.There’s a lot of love for Ruby, which is why there’s so much innovation and talent from the Ruby community. A single developer can release a snippet of code and a week later 100 companies may be using that code to improve their existing website. This code can impact hundreds of thousands of users.
For the past year the Rails Envy Podcast has covered the latest advancements from the Ruby community. In this talk we will attempt to sum up a year of Ruby innovation in 45 minutes, rapidly covering 30 of the most useful, ingenious, and innovative developments. We’ll let you know why the innovation is significant, how you may be able to apply it right now, and where it may take us in the future.
This talk is going to get you excited to work on your own Ruby project or contribute to one of the projects that are mentioned. Even the most seasoned Ruby developer is bound to add at least 5 new tools to their arsenal. And if that doesn’t happen, we can all have a bit of fun reminiscing and looking back on the past year of this great community.
Gregg Pollack lives in Orlando, Florida where he runs the Orlando Ruby Users Group, writes and podcasts Rails Envy, and helps organize BarCampOrlando. He’s passionate about finding easy ways to explain complex technology using new media. Jason Seifer is a web developer and 1/2 of RailsEnvy.com. He is a frequent speaker at the Orlando Ruby Users Group and enjoys long walks on the beach, scotch, and poetry. His programming interests include Ruby, Rails, Javascript, full text search, and Objective-C.jQuery has become incredibly popular, in large part because it makes Unobtrusive JavaScript brain-dead trivial. It’s also very small, under 25k in total, and its Ajax library is fully compatible with the way both Rails and Merb handle content-type negotiation. Its simplicity and DOM-centric approach are a perfect companion to the DRY approach taken by Ruby web frameworks.
This talk will first walk you briefly through the basics of the jQuery framework. The bulk of the talk, however, will be an intense, code-centric review of the best ways to integrate jQuery into the Ruby web framework of your choice. We will cover how to write helpers that can leverage the fact that jQuery operates on semantic HTML (we’ll use classes and other HTML attributes to provide information to a single application-wide JavaScript file). And we will cover tiny pieces of glue code that can give you all the features of the built-in helpers and RJS with even less code than you’d otherwise need.
In short, this is a crash course in how to marry the rapid development approaches that are the core of both Ruby web frameworks and jQuery to build a super-charged environment for quickly prototyping applications. And because Ruby on Rails and Merb are very similar, we’ll be able to cover both web frameworks in a single talk.
Yehuda Katz is the author of jQuery in Action, and is a core team member of the jQuery project. He contributes heavily to DataMapper project, is the creator of the DO.rb project, as well as SalesforceMapper, a a DataMapper adapter for Salesforce. He is a contributor to Merb, an up-and-coming MVC framework written in Ruby, and is a contributing author for the upcoming Manning Publications book Ruby in Practice. He has been working with Ruby on Rails and jQuery since 2005, and is currently taking the lead on the internal control panel for Engine Yard, while helping maintain Merb.Packet-Fu is geared towards attendees with some experience with implementing scripts using Python’s Scapy and Perl’s Net::RawIP, and provides a gentle introduction to low-level socket programming with Ruby and PcapRub using object-oriented design concepts.
Since the Ruby reimplementation of Metasploit in 2007, Ruby has become an essential scripting language for security professionals, yet Ruby’s packet inspection, generation, and manipulation capabilities have remained fairly occult and under-documented. With the release of “Scooby,” a honeypot demasking application, Tod hopes to convert a few Python/Perl coders to Ruby by virtue of a reasonably stable and well-documented reference implementation of Ruby packet-fu.
Major areas of focus include:Tod has 18 years of experience with data and telephony network security, and has previously held IT security positions at TippingPoint, Dell and Westinghouse. He is a frequent speaker at industry conferences on the technical aspects of phishing, has been interviewed extensively by major press publications, and occasionally blogs at Plan B Security.
Since the summer of 2007, I have been assembling my thoughts and programs on systems, machine learning, distributed programming, and problem solving in general. The meaning of these efforts, for me, is to 1) learn what I can about problem solving, 2) apply my education in formal systems, and 3) use these formal systems in solving real-world problems. What this looks like, mostly, is software. What this acts like, eventually, is a more seamless environment for combining people, data, problems, algorithms, and computers. The mantra I have posted on my wall is:
By fast, I am looking at calendar time and development hours. The flexibility of the system is meant as a measure of the kinds of libraries, data, and algorithms that can be implemented in the platform. The openness includes not only publishing the source, but also creating sound APIs and good documentation. Simple is a measure of usability as counted by steps taken. Non-technical people should have intuitive grasp of the tools they are given to use the GSA.
I have broken down the whole program into five broad strokes:
For the conference talk, I will mostly cover the core analysis package: the algorithms, parallel processing, and possibly a live demonstration showing how to use the GSA in a practical way.
I wrote the GSA to combine systems science algorithms into one framework. Systems science algorithms are things like neural networks, Bayesian networks and computational game theory. Ruby’s flexibility makes the connection between algorithms, data, and distributed processes very elegant and expandable. The need for the GSA has been apparent from both academic and business uses of scientific computing. The power of the GSA is its openness and flexibility so that current systems can be more easily analyzed.
David Richards is interested in how things work. He’s back to graduate school, this time with an eye on a PhD in Systems Science: how to understand what’s happening in a complex world with math and computers. He’s been programming for about a dozen years, the last three of those in Ruby. He has been working on the GSA for nearly a year, and is excited to share it with the Ruby community. David also earned an MBA from Brigham Young University, because he loves learning about and contributing to mixing technologies with well-functioning organizations.
The web application infrastructure at The University of Texas at Austin is undergoing dramatic changes. For the last decade, we’ve been using a homebrew CGI gateway that interfaces with our mainframe backend. In recent months, UT has been experimenting with more modern environments: Java, Python, and Ruby among them. In this “lightning talk” Ben Kimball will present an overview of the relatively new movement towards agile platforms and methodologies on the UT campus and cover some of the challenges of using Rails in a large enterprise environment with decades of legacy systems.
Ben Kimball has been building web applications on the Mac platform since 1996, in the heady days of MacHTTPd, SSI, and WebSiphon. Later, after moving to The University of Texas in 2001, he had settled more or less comfortably into MAMP development. At the Division of Continuing Education, he was asked to train the mainframe developers on his team in more modern web development techniques, and chose Ruby as the basis for the course. A year later, the team has its first Rails application in production and many more in the pipeline.
What role can Ruby play in formal computer science education? The speaker is an Associate Professor of Computer Science at St. Edward’s University and will discuss how he successfully used Ruby in an upper-division computer science course. Specifically, the brief talk will focus on the assignments given and how the choice of Ruby as a programming language allowed the focus of the class to be on the concepts and not difficulties of a particular programming language (e.g. syntax challenges).
James McGuffee is an associate professor of computer science at St. Edward’s University in Austin, Texas. His research interests include the pragmatic uses of various computer programming languages. James received his B.S. in computer science from Louisiana Tech University in 1989 and a Ph.D. in computer science from LSU in 1994. James, his wife Lynn, and their son Gage live in south Austin.FiveRuns launched the RM-Manage monitoring service targeting the Ruby on Rails market in 2007, but not without making plenty of mistakes in the process. This talk will discuss the social, technical and business lessons learned over the last year. In building the RM-Manage service, we experienced problems of all types:
We’ve spent the last 6 months fixing these issues. This talk will examine these problems and what we did to fix them.
Mike built his first open source application in 1995 using C and Win32. He’s a member of the Apache Project and has starting working with Ruby and Rails professionally after a decade in the J2EE world. He has a Masters in Computer Science and races his motorcycle in his spare time.Ruby Anvil promises to be the rails/merb equivalent framework for Ruby. By borrowing the ideas and knowledge accumulated from both frameworks, we can utilize Ruby to create yet another framework for developers and build desktop applications with ease, speed and beautiful code. In this talk I’d like to discuss some of my plans for the future of Ruby Anvil and what is currently being developed.
Ruby Anvil is bringing all the GUI toolkits available for Ruby (FxRuby and WxRuby) and attempting to build a standard DSL that will be usable in views of a desktop application. The goal is to eventually support all kinds of GUI toolkits and technologies like Swing, RubyCocoa and OpenGL. Anvil will utilize the MVC pattern so that you can delegate objects to the view in a clean way. The data will be grabbed from the database (using one of the 3 most popular ORMS- ActiveRecord, Datamapper, Sequel). It will provide a way for you to construct widgets that you can reuse as well as provide preformed widgets you can customize the attributes of using the DSL. Merb’s Modular plugin system is going to be emulated by utilizing rubygems as the package manager. In addition to having a DSL that can manipulate widgets, there will be a way to establish widgets by formatting a YAML file.
For the presentation I plan on walking everyone through creating their own Anvil application (most likely Hello World). Using the application we generated, I will show the features I’ve discussed in action as well as the current state of the implementation. Hopefully, I can get enough people interested to contribute!
I’ve been a ruby and a rails developer for over 3 years ever since I watched David’s screencast on how to make a blog in 15 minutes. I am the owner of a rails/merb/ruby consultancy called Ruby Skills. I am the creator of Ruby Anvil, a GUI framework in Ruby and am currently working with Bruce Tate to release the second edition of the book Ruby on Rails: Up and Running.
Merb is a web framework that leverages the lessons learned from Ruby on Rails is a lean, mean package. Retaining a focus on ease of use and convention over configuration, Merb also focuses on modularity, hackability, and overall efficiency. Join as as we take a jaunt through Merb’s core. First, we’ll walk through the basics of getting started. Then, we’ll talk about the philosophy of Merb and how you can use its public interfaces to extend Merb without risking forward-compatibility.
Yehuda Katz is the author of jQuery in Action, and is a core team member of the jQuery project. He contributes heavily to DataMapper project, is the creator of the DO.rb project, as well as SalesforceMapper, a a DataMapper adapter for Salesforce. He is a contributor to Merb, an up-and-coming MVC framework written in Ruby, and is a contributing author for the upcoming Manning Publications book Ruby in Practice. He has been working with Ruby on Rails and jQuery since 2005, and is currently taking the lead on the internal control panel for Engine Yard, while helping maintain Merb.I’d like to introduce a new Web framework that I launched back in February. It is a full-featured “next generation” framework with a variety of innovations that help make building and deploying Web apps simple. You can read all about the framework at our site, RubyWaves.com. Since launching, we’ve been written up on several blogs (including a mention in Matz’s own, which was kinda cool), including an in-depth interview on InfoQ, and attracted a strong core team. It is currently being used experimentally within YellowPages.com, where I head up our strategic research & development solutions group.
Ultimately, our objective is allow developers to write less code to implement new features, reuse existing code more easily, easily deploy high-performance Ruby Web apps using a variety of architectural models, and do it as much as possible in “the Ruby way”.
This session explore the motivations behind Waves and walk through building a non-trivial Waves application (beyond what is covered in the Web site tutorial) highlighting some of the key features of the framework, such as request lambdas, just-in-time resources, and inheritable configurations. In the process, we will introduce the concept of resource-driven development, which supports the Sun MVC model, but also allows developers to move beyond it and focus on REST-style resource-centric development. We will also touch on some features that are currently edge, including Layers, a Rubyesque mechanism to reuse features across apps, multi-application support, and true threaded request handling running on JRuby.
Dan Yoder has two decades of experience in virtually all aspects of the software industry, including extensive experience in enterprise and consumer applications architectures. He currently manages development for the nascent R&D group at YellowPages.com in Glendale, CA. He is a co-author of the popular DateJS library and author of the Ruby gems AutoCode, Functor, and Waves. Dan has worked in Ruby for three years and it was Ruby that brought him back to his programming roots. He somehow graduated in 1989 with a BS degree in Computer Science from the University of Michigan. His hobbies include music production, basketball, and boogie boarding in the Santa Monica surf.I’ve noticed that when people try to improve the state of the art of software design, they try to think bigger: big patterns, big principles, discussions about classes and modules and components, layers and tiers. Last year I heard a talk called “Strategic Design”.
But I’ve personally had a lot better luck thinking small.
In this talk, we’ll explore just a few small-scale, tactical design principles, and how they can help you and your team build better systems.
Glenn Vanderburg works at Relevance, Inc., where he helps customers build great systems with Ruby. He has been working with Ruby since 2000, and thinking about good design for a lot longer than that. He lives in the Dallas area.Having worked with RoleModel Software in Raleigh, NC, I’ve since moved to Tanzania, East Africa, where my wife runs a home for street children. I’m continuing to develop software for local organizations and have started pairing with a local guy who just graduated from university.
There are a number of non-profits doing worthwhile work here, but most of them are too understaffed and underskilled to address their computer needs. At the same time, people looking to write software have very little opportunity to learn from skilled developers.
It’s a nice intersection of low-hanging fruit opportunities: we can make big differences both to the organizations we help and to the guys we program with just by putting together a small Rails app with them.
It’s kind of a wild idea, but if you’re free to break away for a few weeks, consider making the trip. Climb Kilimanjaro, visit the Serengeti, relax on Zanzibar, and spend a couple of weeks programming with me and a couple of Tanzanian guys. We’ll have fun.
Matthew Todd lives in Moshi, Tanzania, at the base of Mt. Kilimanjaro, where he pairs with local programmers to build software for hospitals and non-profits. He also freaks out his mom with the occasional scary insect photo on http://matthewtodd.org.As a refugee of the cubicle jungle where the project status overlords patrolled the aisles, one of the most exciting aspects running a Ruby consultancy is using all the neat tools keep a virtual development team at cruising speed. This talk provides a quick overview for many of the (often free) tools available to distributed Ruby teams and how you can integrate them to improve communication and efficiency.
While Subversion has been the standard for many years, there is a groundswell of support for Git. Originally created by Linus Torvalds for managing the Linux kernel, Git has become popular due to its improved branch management and merging support as well as its distributed architecture which enables each developer to have local versioning (for working offline or on larger efforts in parallel to the rest of the team). The launch of Github (think MySpace for developers, Git has exploded in the Ruby community offering free hosting for Open Source projects and even a Gem Server for hosting uby Gems). Lighthouse from the guys at AlternateIdea is another popular Rails-based issue tracker and now the official tracker for Rails core.
While there are many issue trackers out there, an upstart Open Source Rails-based project named Redmine offers powerfully extensible issue tracking and source control repository integration. Rubyists can also extend the application with plugins.
SlimTimer and Freshbooks offer powerful tools for team members to log time and clients to see real-time project burn rates.
Tying it all together, real-time communication and workstreaming
For constant, asynchronous communication it’s hard to beat Campfire from 37 signals. Free for up to 4 simultaneous chatters, Campfire provides a quick-and-easy way to communicate with team members and clients without the formality or noise of email. The best part about Campfire is the Tinder gem from the boys at Collective Idea. Tinder is an unofficial api for Campfire that allows you to announce source control commits, builds, and other work events directly into the chat room. GitHub offers Tinder/Campfire support out of the box. Just enter your Campfire room configuration and each SCM commit will be announced in your room. Tinder can be called from Capistrano to do the same thing for each deployment event. GitHub also supports Twitter and Lighthouse integration.
Wynn Netherland is Founder and Pixel Pusher at Squeejee, a Texas-based web development shop. Ruby helped save Wynn from the dark years of .NET, making it fun to code on the web again. When he’s not slinging front-end code, he can be found on the front porch strumming his six string.Support for Ruby in the NetBeans IDE is growing as well as use of NetBeans among Ruby and Rails programmers. What does it bring to the table that an editor like Emacs, vi, or Textmate plus a bunch of terminal windows doesn’t? This is a lightning tour of its pluses and minuses.
Jeffrey L. Taylor has been programming for fun for 40 years and for profit for 35 years. From humble beginnings with a mechanical computer, time in the Homebrew Computer Club and a guest appearence in the crowd scenes at the first Linux World Expo, he has built, bought, and programmed computers big and small. He currently is doing freelance writing and Ruby on Rails programming after decades of C/C++ with sidetrips through university teaching.