Iowa Ruby Brigade Meetings http://www.iowaruby.org/rss/ en-us 120 The meetings feed for the Iowa Ruby Brigade May 2013 <h4>May 21, 2013</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Torey Maerz / <a href="http://www.c5soft.com/" rel="external">C5 Software</a></h4> <h3>Topic</h3> <h4>Rails 4: What's New and How to Prepare</h4> <p>The Rails core team released Rails 4 beta 1 at the end of February and the final release is expected to land soon. Its brings several new features and depreciations you'll need to watch out for.</p> <p>Torey Maerz will go over what is coming in Rails 4, and what you'll have to do to prepare your Rails 3 apps. He'll also touch on some new features of Ruby 2.0.</p> <p>Here are a few highlights that Torey will cover:</p> <ul> <li>Gotchas for migrating Rails 3 apps</li> <li>Changes to mass assignments</li> <li>Features that have moved to their own gems</li> <li>Thread Safety and what it means for your apps</li> <li>Using turbo links</li> <li>Cache improvements</li> <li>Important deprecations like the removal of some dynamic finders</li> <li>Changes to cross site forgery protection</li> <li>Improvements to some active record associations</li> </ul> <p>Torey was previously the CIO at Appcore and is now running his own software company, <a href="http://www.c5soft.com/" rel="external">C5 Software</a>.</p> Wed, 17 Apr 2013 05:00:00 GMT http://www.iowaruby.org/meetings/2013/05/ http://www.iowaruby.org/meetings/2013/05/ April 2013 <h4>April 16, 2013</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Brandon Ruschill / <a href="https://www.goodsmiths.com/" rel="external">Goodsmiths</a></h4> <h3>Topic</h3> <h4>Writing Custom Rack Middleware</h4> <p>Brandon Ruschill will give us an introduction to writing custom Rack middleware.</p> <p><a href="http://rack.github.io/" rel="external">Rack</a> provides a minimal interface between webservers supporting Ruby and Ruby frameworks. It sits between a webserver such as Apache or nginx (via Phusion Passenger) and a Ruby web framework such as Sinatra or Ruby on Rails. Between the server and the framework, Rack can be customized using middleware.</p> <p>Brandon is a software developer at Goodsmiths in West Des Moines.</p> Mon, 08 Apr 2013 05:00:00 GMT http://www.iowaruby.org/meetings/2013/04/ http://www.iowaruby.org/meetings/2013/04/ March 2013 <h4>March 19, 2013</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Darrin Holst / <a href="https://twitter.com/darrinholst" rel="external">@darrinholst</a></h4> <h3>Topic</h3> <h4>RubyMotion</h4> <p><a href="http://www.rubymotion.com/" rel="external">RubyMotion</a> is a set of tools that allows you to create native iOS applications for iPhone or iPad using the Ruby language.</p> <p>A few major points from the RubyMotion website:</p> <ul> <li>Command-line interface for creating and maintaining apps.</li> <li>Build apps using Rake.</li> <li>Based on MacRuby codebase, developed over 5 years at Apple.</li> <li>Produces compiled, native iOS apps.</li> <li>Full access to all Objective-C APIs.</li> <li>100% compliant with Apple's App Store guidelines.</li> </ul> <p>Darrin is a Des Moines area software developer currently working for Lean TECHniques and a frequent speaker at the Iowa Ruby Brigade.</p> Sun, 03 Mar 2013 06:00:00 GMT http://www.iowaruby.org/meetings/2013/03/ http://www.iowaruby.org/meetings/2013/03/ February 2013 <h4>February 19, 2013</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Toran Billups / <a href="http://www.imtins.com/" rel="external">The IMT Group</a></h4> <h3>Topic</h3> <h4>Ember.js</h4> <p>With all the hype around javascript these days it's hard to know what library or framework will help you deliver more features with less code.</p> <p>If you are interested in learning more about a full featured framework that provides an application programming model similar to the server side MVC frameworks you already know and love, maybe <a href="http://emberjs.com/" rel="external">ember.js</a> is for you.</p> <p>Join me for a discussion about why I decided it was time to use a real framework on the client side and how it changed the way I write javascript today.</p> <p>Some knowledge of javascript is recommended but not required.</p> <p>Toran Billups is a Python and JavaScript enthusiast with hopes of knowing enough about ember.js and django to build a modern web app.</p> <h3>Door Prize: Ruby Midwest conference registration</h3> <p><a href="http://rubymidwest.com/" rel="external">Ruby Midwest</a> is April 5-6, 2013, in Kansas City, MO.</p> <p>We'll be giving away one conference registration for Ruby Midwest at the meeting. You must be present to win.</p> Tue, 22 Jan 2013 06:00:00 GMT http://www.iowaruby.org/meetings/2013/02/ http://www.iowaruby.org/meetings/2013/02/ January 2013 <h4>January 15, 2013</h4> <p>6:00 - 7:30 PM</p> <h3>Topic</h3> <h4>Code Kata: Roman Numerals</h4> <p>At our last meeting we talked about doing some hands-on coding sessions in 2013. We're going to kick off the new year with the classic Roman Numerals code kata.</p> <p>What a code kata? According to Wikipedia, a <a href="http://en.wikipedia.org/wiki/Kata_%28programming%29" rel="external">code kata</a> is an exercise in programming which helps a programmer hone their skills through practice and repetition.</p> <p>Bring your computer or plan to pair up with someone else. We'll be working on test-driving code to convert decimal numbers to Roman Numerals. For example, 2013 is MMXIII. More details on the kata are available <a href="http://codingdojo.org/cgi-bin/wiki.pl?KataRomanNumerals" rel="external">here</a>.</p> <p>This is a relatively easy kata which many people should be able to complete during the meeting. Of course, there are many ways to solve it and you may want to experiment with alternative solutions.</p> <p>You're welcome to work in any language(s) you want, but Ruby is a good fit for this kata.</p> Fri, 04 Jan 2013 06:00:00 GMT http://www.iowaruby.org/meetings/2013/01/ http://www.iowaruby.org/meetings/2013/01/ December 2012 <h4>December 18, 2012</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Matt Morrison / <a href="http://www.imtins.com/" rel="external">The IMT Group</a></h4> <h3>Topic</h3> <h4>Rails Engines</h4> <p>How Engines solve the problem that I've always had with Rails...</p> <p>Rails is a great framework that I enjoy using. One big problem that I have with rails is how easy it makes it to build a monolithic monstrosity. <a href="https://www.djangoproject.com/" rel="external">Django</a>, which I primarily use for my day job, has the same problem, but Django also takes steps to make functionality more compartmentalized than Rails does. I'm going to show an example of how I used Django's compartmentalization mechanism to my advantage in a production application and how Rails Engines can accomplish the same result.</p> <p>Matthew J. Morrison is a software developer currently employed by <a href="http://www.imtins.com/" rel="external">IMT Group</a> where he builds web applications and services using Python. He is also the organizer of the Iowa Python Users Group (<a href="http://www.pyowa.org/" rel="external">pyowa.org</a>).</p> Sun, 25 Nov 2012 06:00:00 GMT http://www.iowaruby.org/meetings/2012/12/ http://www.iowaruby.org/meetings/2012/12/ November 2012 <h4>November 20, 2012</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Collin Miller / <a href="https://twitter.com/collintmiller" rel="external">@collintmiller</a></h4> <h3>Topic</h3> <h4>Concurrency for Humans</h4> <p>The erstwhile Google Wave promised multi-user editing of documents for all. Wouldn't it be nice if it was a Ruby library and worked for arbitrary JSON documents? Tonight we'll explore a <a href="https://github.com/collin/share.rb" rel="external">port</a> of the excellent <a href="http://sharejs.org" rel="external">ShareJS</a> library for Ruby.</p> <p>Collin Miller is both a native Iowan and a native Rubyist. While he isn't programming Collin enjoys performing improvised comedy on stage with his troupe, "The Beards".</p> Fri, 09 Nov 2012 06:00:00 GMT http://www.iowaruby.org/meetings/2012/11/ http://www.iowaruby.org/meetings/2012/11/ October 2012 <h4>October 16, 2012</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Dan Buettner / <a href="http://www.merchantsbonding.com" rel="external">Merchants Bonding Company</a></h4> <h3>Topic</h3> <h4>Full-Text Search Using Solr</h4> <p>Search functions on the web are ubiquitous, but not all of them work well enough to actually be useful. If you've wondered how to improve your own app's capabilities, come learn about Solr - a powerful, easy to use, and fast full-text search solution that easily plugs into a Rails application.</p> <p>We'll talk about how to make your models searchable, boosting results based on where search terms appear, Solr configuration for synonyms, and constructing "advanced search" combinations of parameters.</p> <p>If you're cobbling together your own full-text-like search routines against SQL databases in Rails by splitting search strings into tokens and then concatenating SQL snippets, you're working too hard. (Go ahead, ask me how I know).</p> <p>Dan Buettner is a web developer at <a href="http://www.merchantsbonding.com" rel="external">Merchants Bonding Company</a> in Des Moines and president of <a href="http://port80productions.com" rel="external">Port 80 Productions</a>. He excels at merge commits and writing SQL by hand.</p> Tue, 09 Oct 2012 05:00:00 GMT http://www.iowaruby.org/meetings/2012/10/ http://www.iowaruby.org/meetings/2012/10/ September 2012 <h4>September 18, 2012</h4> <p>6:00 - 7:30 PM</p> <h3>Speakers</h3> <h4>Nick Parker / Senior Developer at <a href="http://zetetic.net/" rel="external">Zetetic</a></h4> <h4>Levi Rosol / CTO at <a href="https://www.goodsmiths.com/" rel="external">Goodsmiths</a></h4> <h4>Brandon Ruschill / Software Engineer at <a href="https://www.goodsmiths.com/" rel="external">Goodsmiths</a></h4> <h3>Topic</h3> <h4>Emacs, Sublime Text, &amp; Vim</h4> <p>Ready for a break from politics? There's nothing like a discussion of text editors to help software developers forget their differences and come together.</p> <p>But seriously, please join us for this informal discussion and comparison of three of the most popular text editors / development environments for Rubyists.</p> <ul> <li><a href="http://www.gnu.org/software/emacs/" rel="external">Emacs</a></li> <li><a href="http://www.sublimetext.com/" rel="external">Sublime Text</a></li> <li><a href="http://www.vim.org/" rel="external">Vim</a></li> </ul> Wed, 29 Aug 2012 05:00:00 GMT http://www.iowaruby.org/meetings/2012/09/ http://www.iowaruby.org/meetings/2012/09/ August 2012 <h4>August 21, 2012</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Darrin Holst</h4> <h3>Topic</h3> <h4>"Chef vs Cap vs Vlad"</h4> Tue, 21 Aug 2012 05:00:00 GMT http://www.iowaruby.org/meetings/2012/08/ http://www.iowaruby.org/meetings/2012/08/ July 2012 <h4>July 17, 2012</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Dan Buettner / <a href="http://www.merchantsbonding.com" rel="external">Merchants Bonding Company</a></h4> <h3>Topic</h3> <h4>JavaScript Testing with Jasmine</h4> <p>If you're like me, you've struggled with adding custom JavaScript functionality to your application because there wasn't a good way to test your code besides constantly reloading your browser page (and emptying your cache!).</p> <p>Enter <a href="http://pivotal.github.com/jasmine/" rel="external">Jasmine</a>, an RSpec-like tool for automated testing of your JavaScript code.</p> <p>We'll look at the basics of setting up Jasmine in a Rails project, its RSpec-like syntax, and talk about a couple of gotchas that are easy to work around ... provided that you know about them.</p> <p>This talk will be great for JavaScript beginners, as that's really what I am - but the installation and setup of Jasmine should be useful for seasoned pros as well.</p> <p>About Dan:</p> <p>Dan works at <a href="http://www.merchantsbonding.com" rel="external">Merchants Bonding Company</a> full-time as a web application developer; in his copious spare time, he is president of <a href="http://port80productions.com" rel="external">Port 80 Productions</a>, a small (very small) web development shop.</p> <p>In a past life, he worked as a software developer and IT manager at The Des Moines Register, Outsell Inc., and Gannett Co.</p> <p>He enjoys running, bicycling, and talking about himself in the third person.</p> Fri, 06 Jul 2012 05:00:00 GMT http://www.iowaruby.org/meetings/2012/07/ http://www.iowaruby.org/meetings/2012/07/ June 2012 <h4>June 19, 2012</h4> <p>6:00 - 7:30 PM</p> <h3>Topic</h3> <h4>Iowa Ruby Brigade Planning</h4> <p>The Iowa Ruby Brigade has been around since September 2007. Over that time, we've seen members come, and we've seen members go. The goal of this meeting is to talk about the future of IRB, and what the members want from it going forward. In preparation for this planning meeting, we have put together a simple mission statement to help guide the conversation.</p> <blockquote><i>The Iowa Ruby Brigade aims to grow and support a unified community of Rubyists with community education, technological innovation, and outreach.</i></blockquote> <p>Starting with this meeting, our meeting location will change to Goodsmiths in West Des Moines. Goodsmiths will also sponsor pizza and liquid refreshments at the meeting.</p> Mon, 18 Jun 2012 05:00:00 GMT http://www.iowaruby.org/meetings/2012/06/ http://www.iowaruby.org/meetings/2012/06/ May 2012 <h4>May 15, 2012</h4> <p>6:10 - 7:40 PM</p> <h3>Speaker</h3> <h4>Jacob Richardson / <a href="http://engineering.groupon.com/" rel="external">Groupon</a></h4> <p>Jacob ("JR") Richardson will be back in Des Moines to present two topics at this month's meeting. JR is currently a software engineer at Groupon in Boulder, CO. Follow him on Twitter at <a href="https://twitter.com/#!/Jacob_Ninja">@Jacob_Ninja</a>.</p> <h3>Topics</h3> <h4>Lazy Collections</h4> <p>Building and processing large collections of data is often memory consuming and inefficient. In this presentation we are going to take Enumerable to the next level by encapsulating our processing logic in lazy iterators and we will address common issues with large collections of data such as:</p> <ul> <li>Memory consumption</li> <li>Infinite sequences</li> <li>Control flow</li> </ul> <h4>Static Analysis</h4> <p>Analyzing the structure of your code is an important key to managing the overall health of your system and can help spot those tricky-to-find bugs. In this presentation we will learn how to generate an abstract syntax tree from source code and analyze it using a symbolic expression processor. We will look at how current static analysis tools take advantage of symbolic expression processing to give you feedback on the structure of your code.</p> <p>Note that our meeting time has been moved back 10 minutes to make it easier for those who want to park on the street.</p> Tue, 08 May 2012 05:00:00 GMT http://www.iowaruby.org/meetings/2012/05/ http://www.iowaruby.org/meetings/2012/05/ April 2012 <h4>April 17, 2012</h4> <p>6:10 - 7:40 PM</p> <h3>Lightning Talks</h3> <p>This month our meeting will consist of "lightning talks." A lightning talk is a short (5-10 minutes), informal talk or demo. Lightning talks can be on any topic of interest to the group, even if it's not directly Ruby-related.</p> <p>Please join us and share something you think is interesting or fun!</p> Mon, 09 Apr 2012 05:00:00 GMT http://www.iowaruby.org/meetings/2012/04/ http://www.iowaruby.org/meetings/2012/04/ March 2012 <h4>March 20, 2012</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Wes Beary (geemus) / <a href="http://www.heroku.com" rel="external">Heroku</a></h4> <h3>Topic</h3> <h4>Cloud Computing</h4> <h4>Special joint meeting with <a href="http://www.pyowa.org/" rel="external">Pyowa</a>, the Iowa Python Users Group.</h4> <p>Cloud computing may be many things, but it seems that going away isn't one of them. Heroku provides an amazingly accessible interface to the cloud. You focus on making awesome sites and we will focus on keeping them up and running. Whether you are brand new to Heroku and looking to get started or a grizzled veteran looking to get a peak under the covers there will be some great info straight from geemus, who single handedly makes up the Iowa branch of Heroku.</p> <p><a href="http://github.com/geemus" rel="external">geemus (Wesley Beary)</a> is an avid Rubyist and Open source enthusiast. He spends his days improving developer experience at Heroku and spends much (probably too much) of his free time working on <a href="http://github.com/geemus/fog" rel="external">fog</a> and other open source projects.</p> Tue, 06 Mar 2012 06:00:00 GMT http://www.iowaruby.org/meetings/2012/03/ http://www.iowaruby.org/meetings/2012/03/ December 2011 <h4>December 20, 2011</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Charles Hoffman / <a href="http://www.r5i.com/" rel="external">Red 5 Interactive</a></h4> <h3>Topic</h3> <h4>Procs & Lambdas: Y U So Weird?</h4> <p>Some languages provide first-class function features -- that is, a way of taking some bit of functionality in your program and treating it like a data value. Ruby gives you a few different ways. You can get a long way with blocks alone, but when it comes to Procs and their close cousins lambdas, there are some confusing and seemingly arbitrary differences in how they work. In this discussion, we will attempt to make sense of these and differences and why they might exist.</p> Fri, 02 Dec 2011 06:00:00 GMT http://www.iowaruby.org/meetings/2011/12/ http://www.iowaruby.org/meetings/2011/12/ November 2011 <h4>November 15 2011</h4> <p>6:00 - 7:30 PM</p> <h3>Topic</h3> <h4>Git / Mercurial Workshop</h4> <h4>Special joint meeting with <a href="http://www.pyowa.org/" rel="external">Pyowa</a>, the Iowa Python Users Group.</h4> <p>We are conducting a fun and informal workshop to discuss and play with the newest and best version control systems out there, Git and Mercurial. If you are a Git user, but interested in Mercurial, or vice versa, or if you are using CVS or Subversion and are wondering what all the hype is about, please join us.</p> <p>Bring your laptop if you want to participate hands on. We will have a sandbox set up in which we can all play. We will be presenting a list of tasks or scenarios and running through how to solve each with Git and Mercurial. We will not have a formal speaker or expert. Rather, we will use the power of the collective (and when necessary, Google) to bring forth ideas and solve problems. It should be very collaborative, informative, and fun!</p> Sun, 30 Oct 2011 05:00:00 GMT http://www.iowaruby.org/meetings/2011/11/ http://www.iowaruby.org/meetings/2011/11/ October 2011 <h4>October 18, 2011</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Scott Robinson / <a href="http://www.merchantsbonding.com/" rel="external">Merchants Bonding Company</a></h4> <h3>Topic</h3> <h4>Using the state_machine gem</h4> <p>A finite-state machine or "state machine" is a common behavioral model used in computer programming. In a nutshell, a state machine can be in one of a finite number of states. An event or condition can then trigger a transition to another (or the same) state, and various actions can occur during a transition. (See <a href="http://en.wikipedia.org/wiki/Finite-state_machine" rel="external">Finite-state machine</a> for more.)</p> <p>Scott will discuss the <a href="https://github.com/pluginaweek/state_machine" rel="external">state_machine</a> Ruby gem, including</p> <ul> <li>Why you might want to consider using the state_machine gem</li> <li>Summary of functions/options provided by the gem</li> <li>How we're using the state_machine gem at Merchants Bonding</li> </ul> Tue, 11 Oct 2011 05:00:00 GMT http://www.iowaruby.org/meetings/2011/10/ http://www.iowaruby.org/meetings/2011/10/ September 2011 <h4>September 20, 2011</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Jacob Richardson / <a href="http://www.imtins.com/" rel="external">IMT Group</a></h4> <h3>Topic</h3> <h4>Enumerable</h4> <p>We go back to basics this month and look at Ruby collections and the Enumerable module. Rubyists learn early on that as long as a class provides an 'each' method (and optionally a <=> comparison operator), simply mixing in the Enumerable module will automatically give the class all kinds of collection functionality including traversal, searching, sorting, etc.</p> <p>Jacob will discuss the Enumerable module and also discuss</p> <ul> <li>Increasing the readability of your code by reducing null checks and loops</li> <li>Functional thinking applied with Enumerable</li> <li>Extending Enumerable</li> </ul> <p>Jacob currently works as a Python developer for IMT Group, but not for long. He has accepted a job as a Rails developer at <a href="http://www.groupon.com/" rel="external">GroupOn</a> in Chicago and will be moving there soon. Earlier this year, Jacob was <a href="http://blog.obiefernandez.com/content/2011/01/rails-up-and-comers-contest-winners.html" rel="external">recognized</a> as a Rails Up-and-Comer by Obie Fernadez. This will be Jacob's last Iowa Ruby Brigade meeting for a while, so please come out to wish him well.</p> Sat, 10 Sep 2011 05:00:00 GMT http://www.iowaruby.org/meetings/2011/09/ http://www.iowaruby.org/meetings/2011/09/ August 2011 <h4>August 16, 2011</h4> <p>6:00 - 7:30 PM</p> <h3>General Discussion / Lightning Talks</h3> <p>We don't have a specific presentation this month, but we'll still meet and discuss current developments in the Ruby world.</p> <p>If you have something you'd like to share with the group, but you don't want to prepare a full presentation, please consider giving a "lightning talk" instead. A lightning talk is an short (5-10 minutes), informal talk / demo. Lightning talks can be on any topic of interest to the group, even if it's not directly Ruby-related.</p> <p>Stuck on a Ruby problem? Bring your questions and get some help from local experts.</p> <p>Please join us!</p> Fri, 12 Aug 2011 05:00:00 GMT http://www.iowaruby.org/meetings/2011/08/ http://www.iowaruby.org/meetings/2011/08/ July 2011 <h4>July 19, 2011</h4> <p>6:00 - 7:30 PM</p> <h3>General Discussion</h3> <p>We don't have a specific presentation this month, but we'll still meet and discuss current developments in the Ruby world.</p> <p>Stuck on a Ruby problem? Bring your questions and get some help from local experts.</p> <p>Some things we might talk about:</p> <ol> <li><a href="http://weblog.rubyonrails.org/2011/5/22/rails-3-1-release-candidate" rel="external">Rails 3.1</a> features</li> <li><a href="http://jashkenas.github.com/coffee-script/" rel="external">CoffeeScript</a>, <a href="http://documentcloud.github.com/backbone/" rel="external">Backbone.js</a></li> <li>Infrastructure as Code (<a href="http://wiki.opscode.com/display/chef/Home" rel="external">Chef</a>, <a href="http://www.cucumber-chef.org/" rel="external">cucumber-chef</a>, <a href="http://auxesis.github.com/cucumber-nagios/" rel="external">cucumber-nagios</a>, etc.)</li> </ol> <p>Please join us!</p> Sat, 16 Jul 2011 05:00:00 GMT http://www.iowaruby.org/meetings/2011/07/ http://www.iowaruby.org/meetings/2011/07/ June 2011 <h4>June 21, 2011</h4> <p>6:00 - 7:30 PM</p> <h3>Topic</h3> <h4>Testing Fundamentals</h4> <p>This month we continue our focus on Ruby and Rails beginners with a meeting on testing fundamentals. The Ruby and Rails communities strongly value automated testing and test-driven development, so much so that automated tests are a given for almost any Ruby project. But the whole area of testing is sometimes unfamiliar territory for someone new to Ruby or Rails. (We know this topic is of interest because it was specifically requested.)</p> <p>As an introduction to testing, we'll work through an example of adding a feature to a Rails application using a test-first approach. Along the way we'll cover</p> <ul> <li>Acceptance and integration tests (Cucumber)</li> <li>Unit tests for models, controllers, and routing (RSpec)</li> <li>Creating test data with factories (Factory Girl)</li> <li>Test doubles including stubs &amp; mocks (RSpec)</li> </ul> <p>To add interest for folks who are already familiar with some or all of the above, we'll do the whole thing using Rails 3.1.</p> <p>Whether you're a complete beginner, an experienced developer new to Ruby, or a seasoned Rubyist, please join us for this meeting. Our goal is to encourage discussion and sharing of ideas from developers of all levels.</p> Mon, 13 Jun 2011 05:00:00 GMT http://www.iowaruby.org/meetings/2011/06/ http://www.iowaruby.org/meetings/2011/06/ May 2011 <h4>May 17, 2011</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Levi Rosol / <a href="http://http://www.scoreyard.com/" rel="external">ScoreYard</a> &amp; <a href="http://www.craft.ly" rel="external">Craftly</a></h4> <h3>Topic</h3> <h4>Setting Up a Rails Development Environment without Giving Steve Jobs Money</h4> <p>Ask almost any Rails developer what their biggest challenge in getting started with Rails was and chances are they will all roll their eyes and say the same thing: Setting up their development environment.</p> <p>Although there are many options when it comes to Rails development environments, we will talk about setting up an Ubuntu-based development environment. Specifically a dual booted machine running Windows 7 as its existing OS.</p> <p>The following topics will be covered:</p> <ul> <li>How / Where to get Ubuntu - Creating the install USB drive (Yes, we will use 11.4)</li> <li>Installing Ubuntu as a secondary OS</li> <li>Install &amp; Configure RVM</li> <li>Install RubyMine</li> <li>Pull down a project from GitHub</li> <li>Using RubyMine and Bundler to manage Gems</li> <li>Run the project locally</li> <li>Create a new Heroku project and deploy to it</li> </ul> <p>This topic will primarily appeal to beginning Rubyists or developers thinking about getting started with Rails. A lot of technologies will be covered at a high level, so come with questions. Also, bring a buddy. If you've talked about Ruby or Rails with someone who's interested in the language / framework, but are too intimidated to jump in blind, bring them along.</p> Sun, 01 May 2011 05:00:00 GMT http://www.iowaruby.org/meetings/2011/05/ http://www.iowaruby.org/meetings/2011/05/ April 2011 <h4>April 19, 2011</h4> <p>6:00 - 7:30 PM</p> <h3>Topic</h3> <h4>ActiveModel</h4> <p>One of the big themes of Rails 3 was making the entire Rails framework more modular. A perfect example of this is ActiveModel which is actually a group of modules extracted from ActiveRecord. ActiveModel provides an API through which Rails interacts with models, so any ORM that implements the ActiveModel API will automatically work with Rails. ActiveModel also exposes a lot of useful functionality like validation, callbacks, serialization (to_xml, to_json, etc), and i18n support.</p> <p>We'll take a look at ActiveModel and see how it can be used to provide this kind of functionality to ordinary Ruby objects independently of whether they are persisted in a SQL database.</p> <p>This topic should appeal to Rubyists of all experience levels. For beginners, we'll cover the basics of Ruby modules. Then we'll move on to intermediate topics like how to use ActiveModel outside of a Rails project and how to verify whether a Ruby object is AciveModel-compliant. We'll also spend a little time looking at how ActiveModel is actually implemented.</p> <p>There will be plenty of time for discussion and questions.</p> Thu, 14 Apr 2011 05:00:00 GMT http://www.iowaruby.org/meetings/2011/04/ http://www.iowaruby.org/meetings/2011/04/ March 2011 <h4>March 15, 2011</h4> <p>6:00 - 7:30 PM</p> <h3>Topic</h3> <h4>Working Effectively with Third-Party Web Services</h4> <h3>Speaker</h3> <h4>David W. Body / <a href="http://www.bigcreek.com.com/" rel="external">Big Creek Software, LLC</a></h4> <p>David has been developing a Rails application whose core functionality involves interacting with a third-party commercial ASP.NET XML web service. The main interaction involves posting an XML request to the web service, and then asynchronously receiving XML results which may come hours or days later. The web service is production-only, involves sensitive data, and there is no separate test environment.</p> <p>David will demo the application and then we'll dive into the source code.</p> <p>Topics will include</p> <ul> <li>Development, testing, and deployment strategies</li> <li>Simulating a web service with Sinatra</li> <li>Dealing with XML documents whose elements may not all be known in advance</li> </ul> <p>This Rails application is under active development, and David would welcome suggestions for changes and improvements.</p> <p>There will be plenty of time for discussion and questions.</p> Wed, 09 Mar 2011 06:00:00 GMT http://www.iowaruby.org/meetings/2011/03/ http://www.iowaruby.org/meetings/2011/03/ December 2010 <h4>December 9, 2010</h4> <p>6:00 - 7:30 PM</p> <h3>Topic</h3> <h4>JRuby</h4> <p><a href="http://jruby.org/" rel="external">JRuby</a> is a pure-Java implementation of Ruby. It is Ruby for the JVM.</p> <p>Besides being a rock-solid implementation of Ruby (some say JRuby is currently the best Ruby available [<a href="#footnote-1">1</a>]), JRuby also provides integration between Ruby and the JVM.</p> <p>We'll discuss and see demos of the following</p> <ul> <li>Running Java code from JRuby</li> <li>Running Ruby code from Java (embedding JRuby)</li> <li>JRuby Compiler</li> <li>Deploying Ruby web applications as WAR files</li> <li>Testing Java code using Ruby test frameworks</li> <li>JRuby / Ant integration</li> </ul> <p id="footnote-1">[1] <a href="http://www.infoq.com/interviews/Yehuda-Katz-on-Rails-3.x" rel="external">http://www.infoq.com/interviews/Yehuda-Katz-on-Rails-3.x</a></p> Mon, 29 Nov 2010 06:00:00 GMT http://www.iowaruby.org/meetings/2010/12/ http://www.iowaruby.org/meetings/2010/12/ November 2010 <h4>November 2010 meeting was canceled.</h4> Mon, 08 Nov 2010 18:54:42 GMT http://www.iowaruby.org/meetings/2010/11/ http://www.iowaruby.org/meetings/2010/11/ October 2010 <h4>October 14, 2010</h4> <p>6:00 - 7:30 PM</p> <h3>General Discussion</h3> <p>We don't have a specific presentation this month, but we'll still meet and discuss current developments in the Ruby world. Please join us, and please bring something Ruby-related to share with the group.</p> Sat, 09 Oct 2010 17:43:06 GMT http://www.iowaruby.org/meetings/2010/10/ http://www.iowaruby.org/meetings/2010/10/ September 2010 <h4>September 9, 2010</h4> <p>6:00 - 7:30 PM</p> <h3>General Discussion</h3> <p>We don't have a specific presentation this month, but we'll still meet and discuss current developments in the Ruby world. Please join us, and please bring something Ruby-related to share with the group.</p> Tue, 07 Sep 2010 16:51:41 GMT http://www.iowaruby.org/meetings/2010/09/ http://www.iowaruby.org/meetings/2010/09/ August 2010 <h4>August 12, 2010</h4> <p>6:00 - 7:30 PM</p> <h3>Topic</h3> <h4>Ruby Version Manager (RVM)</h4> <p><a href="http://rvm.beginrescueend.com/" rel="external">RVM</a> is a command-line tool that lets you install and manage multiple versions of Ruby on the same computer in such a way that they won't interfere with each other. You can even run different versions of Ruby at the same time in different terminal windows.</p> <p>RVM makes testing against multiple versions of Ruby quite easy. For example, you can invoke a single command that will run your tests under, say, Ruby 1.8.7, 1.9.1, 1.9.2, JRuby, Rubinius, and Ruby Enterprise Edition.</p> <p>RVM also provides a way to create and manage separate groups of Ruby gems (gemsets). For example, you can have separate gemsets for Rails 2.3.8 and Rails 3.0.0.rc and easily switch between them. It can also be useful to maintain per-project gemsets.</p> <p>We will cover the following RVM topics:</p> <ul> <li>Installing RVM</li> <li>Installing multiple Rubies and switching between them</li> <li>Testing with RVM</li> <li>Gemsets</li> <li>Integration with other tools (e.g. TextMate, Capistrano, Passenger, etc.)</li> </ul> <p>RVM is free and open source, and runs on Mac OS X and most versions of Linux.</p> <p>Note: There is a similar tool for Windows called <a href="http://github.com/vertiginous/pik/" rel="external">pik.</a> It would be great if someone at the meeting wants to give us more information about this.</p> Fri, 06 Aug 2010 19:34:03 GMT http://www.iowaruby.org/meetings/2010/08/ http://www.iowaruby.org/meetings/2010/08/ July 2010 <h4>July 8, 2010</h4> <p>6:00 - 7:30 PM</p> <h3>Topic</h3> <h4>Hands-On Test-Driven Development</h4> <p>We're going to try a different format for this month's meeting. Please bring your laptops and be ready to write some code!</p> <p>Most developers are aware of Test-Driven Development (TDD), and/or variants such as Behavior-Driven Development (BDD), in which development follows an evolutionary approach by repeating a very short cycle: write a test or spec, see it fail, write just enough application code to make the test pass, refactor, and repeat. This basic "red-green-refactor" approach is not new, and is in wide-spread use.</p> <p>Nevertheless, there are many developers who, for whatever reason, do not use such an approach. In some cases, developers simply haven't tried it, or are not quite sure how to get started. Our goal at this meeting is help people get started with TDD/BDD so they can judge for themselves whether this approach works for them and might be worth pursuing further.</p> <p>We'll start with a little discussion of the pros (and cons?) of test-first development. Then we'll quickly move to a hands-on coding exercise. We'll divide into pairs and all work on solving the same programming problem using a test-first approach. At the end, we'll share our work and discuss how things went.</p> <p>Ideally, each pair will include at least one developer with some previous TDD/BDD experience. If that's you, please be sure to come to this meeting because we need your expertise.</p> <p>By the same token, if you haven't done much TDD/BDD, please don't miss this meeting because there is really only one way to learn this skill and that's by practicing it, ideally with the help of a more experienced pair programmer.</p> <p>The details of the programming exercise are still being worked out. We'll let you know before the meeting if there is anything else you should have set up in order to be ready. Our default testing framework for this exercise will be RSpec, but feel free to use a different framework (Test::Unit, Shoulda, etc.) if you have a preference.</p> <p>Prerequisites: None!</p> Tue, 29 Jun 2010 17:13:25 GMT http://www.iowaruby.org/meetings/2010/07/ http://www.iowaruby.org/meetings/2010/07/ June 2010 <h4>June 10, 2010</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Darrin Holst / <a href="http://www.geolearning.com/" rel="external">GeoLearning</a></h4> <h3>Topic</h3> <h4>Haml &amp; Sass</h4> <p>Darrin will lead a discussion of Haml &amp; Sass based on the PeepCode <a href="http://peepcode.com/products/haml-and-sass" rel="external">screencast.</a></p> <p>Special thanks to <a href="http://peepcode.com/" rel="external">PeepCode</a> for giving us permission to use this format and show the screencast at our meeting.</p> Mon, 07 Jun 2010 20:50:51 GMT http://www.iowaruby.org/meetings/2010/06/ http://www.iowaruby.org/meetings/2010/06/ May 2010 <h4>May 13, 2010</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Cassie Schmitz / Co-Founder, <a href="http://www.printwhatyoulike.com/" rel="external">PrintWhatYouLike.com</a></h4> <h3>Topic</h3> <h4>Rails 3</h4> <p>After the long wait, Rails 3 Beta has finally been released! With the merge with Merb, Rails has undergone significant changes. In this talk, Cassie will go over what's new in Rails 3 including:</p> <ul> <li>Controller Abstraction</li> <li>Routing with ActionDispatch</li> <li>Model Abstraction</li> <li>Arel Integration</li> <li>Revamped ActionMailer</li> </ul> Wed, 21 Apr 2010 09:07:14 GMT http://www.iowaruby.org/meetings/2010/05/ http://www.iowaruby.org/meetings/2010/05/ April 2010 <h4>April 8, 2010</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Matt Secoske / <a href="http://nimblelogic.com/" rel="external">nimblelogic</a></h4> <h3>Topic</h3> <h4>The Lightweight web: singing Sinatra to the tune of Redis</h4> <p>We will dive into the Sinatra web framework, along with a detour through Redis in an attempt to show just how lightweight a Ruby web service can be. This will be an informal overview and discussion, with an aside to cover the reasons why you should consider Sinatra for your next web service project.</p> <p>We will also probably spend some time looking at "Evented" Sinatra and Resque, the Redis + Sinatra queuing framework from the fancy chaps at Github.</p> <p>A little about Matt Secoske:</p> <p>Matt Secoske is the Principal at <a href="http://nimblelogic.com/" rel="external">nimblelogic</a>, a boutique (that means small) software development company that is dedicated to writing kick-ass software for kick-ass clients. He spends much of his time trying to stay abreast of the latest web development technologies, and can be found lurking on Twitter as <a href="http://twitter.com/secos" rel="external">@secos</a>, and on a rarely updated "blog" at <a href="http://mattsecoske.com/" rel="external">mattsecoske.com</a>.</p> Fri, 26 Mar 2010 08:45:18 GMT http://www.iowaruby.org/meetings/2010/04/ http://www.iowaruby.org/meetings/2010/04/ March 2010 <h4>March 2010 meeting was canceled.</h4> Fri, 26 Mar 2010 08:38:30 GMT http://www.iowaruby.org/meetings/2010/03/ http://www.iowaruby.org/meetings/2010/03/ December 2009 <h4>December 10, 2009</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>David W. Body / <a href="http://www.bigcreek.com/" rel="external">Big Creek Software, LLC</a></h4> <h3>Topic</h3> <h4>MongoDB</h4> <p><a href="http://www.mongodb.org/" rel="external">MongoDB</a> is a scalable, high-performance, open source, schema-free, document-oriented database that aims to combine the best features of document databases, key-value stores, and RDBMSes. MongoDB stores JSON-style documents and supports dynamic queries with rich JavaScript query expressions.</p> <p>MongoDB provides a native Ruby driver, and several open source projects provide additional support for using MongoDB from Ruby, including an ActiveRecord adapter.</p> <p>This presentation will cover the following topics:</p> <ul> <li>Intro to MongoDB and overview of MongoDB capabilities</li> <li>Using MongoDB from the JavaScript shell</li> <li>Using MongoDB from the Ruby driver</li> <li>Using MongoDB from within a Rails application</li> </ul> <p>We'll talk about when MongoDB might be a good choice for your project. We'll also try to compare and contrast MongoDB with other document-oriented databases like CouchDB (covered at our <a href="/meetings/2009/02/">February 2009 meeting</a>).</p> Wed, 02 Dec 2009 12:53:26 GMT http://www.iowaruby.org/meetings/2009/12/ http://www.iowaruby.org/meetings/2009/12/ November 2009 <h4>November 12, 2009</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>David W. Body / <a href="http://www.bigcreek.com/" rel="external">Big Creek Software, LLC</a></h4> <h3>Topic</h3> <h4>RubyGems - Past, Present, and Future</h4> <p><a href="http://rubygems.org/" rel="external">RubyGems</a> is the standard for distributing and managing Ruby code packages. Beginning with Ruby 1.9, RubyGems is included with Ruby itself.</p> <p>Everyone who has worked with with Ruby is probably already familiar with using RubyGems to download and install Ruby libraries written by others. Gems exist for many tasks, including, for example, manipulating images, validating credit cards, parsing HTML, and generating PDF's. Gems are also an excellent way of distributing your own code if you create a Ruby library you want to share with others.</p> <p>In this talk, we will briefly discuss the history of RubyGems before focusing on the present and future of RubyGems. Specifically, we will discuss:</p> <ul> <li>Using RubyGems and managing your RubyGems environment</li> <li>The transition to <a href="http://gemcutter.org/" rel="external">GemCutter</a> from <a href="http://rubyforge.org/" rel="external">RubyForge</a> and <a href="http://gems.github.com/" rel="external">Github</a></li> <li>Creating and publishing your own gems using <a href="http://github.com/technicalpickles/jeweler/" rel="external">Jeweler</a></li> <li><a href="http://github.com/wycats/bundler/" rel="external">Bundler</a> (a gem to bundle gems)</li> </ul> <p>There will be plenty of time for discussion, so bring your RubyGems questions and ideas.</p> Mon, 26 Oct 2009 10:10:23 GMT http://www.iowaruby.org/meetings/2009/11/ http://www.iowaruby.org/meetings/2009/11/ October 2009 <h4>October 8, 2009</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Darrin Holst / <a href="http://www.geolearning.com/" rel="external">GeoLearning</a></h4> <h3>Topic</h3> <h4>Searching ActiveRecord Models</h4> <p>Search is one of the most common tasks performed by computer users, so it's not surprising that a common application requirement is that data within an application be searchable. In a Rails application, or for that matter any application that uses ActiveRecord, what are the best ways to implement search functionality?</p> <p>Darrin has set out to answer that question and he will share what he has learned. This presentation will compare the following approaches to searching ActiveRecord models:</p> <ul> <li>Plain Old SQL</li> <li>Plugins/gems that wrap SQL</li> <li>Sphinx/UltraSphinx</li> </ul> <p>There will be time for discussion, so bring your questions and suggestions for alternative ways to implement search in an ActiveRecord application.</p> Thu, 01 Oct 2009 07:36:52 GMT http://www.iowaruby.org/meetings/2009/10/ http://www.iowaruby.org/meetings/2009/10/ September 2009 <h4>September 10, 2009</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Yehuda Katz / <a href="http://www.engineyard.com/" rel="external">Engine Yard</a></h4> <h3>Topic</h3> <h4>What's New in Rails 3?</h4> <p>In honor of the Iowa Ruby Brigade's two-year anniversary, <a rel="external" href="http://yehudakatz.com/">Yehuda Katz</a> of <a href="http://www.engineyard.com/" rel="external">Engine Yard</a> will join us to talk about some of the new features in Rails 3, and to answer questions and discuss topics of interest to the group.</p> <p>Of course Rails 3 is the result of the <a href="http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3" rel="external">merger</a> of two Ruby web frameworks: <a href="http://www.rubyonrails.org/" rel="external">Ruby on Rails</a> and <a href="http://merbivore.com/" rel="external">Merb</a>. Yehuda was lead developer of Merb, and as a Rails core team member, Yehuda has played a central role in the development effort to merge the two frameworks. Yehuda will talk about that effort and preview some of the changes in Rails 3.</p> <p>We'll also have plenty of time for questions and general discussion.</p> <p><img src="/images/yehuda_katz.jpg" alt="Yehuda Katz"/></p> <p>Yehuda Katz is currently employed by <a href="http://www.engineyard.com/" rel="external">Engine Yard</a>, and works full time as a Core Team Member on the Rails and Merb projects. He is the co-author of <a href="http://www.manning.com/affiliate/idevaffiliate.php?id=485_93" rel="external">jQuery in Action</a> and the upcoming <a href="http://www.manning.com/affiliate/idevaffiliate.php?id=485_145" rel="external">Rails 3 in Action</a>, and is a contributor to <a href="http://www.manning.com/affiliate/idevaffiliate.php?id=485_96" rel="external">Ruby in Practice</a>.</p> <p>He spends most of his time hacking on Rails and Merb, but also on other Ruby community projects, like <a href="http://rubini.us/" rel="external">Rubinius</a> and <a href="http://datamapper.org/" rel="external">Datamapper</a>. And when the solution doesn't yet exist, he'll try his hand at creating one - as such, he's also created projects like <a href="http://github.com/wycats/thor/" rel="external">Thor</a> and <a href="http://github.com/sam/do" rel="external">DO.rb</a>.</p> <p>Yehuda will join us via remote video conferencing.</p> Sat, 29 Aug 2009 09:46:17 GMT http://www.iowaruby.org/meetings/2009/09/ http://www.iowaruby.org/meetings/2009/09/ August 2009 <h4>August 13, 2009</h4> <p>6:00 - 7:30 PM</p> <h4>Special Joint Meeting with <a href="http://cocoaheads.org/us/DesMoinesIowa/index.html" rel="external">Des Moines CocoaHeads</a></h4> <h3>Speaker</h3> <h4>Luke Amdor / <a href="http://www.bigcreek.com/" rel="external">Big Creek Software, LLC</a></h4> <h3>Topic</h3> <h4>Creating Mac OS X Applications with MacRuby</h4> <p><a href="http://www.macruby.org/" rel="external">MacRuby</a> is a full 1.9 compatible version of Ruby that runs on the ObjectiveC runtime. But that's not all. MacRuby brings the elegance and flexibility of Ruby to create full fledged Mac OS X desktop applications. MacRuby doesn't sacrifice speed to do this either.</p> <p>In this presentation, we'll discuss:</p> <ul> <li>how MacRuby fits in the Mac OS X and Ruby ecosystem.</li> <li>Ruby, Objective-C, and CoreFoundation fundamentals.</li> <li>how MacRuby works its magic</li> <li>how to set up MacRuby projects</li> <li>integration with Interface Builder</li> <li>future of MacRuby</li> </ul> <p>We'll also put together some Mac OS X applications:</p> <ul> <li>the quintessential Twitter client</li> <li>a Flickr photo search using HotCocoa</li> <li>using <a href="http://en.wikipedia.org/wiki/Test-driven_development" rel="external">Test Driven Development</a> to create Cocoa applications</li> </ul> <p>We'll also explore the possibility of iPhone applications using MacRuby.</p> Fri, 10 Jul 2009 17:00:37 GMT http://www.iowaruby.org/meetings/2009/08/ http://www.iowaruby.org/meetings/2009/08/ July 2009 <h4>July 9, 2009</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>David W. Body / <a href="http://www.bigcreek.com/" rel="external">Big Creek Software, LLC</a></h4> <h3>Topic</h3> <h4>Cucumber &amp; Webrat</h4> <p><a href="http://cukes.info/" rel="external">Cucumber</a> is a tool that lets software developers write descriptions of how software should behave in plain English (or any other natural language). These plain text descriptions can be executed by Cucumber and can serve as automated acceptance tests for the software they describe.</p> <p>Here is a simple example. Describe a HelloWorld class as follows:</p> <pre> Scenario: HelloWorld says Hello Given An instance of HelloWorld When I send it the say_hello message Then it should say "Hello, Iowa Ruby Brigade!" </pre> <p>Implement the HelloWorld class:</p> <pre> class HelloWorld def say_hello "Hello, Iowa Ruby Brigade!" end end </pre> <p>After some minor setup, execute the description with Cucumber and you get this output:</p> <pre> Scenario: HelloWorld says Hello Given An instance of HelloWorld When I send it the say_hello message Then it should say "Hello, Iowa Ruby Brigade!" 1 scenario (1 passed) 3 steps (3 passed) 0m0.001s </pre> <p>Although Cucumber is written in Ruby, Cucumber can be used to write descriptions (acceptance tests) for software written in Ruby, Java, or .NET.&nbsp; What's more, Cucumber can be used to describe (test) web applications written in any language.</p> <p>Topics that will be covered:</p> <ul> <li>Introduction to Cucumber</li> <li>Using Cucumber with RSpec</li> <li>Using Cucumber with Ruby on Rails</li> <li>Using Cucumber &amp; <a href="http://gitrdoc.com/brynary/webrat/tree/master/" rel="external">Webrat</a> with Java web applications</li> </ul> Wed, 01 Jul 2009 18:38:53 GMT http://www.iowaruby.org/meetings/2009/07/ http://www.iowaruby.org/meetings/2009/07/ June 2009 <h4>June 11, 2009</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>David W. Body / <a href="http://www.bigcreek.com/" rel="external">Big Creek Software, LLC</a></h4> <h3>Topic</h3> <h4>Rack &amp; Metal</h4> <p>One of the most significant changes in Rails 2.3 was Rack integration. Rack integration not only simplifies deployment, but it also enables Rails Metal, which provides a simple way to add super-fast actions to a Rails application. Yet because these change are largely internal, many Rails developers may not even be aware of Rack or Metal &mdash; even after upgrading to Rails 2.3.</p> <p>But Rack isn't just for Rails. Other Ruby web frameworks also include Rack adapters, including Camping, Merb, Sinatra, and Ramaze, to name a few. Web servers providing Rack handlers include Mongrel, WEBrick, Thin, and Phusion Passenger, to name a few. In fact Phusion Passenger, which is often referred to as "mod_rails" could more aptly be named "mod_rack."</p> <p><a href="http://rack.rubyforge.org/" rel="external">Rack</a> is a minimal API for connecting web servers with Ruby web frameworks. How minimal? Here is a simple Rack application:</p> <pre> class HelloWorld def call(env) [200, {"Content-Type" => "text/plain"}, ["Hello world!"]] end end </pre> <p>David will introduce Rack and explain briefly how it works. We will then look at how Rails and other frameworks use Rack, and how developers can take advantage of Rack.</p> <p>Topics that will be covered:</p> <ul> <li>Building and running a simple Rack application</li> <li>Rack integration in Rails, including script/server and rake middleware</li> <li>Rack middleware</li> <li>Rails Metal</li> <li>and more...</li> </ul> Wed, 03 Jun 2009 06:33:23 GMT http://www.iowaruby.org/meetings/2009/06/ http://www.iowaruby.org/meetings/2009/06/ May 2009 <h4>May 14, 2009</h4> <p>6:00 - 7:30 PM</p> <h3>Topic</h3> <h4>RailsConf Recap &amp; General Discussion</h4> <p><a href="http://en.oreilly.com/rails2009/" rel="external">RailsConf</a> is May 4-7, 2009, and at least half a dozen members of the Iowa Ruby Brigade will be there. We'll talk about what happened at RailsConf and give everyone who attended a chance to share some new things they learned with the group.</p> <p>We'll also discuss anything else of interest to the group, so bring your Ruby and Rails questions.</p> Wed, 29 Apr 2009 13:30:00 GMT http://www.iowaruby.org/meetings/2009/05/ http://www.iowaruby.org/meetings/2009/05/ April 2009 <h4>April 9, 2009</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Cassie Schmitz / <a href="http://www.printwhatyoulike.com/" rel="external">PrintWhatYouLike.com</a></h4> <h3>Topic</h3> <h4><a href="http://www.printwhatyoulike.com/" rel="external">PrintWhatYouLike.com</a></h4> <p>In this presentation, Cassie will talk about building her new startup, PrintWhatYouLike.com, an online editor that lets you reformat any web page for printing. Try it out at: <a href="http://www.printwhatyoulike.com" rel="external">www.printwhatyoulike.com</a> Cassie will show how cool Ruby technologies have been used to power PrintWhatYouLike.</p> <p>Topics that will be covered:</p> <ul> <li>Reasons for moving from Google App Engine to Ruby on Rails</li> <li>Creating a proxy server</li> <li>Using Hpricot to parse even horribly invalid HTML</li> <li>Supporting web pages from around the world</li> <li>Incorporation of Twitter on homepage</li> <li>and more...</li> </ul> Wed, 08 Apr 2009 08:36:50 GMT http://www.iowaruby.org/meetings/2009/04/ http://www.iowaruby.org/meetings/2009/04/ March 2009 <h4>March 12, 2009</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Darrin Holst / <a href="http://www.geolearning.com/" rel="external">GeoLearning</a></h4> <h3>Topic</h3> <h4>Shoes</h4> <p>Shoes is a lightweight Ruby GUI toolkit for beginners developed by Why the Lucky Stiff. Here's an example of a simple Shoes application:</p> <pre> Shoes.app { @push = button "Push me" @note = para "Nothing pushed so far" @push.click { @note.replace "Aha! Click!" } } </pre> <p>Darrin will present an introduction and overview of Shoes, including the recently released "Raisins" version.</p> <p>For more information on Shoes, see</p> <p><a href="http://shoooes.net/about/" rel="external">http://shoooes.net/about/</a></p> <p><a href="http://github.com/why/shoes/tree/master" rel="external">http://github.com/why/shoes/tree/master</a></p> Fri, 20 Feb 2009 20:12:12 GMT http://www.iowaruby.org/meetings/2009/03/ http://www.iowaruby.org/meetings/2009/03/ December 2008 <h4>December 11, 2008</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>David W. Body / <a href="http://www.bigcreek.com/" rel="external">Big Creek Software, LLC</a></h4> <h3>Topic</h3> <h4>Ruby and Rails Debugging</h4> <p>David will lead a discussion of Ruby and Rails debugging tools and techniques, including but not limited to</p> <ul> <li>puts (stdout) and logging</li> <li>The standard Ruby debugger</li> <li>Interactive Ruby (IRB) / Rails Console</li> <li>NetBeans Ruby Debugger</li> <li>IntelliJ IDEA Ruby Debugger</li> </ul> <p>Everyone is encouraged to share their own debugging tips and techniques with the group.</p> Wed, 10 Dec 2008 07:20:45 GMT http://www.iowaruby.org/meetings/2008/12/ http://www.iowaruby.org/meetings/2008/12/ November 2008 <h4>November 13, 2008</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>David W. Body / <a href="http://www.bigcreek.com/" rel="external">Big Creek Software, LLC</a></h4> <h3>Topic</h3> <h4>Blocks and Closures in Ruby</h4> <p>People who are new to Ruby can usually learn the basics of the language and start getting work done in just a few hours.&nbsp; That's because most of Ruby's syntax and semantics are familiar to anyone who knows another object-oriented language such as Java, C#, PHP, or Delphi.</p> <p>However, one of the more unique features of Ruby, and one that sometimes mystifies Ruby rookies, is the Ruby block.&nbsp; What's a Ruby block?&nbsp; Here's a simple example:</p> <pre class="textmate-source slush_poppies" style="font-size: 12px;"><span class="source source_ruby"> <span class="constant constant_numeric constant_numeric_ruby">5</span><span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>times <span class="keyword keyword_control keyword_control_start-block keyword_control_start-block_ruby">do </span> puts <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>Hello, Iowa!<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span> <span class="keyword keyword_control keyword_control_ruby">end</span> </span></pre> <p>The block is the code between the do and end keywords.&nbsp; This could also be written as</p> <pre class="textmate-source slush_poppies" style="font-size: 12px;"><span class="source source_ruby"> <span class="constant constant_numeric constant_numeric_ruby">5</span><span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>times <span class="punctuation punctuation_section punctuation_section_scope punctuation_section_scope_ruby">{</span><span class="meta meta_syntax meta_syntax_ruby meta_syntax_ruby_start-block"> </span>puts <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>Hello, Iowa!<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span> <span class="punctuation punctuation_section punctuation_section_scope punctuation_section_scope_ruby">}</span> </span></pre> <p>This time the block is the code inside the {}.</p> <p>David's presentation will be in three parts.</p> <ul> <li><p>For Ruby beginners, David will introduce Ruby iterators and blocks, and will show how they work and how you can use them in your own programs. You'll see that it's simpler than you might first think.</p></li> <li><p>For intermediate Rubyists, David will discuss the closely related subjects of closures, and Ruby procs and lambdas.&nbsp; We'll see that procs and lambdas are essentially objects representing chunks of code that operate in the context in which they were defined.</p></li> <li><p>Finally, for all Ruby users, David will talk about the changes in Ruby 1.9 relating to blocks, procs, lambdas, etc.</p></li> </ul> <p>Something for everyone!</p> Wed, 22 Oct 2008 19:20:14 GMT http://www.iowaruby.org/meetings/2008/11/ http://www.iowaruby.org/meetings/2008/11/ October 2008 <h4>Thursday, October 9, 2008</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4><a href="http://blog.blainebuxton.com" rel="external">Blaine Buxton</a></h4> <h3>Topic</h3> <h4>Advanced Ruby</h4> <p>Ruby is a wondrous language that can do more than just simply power Rails.&nbsp; In this talk, Blaine Buxton will show off his <a href="http://rubyforge.org/projects/lazyenum/" rel="external">Lazy Enumeration</a> project, which while not a large project shows off a lot of Ruby's most advanced features.&nbsp; Lazy Enumeration was implemented when Blaine read a paper on Higher Order Methods and wanted to play around with the idea.&nbsp; Along the way, the idea was expanded to lazily build collections as well (they calculate collect, select, etc only when necessary).&nbsp; Be prepared to see excellent use of polymorphism and functional programming.&nbsp; Blaine will show how you too can push your Ruby code to greater heights.&nbsp; Bring your thinking caps and curiosity.</p> <p>Blaine leads the <a href="http://odynug.blainebuxton.com/" rel="external">Omaha Dynamic Language User Group</a>.</p> Sat, 13 Sep 2008 08:52:44 GMT http://www.iowaruby.org/meetings/2008/10/ http://www.iowaruby.org/meetings/2008/10/ September 2008 <h4>Thursday, September 11, 2008</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Cassie Schmitz / <a href="http://www.iowai.org/" rel="external">Iowa Interactive</a></h4> <h3>Topic</h3> <h4>RSpec</h4> <p><a href="http://rspec.info/" rel="external">RSpec</a> is a behavior-driven development framework for Ruby. Cassie will demonstrate the features of RSpec and describe her experience with using RSpec in her latest Ruby on Rails project.</p> <p>Topics that will be covered:</p> <ul> <li>Behavior-Driven Development vs. Test-Driven Development</li> <li>Expressing the expected behavior of your code</li> <li>Spec::Rails</li> <li>Story Runner</li> <li>Mock objects and method stubs</li> <li>Generating specifications</li> <li>RCov Coverage tool integration</li> </ul> Wed, 10 Sep 2008 07:42:21 GMT http://www.iowaruby.org/meetings/2008/09/ http://www.iowaruby.org/meetings/2008/09/ August 2008 <h4>Thursday, August 14, 2008</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Frank Luke / <a href="http://www.bigcreek.com/" rel="external">Big Creek Software, LLC</a></h4> <h3>Topic</h3> <h4>NetBeans</h4> <p>InfoWorld just published a <a href="http://www.infoworld.com/article/08/07/07/28TC-ruby-ides_1.html" rel="external">review of nine Rails IDEs and editors</a>, and rated <a href="http://netbeans.org" rel="external">NetBeans 6.1</a> the highest of the bunch.&nbsp; NetBeans, which is free and runs on Windows, Linux, Mac OS X, and Solaris, even beat <a href="http://macromates.com" rel="external">TextMate</a>, the editor of choice of the Rails core team.</p> <p>Frank will demonstrate the Ruby and Rails features of the latest version of NetBeans and will describe his experience using NetBeans as a Ruby IDE on a daily basis for several weeks.</p> <p>NetBeans Ruby features include:</p> <ul> <li>Ruby project management</li> <li>Ruby source code editor with code completion</li> <li>Ruby refactoring support</li> <li>Support for Test::Unit, AutoTest, and RSpec</li> <li>Support for running Rails generators and Rake tasks within the IDE</li> <li>Ruby and Rails Debugger</li> </ul> Wed, 13 Aug 2008 18:57:31 GMT http://www.iowaruby.org/meetings/2008/08/ http://www.iowaruby.org/meetings/2008/08/ July 2008 <h4>Thursday, July 10, 2008</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h2 title="and your fellow Rubyists">You</h2> <h3>Topic</h3> <h4>Tips &amp; Tricks / Q&amp;A / Hackfest</h4> <p>Bring your Ruby questions, puzzlers, tips, &amp; tricks and join us for an open Q&amp;A and coding session.&nbsp; Whether you're a newbie with questions, an intermediate Rubyist, or an advanced Ruby hacker, this meeting is for you.&nbsp; Get your questions answered, share your knowledge, and get to know your fellow programmers.</p> <p>Please come with at least one question or tip.</p> Fri, 27 Jun 2008 07:14:00 GMT http://www.iowaruby.org/meetings/2008/07/ http://www.iowaruby.org/meetings/2008/07/ June 2008 <h4>Thursday, June 19, 2008</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>David W. Body / <a href="http://www.bigcreek.com/" rel="external">Big Creek Software, LLC</a></h4> <h3>Topic</h3> <h4>What's New in Rails 2.1?</h4> <p>David will explain and demonstrate the new features of <a href="http://www.rubyonrails.org/" rel="external">Ruby on Rails</a> version 2.1, which was officially <a href="http://weblog.rubyonrails.org/2008/6/1/rails-2-1-time-zones-dirty-caching-gem-dependencies-caching-etc" rel="external">released</a> June 1, 2008, at <a href="http://en.oreilly.com/rails2008/public/content/home" rel="external">RailsConf.</a>&nbsp; Rails 2.1 is the result of more than 1600 patches submitted by 1400 contributors in the 6 months or so since Rails 2.0 was released.</p> <p>New features include:</p> <ul> <li>Time zones</li> <li>Partial updates</li> <li>Gem dependencies</li> <li>Named scope</li> <li><span class="caps">UTC</span>-based migrations</li> <li>Better caching</li> </ul> Mon, 02 Jun 2008 20:23:00 GMT http://www.iowaruby.org/meetings/2008/06/ http://www.iowaruby.org/meetings/2008/06/ May 2008 <h4>Thursday, May 15, 2008</h4> <p>6:00 - 7:30 PM</p> <h3>Speakers</h3> <h4>Luke Amdor / <a href="http://www.studentloan.org/" rel="external">Iowa Student Loan</a></h4> <h4>Ryan Hanks</h4> <h3>Topic</h3> <h4>Git</h4> <p>Are you ready for an actual version control system that actually stays out of the way?&nbsp; A system that doesn't take umpteen million commands just to work on a branch?&nbsp; Something that doesn't force its workflow on you.&nbsp; Welcome to the world of Git.&nbsp; Git (<a href="http://git.or.cz/" rel="external">http://git.or.cz/</a>) is a distributed version control system focused on speed, effectivity and real-world usability.&nbsp; Git was born out of the need for a non-linear distributed workflow for Linux kernel development.&nbsp; Linus Torvald's design criteria were easy: "Take CVS as an example of what not to do.&nbsp; If in doubt, do the opposite."</p> Sat, 03 May 2008 07:18:23 GMT http://www.iowaruby.org/meetings/2008/05/ http://www.iowaruby.org/meetings/2008/05/ April 2008 <h4>Thursday, April 17, 2008</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>David W. Body / <a href="http://www.bigcreek.com/" rel="external">Big Creek Software, LLC</a></h4> <h3>Topic</h3> <h4>Capistrano</h4> <p><a href="http://www.capify.org/" rel="external">Capistrano</a>, a tool for automating tasks on remote servers, has become the de facto standard for deploying Rails applications.&nbsp; But it can be used for many other things, including deploying applications written in other languages and frameworks, as well as general system administration.&nbsp; David's presentation will cover the following topics:</p> <ul> <li>Getting started with Capistrano</li> <li>Capistrano's requirements and assumptions</li> <li>Writing Capistrano recipes</li> <li>Deploying Rails applications with Capistrano</li> <li>Rolling back changes on remote servers</li> <li>Using Capistrano for system administration and other tasks</li> </ul> Mon, 07 Apr 2008 18:41:59 GMT http://www.iowaruby.org/meetings/2008/04/ http://www.iowaruby.org/meetings/2008/04/ March 2008 <h4>Thursday, March 27, 2008<span style="vertical-align:super">*</span></h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Luke Amdor / <a href="http://www.studentloan.org/" rel="external">Iowa Student Loan</a></h4> <h3>Topic</h3> <h4>Alternative Ruby (JRuby / Rubinius / IronRuby)</h4> <p><span style="vertical-align:super">*</span><b>Note:</b>&nbsp; This is a special meeting date.&nbsp; We will return to our normal third Thursday meeting date in April.</p> <p>Lately there has been a plethora of news surrounding alternative Ruby interpreters: Sun hires the main JRuby developers, Oracle begins deploying JRuby on Rails applications, Engine Yard hires Rubinius developers to work full time on Rubinius, and Microsoft is currently developing it's own Ruby interpreter IronRuby to run on its CLR.</p> <p>In this presentation, we'll talk about the motivation behind these interpreters, where they're headed, and what impact this is having on the Ruby community.</p> Sun, 02 Mar 2008 22:05:53 GMT http://www.iowaruby.org/meetings/2008/03/ http://www.iowaruby.org/meetings/2008/03/ December 2007 <h4>Thursday, December 20, 2007</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>Josh More / <a href="http://www.alliancetechnologies.net/" rel="external">Alliance Technologies</a></h4> <h3>Topic</h3> <h4>Web Application Security</h4> <p>Josh More presents an excerpt from SANS 504: Hacker Techniques, Exploits and Incident Handling. We will cover issues like Cross Site Scripting (XSS) and SQL Injection, with examples in a Ruby on Rails application.</p> <p>Josh More has fourteen years of experience in IT, and seven years working in Security. He has designed, developed, and implemented distributed Linux-based secure products. He has also been the lead for all technical security matters -- ranging from incident handling to prevention -- in multiple companies. From a business perspective, he has consulted on security policy, vulnerability analysis, and strategy. He will be teaching a SANS security course in Des Moines in January 2008.</p> <h3>Meeting Location</h3> <p style="font-weight:bold"><a href="http://www.alliancetechnologies.net/" rel="external">Alliance Technologies</a><br/> 400 Locust Street, Suite 840<br/> Des Moines, Iowa</p> <p>Directions</p> <ol> <li>Park at the ramp at 4th and Grand, or drive around and find a spot on the street. (ramp parking costs $, street parking is free after 6).</li> <li>Come into the capital square building and take the escalator to the 2nd floor.&nbsp; (If you come in via the skywalk, you will already be on the second floor.)</li> <li>Walk around to where the elevators are, sign in, and take an elevator to the 8th floor.</li> <li>Walk towards the near wall, turn left and cross the little bridge.&nbsp; (The big bridge is the wrong way).</li> <li>Take the first left after you exit the small bridge.&nbsp; Do not turn left until after you have crossed the bridge.</li> </ol> <p>We are in a conference room on the left, after you pass several rooms and cubes.&nbsp; Generally, you can just follow the noise.</p> <p>If you get lost, call Josh More at: 515-245-7701</p> <p><a href="http://maps.google.com/maps?f=q&hl=en&geocode=&time=&date=&ttype=&q=400+Locust+Street,+Des+Moines,+IA&sll=41.594713,-93.620596&sspn=0.017716,0.038753&ie=UTF8&z=16&iwloc=addr&om=1" rel="external">Map</a> (Alliance Technologies)</p> <h3>Dinner After the Meeting</h3> <p>If you can, please plan to join us for dinner at a local restaurant after the meeting.</p> Tue, 18 Dec 2007 19:01:44 GMT http://www.iowaruby.org/meetings/2007/12/ http://www.iowaruby.org/meetings/2007/12/ November 2007 <h4>Thursday, November 15, 2007</h4> <p>6:00 - 7:30 PM</p> <h3>Speaker</h3> <h4>David W. Body / <a href="http://www.bigcreek.com" rel="external">Big Creek Software, LLC</a></h4> <h3>Topic</h3> <h4>Object-Oriented Ruby</h4> <p>The fundamentals of object-oriented programming in Ruby are straightforward and easy to learn.&nbsp; But there are some aspects of object-oriented programming in Ruby that are special and set Ruby apart.</p> <p>Every data type in Ruby is an object, including data types that may be considered primitives in other languages.&nbsp; For example, integers, booleans, and nil are objects.&nbsp; Like other object-oriented languages, Ruby supports inheritance and dynamic dispatch of methods.&nbsp; Although Ruby does not support multiple inheritance, it does allow collections of methods called modules to be "mixed into" classes.</p> <p>As in other object-oriented languages, Ruby objects are instances of classes.&nbsp; But Ruby classes are themselves objects (instances of the class Class).&nbsp; Yes, that means that Class is an instance of itself!</p> Wed, 14 Nov 2007 13:43:26 GMT http://www.iowaruby.org/meetings/2007/11/ http://www.iowaruby.org/meetings/2007/11/ October 2007 <h4>Thursday, October 18, 2007</h4> <p>6:00 - 7:30 PM</p> <h3>Speakers</h3> <h4>Mike Gorski, Lead Architect, <a href="http://www.outsellinc.com" rel="external">Outsell, Inc.</a><br/> Dan Buettner, IT Manager, Gannett Regional Toning Centers</h4> <h3>Topic</h3> <h4>Real Applications in Ruby on Rails: An Introduction</h4> <p>Ruby on Rails (RoR) is web application framework written in Ruby that implements a Model-View-Controller architecture for database-backed web sites.&nbsp; There are plenty of tutorials available on the web which will guide you through building a simple web application with Ruby on Rails.&nbsp; With this talk we hope to take that one step further by showing an RoR application in the real world.</p> Wed, 17 Oct 2007 10:26:16 GMT http://www.iowaruby.org/meetings/2007/10/ http://www.iowaruby.org/meetings/2007/10/ September 2007 <h4>Thursday, September 20, 2007 - Organizational Meeting</h4> <p>6:00 - 7:30 PM</p> <p>Please join us for our first meeting. We're just getting started, so please let us know how we can best serve the needs and interests of the Iowa Ruby community.</p> <h3>Speaker</h3> <p>David W. Body / <a href="http://www.bigcreek.com" rel="external">Big Creek Software, LLC</a></p> <h3>Topics</h3> <ul> <li>Organizational Meeting</li> <li>Getting Started with Ruby</li> </ul> Sat, 28 Jul 2007 08:22:44 GMT http://www.iowaruby.org/meetings/2007/09/ http://www.iowaruby.org/meetings/2007/09/