How Many WalMarts in an Oil Spill?
I think we need to start measuring this one in something other than barrels. When it gets to 50 trillion barrels, its gonna be hard for the average person to digest. Lets start saying the spill has reached 7000 Walmarts of oil, people would understand that.
And then the math starts. Well played, Reddit, well played.
Rspec with Rails3 beta and Rspec 2 beta
The problem: running
spec filename.rb
against a project built on Rails 3 beta and using Rspec 2 beta generated the following error (I can’t imagine why there were any issues):
/Users/chris/.rvm/gems/ruby-1.8.7-p249/gems/activesupport-3.0.0.beta3/lib/active_support/dependencies.rb:209:in `require’: no such file to load — spec/adapters/mock_frameworks/rspec (LoadError)
from /Users/chris/.rvm/gems/ruby-1.8.7-p249/gems/activesupport-3.0.0.beta3/lib/active_support/dependencies.rb:209:in `require’
from /Users/chris/.rvm/gems/ruby-1.8.7-p249/gems/activesupport-3.0.0.beta3/lib/active_support/dependencies.rb:197:in `load_dependency’
from /Users/chris/.rvm/gems/ruby-1.8.7-p249/gems/activesupport-3.0.0.beta3/lib/active_support/dependencies.rb:209:in `require’
from /Users/chris/.rvm/gems/ruby-1.8.7-p249/gems/rspec-1.3.0/lib/spec/runner/options.rb:312:in `plugin_mock_framework’
from /Users/chris/.rvm/gems/ruby-1.8.7-p249/gems/rspec-1.3.0/lib/spec/runner/options.rb:138:in `run_examples’
from /Users/chris/.rvm/gems/ruby-1.8.7-p249/gems/rspec-1.3.0/lib/spec/runner.rb:61:in `run’
from /Users/chris/.rvm/gems/ruby-1.8.7-p249/gems/rspec-1.3.0/lib/spec/runner.rb:45
from /Users/chris/.rvm/gems/ruby-1.8.7-p249/bin/spec:19
As you can see from the error it is in fact not running the rspec beta but rather trying to use the system’s rspec 1.3.0. Problematic, that.
Turns out the solution was to use bundle* to run the individual spec (this, of course, assumes you’re managing your gems with Bundler):
bundle exec rspec filename.rb
*In the project above I have a whole separate environment managed by RVM specifically for the latest über-stable Ruby (ruby 1.8.7 (2010-01-10 patchlevel 249) as of this writing), the Rails and Rspec beta.
“Must have an entity”
Playing around with CoreData today, I started to get the following error message:
2010-05-09 10:27:28.568 Climb_It[2330:207] *** Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘executeFetchRequest:error: A fetch request must have an entity.’
This was being thrown as a result of some initialization code in my AscentMethod class, and everything in the code looked good to me.
Turns out the issue was a naming problem. In the .xcdatamodel file I’d named the entity “ascentMethod” instead of “AscentMethod”.
Name changed, problem solved.
Coding Horror Knocked Down: A Tale of Back-ups
Some time today an issue at Coding Horror‘s web host took the site down. It appears it might have been due to the loss of the database, and it also appears that while the hosting company said they were making data back-ups, in fact they weren’t. That’s brutal.
I feel for Jeff Atwood et al. in that, if only because I know from experience how much that sucks. When we were first launching DreamBank an issue at our host took out our entire production database as well. Heroic recovery efforts on the part of one of our developers recovered the lost data, with absolutely no help from the web host.
We promptly switched hosts because, in our instance, it was a case of professional negligence and stupidity rather than just run-of-the-mill incompetence, but that’s not the take-away from these events. That kind of thing can happen anywhere, for a thousand different reasons.
The take-away is this: we only own the data that we physically have possession of. Whether it’s back-ups of your website’s source, your database tables, or all the information you’re storing out there on “the cloud” in Google docs and Gmail, if you don’t have a current copy of it you don’t really own it. You’re just renting on someone else’s good graces.
We at DreamBank learned that the hard way. Jeff’s learning that the hard way today. Ma.gnolia learned that the hard way too (though it’s probably more accurate to say we all re-learned it). But maybe you don’t have to. Learn from our mistakes . Back up your data yourself, today.
And on that note I’m going to go back up my laptop, which hasn’t been backed up in three days, and dump the database powering this blog.
GeekTool and iCal
I use GeekTool to display quite a few items on my desktop, it’s a fantastic utility. For fun I’ve put together a Ruby script for use with GeekTool that displays iCal events: GeekCal.
Download the script, make it executable, set it up as a shell script in GeekTool et voila. Calendar events on the desktop.
Redfin on VC Questions
Frankly, in years of reading TechCrunch (and much of that against my better judgement), this is the best post TC has ever posted: Good Question! The Eight Best Questions We Got While Raising Venture Capital.
VCs are good at asking questions. They are unimplicated in your dumb decisions, unmoved by your original sense of mission and far less concerned than you that a blunder could bankrupt you. They re-imagine your business in terms of all the other businesses they’ve seen, pulling the arms off one doll and the head off another to create a perfect money-making Frankenstein. And since the stakes are high, the whole philosophical exercise tends to result in action.
Here are the questions VCs asked Redfin that changed how we think about our business.
I love question #1.
Fix for uGallery
On a current project I’m working on, we’re using uGallery to implement an image carousel. Despite the JS code being a bit rough it’s very easy to integrate and the output is quite elegant. I like it a lot.
Unfortunately the current version of uGallery (1.1) has a minor bug. If you’re displaying fewer thumbnails whose width will exceed the interior of the thumbnail viewport, the horizontal scrolling goes wonky. This wee patch fixes that issue.
In uGallery.js wrap the margin calculation and style assignment in this conditional:
// Only bother to scroll the content if its area is greater than the viewport
if ( contentWidth > viewWidth ) {
var margin = -Math.round( ( e.clientX / viewWidth ) * movableWidth ) + 20;
thumbs.css( {"margin-left": margin+"px"} );
}
Handy DataMapper uninstall script
gem list '\A(?:(?:d[mo])[_-]|data_?(?:mapper|objects)|extlib)' --no-versions | xargs sudo gem uninstall -aIx
(Via Dan Kubb and gist: 31187.
TextMate, ImageMagick and “Command not found”
Two days ago I did a clean install of Snow Leopard, TextMate and all the associated goodies. All was going well until I tried running my spec’s that referenced Rmagick from within TextMate. They started returning the following error:
sh: convert: command not found
This was fixed by opening TextMate’s preferences, Advanced -> Shell Variables and adding a new variable:
Variable: PATH
Value: see below.
For the curious, my $PATH is currently:
/usr/local/bin:/usr/local/sbin:/usr/bin:/opt/local/bin:/usr/local/mysql/bin:/opt/local/sbin:/bin:/usr/sbin:/sbin:/usr/X11/bin
Rcov, NaN, and Fatal Crashes
Seems its possible to crash the current version of rcov hard under certain circumstances (version as of this writing: rcov (0.8.1.2.0)). If you find it crashing with:
ruby(17057,0xa0124720) malloc: *** error for object 0x5b1a602: Non-aligned pointer being freed
*** set a breakpoint in malloc_error_break to debug
/opt/local/lib/ruby/1.8/rss/rss.rb:274: [BUG] Segmentation fault
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9]
…
rake aborted!
NaN
Check to see if you have any empty helper files that don’t have any coverage. I had a couple that resembled the following. Removing them removed the “divide by zero” issue that causes the crash:
module ProductHelper end
Update
Scratch that, it doesn’t entirely fix the issue. I’ve also implemented Stew Welbourne’s hack for round_to_tenths(decimal) in MetricFu but that too does not seem to be a complete solution. The seg fault still happens, though intermittently (sometimes it runs through the complete test suite, sometimes it doesn’t).
The search continues.