14 Ways To Have Fun Coding Ruby
This guest post is contributed by Jeff Schoolcraft, who runs The Queue Incorporated a freelance consultancy that provides custom software development in Ruby, Rails and iOS. He produces screencasts with his partner, Istvan Hoka, at BDDCasts. When he’s not building his business he’s trying to keep up with his two daughters and spending the rare free moment with his wife. You can read his blog and follow him on twitter @jschoolcraft.
From time to time you might need to spice up your romance with code to make it a bit more interesting and fun. Maybe you’ve been there? You’d rather do anything except find the extra closing tag in some view. Or maybe you’ve stumbled across some particularly horrible use of google + copy and paste. Or, you might just be looking to practice. You don’t necessarily want to get on the same treadmill day after day so you’re looking for something new.
Here are 14 different ways to have fun coding Ruby.
1. Ruby Quiz
The original problem site for our community was based on the Perl Quiz of the Week. Sheparded by James Edward Gray II for over three years, even becoming a book from Pragmatic Programmers, it’s now under new management. It spent a bit of time as Ruby Quiz 2.0 covering 157-188 by Matthew Moss. Most recently as Ruby Quiz 3 maintained by Daniel More.
Basically every Friday a quiz gets sent to the Ruby Talk mailing list, you have the weekend to solve the quiz during a 48 hour no-spoiler period. After that everyone is invited to contribute solutions and discussion back to the list. The current quiz maintainer sends a summary of the submissions back to the list on Thursday.
Dave Thomas put out a series of 15 Kata, or specific practice sessions, to help you flex your Ruby muscles and excel at Ruby. They’re designed to be repeated, practiced and discarded to come back to again. Cory Haines has most recently carried the Kata torch with KataCasts encouraging the programming community to do a screen recording of their kata’s to publish for peer review.
- What is the smallest number divisible by each of the numbers 1 to 20?
- Finding Fibonacci numbers for which the first and last nine digits are pandigital.
- Calculate the sum of all the primes below two million.
These are just a sampling of the 300 (and growing) list of problems to solve at Project Euler. What’s particularly fun about this site is the need to use math and code to solve the problem. Most (all?) problems have a way to check your answer.
Even this very site ( RubyLearning.org ) has a set of challenges to test your Ruby mettle. The problems are submitted by folks in the community and look to come out monthly.
While not necessarily a quiz or problem site, per se, it does provide you with a fairly broad exposure to various types of programming challenges and gives you an opportunity to refactor (or learn) the submitted code samples. Not everyone has the benefit of a pair, or even a colleague to bounce ideas off, so this is a welcome addition.
With a Partner
Picture this: a bunch of hackers, some notebooks, pizza, beer and a hankering to build something better (or at all). That’s pretty much a hackfest. Some are organized more than others. Some are just ad hoc events where you look for an interesting project, or a partner for your own intersting project. Here’s a Google Search for HackFests in the last month.
7. Coding Dojo
Coding Dojo’s are karate practice for coders. Basically a group of coders meet to go over a set problem, or kata. They’re either completed as a PreparedKata or a RandoriKata. The latter involving the whole group in a round-robin pair programming kata. Here’s a list of some CodingDojos
Code vs Code
This evolved from a RubyConf or RailsConf talk about Kata and became an online battleship competition using Ruby. I don’t think there’s much movement in the project anymore, but it’s still something you could pull together for a Ruby Brigade meeting, I imagine.
RRobots is another older game/competition for Ruby. This one you build the AI to control robot tanks and destroy your enemies. Again, it’s older but still something you could probably pull together for a Ruby Brigade or HackFest.
Ruby Warrior is a game designed by Ryan Bates to teach Ruby and AI in a fun, interactive way. You play a warrior climbing a tower trying to reach the ruby at the top. You have to battle enemies, rescue captives and reach the stairs all using your code.
11. Rails Rumble
The first, often duplicated, what kind of a kick ass web application can you develop in 48 hours using Ruby and Rails competition. It’s been going on since 2007 and it’s a load of fun. Either by yourself or with 3 of your mates see what you can build in 48 hours.
12. Scratching an Itch
Build a better mousetrap. Scrape a few places for data and mash it together to come up with something clever or entertaining. Solve a problem. Ease some pain. There has to be an idea that you’ve been waiting to get some time to implement, just do it.
13. Contribute to OSS
Free as in beer. Free as in speech. Free as in puppies. Feel free to help out on one of the OSS projects you clearly use day in and day out that could use some love. Most OSS maintainers will bend over backwards to get you up to speed and coding on the project. You don’t even have to be able to code at first, a lot of projects can use help with documentation.
Maybe not your idea of fun to start, but you’ll be rewarded by the welcoming of a new community.
Some people love to teach. If you’re one of them mentoring someone in the community is a great way to keep fresh and share your knowledge in a more personal medium than your blog or twitter. The RailsBridge maintains the Rails Mentors portal connecting students with mentors. Before you say you don’t have anything to teach, or worse, learn, remember that it’s not always about the code.
So – what do you think? I’d love to double this list, or triple it. If you have ideas, sites, resources, etc. that I haven’t mentioned, please post them as comments here.
Post supported by Blue Box Group: Blue Box Group is in the business of providing affordable Rails hosting solutions! They approach web hosting, virtual servers and dedicated servers differently, treating each client as a partner and working towards the common goal of success for their business. They have the experience, talent and equipment to make your site a success!