Ruby Lab
From Dev8D
Contents |
Ruby on Rails Lab
#dev8d #lab |
| When: | Thu 25th 14:00-18:00 |
| Where: | Coding_Lab |
| Twitter Tags: | #dev8d #lab |
Organisers
Attending
If you are thinking of attending, your name could be added here (places are limited):
- Tim Donohue
- David Robinson
- Luke Woodham
- Murtaza Gulamali
- Andrew White
- Monica Duke
- Martin Evans
- Simon Lamb
- Andy Thompson
- Julian Cheal
- Tim Bannister
- Adrian Mouat
- John Harrison
- Elias Theocharopoulos
- Martin Post
- Pete Frost
- Dan Hagon
- Hyeonsook Kim
- Ross McFarlane
- Anthony Thomas
Coding Dojos
The coding lab will be in the style of a 'Coding Dojo'.
If you would like to understand what a 'Coding Dojo' is, David Flanders has kindly put together this video:
[Principles behind Coding Dojos]
Introduction
This session will involve a quick "crash course" in Ruby / Ruby on Rails, followed by a longer coding lab in the style of a Coding Dojo (see above for a nice intro video by David Flanders). All attendees will have the opportunity to learn from one another and practice basic Ruby on Rails programming in a team programming challenge. Rails newbies and experts (who want to share tips/knowledge) are both welcome!
We will be literally "starting from scratch" during this Dojo -- creating a brand new Ruby on Rails project using the quick start tools/scripts that Rails provides. Part of the real beauty of Rails is that it allows you to create projects quickly. This dojo will give everyone a chance to experience this first-hand.
We'll work off a common MacBook Pro laptop (mine), with Ruby on Rails pre-installed along with the NetBeans IDE, which is my personal Ruby On Rails IDE of choice. Obviously, we'll also have the terminal/command-line as a resource, and you may be surprised at what all can be accomplished via command-line using Rails.
Our Challenge / Kata
Here's what we'll be building in Ruby on Rails during the Lab. It all revolves around a relatively simple question:
"How do you find a subject expert on your campus?"
(Or, alternatively, "How do you find someone who has researched or is researching a very specific subject on your campus?")
A not-so-simple problem
Although at a first glance, the above question may seem rather simple (especially to those of us who have worked in a Library), a more complex problem lies underneath. Generally speaking, our university or institutional libraries provide access to a lot of great research and resources. These resources help people to locate relevant (and occasionally irrelevant) research from throughout the world. But, how well do these resources allow you to locate an expert on your very campus? Sure, maybe a local librarian could help. Or, maybe a call to a local College or Department may provide a few leads. Your institutional repository could also find a few people, assuming that it is well populated with research in that subject area. Google could even help, assuming that the researcher(s) you are looking for have maintained a current list of publications/research interests on the web (But, then again, will you be able to find it?).
As you can probably tell, I'm trying to point out a "gap" that exists on many larger university campuses. Researchers may have online CVs, but are they really up-to-date (or even findable via Google)? Libraries may have resources or a subject librarian who could be helpful, but do they really provide you with resources to find local experts easily? How much searching/digging would you need to do, especially if you are new to campus or new to that subject area?
Our challenge (scoping the larger problem)
Suppose you've been asked to help build a system that help people find local subject experts or potential collaborators. Your university would like you to create a brand new "research management system". This is not the same as an institutional repository (though there may be some bits of overlap, obviously). In this case, you're only wanting to store summaries or metadata about research (and perhaps store links to external locations where files may be stored, e.g. your IR). Again, no files, just metadata.
Of course, there's also the people. You need to know at a basic level who wrote what. We cannot just shove a bunch of metadata into a database and call it quits. Let's scope this problem as simple as possible to start (time permitting we can always expand). For the sake of simplification, we'll make the following assumptions (most of which are unlikely in reality):
- Assume we already know who has written what on our campus. We've been given a pile of up-to-date CVs for everyone on campus, and a large staff of undergrad students to help with the data entry. So, we don't need to worry about any special parsing of web CVs, or even finding this data. (In reality, for the purposes of our kata, we'll likely just enter in some "dummy" data for testing our system.)
- To start with, we'll keep things very simple. There are "people" and there are "works" (or research). A Person may write many works. A Work may be written by one or more people. Anything beyond those relationships can be left out for now (though, time-permitting we can always expand).
- We'll need a way to *search* these works. After all, the point is to be able to find an expert who's already done research on a particular topic. There's many great indexing/searching tools out there (e.g. Solr), but we'll keep this simple and just perform direct searching against fields in the database.
So, in summary, we're really just looking to build a simple, web-based system (doesn't have to be pretty) that can store information (metadata) about People, including listing all their Works (i.e. research). At a very basic level we'd also want to be able to Search this system.
Additional challenges (time-permitting)
If the above challenge doesn't fill up the alloted time, I have several other related questions we could tackle (or we may even come up with several other problems/questions together). There are also many simplifications I've made to reality in the above challenge. For instance, People actually write Works under some form of "identity" (or pen-name). They may have many different identities (some may even be pseudonyms) that they write works under (e.g. Jane Smith, Jane A. Smith, J.A. Smith, J. Smith, Jane A. Roberts (married name), etc.)
You will probably notice many more "holes" in reality in the above challenge description that we can start to investigate further, time-permitting.
Does this all sound familiar?
There are already several systems like this available, including Cornell's VIVO, Symplectic, and my personal favorite, BibApp. (Full disclosure: Along with colleagues at U of Wisconsin and U of Illinois, I helped to design/build BibApp. I first learned Ruby on Rails during its development, hence my creating a challenge in its honor.)
References
A list of potentially useful Ruby and/or Rails references for the lab (or just for your usage later on). Feel free to add to the list.
Ruby References
API/Syntax References:
- Ruby Syntax Refernce
- Ruby API Docs (RDoc format)
Quick References:
- Various Ruby CheatSheets / Reference Cards
- Two-page Ruby Syntax Reference Card (PDF)
- 5-page Ruby CheatSheet (PDF)
Tutorials:
- Ruby in 20 minutes
- Why's (Poignant) Guide to Ruby - Entertaining guide / online book with comics, lots of silliness
Rails References
Overviews / Guides:
- Rails Guides - Various well-written Ruby on Rails guides (esp. the Getting Started guide)
- Rails via Commandline Guide (tips on using Generation scripts, Scaffolding, Rake)
- Rails Quick Guide - Comprehensive guide/reference to all things Rails
- Starting Ruby on Rails -- What I Wish I Knew - Various tips & hints for a Newbie to Rails.
Quick References:
Tutorials:
| Attending | Timdonohue +, Osoivex +, Luke woodham +, Mygulamali +, A.white +, Mbonett +, Martin evans +, Simonlamb +, AndyThompson +, Juliancheal +, TimB +, Adrianmouat +, JohnHarrison +, Etheocha +, Smidsy +, Slimeypete +, Axiomsofchoice +, Hyeonsook +, Rossmcf +, and AnthonyThomas + |
| Begin Time | 25 February 2010 14:00:00 + |
| End Time | 25 February 2010 18:00:00 + |
| Equivalent URIThis property is a special property in this wiki. | http://data.dev8d.org/2010/programme/dev8d_programme.rdf#event-thu-1400-1800-lab + |
| Event Level | 4 + |
| Location | Coding Lab + |
| Organiser | Timdonohue + |
| Title | Ruby on Rails Lab + |
| User | Slimeypete +, Axiomsofchoice +, Hyeonsook +, Rossmcf +, and AnthonyThomas + |

