Leitmotif
A variation on a theme in modern software development.
A few weeks ago, I was wondering about how to keep my fledgling start-up from falling prey to unplanned maintenance or downtime. Because of the nature of the site (managing design mockups), the element that most concerned me was in-Passenger handling of thumbnailing. We use paperclip. Paper relies on ImageMagick, a notorious resource hog, especially when it comes to RAM. I didn’t want to be able to let a single user hamstring our entire site for a thumbnail.
Fortunately, at exactly the same time, Jesse Storimer created delayed_paperclip to defer thumbnailing (or any other paperclip processing) using delayed_job. Very cool! I started watching it.
I knew that I wanted A/B testing and metrics to play a big role in Mocksup and, right now, that means Redis and Vanity. After a very successful trial run with them both, I knew that Redis would play a part in the application’s future. Having read a history of Resque from my friend defunkt, that bit of software was on my list to try out anyway. Resque was easy to get up and running. Why not try to port delayed_paperclip to Resque? After some hacking, it was working fine in my application. Even cooler! So I blabbed on Twitter about it to see if anybody else liked the idea. Some people did, including the man himself. But I couldn’t release with broken tests, that’s not me!
I got the tests passing, and let Chris know. He tweeted about it and suddenly my little hack is trending on GitHub. If Mom could see me now! Well, I mean, she can see me, but— if… I could explain it to her without her being bored! Yeah, that’s it!
Seeing my “name in lights” was definitely gratifying, but I started to wonder what the future would be for this little piece of code. The author is using Delayed::Job; he works at Shopify for god’s sakes. He may not be interested in this functionality. And what of the integration with paperclip over time— am I really going to be able to keep this supported? There’s a lot of sophisticated Ruby work happening in that plugin, to balance Rails, Paperclip, and Delayed::Job. So I sent a pull request and figured “Let’s just see.”
Jesse could not have been cooler, and integrated my changes immediately! He even added on an additional bit of coolness that made the plugin even better for the end user. After one last little change pointing that additional nicety out to the plugin’s potential users, I was done! I updated my fork and pointers to it with the information that the functionality I added was merged into the project.
Let’s recap the winners:
- Thoughtbot, for getting an even more robust and featureful plugin allowing delayed post-processing
- Jesse Storimer, who gets a plugin with more exposure.
- Chris and resque, for getting a new plugin for resque
- The potential users of delayed_paperclip, for being able to choose which work queue system fits them better.
- Me, for scratching an itch and getting involved with all these great people and projects.
To me, much of the beauty of contributing to open source is being a member of this kind of community. I enjoyed it so much, I had to write a little bit about it.
A little disappointed
That’s one right-on bug report
The case of the 500-mile email: “‘We can’t send mail more than 500 miles,’ the chairman explained. I choked on my latte. ‘Come again?’ ‘We can’t send mail farther than 500 miles from here,’ he repeated. ‘A little bit more, actually. Call it 520 miles. But no farther.’ “
Happy Bear
A Glorious Dawn
Remember what wonder was like? Yeah, I didn’t think so.
The Positive Reinforcer
A Letter to My Younger Self
A Letter to My Younger Self: “
Sure, I could go back and tell my teenage self not to give up playing the piano, but would that just leave me in my 30’s dreading another gig in the bar of some hotel waiting for the inevitable tooth-grinding moment some drunk tourist requests ‘Piano Man’ for the sixty thousandth time? Would I hunch over the keys, bang out those first chords and wish to my core I could go back in time and advise my teenage self to teach himself Perl?
So I pondered. And I thought. And I finally came up with the one important, nay vital bit of advice I would give myself if I had the chance….
Charlotte.rb Organizational Meeting
Hello, Charlotte Rubyists!
As you may have heard, our organizer and sponsor, Jesse Schoch, has left the Queen City for Northern Virginia early this month. That leaves us with some pretty big shoes to fill if we’d like the group to continue on!
I’d like to suggest an organizational meeting for Amelie’s Bakery on Tuesday, Aug. 25th, starting at 6PM. The goal for the meeting, in addition to socializing with fellow Rubyists, would be for us all to talk about the role we could play in charlotte.rb, if any.
Ruby Go Mobile Web
The PhoneGap guys are trying to bring development with web standards to the mobile platform, specifically by leveraging WebKit, which is available and/or used on basically all platforms but the BlackBerry. That seems like a hell of a goal to me. Read the rest of this entry »
Flying Robots!
Anyone who didn’t like this talk must not have had a pulse.
The “big idea” of the talk was doing open-source software development on an open-source hardware platform that does something cool! Like flying a freaking blimp to The Flight of the Valkyries!

