Noel Rappin Writes Here


July 13, 2010: I Guess It Isn't A Dynabook Yet

Alan Kay, RSpec, Ruby, iPhoneNoel RappinComment


Back to link posts today. The book is still lurching forward on the legacy chapter. Thanks to those couple of you that asked questions on the forum and made it look a little less lonely over there.

Quick Review

Quick iPhone 4 impressions, but understand that I haven't actually, you know, used it yet, just took it home and set it up.

  • The screen sharpness really is notice able. It's amazing how small text can get and still be basically readable. Apple's also updated the system font and a couple of the dingbats, and it looks really nice.

  • My first FaceTime call froze five seconds in. It was cool for that five seconds, though.

  • I like the physical look of it, but haven't yet gotten over the "hey, it's glass, be careful reaction". I haven't seen the antenna issue, but then I haven't been on 3G much yet, and I'm not lefty.

  • I have to get used to the multitasking and the idea that I can sometimes switch between apps without going back to the home screen. I wonder how hard that'll take. I was also very used to my first page, and as much as I'm glad I can organize things, not used to it yet.

  • Weirdest design decision I've seen so far: iBooks for epub has really too wide margins and as far as I can tell, now way to fix.


John Petersen has a brief comparison of some .NET and Ruby code. It's interesting especially for how much he's eventually able to clean up the .NET code. That suggests to me that at least some of Ruby's power is in the community standards for clean code. (Note to self: make a list of favorite Ruby features some day)

Dave Chelimsky has two more posts on RSpec 2, this time some changes in how the generators work. Part 1 and Part 2. At this rate, I'll be able to update the RSpec chapter soon.

Envy Labs has a new screencast up about LiveReload, which lets you update JavaScript and CSS during development without updating an entire page.

Jeff Kreftmeijer has a nice example of cleaning up a test base with Timecop.

Mark Guzdial writes a little bit about the iPad as a paper replacement versus something that goes beyond paper. Be sure and scroll down for Alan Kay's comment about whether the iPad is his Dynabook (Spoiler alert: He thinks it's too consumer package software oriented and doesn't let people write code on it.) I wish that Apple had let Scratch in to iOS, that would be really cool.

June 30, 2010: The Triumphant Return of the Monster Link Post

Cucumber, Don Norman, Rails 3, Ruby, Shoulda, Steve Martin, UXD, iPhone, rvm, writingNoel RappinComment

The end of the repair story

At the end, a very positive experience with Apple support. The repair was free, done when they said it would be done, and all told, I spent less than fifteen minutes in the store between both halves of the visit. Plus, they replaced the top part of my pre-unibody MacBook, which was worn down and discolored from my gunky hands, almost as though they didn't want an ugly Mac in the field.

Book Status

With the laptop back, I'm back to work, last night going back over the Style chapter. I think now the plan is to do a slightly smaller next beta that would get out next week, just the Coverage and Style chapters, with the next batch, probably the Legacy and redo of the startup example coming shortly on its heels.

Also, the book has somewhat quietly shown up on Amazon and, I presume, other online outlets.

Of course, the beta is still available at PragProg.


Many, many links, as I catch up on an entire week's worth.

Thoughtbot announces that factory_girl is now split into a separate Rails 3 gem, in much the same way that Cucumber and RSpec are.

Also in Thoughtbot-land, the should_change command has been deprecated from Shoulda.

Jeremy McAnnaly announces the 2010 Ruby Hoedown, after some rescheduling due to the Nashville flooding. Again, it's the low, low, price of free. I'm hoping to break my 0-for-2010 streak on conference proposals with my submission.

Everyday Rails has a good post about getting Rails 3 and RVM working together.

I haven't watched this video yet, but a little Don Norman is a good thing, right? (via Joel Spolsky)

Test Inline is a Ruby library from Eric Anderson to put tests in the Ruby source file. Eric freely admits that this is an experiment, which is good because my experience with this kind of tool (Python doctests) is that it gets messy pretty quickly.

Ever think that Lemmings would make a great iPhone game? Me too. Also, the people who have the rights to the code. Coming soon.

I love Steve Martin. He's posted the rider for his tours. A sample: "BUFFET ... Six-packs of any canned beverage for Steve to compare his abs to."

I've been waiting for this: Lifehacker posts some Handbrake presets for iPad and iPhone 4. Seem decent, but a bigger file size than what I had been doing.

Please don't do this. It's a bad idea and will make your code harder for other Ruby developers to maintain.

Two from David Chelimsky: Having a topic branch when contributing to git projects, and a change in how views are handled in controller tests in RSpec 2.

I really need to watch this presentation from RailsConf on Beautiful Markup by John Athayde.

Speaking of RailsConf, here's a retrospective from John Trupiano of the BohConf "unconference" that happened alongside.

Dan Ingalls was one of the people behind Smalltalk 80, here's an interview with him.

Over at Teach Me To Code, a screencast about setting up a Rails project and writing the first Cucumber feature.

Still in Cucumber, Michael Orr shows how you can use an instance variable to track objects in a Cucumber test. I do this a lot, myself, although I'm not completely convinced that you get a cleaner test suite at the end.

Rands has a great post about his writing process. I love that everybody does this a little differently, although calling what I do a "process" is probably a little much.

Paolo Perrota, author of Metaprogramming Ruby, has a nice note about how great the Ruby community is.

UxMyths seems like a useful site to browse.

Speaking about great writing, I loved, loved the opening of this article by Adam Keys about why he always comes back to TextMate. Also some good comments. I hadn't thought of the issue exactly this way, but it makes perfect sense.

The Time of Day gem lets you treat ActiveRecord time columns without their date information for certain kinds of comparisons.


I think I mentioned that I did a talk at Refresh Chicago last week. It was fun, but we think turnout was down due to the tornado warning over Chicago that night -- it's possible the sirens acted as a deterrent. Well, video of that is not up, but here's a video of the storm that night, featuring lightning striking three Chicago skyscrapers at the same time.

June 8, 2010: iPhone, iPhone, it's off to work iPhone

Neil deGrasse Tyson, Rails, RailsConf, Ruby, iPhoneNoel RappinComment

Okay, There's a New iPhone

Don't really have a whole lot to say beyond what's already been said. It looks very slick, and if anybody can actually pull off getting people to use video chat, it's Apple. The form factor of video chat from a phone seems at first glance to be significantly better than from either a laptop or the iPad, in that it seems easier to hold the phone in a position to get a good angle. And as much as everybody is kicking around Google vs. Apple, it sure seems like the company that lost big was Flip. (Oh, and I'm not the first person to say it, but there's now flash on the iPhone... well, an LCD flash for the camera, at least.)

And a new Safari

Safari 5 was released with a lot less fanfare. Big new features include an extensions system similar to Chrome, which will fully launch later this summer. There's also a nice Reader function which is similar to the Readability bookmark. So far, I find it very pretty, a touch flakey about what sites it decides to pop up on, and downright magical at automatically following next links to stitch together a multi-page article. It also adds support for a bunch of HTML 5 features and a new JavaScript engine.


All the RailsConf keynotes are being live streamed at

Feature Flipper is a simple little gem to allow you to semantically tie certain features to certain environments, making it easy to have a specific feature live only in development until it's ready.

Oddly, this came up in conversation just yesterday. Chris Lowis points to a number of full Rails apps that are open source and can be used to learn how Rails apps are put together.

Quick snippet -- an Array#only method for when you know an array only has one element. I think I would actually use this.


Neil deGrasse Tyson, speaking off the cuff on a rant subject near and dear to my heart, namely how it's socially acceptable for otherwise lovely people to say "I'm no good at math".

June 3, 2010: Get your Kicks on Route resources :user

Rails, iPhoneNoel RappinComment


Geoffrey Grossenbach at Peepcode posted a typically beautiful post/rant about Rails routing.

DHH responded in the comments of the article on YCombinator.

Grossenbach argues that Routes are unnecessary configuration and offers a couple of options for moving the routing into the controllers, as Sinatra does. DHH responds that GG's schemes would be challenging for large projects, and that the seven default action names are an important constraint.

Everybody's making good points here, so lets have the debate. Here are some of my points:

  • In any medium sized or large Rails project I've ever worked on, the routes file becomes a mess, and it's hard to tell what's going on. You could argue this is because the programmers have not been strictly RESTful, but I'd be more likely to say that it's because RESTful is too inflexible for complex projects. I like the Rails 3 router changes, but I don't see them changing this particular issue.

  • There's no question that the RESTful route stuff is significantly less accessible to new Rails programmers than basic controller/action URL's are. It's a lot of magic, it's opaque, and every time I teach Rails it's a stumbling block.

  • I think I'd like to see the Sinatra style declarations available in the controller, as the Astaire plugin seems to offer. I'd be interested to see whether it winds up in a bigger mess, or whether the controller actions become clearer. I'd definitely try Sinatra routes on a small project.

  • I'm somewhat ambivalent on the issue of whether scaffold code "should" be generated, or whether the fact that it is generated means that it should be abstracted further. I agree with the theory that controllers should be abstracted, but in practice I've found that working with tools that do that, like resource_controller, tend to lead to more hassle than not when you try to override behavior (again, I think that that amount of controller magic can also be a block for new users). I am interested to see whether the Rails 3 responder objects change this at all, and I'd like to see responders be part of the default scaffold -- last time I checked, they weren't.


I know I'm supposed to be outraged at AT&T changing their data plan pricing to remove the "unlimited" option. And I'd probably be kind of ticked if I was planning on a 3G iPad. Though I'd rather they kept an unlimited plan as an expensive option, the new setup is kind of preferable to the semi-unlimited where it's unlimited until it isn't. At least the exact costs are laid out in the new structure. And it seems like AT&T is going to make it pretty easy to switch plans back-and-forth and even add tethering on a month-to-month basis.

Looking at my own usage, I seem to have never even approached the 200MB limit of the cheaper plan, which means the change might save me money.

Book Status

Now definitely working on the style chapters that are listed in the current beta Table of Contents as "Fix Slow Tests", "Help! My Test is Failing", "Testing a Legacy Application", "Testing Style and Structure". These chapters are all currently kind of short, so they will probably be combined. The info from my Chicago Ruby talk the other day will be incorporated.

And since I haven't put the link up in a few days, the book is still on sale.