Noel Rappin Writes Here


iaWriter and iCloud, You Know, In The Cloud

Editors, iPadNoel RappinComment

If I don’t write about iOS editors every few months, then it’s harder for me to justify continuing to mess around with them…

The thing that’s changed my editor use in the last couple of months is iaWriter Mac and iOS adding iCloud support, even more deeply integrated than Apple’s own applications. iaWriter is the first writing program I use to move to the iCloud future (though there are some games and other programs that also sync via iCloud already).

At a technical level, the integration is fantastic. In iaWriter, iCloud shows up as a storage location, on par with internal iPad and Dropbox storage. If you are just using the iPad version then there is not much difference between iCloud and Dropbox. iCloud saves automatically, but Dropbox lets you use subfolders. (As a side note, iaWriter has improved its Dropbox sync from “show-stoppingly bad” to “works with a couple of annoyances”, the main annoyance being that it doesn’t remember your place in the Dropbox file hierarchy.)

Where the iCloud thing gets really cool is if you are running iaWriter on both iPad and Mac. On iaWriter Mac, you get a command in the file menu for iCloud, which has a sublisting of all the files iaWriter is managing in iCloud, along with commands to move the current file to or from iCloud.

When you make a change to an iCloud file (on the Mac side, an explicit save, on the iPad side an automatic local save), it is automatically sent to iCloud and pushed to the other site. No different from Dropbox, you say. True, except that the iCloud sync behaves much better if a file is simultaneously open in both apps. The changes just appear in the other app. You can put the iPad and Mac next to each other and go back and forth between the two with only a very slight pause while they sync up.

I haven’t quite gotten that level of integration from Dropbox. In particular, if a Lion-aware app has Dropbox change the file behind its back, the original Mac file continues to be displayed with a filename indicating that it is a deleted version. You then need to close the Mac file and reopen it. I’m not sure I’ve seen an iOS editor that polls Dropbox for changes, though one of the auto-sync ones (Elements, WriteRoom) might

This may seem esoteric, but since I tend to have several blog posts on progress in open windows on my laptop, I do wind up regularly using the iPad to edit an open file. The iaWriter iCloud sync is noticeably less annoying.

It’s not all sweetness and light, especially if you are a really heavy creator of text files. There is no such thing as a folder in iCloud land, which will eventually become an organizational problem. Worse, there’s an implied lock-in to using iCloud that seems to miss the point of using text files in the first place.

When you move a file to iCloud from the Mac, it moves the file to the iCloud hidden directory, which I think is somewhere in the library directory. Although it doesn’t technically vanish from your hard drive – if you can find the file, you can open it in another application (for what it’s worth, the Alfred launcher can find the files), the clear intent is that the file is in a place not to be touched by applications other than iaWriter.

On the iPad side, the situation is worse. If a file is in iaWriter’s iCloud storage than no other iPad app can see it. (To be fair, it is relatively easy for iaWriter to move a file from iCloud to Dropbox from either device.) I don’t know if sharing files between applications will be possible when more applications support iCloud, or whether iCloud is strictly sandboxed.

And hey, for a lot of things, this limitation isn’t an issue. If you are using a tool with its own format, then it is less of an issue that other applications can’t see it. Even with something like text, if you aren’t the kind of crazy that needs to open a file in a gajillion different editors, you are probably okay. If you are using text specifically because it’s easy to move around between different programs, and you have a workflow where a file will commonly be touched by different apps, then iCloud is going to get in your way a little.

As for me, the iCloud support has made me use iaWriter more often for blogs and short notes. (Though I still use Textastic for more structured stuff on iPad.) I always liked iaWriter, but for a while it was just really bad at sync compared to other iOS editors. So, despite some quibbles about what happens in iCloud when I have dozens of files that I want to share among different apps, right now, the sync is good enough to make it valuable.

July 15, 2011: Stale Links

Amazon, Ruby, RubyMine, Twitter, Uncategorized, iPadNoel Rappin2 Comments

The problem with sitting on these daily link posts is that the links go out of date. Sigh. Here are some links.


I found a couple of things about this InfoQ article about Twitter’s infrastructure odd. I was expecting it to be a bit more of a Rails hit-piece, frankly, so it was nice to see a quote like this one from Evan Weaver:

I wouldn’t say that Rails has served as poorly in any way, it’s just that we outgrew it very quickly.

Twitter has unique needs, so it’s not surprising that the Rails stack doesn’t serve them anymore, but they did get pretty far with the Rails stack.

This was interesting – first, from Charles Humble, writing the article:

You might assume that the move to the JVM was largely driven by performance and scalability concerns, but in fact the existing Twitter codebase performs well… Rather, the move to JVM is driven as much by a need for better developer productivity as it it for better performance

And this from Weaver:

As we move into a light-weight Service Oriented Architecture model, static typing becomes a genuine productivity boon.

The author concludes the article with this:

[Rails] does however come with well known costs, both in terms of performance and scalability, and perhaps also the relative maturity of the libraries and tool chain. In addition, the experience at Twitter suggests that the Ruby on Rails stack can produce some significant architectural challenges as the code base grows.

Which strikes me as an overgeneralization of what Weaver said – I’m almost willing to believe that static typing is a benefit if you are doing SOA at Twitter’s scale, but I haven’t seen the benefit on smaller projects in my experience.


As somebody who got their Amazon Affiliate account zapped when Amazon pulled the rug out from under Illinois residents, I was following with some interest the similar news out of California. (Although not quite identical, I had several months notice).

There’s been a little bit of confusion on what actually happened – a lot of people seem to think California is trying to tax affiliate revenue (I can’t find the link, but I saw someone argue that their affiliate revenue was already being taxed so shouldn’t be taxed again, which is wrong in a couple of different ways.) Slate magazine has a decent overview, which I’ll note I basically agree with on the substance of the issue.

Current law is that online transactions are only subject to sales tax if the company involved has a physical presence in the state. The California law defines “presence” to include any affiliates who get a payout – the affiliate revenue isn’t taxed as such, but the existence of an affiliate means that other Amazon transactions in California would be subject to California sales tax. Amazon responded to the law by canceling all their affiliates in California, as they did in Illinois, to avoid having to charge sales tax, and also to avoid having to calculate and manage sales tax, and also to avoid a court case that they might well lose.

Anyway, you may agree or disagree with the California law – though it doesn’t seem inherently any less silly than the various state laws that impose income taxes in visiting professional athletes. For my part, I don’t understand why the fact that Amazon has put themselves in a position where paying sales takes kills their business model should be my problem – I understand why there was an initial push not to charge sales tax on the internet, but I think the social benefit of privileging on line sales has probably passed. Even if you don’t agree with that argument, though, it’s hard for me to see how Amazon using their affiliates as pawns is the best or most responsible way for them to be advocating their case.

New additions to the workflow

I’ve got a couple of new writing workflow things to mention. There’s a new app in the Mac App Store called Marked, which is a classic “One Thing Well” deal. For $2.99, it’s basically a Markdown preview window, but has the very useful feature that it will live-update a file you are editing every time you save. So it’s basically adding MarsEdit’s preview window to any editor. It also makes it easy to copy the resulting HTML into the clipboard if you, say, want to post it to WordPress. It also lets you change the Markdown processor if you’d like. It’s nicely handy for $2.99.

On the iPad side, WriteRoom has finally been updated to a universal app. It’s effectively PlainText Pro – the same basic (pretty) layout with a couple of extra features. It’s got an easy to configure extra keyboard row, and a couple of other handy features. My main negative is that, when the app is in landscape mode it doesn’t use all the horizontal space for text, that’d be a useful option. One thing I like about it, relative to other editors is that it live-syncs with Dropbox, giving much more of a feel of directly editing the Dropbox file than the other editors that make you download the file locally and manually sync. Overall, though I like it.

I also tried out an iPad app called Daedalus, which has a very interesting UI metaphor but doesn’t really fit with the way I manage files. If you are willing to do all your notes and writing in it, though, the organization looks like it might be handy.

RubyMine 3.2

Quick mention that RubyMine 3.2 is out, with support for Rails 3.1 features like the asset pipeline and CoffeeScript. Mostly, I’m having some stability problems with it (it tends to freeze up for me), but the editor and its interaction with Rails continues to get better.

Avdi on Law of Demeter

Finally, speaking of things I thought I was going to disagree with, but wound up agreeing with almost completely (and also speaking of week-old links…), here’s Avdi Grimm on the Law of Demeter. Avdi comes down on the side of actually useful guidelines for managing chains of method calls.

I Feel Textastic

iPadNoel RappinComment
So, back in the summer when I started my bizarre quest to edit my book on the iPad, I had three requirements.

  • Be able to read the book files from Dropbox

  • Support for editing HTML/XML files, syntax coloring, extra keys, something like that.

  • TextExpander integration to make it easier to type the markup tags.

It quickly became clear that I was the only person in the world looking for this exact set of features.
There wasn't any editor that met all those requirements, so I bought a bunch of other editors and obsessively reviewed them on this very site. Naturally, because sometimes the universe loves irony, a new version of editor meeting these features was released a mere week after I turned in the final draft. It's called Textastic, and I'm typing on it right now, though I'll probably edit this in MarsEdit later.

Summary: Textastic is nice. It's got some features that I really like and an overall feeling of being polished. I think it would work fine to do some basic editing on a code file, though it's obviously not TextMate or Vim. As a writing/blogging tool, it's close, but I think it's a point releases or two away from being fully baked -- it's about 80% baked at the moment.

Now here's the part where I give enough details to let you know whether to spend your money. Textastic is $9.99, which isn't a lot in the absolute sense, but is more than some of the other tools that I'd be comparing it to.

I'm noticing kind of a conceptual split among the cloud/dropbox text editors. Some, like PlainText, try to make it feel like you are actually editing the file on the remote server, primarily by automatically saving the file to the cloud. Others, like iaWriter, clearly want you to feel like you are editing on the iPad, and only backing up to Dropbox when you want. Textastic is clearly in the latter group.

Pressing a globe-shaped icon from the main display flips the text edit pane over to reveal a dual-pane file browser. Local files on the left, remote files on the right. Remote files can come from Dropbox, FTP, or WebDAV, and you can download them individually or folder-by-folder. The file structure on the iPad does not need to match the file structure remotely, which is nice. Even better, Textastic keeps track of the remote source of each file. When you are editing the file, the standard-looking export icon allows you to easily upload or update the file being worked on, making simple what might otherwise be a pain. It's easy to download, say, an entire Rails project at once, but you are going to want to delete a lot of directories -- Textastic will even grab the Git subdirectory.

Actual file editing is largely what you'd expect. Easily reachable and usable settings allow you to choose from five monospaced fonts, set the font size, plus turn on or off auto-correct and TextExpander. You can also pinch in the text edit field to zoom in, effectively increasing or decreasing the font size. This is more effective than I would have thought, although it does have what seems to be an unpredictable relationship with the actual font size as you set in a dialog.

Textastic has syntax coloring for just about anything you'll want, and even better, allows you to specify the syntax for each file. There's a find and find-and-replace dialog, and line and column position is discreetly displayed in the upper right. The soft keyboard has an extra set of keys containing programmer specialty punctuation, including parens, brackets, braces, and greater-than less-than, making HTML typing possible. HTML and Markdown can be previewed in the app.

There's a lot of features here and they are nicely tied together. I'm finding Textastic to be decent at tweaking existing code files, and I think I would have been happy to edit or write Prag book files (which are essentially XML) on it, especially with a little TextExpander love.

Using it as a blogging tool, though, exposes some weaknesses that will hopefully be addressed in point releases -- there are a couple of bugs around auto-correct, and some typographic things about spacing when it's wrapping long lines. Both of those are kind of minor. One thing that is weird is that the text field is noticeably sluggish. Typing on the bluetooth keyboard, I can easily get a word or two ahead of the display, and I can even get a little ahead of it on the soft keyboard -- I assume that the calculations for syntax coloring are slowing it down. This can be frustrating combined with the autocorrect bugs.

Still, those are minor quibbles in what is overall a useful app. As an iPad code editor, it's the best I've seen, and it's very close to PlainText or iaWriter as a quick typing app. I'm looking forward to see where this one goes.

iA Writer For iPad: Another Review

iPadNoel RappinComment
The latest in my unending attempt to find the perfect iPad text editor is iA Writer -- it's been just over a month since I last wrote about this. iA Writer's "hook", as it were, is an entire manifesto about usability for writers. Writer's goal is to let the writer focus as much as possible on your text. Toward that end, Writer has two features that are unique compared to the other iPad editors that I have reviewed, mostly Elements and Droptext.

To my mind, Writer's best UI innovation is a real attempt to make the built-in iPad typewriter more usable. Above the regular qwerty keys is a new top row that includes common punctuation marks, smart parenthesis, and typewriter keys to move the cursor one character or one word back and forth. Just that simple bit makes the built-in keyboard a lot quicker for basic typing.

The other innovation is a "focus mode", which fades out the interface elements and grays text that is not near the line being entered. I find this to be more of a gimmick. It's not like there is much UI to fade. I'm also seeing a bug where the "focused" section does not follow the typing when you move to a new line. I'm actually seeing a general bug that Writer can't keep the current line in the view. As I type it doesn't seem to automatically scroll to keep the insertion point in view, which is an annoying bug.

As to other features, Writer syncs with Dropbox, which is nice. Like Elements, it creates its own flat folder within your Dropbox account and finds text files within it and ignores folders or non-text files that you may have placed in that folder. Unlike Elements, Writer doesn't force you to use Dropbox. It does allow you to email or copy your text easily. Also unlike Elements, Writer doesn't automatically sync, you have to manually force the sync. Like Elements, but unlike Droptext, Writer registers itself as an open target for text files in other programs.

Writer has a couple of other things going for it. It uses a very nice custom monospaced sans-serif font, one that I would love to have on my text editors in general. On the other hand, if you don't like the font, tough noodles, because you can't change it. Happily for me, I like both the font and the relatively large default size.

Writer provides an always-visible character count, and in lieu of a word count, gives an estimate of how long it would take a reader to read the file. No idea how that is calculated, but it's certainly unique.

Overall, I like this app, I really like the idea of making the soft keyboard more featured. The scrolling issue is annoying, though to be fair, it's entirely possible that it's just an issue in the 4.2 beta.

Looming on the horizon, at least for the kind of writing I'd like to be able to do on an iPad, is Scrivener 2, which will allow for synch with a series of files via Dropbox. I suspect, though, that will require more flexible Dropbox support than Writer or Elements have -- such as folders.

Meanwhile, Merlin Mann took the opportunity of this apps release materials to go off on a rant about writing and distraction.


If you feel "distracted" while writing, buy a new iPad app. Also? Conquer your alcoholism by trying a new gin. -- Merlin Mann

Listen, gang. Use what works to do what you need. But, don't pretend new training wheels make the bike go faster. -- Merlin Mann

I get it - the materials for this app are a little precious, and I also don't find much value in hiding most of the text. That said, it's a very usable and minimal app that has very little fiddly stuff to mess with. And that said, my ratio of thinking about writing on the iPad to actual writing on the iPad is frighteningly high. So I understand the point that buying running shoes doesn't make you a runner, and buying this app doesn't make me a writer. It does, though, make writing on the train a little more fun.

Bottom line on Writer: the extended keyboard makes this far and away the best text app I've if you aren't using an external keyboard. I think some of the other features are gimmicky, but I think the basic focus is good, and I'm excited to see where this one goes with a little more polish. I've written this post using Writer with the touch keyboard (though I'll do some editing on the Mac before I post, especially HTML links, which are a real pain on the iPad), and it's the best experience I've had with the touch keys by far -- I'd use this to compose emails, for example.

Sep 3, 2010: Twitter for iPad and Other Craziness

Twitter, iPadNoel RappinComment

Book Status

RSpec chapter edits complete, a dozen or so errata squashed, and hopefully we'll get beta 7 out. I suspect it'll be after Labor Day, though. I'm pleased with how this one turned out. The RSpec chapter is a challenge -- I'm literally squeezing a book's worth of content into a chapter, but I think it covers the major points clearly.

Since I haven't posted it in a while, you can buy the book here and on Amazon.

That, I think, pretty much ends the content that had some basis in the Lulu book, moving us into the one or two chapters that I need to write from scratch, as well as at least one chapter that has been obsoleted over the summer (BlueRidge). Still, getting closer.

WindyCityRails Update

Still seats available for my WindyCityRails tutorial. Right now, I'm trying to coordinate what I want to say with the faux-legacy app I'm building for people to practice on. The faux app needs to look legacy-ish, but still be easy enough to install and work with that something meaningful can be done in a three hour tutorial. Interesting problem.

More iPad

Two possible changes in my iPad app mix:

Twitter app replacing Osfoora HD

For all that it's kind of insane, I really like the official Twitter iPad app. It's super polished, and although I'm not convinced that the actual implementation of the overlapping tabs is optimal, I think the basic idea is great. One interesting point is that they clearly have chosen to favor a specific kind of Twitter user.

The overlapping tab works well at letting you see data related to a tweet (usually the contents of a link) and still see your account side bar and some of your timeline. It's quite pretty, aggressively bold in the way the original Tweetie app was, and useful. I appreciate that it's fewer clicks and generally easier to follow links on a lot of tweets in short succession, which I do a lot. I do think it's weird that the browser tab kind of half-sticks around even after you go back to your timeline, and it's easy to miss the spots where the browser tab slides back (as opposed to trying to horizontal scroll the browser window). A lot of people are reporting that it's hard to figure out how to move the panes -- I think it could be clearer in-app.

But, I like that it keeps my place when I change orientation -- which is Osfoora's most annoying non-feature. I like the layout in general, I think it gets the natural proportion of a twitter stream right (a lot of the other Twitter apps make the stream really wide, which feels strange to me), and it feels very polished and responsive.

Now I wish that the Mac Tweetie that I bought MacHeist in order to get an early beta might actually come out. Sigh.

River of News replacing Reeder, Maybe.

I'm not sure about this one. River of News is a simple RSS reader that displays articles in a basic River of News style, meaning one after another.

It's not as pretty or full featured as Reeder, but it's also less inscrutable and I tend to like the general layout.

Right now it seems as though River of News works better when I'm reading most of the articles in a feed or folder, because it scrolls better than Reeder does. But since Reeder has the mini previews, it's faster if I plan on skipping most of a feed. Still wondering which will work best.

Elements, and other iPad Text Editor Stuff

iPadNoel Rappin1 Comment
I have something like eight different apps on my iPad which are text editors or note takers of one form or another. Plus I know of at least one more that I'm waiting for.

It's possible I have a problem.

I really want to be able to use my iPad as a writing tool -- the best apps are super responsive, and I like the ergonomics of using it with the Bluetooth keyboard. Making the iPad a useful writing or editing tool makes it much more useful for me.

Which brings me to Elements, the latest in my string of writing apps. (The name comes from Strunk & White's Elements of Style). Elements is a text editor that backs to your Dropbox account, in many ways similar to DropText.

There are a couple of differences:

  • Elements does not expose your entire Dropbox, instead it maintains its own folder and synchronizes it. This is a big DropText advantage, since one of my big use cases involves using files that are already stored elsewhere in my Dropbox.

  • Elements is limited to text files. And I mean really limited. If you put a file with an extension other than .txt in the Elements folder from another machine, Elements will ignore it. Another big problem for me, since it means I can't edit book files from Elements without pre-placing them in the Elements folder and change their names before I start.

That said, I like Elements for its other features.

  • Elements supports TextExpander. Yay. All the HTML tags in this post are thankful. (Of course I'm writing this in Elements...)

  • Elements auto-syncs back to Dropbox every minute or so. Droptext, I think, requires a manual save.

  • Elements allows you to change font and font size. Double yay. (One setting for all files.) I like messing with fonts, and I normally prefer a larger size than most applications provide by default. Especially in my normal iPad typing position.

  • You can email your file out, which makes it a plausible blog tool via WordPress to email.

  • It maintains a word count overlay, which is handy.

  • It has a little scratch pad, which I think is common to all files, and doesn't seem to by synched. Still, I suppose it's kind of dandyish.

  • Subjectively, it feels more polished than Droptext (it's also more expensive). The UI is a little cleaner.

So... Elements seems to be a nice tool for my blog use case, but a lot of other uses I have require general access to Dropbox. (Though I suppose it'll depend on whatever Scrivener's Dropbox support eventually looks like). So far, though, I like it.

Still waiting for the great programmer's editor, though. Or even the one that looks good enough to try...

July 21, 2010: This Code Belongs In A Museum

Apple, Rails, Ruby, iPadNoel RappinComment


Not much to tell, really. Spent some time getting RVM set up, since I think I'll need it to manage simultaneously building the Rails 2 and Rails 3. Now I have a working version of the startup appendix that uses Rails 3 and Devise. I can't speak to using Devise in practice yet, but the immediate goal of making the setup less complicated was definitely accomplished. The big question now is how much to support Rails 2 in the walk-through chapters. I'm leaning toward just having the walk-through chapters be Rails 3 with only occasional notes on how Rails 2 differs.


Apple has allowed the code for the 1984-era MacPaint and QuickDraw to be released to a museum where anybody can download and peruse. QuickDraw is all in assembler, and MacPaint is a mix of Pascal and Assembler. At a quick glance, the striking thing about the MacPaint Pascal is that it actually seems quite readable. The layout is consistent, it's commented, variable names have meaning, that kind of thing. Certainly miles ahead of any Pascal code I wrote back when I wrote Pascal code...

This is kind of a cute way to find hidden puts statements by raising exceptions. The project I'm on actually monkey patches puts to add a line to the output saying what file and what line of code the put statement is on. Surprisingly useful.

Claudio Maral has a couple of examples of cleaning up controller code by moving logic to the model.

Oh -- Droptext got updated. It's a universal iOS app for 99 cents that lets you edit files on Dropbox. This release, I think, makes the app functional. Some crash bugs were squashed, and you can now specify alternative text extensions. It's still pretty simple (I'd love to be able to change the display font, and I'd really love TextExpander integration), but it works and I'll definitely be giving it more of a spin.

The Ruby Hoedown has announced its speaker list for September 3 and 4. I've never been, but I've heard good things, and you won't find a major conference that's less costly.

July 9, 2010: Beta 4 Released and More

Agile, Dropbox, Kent Beck, Mocha, Typing, iPadNoel RappinComment


Beta 4 of Rails Test Prescriptions is now available, with two new chapters, one on Rcov and coverage in general, and one on writing better tests. Buy here.

While I'm in the self-promoting mode, the book is also available for pre-order at Amazon and other exciting locations.

More Promotion

And while I'm here, I should mention that Obtiva has updated their training schedule. Obtiva offers a 4-day Boot Camp for learning Rails and TDD that will next be offered August 2nd through 5th. There's a brand-new Advanced Rails class that will be August 30th through September 2nd, and a version of the Boot Camp that meets weekly on Mondays starting September 20th.

Obtiva also offers private versions of our courses. See for more info.


For some time, Joe Ferris had a fork of the Mocha mock-object tool that allowed mock spies, which let you separate the definition of a stub from the expectation of how the stubbed method will be called. This makes it easier to use mocked objects in a single-assertion test structure, and also makes mock tests easier to read. Anyway, Ferris has split out the spy part in a separate gem called Bourne, which should be easier to install alongside the standard Mocha gem. Yay.
(via Larkware)

Corey Haines would like us all to learn to type better, and toward that end is starting a community event for next week (July 12-18) for some collective support for learning. For as much as "Typing is not the Bottleneck", which is true but not necessarily germane here, my experience is that programmers who are not great typists tend to be much more concerned with making their code concise at the expense of readability. Anything that eliminates friction between your head and the code is basically a good thing. (For the record, I mostly touch type, but I could stand to get faster and more accurate.)

Kent Beck has finished up his series on survey results about practices with a post on commit frequency and one on general practices. The general practices one is interesting, showing that about 50% of all respondents claim TDD, while about 70% claim to use iterations.

All of which sort of reminds me... a few years ago, when I worked at a major telecom company with a reputation for major waterfall development, I attended the "agile" track of an in-house seminar on software techniques in use at the company. Everybody in attendance there claimed to be agile, but only about 1/3 (by show of hands) were doing any kind of automated testing. It was, to say the least, a weird flavor of Agile. But I guess, you do what you can do and what works for your team.

Finally, I've been yammering here about iPad text editing and Dropbox for a few weeks, so I should mention Droptext, which seems to be the first iOS editor that saves and reads from Droptext. It's rather minimal at the moment (and kind of crashy), but I suspect the mere fact that it reads Dropbox files means that it's automatically useful.

iPad or Bust

iPadNoel RappinComment
With my laptop still on the disabled list, I've been using the iPad as my primary machine all week. Some thoughts:

Overall, it's been largely non-disruptive, for two reasons. One is that I borrowed a bluetooth keyboard for the duration, and the second is that I'm not in a position at the moment where I need to code on my laptop, since my work site has developer stations. They keyboard changes the iPad experience quite a bit, really turning it into a nice writing station.

I'm going to whine first, because I think the whines are more interesting. The plus stuff is all variations
on "This gizmo really is cool, you know.", basically, about 75% of my non-coding work was picked up pretty easily.


There are about three or four serious gaps in what I've been able to do this week. The biggest is the inability to do serious code or blog editing. I've been trying to find an app that would let me at least poke at the book files this week. Basically, it needs just a few features: a) read/write to drop box, b) support for either markup shortcuts or TextExpander, and c) ability to see non-standard extensions as text. There doesn't seem to be an iPad editor that supports all these features.

None of the programmer or HTML editors that are there have the kind of reviews that would lead me to want to buy them site unseen. Maybe in a few months the space will mature. I'm trying MyWritingNook and keeping an eye on the as-yet-unreleased WriteRoom/iPad, which looks like it will be close.

Somewhat more surprising, there doesn't even seem to be a decent blogging editor. The WordPress app is horrible -- the editor is very basic, and the only thing that kept me from losing my last post entirely was having been warned that I might, so I pasted the whole thing before I tried to post it. This post is being written using MyWritingNook, which both supports TextExpander and lets me export via email so I can post. I suppose it would be possible to do a link post, but the workflow -- going back and forth between Reeder, Osfoora, and the editor, pasting all the links -- seems daunting. I probably should try one, though, the MyWritingNook flow makes it seem possible. Daniel Jalkut, paging Daniel Jalkut. Please?

The other serious gap is generally getting files onto the thing. There's no concept of a podcast subscription, which is irritating. I have files on hard drives that I'd like to see, videos or ePubs, some of these things can be gotten onto the device in the absence of the home iTunes library, but it's not easy or consistent. (Late breaking story -- today the iPad media apps decided to crash and rebuild their library without any of my media files. Doubtful I can fix this before my laptop gets back).

There's a minor issue with things that would normally run in the background. IM and Campfire, most notably. (I know you can have IM systems that push... haven't found them to be totally reliable). A couple of widgets that I normally check frequently, that kind of thing.

Interestingly, I've only missed Flash a tiny bit. The worst web experience is that I'm forced to use the old MS Exchange web app for client-site email, and its bad enough with a mouse, and borderline unusable with a touchscreen.

I had to give a presentation last week. Luckily the slides were in Dropbox, so I could easily import them into iPad Keynote and edit from there. Keynote iPad is very dancing-dog like in the sense that it's so amazing that the dog dances at all that it seems churlish to criticize how well it dances. Still, it's pretty much Keynote light, or as I characterized it when giving my talk, like using Keynote with chopsticks. And I'm very clumsy with chopsticks. Not only is it kind of feature-light, it's just about the only app that makes the iPad feel sluggish (the native iPod app is another). Plus, it was a little crashy. On the plus side, hooking it to a projector via the VGA cable was a snap, and it's often a pain on Desktop Macs. The speaker screen could be a lot better.

Not Whining

Overall, though, those things are small potatoes and the overwhelming impression is how not-disruptive it's been to be on an iPad for email, RSS, Twitter, basic text stuff, and so on. The iPad is still snappy, fun to use, and basically great for this kind of stuff.

Having the keyboard undeniably extends the power of the iPad -- the soft keyboard is okay for short things, but I haven't gotten nearly as fast on it as I am on a full keyboard, and it does take up half the screen. With a keyboard, it's a really nice setup for writing. It's light -- my backpack is super noticeably lighter this week. Pages is quite responsive for just basic typing (boy would I love to see Scrivener on here, though MyWritingNook seems like a first approximation. I wish something could read my existing Scrivener files, though). It's somewhat ergonomically flexible -- I was able to use it with the pad on a coffee table and the keyboard on my lap and it wasn't bad, and you almost by definition get the WriteRoom-esque full screen experience. The keyboard is acquired and de-acquired quickly enough that its feasible to swap back and forth in the same session. It's got a lot going for it.

That said, the keyboard is not fully integrated into the iPad experience. One obvious missing feature is that you can't arrow up and down through a select list, such as the suggestions when you type into the Safari address bar. Reaching over the keyboard to the touch screen to edit feels odd, like interface metaphors are colliding at full speed. It's also hard to see if the keyboard is on -- the only screen notification you get other than the soft keyboard not showing up is the bluetooth symbol in the upper-right. I've accidentally had the keyboard on in my backpack and had to pause to figure out why I wasn't getting the soft keyboard.

Still, I've gone from skeptical about the value of a real keyboard as an add-on to seriously considering getting one after I have to give this back. And I'm very interested in what the bluetooth keyboard/iPhone 4 experience feels like. That has the potential to be a very interesting mobile experience.

The iPad, in general, encourages a really close feeling with the stuff you are doing. Watching something on the iPad feels like you are curling up with a movie in the same kind of cozy way that you do with a good book. The keyboard gets in the way a little bit, but there's still something amazing about the size to power ratio going on here. I suspect that it will feel very cozy for writing fiction, I just wish I could more cleanly get it to work with my PML pragmatic files.

Also, as usual what Charles Stross said.

Sitting on the dock of the bay

RSS, Twitter, iPadNoel RappinComment
No links post this morning, maybe later today. Meantime, enjoy me blathering abouta a couple of substitutions in my iPad dock:

Position: RSS Reader

Incoming: Reeder

Outgoing: NewsRack

An easy call. NewsRack is nice, but Reeder is:

  • Smoking fast.

  • Without a limit on downloaded articles per feed

  • Much more accurate on sync -- NewsRack has problems if you go back and forth and old, unread articles pile up and never get marked unread.

  • With an option to put the oldest item first

  • Damn pretty

The only real problem I have with Reeder is that some of it's gesture functions are a little opaque, and there's no in-app help. It'd also be nice if they did something more visually interesting with the topmost level page -- each subfolder is basically just a grey rectangle. A montage of favicons from the folder would be cool. Other than that, it's really great so far.

Position: Twitter Client

Incoming: Osfoora HD

Outgoing: Twitteriffic

I swore I wasn't going to buy a Twitter client, what with Tweetie/Twitter due Real Soon Now, but I was pursuaded.

Twitter is weird on the iPad, probably the only thing I do on the iPad whose natural window on my desktop is smaller than the iPad screen. As such, I don't think that any of the Twitter clients on the iPad really feel right yet. (TweetDeck's multiple columns don't quite look good to me, and I haven't tried Twittelator's desktop-y screen). Osfoora has two big advantages over Twitteriffic. It manages the case where your number of unread tweets is over 200 nicely (just like Tweetie/Twitter), something that Twitteriffic has never done gracefully in any of its mobile incarnations. Osfoora also splits @replies into their own space, which I prefer.

That said, it's three, count 'em, three taps to open a link in the in-app browser, and that's at least one too many. I'm not sure I like the "show the current tweet really big" method of getting at deeper functionality, but I guess it's a bigger-screen analogue of Tweetie's sweep to show. Still, it's got a lot of features and it's not unpretty, so I'm sticking with it for a while.

June 1, 2010: June, she'll change her tune

Chicago Ruby, Cucumber, JRuby, Kent Beck, RSpec, iPadNoel RappinComment

iPad Note

I keep wanting to write about the iPad, but so, so many other people are writing about it that I'm not sure I have anything to add. More or less at random, I really liked the brief rant Joe Posnanski added in the middle of an otherwise-unrelated blog post, and Charles Stross' typically complete take. Right now, I just would add that I still use it more than I thought, that the form factor makes more of a difference than I expected (being able to easily walk to show the screen). Also, I'm somewhat idiosyncratically waiting for turn-based strategy games to pop up for it, along the line of Avalon Hill's old games -- the thing is perfect for them.


One last reminder of today's Chicago Ruby meeting featuring Matt Polito talking about Git, and me talking about testing.

And then

Looks like Kent Beck has gone and evolved the Agile Manifesto at the Startup Lessons Learned conference. This moves in the direction of what Beck has been calling Responsive Design.

Sarah Mei has a really nice example of outside-in BDD going back and forth between Cucumber and RSpec. Very nice overview of the process.

Ruby 1.9.2 preview 3 is out and available via RVM. Also over the weekend RSpec 2.0.0 beta 9.1 was released.

Charles Nutter has a long technical examination of performance in JRuby.

May 13, 2010: The Rules of Agile Estimation

Agile, Apple, Estimates, JRuby, Kent Beck, Newton, Potterverse, RailsConf, iPadNoel Rappin1 Comment

Top Story

JRuby 1.5 is out. Highlights include improved Rails 3 support, better support for Windows, better FFI support, better startup time (yay!) and a lot of other tweaks and fixes.

Book Update

Still Cucumbering, hope to finish today.

The book is still on sale, of course. And I'd still love to see more comments in the forum.

I'll be talking at Chicago Ruby on June 1, exact topic TBD (let me know if you have a preference), but I'm leaning toward talking about how to avoid test problems and write good, robust tests.

And Then...

As an unrepentant old Newton fan, I loved this compare and contrast of a recent iPad ad with an old Newton ad. The Newton, flaws and all, was way ahead of the market back them.

If you are going to RailsConf, first of all have fun and wish I could be there. Second, if you are wondering about the difference between the two Rails 3 tutorials, wonder no more.

Kent Beck is publishing some old pieces again, including one about how the original XP book made the mistake of equating "the team" with "the developers".

Fred and George Weasley are marketing experts.

And Finally

The Rules of Agile Estimation:

1. Estimates are always wrong

2. If you think spending more time on estimates is a good idea, see rule 1.

3. On average, an experienced developer is not going to improve on his or her gut reaction by thinking it over.

4. Team estimates are important, one person may see something that everybody else missed. Just keep it quick.

5. People are much better at estimating size relative to each other than absolute time a task takes.

6. Separate the problem into smaller chunks, the more estimates you make the better the chance that the law of averages will help you.

7. Decomposition into roughly equal sized tasks is pretty much the whole ballgame.

May 11, 2010: Beta 2 Is Out

ActiveRecord, Cory Doctorow, HTML5, NoSql, RailsRx, Seaside, UXD, iPadNoel RappinComment

Top Story / Book Update

Beta 2 of Rails Test Prescriptions is out. The biggest addition is the chapters on integration testing and Webrat/Capybara. Beta 3 will be coming next week and will include all or most of the Cucumber chapter.

Please do post to the forum, there's not any discussion there, and I'm interested to hear any questions or comments you might have.

Other People's Books

A lot of book links today.

SF writer Charles Stross has been writing some brilliant stuff about publishing, including making a great deal of sense about ebooks. One big takeaway, in case you haven't noticed, just because they are digital, doesn't mean the price of books is going to drop dramatically.

Speaking of ebooks. Cory Doctorow's new book, For The Win, is out today. Say what you will about Cory, he's become a fantastic novelist, and he walks the walk. For The Win is available for free download on Cory's site.

And, hey, speaking of ebooks, Lulu announced that they will allow their books to be published to the Apple iBooks store, which is great, because the iBooks store could use the stuff on the shelves.

Twitteriffic developer Craig Hockenberry asked for some books for people to get started with programming, specifically for people hoping to get started in on the iPhone.

And Then

This page is based on a stack overflow question for new programming jargon. You may recognize your team here...

Here's one Rails developer who has moved to the Smalltalk Seaside framework, and why. Seaside was commonly mentioned in the Rails community a year or so ago, but I haven't heard much about it since.

Mathias Meyer says that ActiveRecord callbacks ruined his life.

And, NoSql is apparently here to stay. If only we could get rid of the name.

This looks like a good reference to possible XSS attack vectors in HTML 5.


Jakob Nielsen has come out with the first serious user testing of iPad apps. The executive summary is basically that individual apps are inconsistent, and that is frustrating. Also, many content apps are too wedded to a print mentality. This research seems to have largely been based on content-heavy apps and websites, so I'm not sure it generalizes to, say, Omnigraffle, but it's worth looking at.

May 4, 2010: MacRuby and more

Cucumber, Dave Hoover, Dropbox, MacRuby, Rails, RailsRx, Ruby5, Watir, iPadNoel RappinComment

Top Story

MacRuby 0.6 is out. Big new features include a debugger, a new interface to Cocoa's Grand Central Dispatch, and a rewrite of the internals of basic Ruby classes.

In a related story, the early text of Matt Aimonetti's MacRuby book from O'Reilly is available for free online. Nice job all around.

I'm not sure if I've mentioned it here, but I use MacRuby and its ability to manipulate AppleScriptable programs to power my crazy-obsessive iTunes random playlist generator, so speed improvements are hoped for.

Book Update

Still in the Cucumber chapter. Had to go back to the beginning to make sure everything still made sense with Cuke 0.7. The end of proofing what I had is near, but I also need to write about newer features, most notably tags, and I need to make sure I still agree with all the ideas about when to use Cucumber that I had a year ago.

I changed the Cucumber in the chapter to use Capybara instead of Webrat, but it broke on test (having to do with a checkbox being checked). Not sure if it's an issue in Capybara, the Cucumber web steps, or me.

The book, of course, is still on sale.

Lulu raffle tomorrow, so get those address changes in if you need to.

And Then...

Big day for O'Reilly releasing stuff. Obtiva's Own Dave Hoover's book Apprenticeship Patterns was also released for free -- the whole book this time.

Gregg Pollack put together a big list of links on the official Ruby on Rails blog. All of these were originally covered on Gregg's podcast, Ruby5.

Brian Hogan has a set of matchers for using Cucumber with Watir, looks like it gives you in browser tests using a syntax similar to the existing Cucumber web steps, but more detailed.


Dropbox for iPad is out as of last night. If you care about that, it's really nice.

April 27, 2010, Now Writing About Cucumbers

Cucumber, Git, Kent Beck, RailsRx, RubyMine, Webrat, iPad, testingNoel Rappin1 Comment

Top Story

For me, the top story is still Rails Test Prescriptions on sale, and my discussion yesterday of the raffle for the old Lulu customers.

Book Status

Now re-doing the Cucumber chapter, which was written long enough ago that it didn't consider tags. Cucumber has had approximately seventy-million releases in the interim, so there's some writing to do. This is the first chapter where I'm adding Rails 3 setup instructions, which will eventually go everywhere in the book, of course.

Tab Dump

Have to say, RVM support in RubyMine is potentially really cool.

Kent Beck would like to analogize goat farming and software development. I've heard worse.

I know you all have been following this story closely, so you'll be pleased to know that you can now bring your iPad into Israel with impunity. Again, carrying two of them with the roman numerals I to X as wallpaper.

Macworld has released an epub-formatted, iBooks compatible, user guide to the iPad.

Webrat bumped it's version to 0.7.1.

I frequently complain that there's no good visualizer for git repositories. This fork of GitX looks like it comes pretty close, though.


I'm pretty sure I disagree with some of this article by Josh Clayton talking about integration tests being more useful than unit tests. He's probably right about integration tests being more useful for ultimate correctness, but that's not everything that TDD is about. Unit tests are critical for the development process, and writing great code in the moment of development, and for supporting design changes and refactoring. Unit and integration tests have two complementary functions, just because they cover the same code doesn't mean they are redundant.

April 19, 2010: The Week Begins

Bundler, HTML5, Rails, Rails 3, RailsRx, Ruby, Yehuda, iPadNoel Rappin1 Comment

Top Story/Book Status

This is the week -- Rails Test Prescriptions should go on beta sale on Wednesday.

In a related story, now points to here, also will shortly. I'll be adding some basic about information and static pages here. At some point, I'll probably bring over any blog content from the previous site that still seems relevant. I'm not sure if the original free version of Rails Test prescriptions will still be available (it's becoming out of date, and there will be free samples available at Pragmatic), but I will make it available if anybody is still interested.

Tab Dump

Reg "raganwald" Braithwaite has a brief article on why Ruby needs blocks separately from lambdas, how blocks differ, and when that difference is useful.

A double dose from Yehuda Katz: A slideshow titled "Making your OSS project more like Rails", with some interesting insight on what makes Rails work as a project. And another Bundler article addressing the issue of why Bundler appears to work differently based on the ordering of gems within it. (Short answer: it's exposing dependency issues in the gems themselves.)

Over at Envylabs, they announced a new gem called Census, which allows you to gather demographic-style data on your users and then search for data based on their answers.

Another Rails 3 intro, this one at IBM Developer Works. I've written Rails stuff for them in the past, but I didn't write this one.

Here's a nice slideshow in HTML5 that shows off the new features of HTML5.


NetNewsWire has quickly become one of my indispensable iPad apps. The developer, Brent Simmons, in an attempt to discuss software development, has posted a number of pictures from various stages in the design and implementation of NNW-iPad. Thanks!

April 15, 2010: The Library of Congress Recommends the Following Tweets

Agile, Bundler, Library of Congress, Pair Programming, Pragmatic, Ruby, Twitter, iPadNoel RappinComment

Top Story

As part of the Chirp conference, Twitter and the Library of Congress jointly announced that the Library will be storing Twitter's entire public archive.

I'm sure your expecting an easy joke about how many sandwiches the LoC now knows about in their archive, or about how scholarly papers about the archive will be limited to 140 characters. (Or, for a more academic joke, limited to 140 authors...) All that aside, though, I think archiving and making all this available is pretty neat.

Book Status

Still messing with Capybara and Webrat. Somewhat hampered by the fact that most of the usage of these tools is via Cucumber, so there's not a lot of documentation on them as standalone tools (particularly Capybara). Muddling through, though.

Also, the prags announced the beta release of the fourth edition of Agile Web Development with Rails.

Tab Dump

Rails Dispatch has their second post, which is another overview of Bundler and library management.

Two Ruby tip articles caught my eye. This one, by Alan Skorkin, is a complete overview serializing objects with Ruby. And here's a small tip from Ruby Quick tips about ensuring that an incoming option hash has only certain keys. I think the benefit of doing that is as much in revealing intention as anything else.

In our Agile section, we've go Nicolas Alpi reviewing what it is like to pair program. I have a half-written post on pairing floating around MarsEdit here... I'm still ambivalent about it even after largely pairing for the last six months. I think some of that is a personality thing, but I also think the idea that pairs do a better job of staying on track has been a little oversold -- it happens, but there are other offsetting issues. I really should finish that other post.

Also, part two of Kent Beck unedited and screencasting about testing. I admit I haven't watched this part yet.

And Finally,

Don't take your iPad to Israel (insert holy tablet joke here), as of a couple of days ago, the Israeli government has been blocking them at customs pending approval of their WiFi and security standards. In the meantime, those people who tried are being charged for every day the iPads sit in customs, and also agreed to pay a 16% Value Added Tax according to Israeli law.

April 13, 2010: iAd, youAd, weAll Ad

Agile, Apple, Bundler, JRuby, Ruby, Yehuda, iPad, standupNoel RappinComment

Top Story

iPads. Lots of them popping up in and around work. Probably some more coherent impressions coming later.

Wait, once again, Twitter has a big announcement after I start writing this. This time, they are going to start placing ads in the Twitter stream in various ways to be announced today. My quick reactions: a) I long suspected this day was coming, b) if the ads in clients are any guide, they aren't particularly burdensome, c) implementation details will decide how irritating this is.

Book Status

Still working on Webrat and Capybara. Still waiting for a cover. Somewhat doubtful that the beta will happen this week, but I haven't been told that for sure.

Tab Dump

Charles Nutter puts out an open call for help with the pure Java port of the Nokogiri XML parser for use with JRuby.

Confused by ==, equal?, and === in Ruby? You won't be after this article.

Hey, it's another big-time Agile founder: Ward Cunningham being interviewed. Pull quote: "When you're doing it well it feels a little plodding, you're not racing ahead like you might do on your own. But what happens is that it never slows down." Can I get that on a T-Shirt?

Yehuda Katz is turning his attention to more Bundler documentation, with two articles that went up as I started typing this. The first one lays out the problems bundler tries to solve, and the second talks a bit more about problems specifying the order of require statements.

Everybody's doing it: Bullet Points and the iPad

Apple, Bullet Points, iPadNoel RappinComment
iPad, iPad, iPad. Five Random Thoughts

  • Given that Apple's business model for most of the past 30 years has been not to compete on feature lists, but rather to pare down features in the name of user experience, that a tech analyst would at least pause before proclaiming the iPad to be a failure because it doesn't have feature X.

  • I don't think the iWork stuff got enough attention. In particular, I could see Keynote being a big deal. It has less text entry and more object manipulation than Pages, and with video out, it turns the iPad into a pretty nice presentation tool.

  • A lot, though, will depend on whether the soft keyboard is something that a touch typist can reasonably use -- I wouldn't expect it to be as fast as a full keyboard, but if I can get in the ballpark, then this becomes useful for a wide range of tasks. Just to throw a couple names at random, Scrivener and MarsEdit become plausible iPad apps if typing is reasonable.

  • Do I need one? Which is a different question from do I want one. Right now, the WiFi only seems too restrictive, and the 3G version seems too expensive. Some mechanism by which the iPad could use an iPhones 3G connection (outright tethering, or possibly a connection using the local bluetooth to share files) would be very nice.

  • I don't have any special insight, but I wouldn't be surprised if leaving off a front-facing camera was a pure human factors play. It seems highly likely that getting a camera in place to do video chat on this thing would be a pain.