Heroku 12-Factor Gem

Heroku is big on the 12-factor philosophy.

Fine. Nothing wrong with that.

But their “12-factor” gem (no point linking to it) has NOTHING to do with 12-factor. It is just a group of gems needed to make rails play nice with Heroku.

You can do the same thing by adding the following to your Gemfile:

group :production do
  gem "rails_serve_static_assets"
  gem "rails_stdout_logging"

No idea why they can’t just say to do that. :(

Nexus 4 Winner: Worst. Launch. Ever.

I’m often accused of being an Apple Fanboy, but I’ve owned every Google Nexus device since the Nexus one launched.

In fact, to get the Nexus One I had to have it delivered to my hotel room in Hawaii - I was on vacation at the time of the launch.

My brother had to bring back the Nexus S when he came home for Christmas a couple years ago.

The Galaxy Nexus I picked up from Expansys last year, I payed way too much for it.

This year, however, I am not sure I will be able to get my hands on a Nexus 4. It is really strange. First, the phone never actually went on sale for me. It went from being not-yet-available to being sold out.

The whole launch was strange. I understand the cancelled press event, but I’m not sure Google ever announced when the device would go on sale - if they did I have no idea where to find it. I understand Google having a “just search for it” attitude on many things, a product launch doesn’t really make sense. They’ve had the product page up for weeks - why not post when it would go on sale there.

Apparently their stock sold out in minutes - I have no idea because the “coming soon” message was displayed all day for me. I don’t think this indicates large demand, the Nexus 4 is a niche device. It is more an indication of a small supply.

Which is pretty sad if you ask me.

But I really have no idea because there just doesn’t seem to be any information.

If you were looking to get a Nexus 4, I hope you managed to get one.

Remember, it’s a sin to kill a Sparrow.

When I heard the news this morning that Google had acquired Sparrow I wasn’t overly surprised – Sparrow’s real claim to fame has always been that it understands Gmail in a unique way that no other mail clients cared to. That is what made it important to me.

As a customer of Google Apps and of Sparrow there was opportunity in this to finally get real push notifications in Sparrow. (Of course, this wouldn’t have worked for anyone but Google customers, but that was the group of users that Sparrow went after when they first introduced their mail client.) If Apple refused to give Sparrow the blessing needed for running in the background, then a deal with Google would have been their next best option.

The problem with this theory is the public statement that development on Sparrow will now cease.

There is also the issue of the missing iPad app that they were working on. Compounding the disappointment there is that push is much less important on the iPad. Again, Sparrow has clearly said there will be no more development.

It is possible the Sparrow team will take what they have learned and really innovate at Google - take over development of Gmail clients for OS X and iOS and deliver something awesome.

But they were already doing that outside of Google and I’m not convinced there is room to do that kind of creative work inside Google.

Sparrow was a great product. It was insightful and well executed. And people loved it.

And when you take something like Sparrow. Something great. Something that people loved.

Something special.

And kill it.

That is a sin.

Grape sized hail.

That, and I have a small lake behind my house right now that didn’t exist 20 minutes ago.

You should start thinking about your travel and accommodations for Aloha Ruby Conf. ;)

You should start thinking about your travel and accommodations for Aloha Ruby Conf. ;)

Responsable Disclosure

I’m sure you’ve heard about the GitHub hack today.

Some guy (I refuse to give him any more credit than that which he’s already stolen) used mass assignment to commit to Rails as @dhh. (As an aside - who hasn’t pretended to be @dhh? I know whenever I’m out at the bar…)

There are a lot of people up in arms because the offender’s account was suspended by GitHub. Put yourself in their shoes - they had to do it - any other response would be condoning the behavior.

But this does pose the question - what is the correct way to handle this?

Here’s my suggestions for steps that will keep you solidly on the side of the good guys:

  1. If you’re sure there is an issue, don’t prove it out: just report it.
  2. Don’t do anything useless you are sure you know what will happen.
  3. Don’t do anything that causes damage. This makes you one of the bad guys.
  4. Keep a record of anything you do. Turn the records over to the person you report the issue to so they can clean up.
  5. Report it privately. If you can find a Mass Assignment bug you can find someone’s contact info.
  6. Don’t expect a reward, or even to be publicly acknowledged.
  7. Always remember that this isn’t a game. And that your actions have real consequences.

When I report this sort of thing I always try to find someone that will understand the problem (and that I’m just trying to help) but at the same time is not the author of the code in case they try to cover up their mistake.

I acknowledge that at some point this advice breaks down. Sometimes people refuse to listen or try and hide their mistakes - I can’t advise you if you get in that situation.

My best suggestion is to always keep asking yourself “does doing this make me a good guy or a bad guy?”

And then be one of the good guys.

Ruby 1.8.7 via RVM on OSX Lion 10.7.3

There is a special dance that you need to do if you want to use Ruby 1.8.7 (ruby-1.8.7-p357) with rvm (http://beginrescueend.com/) on OS X 10.7.3.

Why, you ask? Well:

  • 10.7.3/Xcode4.2.x no longer has gcc without LLVM.
  • gcc-4.2 AKA gcc-4.2.1 needs to be installed separately.
  • Ruby 1.8.7 only compiles for i686 and won’t compile with x86_64 for your ARCH.

The solution:

  1. Make sure if you’ve added 64-bit ARCHFLAGS to your profile you comment them out :

    export ARCHFLAGS="-arch x86_64"

  2. Then you need to uninstall any mess you’ve made with Ruby 1.8.7

    rvm remove 1.8.7

  3. Next, grab the OSX GCC Installer from Kenneth Reitz over at Github


  4. Once the installer is installed you can then make CC point to your newly installed goodies:

    export CC=/usr/bin/gcc-4.2

  5. Finally you can then:

    rvm install 1.8.7

I know, seems pretty painful.

Remember that if you compile any gems you’ll likely need to use the CC setting as well as keeping the ARCHFLAGS set to i686.

Good luck. :)

** UPDATE! **

Well, Apple just released some goodies didn’t they - the “command line tools for Xcode” sounds like the exact thing you’d want.

It isn’t

They don’t contain gcc-4.2.1 and hence can’t help here.

They work great for Ruby 1.9.x and upwards though.

Goodbye, Things.

After using Things since its release I’m switching to a combination of iOS apps and Google Tasks. It is not a great experience, but it means I don’t have to remember to sync before I turn off my computer or leave my house.

Cultured Code customers have been waiting more than a year now for “Cloud Sync” and really it is just time to move on.

The frustrating part for me is their excuses for the delay. They are all about problems that I don’t have. I will update to iOS 5. I don’t want an account on their servers, I don’t care if it is free.

Honestly, they should have just used iCloud. They could have made it a new version, I would have bought it.

With their last official blog update in August. And with a portion of their team working on “the fourth alpha” of some “top secret project” it is pretty clear they don’t really care.

It’s sad. And I’m sad.

I’m really going to miss it.