Noel Rappin Writes Here


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.

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.

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.

May 10, 2010: The need for eyeballs

Bundler, JRuby, MacRuby, Publishing, RubyMine, Twitter, Yehuda, errataNoel RappinComment

Top Story

Let's start with this: there's a small but embarrassing typo in the Pragazine article code. Especially since it was a) called out by the author of Mocha and b) was a direct copy from the book, and from the Lulu version before that, so it's been public for about a year, and I've proofread that chapter at least five times. Which just goes to show... you never catch everything.

On the plus side, this guy likes the book!.

Book Status

Beta 2 will either be today or Friday. Hoping for today, we'll see.

And then...

Very technical list of Charles Nutter's favorite Hotspot JCVM command line flags. I guarantee that unless you are actually Charles Nutter, you will find stuff here that you don't know. Especially recommended if you need to deep debug JRuby behavior.

RubyMine 2.5 has started its beta cycle. The headline feature is Rails 3 support. Normally JetBrains betas are pretty stable, but it's still an early beta.

It has been days since Yehuda Katz has clarified some corner of the Bundler universe. Here's an article about Bundler groups.

Matt Aimonetti has some thoughts on writing the MacRuby book with an open license.


Some quotes:

Pat Maddox in tweets:
Fundamental prob w/ relying on cucumber as primary test coverage is that it's meant to capture & define the business's expectations. But the first, implicit, expectation that the business has is that the software _works_. This means it's *not* AT's role to verify application works

Joe Posnanski, quoting baseball HOF pitcher Robin Roberts:

You want to be proud of your successes,” he told me, “but you want to be proud of your failures too."

Dave Thomas, quoting Ryan King from Twitter:

The one -in-a-million case happens once every 80 seconds for us

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.

Rails Rx Standup: April 12, 2010

Agile, Apple, Git, RSpec, This American Life, Twitter, standup, testingNoel RappinComment

Top Story

For a while, it looked like the top story was going to be Apple's new developer Rule 3.3.1, described here by John Gruber. More on that in a second.

But the real top story is the news that Twitter has bought Tweetie, intending to rebrand it as Twitter for iPhone, and dropping the price to a low, low, free. Eventually, it will be the core of Twitter for iPad. Wow.

Tweetie is probably the only case where I actually prefer the iPhone experience to the desktop experience, but I'd also be very sad if Tweetie for Mac was orphaned. (Not least because I just bought the MacHeist bundle in part as a way to get the Tweetie Mac beta sooner...). Later update: Tweetie developer Loren Brichter said on the MacHeist forum that the next Tweetie/Mac beta will come out.

I actually suspect that at least some of the existing iPhone Twitter clients will be able to continue -- there's clearly room in the ecosystem for apps that have much different opinions than Tweetie. It depends on how aggressive Twitter is planning to be. Dropping Tweetie's price to free strikes me as agressive, although it may just be that the Twitter team is averse to direct ways of making money.

As for the Apple story, it's a familiar space. Apple does something -- in this case, blocking apps not originally written in C, C++, or Objective-C -- that might have a reasonable user or branding component (keeping the iPhone platform free of least-common-denominator cross-platform apps) and taking it just too far for users or developers to be comfortable with it. That's, of course, an understatement, as a lot of developers are really angry. Gruber's point about the Kindle apps is good (and was later cited by Steve Jobs), but on the whole, I think this is a bit to far for Apple, or maybe I'm just upset that that the door seems to have been slammed on MacRuby apps for iPhone ever being feasible.

Book Update

Still working on the Webrat/Capybara chapter. Describing two tools that are so similar is really challenging for me -- when there's a difference, keeping it clear which tool is under discussion.

Also I've got the probability that I'll have an article in an upcoming issue of the Pragmatic Magazine. This will probably be based on material from the book, but edited to fit the magazine article format. Probably either factory tools or mocks. Or maybe Ajax testing. Haven't decided yet.

Tab Dump

Don't think I've mentioned this yet, but here is a cool presentation of RSpec tricks. Some of these don't work in RSpec 2, though.

While we're on the presentation kick, here's a nice intro to Git from James Edward Gray.

If you've ever tried to deploy Agile in a hostile environment, then the recent This American Life episode about the General Motors/Toyota NUMMI plant will resonate for you.

And Finally

A comparison of a boatload of Ruby test frameworks, being used in Iron Ruby to test some .NET code. I admit that I was not familiar with all the frameworks used here.