Our family PC having finally given out, and being unwilling to bring another computer running an OS other than Mac OS X into the house, I have found myself relying almost 100% on my iPad 2 while my MacBook Pro serves as an intermediary family computer until I can afford to purchase a suitable replacement.
One of the more interesting tasks I have been able to accomplish using just my iPad is learning to program using Ruby. Technically, I am using my laptop as well, but without the necessity of physically touching it or interrupting the kids’ homework. The process involves using two apps on my iPad and two apps on my laptop (one of which is simply a terminal).
To begin with I needed one or more books about Ruby. I am currently working my way through Beginning Ruby, From Novice to Professional by Peter Cooper. However, I found several additional resources I plan to use at least in part including, Programming Ruby 1.9: The Pragmatic Programmers’ Guide by Dave Thomas, Eloquent Ruby by Russ Olsen, and Ruby Best Practices by Gregory Brown.
These resources come in various electronic formats, but I prefer a good old fashion .pdf., and the best way to read .pdf files on the iPad is GoodReader. GoodReader may be the best .pdf reader to be had on any device, mobile or otherwise. My goal here is not to review GoodReader, but you will be hard pressed to find a bad review (unless it comes from a UX designer). I suppose it is fair to say that cramming that much power into a mobile app while keeping the UI neat, intuitive, and compliant with Apple’s HIG is tough, but it is GoodReader’s weak point and one that hopefully will be remedied in future releases. I digress.
So as I am reading my Ruby book, and following along with the Ruby implementation of “Hello World” how do I actually type in and interact with the language? Because Ruby is an interpreted language and can run in a terminal window, the trick is to connect to a terminal via the iPad. I use >prompt to accomplish this magic. It feels like I am sitting at the computer in front of a terminal window. That may seem obvious, but it could have been designed with an iOS feel to it, and in this case I think a one to one mirror of an actual terminal window is appropriate.
So I am reading my Ruby book in GoodReader, and connecting to a terminal session using >prompt but once I got beyond “Hello World” I needed a text editor. I thought about using a text editor on the iPad, but it made more sense to just use one designed for the command line. I am not a vim user, and I did not want to take the time to learn it now when I need every precious brain cell for Ruby so I decided to use nano. This tiny editor comes preinstalled with Mac OS X (although the version that came with Lion is 2.0.6 as opposed to the stable version 2.2.6 at the nano website). It is a matter of opening nano, editing the source code, exiting nano, and executing the .rb file.
So there you have it, 1) read the Ruby book of your choice using GoodReader, 2) connect to a terminal with >prompt, enter your code into nano, run and debug your code in terminal, 3) repeat. Oh, and getting back and forth between GoodReader and >prompt is as easy as a quick double press of the home button.

What an obvious way to learn programming… on a variant of Unix, with a standard Unix text editor accessed via a Unix terminal.
Oh, yes, and an Apple fondleslab as the piece of glass to type on. Still, can’t have it all.
Of course the last OS Apple made was in the 1990s. Since then they’ve just stuffed their shiny-plastic look-and-feel on top of BSD Unix and added a huge mark-up to cream profit from simple computer beginners who don’t know any better.
Great entertainment for real computer users! ;-)
LOL wut?