Prices: To Publish, or Not to Publish?

Posted by Nathaniel on Jun 4th, 2008

It’s an age-old question for services companies: should we publish our prices, at least some of them, or should we wait until we’ve had a conversation with a potential client before discussing price? Recently at Terralien we’ve changed our answer to that question and decided to start publishing some of our prices, and I thought I’d write a bit about the thought process that went in to the decision.

Read More…

Refining and Refreshing

Posted by Nathaniel on May 5th, 2008

We just launched a refresh of the content on our main site – do check it out! While the changes aren’t very drastic, they do reflect a significant refinement to how we do business and I wanted to take the opportunity to talk a bit about why we made them…

Read More…

“Camping in 10” at BarCampRDU

Posted by Nathaniel on Aug 4th, 2007

I’m currently hanging out at BarCampRDU 2007 and having a blast. BarCamps are “unconferences”, which means the talks are proposed and given by the attendees on the day of the conference. Rather than just soak it all in, I decided to throw my hat in to the presenting ring and do a redux of the Camping in 10 talk I put together for Raleigh.rb a little while ago. After getting through a few projector struggles, it went really well, and I was able to expose about 30 people to Camping.

A few folks asked for my slides, so I threw them up on the interwebs, and you can get them here: Camping in 10 slides. Enjoy, and if you attended the talk and end up writing a Camping app of your own, drop me an email or a comment and tell me about it – I’d love to see what folks come up with.

Ya’ll make delicious pork pies!

Sales Jeopardy! at RailsConf!

Posted by Nathaniel on May 16th, 2007

So the tricky part about proposing a talk so many months in advance is that you never know what you’ll have learned (or not learned) by the time the conference actually rolls around. Back in November when I proposed my RailsConf talk, I was thinking that by now I would’ve reduced my sales and marketing efforts down to at least a general outline I could share with those at the conference. Boy was I wrong! The more I work to land projects, the more I realize that at least in this business, each sales process is unique as a snowflake. Yup, that’s right, the “MVC” pattern I put in the abstract is really clever, but turns out to not be very useful, at least for me.

So where’s that leave my presentation on Saturday? Never fear! Because while snowflakes are each unique, they do share common properties. So what I’m going to do is switch from focusing on a process, and instead do my best to pass along the tips, tricks and rules of thumb I’ve picked up over the last year and a half of selling Terralien. I might not have a useful system for selling custom software, but I sure have a lot of great “lessons learned” that I think everyone at the talk will find hugely valuable.

Upon figuring all this out, I was left with one problem: how do I structure the presentation? I mean, c’mon, every presentation needs a gimmick, right? After much mulling, I struck upon the perfect approach a few days ago, and instead of doing a plain old boring presentation, we’re going to do a super-agile game show! That’s right, we’ll be playing Sales Jeopardy!, with actual cash prizes to boot. Of course, not being a rich TV show, the prizes will lose a few zeroes off the usual Jeopardy pay-out, but hey, somebody might be able to at least buy themselves dinner ;-)

Hope to see you on Saturday in Portland!

Ruby Hoedown!

Posted by Nathaniel on Mar 27th, 2007

I don’t want to dup the whole post, but in case you don’t follow my personal blog, I just posted over there about the upcoming  Ruby Hoedown 2007. Have a look and make sure to sign up for the announcement list if you’re at all interested in coming. See you in August!

Ruby Tidbit: Enumerable#collect_one

Posted by Nathaniel on Mar 1st, 2007
  module Enumerable
    def collect_one(default=nil)
      inject(default) do |d,e|
        if v = yield(e)
          break v
        else
          d
        end
      end
    end
  end

So this:

  element = %w(a bb ccc).detect{|e| /b/ =~ e}
  size = (element ? element.size : 0)

Becomes this:

  size = %w(a bb ccc).collect_one(0){|e| e.size if /b/ =~ e}

Discussion starter: does the name communicate?

TextMate tip - Run Last

Posted by Nathaniel on Feb 8th, 2007

When coding Ruby, I love being able to run a test suite right in TextMate (Command-R), but recently I was wanting something a bit more. Back in my bad old Eclipse days, I used a nice little feature that let you hit Ctrl-F11 to re-launch the last command you’d run in the IDE, regardless of where you currently were. After an intensive cycle of test-code-test-code in TextMate, I was getting tired of having to switch back to my test to re-run it, so I decided to take a page from Eclipse’s book and “Run Last” was born. Lets walk through it.

Read More…

Rails Sharing++

Posted by Nathaniel on Dec 19th, 2006

Our own John Long has a very thought-provoking article over on his weblog about Rails needing something better than Engines for sharing large chunks of functionality between applications. While John and I have had a lively discussion about where the infrastructure for such sharing should live, we both agree 100% that (a) we need something better than what we have, and (b) Rails itself should at least make it easier to do things like add additional template_roots and externally define new routes. So go have a read, have a look at some of the various attempts in existence (such as Radiant’s extension system, Mephisto’s plugin infrastructure, PluginAWeek’s collection of plugins (no longer available) or the venerable Rails Engines) and lets all start brainstorming and hacking to find the best solution going forward.

Using Protected Attributes in your Rails Models

Posted by Nathaniel on Nov 28th, 2006

Terralien crew member Matthew Bass has a great article over on his weblog outlining how to use protected attributes to protect your Rails models from malicious use. Definitely worth a read, both to understand one of the vulnerabilities that a Rails application can have, and how to combat it.

Ruby Certification NOW!

Posted by Nathaniel on Nov 15th, 2006

Terralien is a people-centric business. I just had a conversation with a customer wherein he praised the developer working on his project (Matthew Bass) up one side and down the other, asked me how in the world I found such a great developer, and then wondered somewhat incredulously if I had any more. Why yes, as a matter of fact I do, and if you’d like one working on your project, drop me a line :-)

But that is a good question – how do I find great developers (and designers) for the Terralien network? Just like with any other selection process, I stereotype, judge and discriminate. Oops, I guess the more politically correct term these days is, I “filter”. So what are my filter criteria? Well, some of the folks in Terralien are people I’ve worked with in the past. That one’s pretty easy – I know from first-hand experience they can cut it. In the absence of that, the first thing I’m looking for is code, often via the open source projects someone is involved with. Oh, and seeing the code goes for designers just as much as it does for developers – pretty is great and necessary, but what I really want to know is does the designer get the web, and their code is the best way to tell that.

I have two other filters that really matter to me. First, I want to see how someone communicates. One of the Terralien distinctives is that we’re not just code monkeys – everyone communicates well with the “business people” and can do their own day-to-day project management. Thus I’m looking for blogging, conference presentations, project documentation, etc., that will tell me if the person involved is a good communicator. Second, entrepreneurial pursuits are really important to me, since they say something about initiative and a passion for software that goes beyond the technology and in to the business. Since we like working with people starting things, it makes a big difference if my designers and developers have tried to start something themselves.

So what does all this have to do with certification? Well, there’s been a big rumbling in the Ruby community lately about certification, brought on by Pat Eyler’s revelation that he’s working with a university on a certification program. Now I know Pat, and I know he’s very interested in community feedback, as his Ruby Certification: Is It Worth It? post makes clear. My impression is that Pat might be on the fence, especially now that guys like Jamis Buck are saying NOT to do it, and I want to make sure he makes the right decision.

So here’s what I think, Pat – we need Ruby certification (and Rails certification) as soon as you can make it happen. It would simplify my filtering job a lot, since I would be able to immediately discount a whole swath of potential network members. I’d be able to quickly tell if someone just can’t cut it in the real world, has trouble communicating, is more interested in having things given to them than in making things happen, has no passion for software, and likes to buy their way rather than earning it. This would be of great value to me, and to a lot of others like me, so lets do it sooner rather than later.

Now, I know a lot of people are going to say that someone having a certification doesn’t tell you any of those things, but they’re wrong. You see, the problem most people have when filtering by certification is that they disqualify people who don’t have them. I’ll be instantly disqualifying everyone who does have a certification, or at least everyone who’s lame enough to tell me they do, and I can’t think of a better first-pass filter.

So what are we waiting for? Lets make this Ruby certification thing happen, and start separating the wheat from the chaff. It’ll just make my job that much easier.

You can still contact Nathaniel at nathaniel@terralien.com