Agile, Pomodoro, iPhone, Stripes, and more

November issue of PragPub is here, featuring articles on Agile Coaching, Pomodoro Techqniue, iPhone, Stripes, and more

PragProWriMo, Git cast, Mastering Ruby/Rails

Join us for PragProWriMo; new Git screencast, Mastering Ruby and Rails course coming up.

Heroku Gets Add-Ons: Serious Ruby Webapp Hosting Made Easy

heroku.pngHeroku is a Ruby webapp hosting service that we first mentioned about two years ago. It started off as an online IDE of sorts, but is now a complete cloud platform for running Ruby webapps. You can develop locally and then, with a single command, deploy your app to their metered service. Well, Heroku got in touch with me last week to talk about their new “Add-Ons” feature and they’ve really kicked things up a notch for people wanting to quickly roll out webapps online.

Till now, Heroku has provided basic functionality on a semi-metered basis. You pay a monthly fee for a basic rate of service and then pay an hourly rate for more concurrency. Now, you can also add on a bunch of other features which Heroku are calling “Add-ons.” Here are just a few of the more interesting ones:

  • Amazon RDS (Relational Database Service) – This add-on is free from Heroku’s point of view but you’ll be paying Amazon.
  • Bundles – A “snapshot” type backup system. You get a single bundle for free or can pay $20 for unlimited bundles.
  • Cron – Daily and hourly crons can be set up with a couple of clicks.
  • Memcached – You can boost your app’s performance with in-memory caching provided by Memcached. The key here is that Heroku totally manages the Memcached instance – no server setup needed, etc. Currently this feature is only in private beta though..
  • New Relic – Most readers should be familiar with New Relic‘s application performance tools by now and Heroku makes it easy to get them running directly on your Heroku-hosted apps. (As an aside, New Relic rolled out a significant update last week – version 2 of their flagship RPM system.)
  • SSL – Get https:// URLs on your Heroku app with a choice between piggyback SSL (free), SNI SSL ($5 per month) or full-blown custom SSL ($100 per month).
  • Websolr – A no-setup-needed Solr instance so you can get quick and easy full text indexing and search functionality in your apps.

Note: You can learn more about all the different Add-ons at Heroku’s dedicated Add-ons page.

Impressive but Expensive?

As impressive as Heroku’s one-command-deploy and add-ons features are, though, I can’t quite put my finger on Heroku’s market – they’re kinda pricey. Perhaps it’d be good for professional developers who want to do a test deployment of an app on a live server without getting mired in server configuration?

For full time use, Heroku doesn’t strike me as very competitive. For example, for the “Crane” 500MB storage option (billed as “perfect for a small biz app”) with the recommended 4 “Dynos” the fee comes to an estimated $158 per month, and that’s without any add-ons. For the entry level “dedicated” option with the recommended 8 dynos, the cost goes to $452.

Despite the cost, though, what Heroku offers is a very simple “no hassles” hosting service that, crucially, can handle significant workloads. You could rig up something similar with VPSes, dedicated boxes elsewhere, or even Amazon EC2, but you’re going to be spending time doing server configuration. If playing sysadmin isn’t tricky for you (I enjoy it, personally), Heroku might not be for you and you should be looking at companies like Webbynode or Linode. But if you’re just a 100% developer who wants to get something up and running and doesn’t want to worry about scalability too much, Heroku could be worth the extra expense.

caliper-logo.png[ad] Find duplication, code smells, complex code and more in your Ruby code with Caliper! The metrics are free and setup takes just one click. Get started!

Gemcutter Is The New Official Default RubyGem Host

rubygems.pngJust two months ago we posted about Gemcutter, a new RubyGem hosting repository that, we said, was “taking aim at RubyForge and GitHub.” It only took six weeks for GitHub to give up on building gems and to start recommending Gemcutter instead. Today, RubyForge is toppled also. Gemcutter developer Nick Quaranto has announced that Ruby Central has given the thumbs up to replacing http://gems.rubyforge.org/ with http://rubygems.org/ (the new Gemcutter URL) as the default gem host in RubyGems.

The transition from RubyForge to Gemcutter/RubyGems.org isn’t an overnight deal and gem publishing from RubyForge will continue to work for the time being, but within the next couple of months, RubyForge accounts will be merged with Gemcutter and an update will be made to change the canonical gem source (though, of course, you can use Gemcutter already if you like by following their instructions).

What all of this means for you as a Ruby developer is that if you want to release your own RubyGems (or “gems”) in future, things will become a lot easier. Gemcutter, if you haven’t checked it out, is definitely a refined evolution in terms of gem hosting – you can “push” a built gem to their server with a single command. If you want to learn how, check out Ryan Bates’ awesome Gemcutter & Jeweler screencast that demonstrates how to create a gem and deploy it with Gemcutter.

CodebaseLogo-RI.png[ad] Codebase is a fast & reliable git, mercurial & subversion hosting service with complete project management built-in – ticketing, milestones, wikis & time tracking – all under one roof. Click here to try it – free.

Pomodoro Technique Illustrated; Grails in print

Pomodoro Technique Illustrated now in beta; Grails: A Quick-Start Guide now in print and shipping.

Core Data in print; Seven Languages

Core Data: Apple’s API for Persisting Data on Mac OS X is now in print and shipping. Bruce Tate selects the languages for Seven Languages in Seven Weeks.

PragPub Magazine, Android 1.5/1.6

October issue of our magazine, PragPub, now available. Hello, Android Second Edition for Android 1.5/1.6.

Ruby Inside and Rails Inside Redesigned – Check It Out

ruby-inside-design-transition.gifThey’ve had several days to settle in, but because most of you will be reading via the RSS feed it’s time to make a point to announce that… Ruby Inside and Rails Inside have both been redesigned! If you usually just read the full-text RSS feed, do come and visit the site – if only to let us know what you think.

The new design marks the 3rd major redevelopment of Ruby Inside since 2006 and the stats from the last week are showing it to be a lot more effective with a 40% increase in pageviews per visitor. As well as an improved design, new features include:

  • An extended “elsewhere” section with automatically updated links to other top Ruby content each day
  • Our listing of the “Top 10 Ruby Sites” on every page’s sidebar (Wanna know what they are? Visit the site!)
  • A listing of our recommended Ruby books on every sidebar
  • New, graphic-oriented “related posts” bar on every post – a great way to find other posts to read
  • Search (people were asking for this a lot)
  • A “fixed”/permanent header bar – reaction so far has been positive but I’m not entirely sure it’s quite right yet..
  • A proper page for people who want to post to our jobs board. No longer are you dumped right into a sales form – you get to learn a bit about it first.

Lastly, I’d like to thank all of you for reading and supporting us over the years – ultimately it’s you, by reading every day, that keeps this site going.

As an aside, I’ve also quietly launched a The Ruby Way blog, dedicated to unearthing interesting bits and pieces from Hal Fulton’s awesome Ruby book.

It’s Here: iPhone SDK Development 3.0

iPhone SDK Development, for the latest 3.0 iPhone SDK is now in print and shipping.

Ruby Enterprise Edition 1.8.7 Released – Lower Memory Usage, Increased Speed

ruby-enterprise-edition.pngToday Phusion has announced the release of Ruby Enterprise Edition (REE) 1.8.7 (more specifically, 1.8.7-20090928). Once considered a bit of a joke, given the name, REE has proven itself to be anything but, with significant memory usage and speed improvements over the stock “MRI” Ruby implementation. The key development with this release is compatibility with Ruby 1.8.7, rather than the 1.8.6 of previous versions.

While REE has shown itself to be a good performer compared to MRI before, this week Evan Weaver of Twitter revealed how a release candidate version of REE 1.8.7 has resulted in a significant throughput increase on the same codebase. He also noted that Ruby is faster when compiled with optimization for size rather than speed due to the benefits of being able to fit more of Ruby into the CPU’s cache. REE 1.8.7 is optimized for size by default, so you get the same improvements out of the box. For information on other optimizations and changes from MRI, Phusion’s release post has more details.

Installing REE is pretty easy (instructions here) but the latest version of RVM (Ruby Version Manager) already has support for it if you want to seamlessly run multiple versions of Ruby.

Disclaimer: The REE “logo” shown above is not official and was designed by Ahmad Galal. It’s CC 3.0 licensed.

[ad] railsjumpstart.pngJumpstart Lab is offering Rails Jumpstart, an introduction to Ruby on Rails, on 10/31-11/1 in Washington, DC. Save $30 with code “rubyrow“!

Beginning Mac Programming; news

Beginning Mac Programming: Develop with Objective-C and Cocoa now in beta; new email delivery, upcoming studio.

Review of The Merb Way by Foy Savas

the merb wayI’ve been reading the Merb Way by Foy Savas (Addison Wesley).  I was a little sceptical about this book at first, because of the recent marriage of the Merb and Rails core teams and the announcement that the Merb codebase would be merged with Rails as part of the march towards Rails 3. As Yehuda Katz put it, “Merb 2 is Rails 3”.

So, is this book now redundant?  I don’t think so. As Obie Fernandez explains in the foreword, knowing about Merb is still valuable as it is a fairly widely used framework, and it will probably continue to be seen in the wild for a good while after Rails 3 is released.  Additionally, learning how Merb works and exploring the underpinning philosophies will aid your understanding of some of the changes happening in Rails.

The book itself is engaging and well written, and serves as a great reference guide for developing Merb applications.  It’s quite code-heavy, but this is by no means a criticism – Foy guides the reader through the Merb source, revealing how things are done in Merb, in order that the Ruby community can learn from it for developing our applications and future frameworks.

With under 300 pages of actual content, this is by no means a weighty tome, but it covers most things a Merb developer needs to know.  Foy starts with the fundamentals, explaining how Merb apps are structured and configured, as well as providing an introduction to some of the internals of Merb. The first part of the book is concerned with routing and MVC, which will be familiar to Rails developers.  It then moves onto more Merb-specific topics such as slices (self-contained mini-apps that can be packaged as gems) and parts (for reusable logic used in partials throughout your app). Sessions, authentication, and mailers are also covered, before the book concludes with a chapter on testing.

The Merb Way is available now from Amazon for $29.19 (or £23.19 from Amazon UK).

Ruby5: A Twice-Weekly 5 Minute Ruby News Podcast

ruby5-itunes-logo.pngRuby5 is a new twice weekly podcast dedicated to Ruby and Rails news. It’s headed by Gregg Pollack (formerly of the RailsEnvy podcast which Jason Seifer has now taken over) and Nathan Bibler. They aim to cover several bits of Ruby and Rails news in five minutes. You can also leave comments about the stories on their site as you listen. As of today, there are 7 episodes in the archives if you want to catch up, all in the 5-6 minute range.

I’m not a big fan of listening to news, but Ruby5 has done a great job of also making it possible to learn about what they’ve featured without listening to the audio if you don’t want to.

Why’s “Try Ruby” (Web Version of irb) Back Online

Screen shot 2009-09-02 at 19.19.38.pngTry Ruby was a Web site by Why The Lucky Stiff that provided a Web-based version of irb (the interactive ruby prompt) and a 15 minute tutorial for people to learn and play with Ruby. With Why’s disappearance, however, the site went down and an invaluable Ruby community resource was lost.

Luckily, Andrew McElroy has made a great effort in getting Try Ruby back online. It’s not precisely the same, but it’s as close as you’re going to get for now (one key difference is that the irb process is not persistent – instead the history is re-run on each new line). There’s even the 15 minute introductory Ruby tutorial! An extra bonus is that Andrew has released all of the code he has for Try Ruby in a Github repository. Why’s code was never open sourced but Andrew has done a good job in starting to rebuild the backend.

Note that this is not a Why-approved project (yet). To the best of my knowledge there is still no further information on Why’s disappearance.

bbox.pngSupport from: Brightbox – Europe’s leading provider of Ruby on Rails hosting. Brightbox is currently looking for a Senior Developer to take a lead developing their customer control panel and other backend systems. They want a great coder and project manager with experience of RSpec and Capistrano.

Magazine 3, Final vote

PragPub the magazine, with a feature article by XP’s Kent Beck and all manner of other goodies; vote for your favorite programming language

Devver: Run Your Tests or Specs 3 Times Faster (On A Cloud Of Servers)

devverflow.png

Devver is a new Ruby testing service that lets you run your tests in parallel on their cloud of servers. This means your tests (or specs, both Test::Unit and RSpec are supported) could run in a third of the time as usual (depending on your setup) and it’s as easy as copying a Rakefile into your project and entering a few settings. Devver stresses that “you won’t have to alter a single line of your code.” Devver is currently in public beta.

devver-dudes.png

I got in touch with Devver cofounder Benjamin Brinckerhoff (pictured first in the image to the right) to get some background on the service, the reason for it being created, and how the whole thing works:

How did you guys come together to build Devver?

Back in 2007, my co-founder and I were building a product review site in Rails. We wrote a lot of tests, which had all the benefits you’d expect. However, we found that once the test suite took over about ninety seconds to run, it became significantly less useful. We started developing all these bad habits: we’d only run a small portion of tests before committing and then let CI handle the rest, we’d get distracted and check email while tests were running, we’d run tests less often, and we started to write fewer tests.

We realized that since testing best practices advocate creating completely independent tests, it would be possible to significantly improve performance running them in parallel. That was what led us to create Devver.

How did you build the prototype of Devver?

We had a week where we didn’t have anything really scheduled and were discussing what we should work on. We decided that it might be interesting to try to build a prototype of the distributed testing idea we had.

We actually completed the first version in a little over a week. It ran on the eight computers that we had in our house (our various servers, laptops, and a bunch of old computers we found in our closets). It was incredibly hacky – you had to manually log in and set up a ton of stuff on each computer. There was no automatic code distribution, our communication between components was a hugely inefficient system we built on top of Rinda, and it only worked for our specific code base. But it did speed things up! Even that early version cut around 60% of the time off our big functional test suite.

What convinced you that Devver was worth going ahead with full-time? It’s not the usual sort of developer service..

We did a demo of that early prototype for TechStars and were fortunate enough to be accepted into the program for the summer of 2008. Once we got accepted into TechStars, we knew we wanted to work on developer tools that were based in the cloud, but we weren’t sure our idea of test acceleration was interesting by itself. The thing that convinced us was a talk we gave at Pivotal Labs. The project was still in its infancy, but the feedback we got was clear – many Ruby developers really wanted a tool that would enable them to run their tests quickly so they could run them more often.

What surprises have have you found with Devver so far?

We always expected Devver to be a challenging project, but making it as compatible as we’d like has been even more difficult than we anticipated. Early on, we had a plan (which, at the time, we considered extremely clever) to make Devver work on a ton of open-source projects in order to improve our compatibility. We got many open-source projects working and thought we were in good shape. Of course, as soon as we started bringing on additional closed-source projects, we quickly learned they were quite different from open-source ones!

One nice surprise has been the degree to which Rubyists write highly independent tests. Early on, we expected that many test suites would contain hidden dependencies – that is, you’d have to run the tests in a certain order. It’s really easy to miss these dependencies when your tests always run in the same order on your local machine. But in practice, we’ve seen virtually zero suites that have interdependent tests. As a result, the tests parallelize well and we can run them very quickly, which is great.

What stack are you using for Devver? (i.e. Ruby version(s), libraries, daemons, anything like that)

We run on Amazon EC2 instances running Linux and use their SimpleDB for our storage. We currently run Ruby 1.8.6 (but we’d eventually like to let the user determine if we run their tests using 1.8.6, 1.8.7, or 1.9). We use Beanstalkd for our job queues. We have components built on top of EventMachine and Sinatra, and some that are entirely custom.

Where do you see Devver going in a year’s time?

First and foremost, we want to make our core experience as awesome as possible. That means making Devver even easier to set up and compatible with more projects. As a quick example, we don’t currently support Cucumber, but we’d like to. After that, we’d like to beef up our web site to display some metrics that individual developers and teams would find useful. For instance, we’d like to track code coverage over time or give you a report that lets you view your slowest tests.

But of course, we’ll stay flexible and keep listening to what our users want. We love any and all feedback. If there is a reason that a user or team can’t or won’t use Devver, or a feature they’d like to see, we’d love to know about it so we can continue to make Devver better!

Disclaimer: You might have seen a couple of footer ads on Ruby Inside advertising Devver – though this writeup is in no way dependent on that; it’s a cool tool!

Rails Rumble Voting Is Go – 22 New Ruby Webapps To Check Out!

rrumble.png Rails Rumble is an annual Ruby (and Rails) development contest where developers attempt to build a working web app in 48 hours. This year it took place between 22-23 August and you can now vote on the top 22 applications (as ranked by an expert paneldisclaimer: I was on the panel). Despite its name, Rails Rumble is not only for Rails applications – this year, any application that uses Rack could be entered. I wasn’t aware of this before the contest took off, but hopefully with this in mind many more Sinatra and Ramaze entries could join the fold next year.

Your votes will ultimately decide the winners so if you want to check out 22 awesome Ruby and Rails powered web apps, go and get voting on the entries!

My Top Picks

I don’t really want to sway the voting but there are a couple of apps that jumped out at me and that I think you’d like to learn about even if you don’t want to go and vote:

hurl.png

Hurl: Hurl is a Web equivalent of HTTP request tool curl. It lets you make HTTP requests from a Web page and then analyze the results in detail (including headers, etc). It comes from Github’s Chris Wanstrath and Pownce’s Leah Culver.

Lazeroids: Lazeroids is a Web version of arcade classic Asteroids. It’s multiplayer and is pretty fun to play with even if it has a few quirks.

hmc.png

How’s My Code?: How’s My Code is a Git-based lightweight code review app. You don’t get much of an idea from the front page, but sign up and log in and you’ll see this is a well designed and useful tool. If you work in a remote team environment and use Git at all, check it out. Basically you can comment on any commits made on git repositories of your choice.

Hosting Statistics

One of Rails Rumble’s main sponsors is virtual private server provider (and Ruby Inside sponsor) Linode who provide free servers for Rumble participants to use and they put together a page with statistics about how their machines were used during the contest. It turns out 80% of participants used their Linode in some way or another, that 81% of those then chose to use Ubuntu, and 68% of users went with Phusion Passenger to deploy their app.

bbox.pngSupport from: Brightbox – Europe’s leading provider of Ruby on Rails hosting. Brightbox is currently looking for a Senior Developer to take a lead developing their customer control panel and other backend systems. They want a great coder and project manager with experience of RSpec and Capistrano.

O’Reilly’s “The Ruby Programming Language” Ebook for $9.99 – Limited Offer

rubyprogramminglanguage.gifI’ve just had word from David Flanagan – co-author of The Ruby Programming Language, published by O’Reilly – that O’Reilly are running a temporary sale on the e-book edition. The PDF e-book is now just.. $9.99 for a limited time only. That’s a pretty good deal considering O’Reilly are selling the print book for $40 (though it’s only $26.39 on Amazon).

Actually.. make that $5.99? Reader Mike Hodgson claims: If you use the LREL40 coupon code you can get an additional $4.00 off, bringing it down to $5.99 – Not tried it myself, but it’s worth a go.

The Ruby Programming Language is the canonical Ruby book covering both Ruby 1.8 and 1.9. It’s by David Flanagan and Yukihiro Matsumoto (Matz!) so you know it’s authoritative. When we reviewed it in 2008, we billed it “the new most important Ruby book.”

David also mentions that there’s a new iPhone edition available too for a mere $5. A great opportunity to get a great book on the cheap, whatever your budget.

jslab.pngJumpstart Lab is running a JavaScript Master Class for Javascript & UI programmers with Thomas Fuchs (Scriptaculous, Prototype Core) and Amy Hoy (UI Expert) on 9/12 in Washington, DC. Save 10% with code “rubyinside”!

“Why The Lucky Stiff” Is Missing

why-so-serious.png

Long-time Rubyist and the community’s own resident crazy genius, whytheluckystiff (a.k.a. _why) seems to have gone missing. Not only has he deleted his Twitter account (@_why) but his Github repositories and all of his great Ruby related Web sites – poignantguide.net, hackety.org, whytheluckystiff.net, and shoooes.net are all down and not even resolving at DNS level.

The Poignant Guide, Hpricot, Markaby, RedCloth, Shoes, Camping, and Try Ruby (a Web version of irb) are considered important by Rubyists not only for their usefulness but for their significant contribution to Ruby’s culture, and if _why has truly fallen off the grid, it’s a big deal. That said, this appears to be either a deliberate attempt to disappear or a major hack and not just a bunch of coincidental outages. In either case, hopefully he’ll be back soon.

What’s the motive? We have nothing definite, but Hacker News user fizx quoted a recent tweet from why before he deleted his account:

programming is rather thankless. u see your works become replaced by superior ones in a year. unable to run at all in a few more.

Meanwhile, Twitter users are going bonkers over the news:









Do you know anything or do you just want to show some appreciation to why (he used to read Ruby Inside so he might see this)? Leave a comment! Lastly, if you’re reading _why, I hope everything’s okay and if you want to release any sort of statement through us, just get in touch.

Agile Coaching, Project Portfolios, 7 Languages

Agile Coaching now in print, Manage Your Project Portfolio now in print, help us pick which Seven Languages to learn.