Pages

Showing posts with label codemash. Show all posts
Showing posts with label codemash. Show all posts

Saturday, January 16, 2010

CodeMash Precompiler Session # 1 - Ruby Koans

As I mentioned in my last post, I recently returned from CodeMash 2010, where I attended two PreCompiler sessions. For the morning session, I attended "The Ruby Koans, Learning Ruby One Test at a Time with Joe O'Brien and Jim Weirich" which taught Ruby syntax and how to write tests in Ruby. (Joe also gave an excellent and extremely popular talk called: "Refactoring the Programmer"

The word "koan" comes from Zen Buddhism. As I understand it, Jim and Joe called their talk "Ruby Koans" because of their unique style of teaching that relies as much on mystery and intuition as it does on rational thinking.

Jim has asked participants in the CodeMash session to show the koans to someone else, so I encourage you to look at them. You can try the koans yourself as follows:

(1) Have a working version of Ruby:
- Windows: Install from: http://rubyforge.org/frs/download.php/66871/rubyinstaller-1.8.6-p383-rc1.exe
- Macs: OS X comes preloaded on Macs so you are ready to go.
- Linux Users: Use apt-get, or whatever is appropriate for your system

(2) Download the Ruby Koans and install into a working directory:
- http://cloud.github.com/downloads/edgecase/ruby_koans/rubykoans.zip

The file README.rdoc is a text file that explains the concept, tells how to get started, and gives contact information.

To set up for the exercise: unzip the koans, open a command-prompt, and cd to the directory containing the koans. The exercise starts at the most simple level possible, but if you complete the koans, you will learn most of the Ruby syntax and see examples of how Ruby behaves at edge cases.

To start the exersise, give the command:
ruby path_to_enlightenment.rb
You should see the following result:

Thinking AboutAsserts
test_assert_truth has damaged your karma.

You have not yet reached enlightenment ...
is not true.

Please meditate on the following code:
./about_asserts.rb:10:in `test_assert_truth'
path_to_enlightenment.rb:28
The line " is not true." gives a hint as to why the test failed.
The line after the "Please meditate..." line tells what line of code the test failed on.

Looking in the file about_asserts.rb around line 10, we see:
def test_assert_truth
assert false # This should be true
end
In Ruby, def/end declares a method, and the word: "test_" at the start of the method name declares it as a test. The comment is a hint from Joe that the test fails, in this case rather obviously, because it is asserting false. So this koan demonstrates the a test in its simplest form, one that asserts a boolean condition. If you change false to true and run "ruby path_to_enlightenment.rb" again, that test will pass and the error you will see:
Thinking AboutAsserts
test_assert_truth has expanded your awareness.
test_assert_with_message has damaged your karma.

You have not yet reached enlightenment ...
This should be true -- Please fix this.
is not true.

Please meditate on the following code:
./about_asserts.rb:16:in `test_assert_with_message'
path_to_enlightenment.rb:28

So now the test_assert_truth test passes and the test_assert_with_message test is failing. The code for the second test is:
def test_assert_with_message
assert false, "This should be true -- Please fix this"
end
and we see where the "This should be true..." message comes from. Joe has now shown us what an assertion with an error message looks like. Again change false to true, rerun the ruby command and you'll see the next failing test.

The koans go on to present illustrations of control statements, hashes, scope, strings, arrays, inheritance, iteration and others language details. I don't think anyone at the PreCompiler finished all the exercises during that session - I sure didn't - but it's clear that I will know a lot about Ruby syntax when I do.


Finally if you have questions about the koans, you can reach Jim at his website http://onestepback.org/ or @jimweirich on Twitter. Or you can reach Joe at his website http://objo.com or @objo on Twitter

Monday, January 11, 2010

Grand Rapids CodeRetreat ... but it's in Ruby

I'm a big fan of CodeRetreat. Besides being a fun day, it's a great way to practice agile things like: pair programming, supportive environment, software craftsmanship, TDD, retrospectives, courage, and so on. I think they are great events for both aspiring Agilists and experienced Agilists.

I read Jeremy Anderson's blog post about an upcoming CodeRetreat in Grand Rapids. I was all set to go when I read that it will be held in Ruby, and since I haven't used Ruby, I was discouraged. As much as I'd like to try it, I'm not sure how much time I'll have in my schedule before then.

Then I found TryRuby. It offers an interactive Ruby prompt and a follow-along tutorial, right in your browser! And there's another tutorial I found, Ruby in Twenty Minutes .

So I guess I'll have to revisit the sessions I planned to attend this week at CodeMash 2010 and see if there are beginner Ruby sessions. Perhaps, between them and some extra work during downtime, I'll pick up enough Ruby to feel comfortable attending the Grand Rapids Code Mash next month.

Sunday, November 15, 2009

CodeMash 2010

I've registered for CodeMash 2010
January 14-15, 2010 in Sandusky, OH

There are several agile sessions scheduled:

- Agile Iteration 0 by Ken Sipe
- An Agile Toolchain for Flex RIAs by James Ward
- Credit Crunch Code – Time to Pay Back the Technical Debt by Gary Short
- Domain-Driven Design: An Introduction by Barry Hawkins
- Seeing Constraints, Kanban Explained by Jon Stahl
- Testing the Enterprise by Leon Gersing and Charley Baker
- User Stories: Closing the Agile Loop by Barry Hawkins

Wednesday is an optional Precompiler session(full registration required to attend). The agile topics that day are:
- Practical T/BDD - Half Day Hands-on Lab by Phil Japikse
- Test Driven Development: From Concept to Deployment with Leon Gersing (all day)

There are loads of sessions that aren't specifically about agile but look great anyhow. According to the CodeMash site:
More than 45 sessions will be held, spread across the following tracks:

* Architecture: SOA, W3C Standards, WS* Implementations, Interoperability and all things 30,000 foot or higher.
* Desktop Development: Standalone Applications, Fat/Smart Client, Client/Server and all things running local on Windows, Mac or your favorite Linux distribution.
* Web Development: Web services, Ajax, frameworks, and all things related to the browser.
* Methodologies: Anything pertinent to how modern development methodologies help build software faster, cheaper, and with less grief.
* Mobility: All things mobile: platforms, devices, content distribution, social networking, community building, and anything else used in conjunction with those devices which have little screens.
* Languages: What's new and cool in languages such as C#, Java, PHP, Python, PHP, Ruby? Of course there are other languages which we've omitted from this list for reasons of space but don't mean to offend their feelings.

and since one of the seven pillars is Self Improvement, why not attend and check out what interests you or what you think might help your team? And the cost for the conference is very low (see below.)

Details:
CodeMash 2010 will be held January 13-15, 2010 in Sandusky, OH at Kalahari Resort, America's largest indoor water park

Early Bird discount $175 until Nov 30
Regular $220 until Jan 7, 2010
Procrastinator $300