Skip to content

The cat’s out…

22-Jan-06

iMac Core Duo 20

I’m so deep in Ruby on Rails web development right now that I’ve finally max’ed out the capabilities of the trusty iBook G4 I moved to Maui with - an 800 mhz computer. Jess has herself the same model, but it’s half a Gigahertz faster. So I just ordered one of the new 2 Ghz iMacs based off the Intel Core Duo processor… the top of the line consumer Mac available right now… 20″ screen, 1GB memory, 250GB hard drive. It ought to keep me happy for a couple of years at least! But that’s not the big news.

I’ve been working on Ruby on Rails web development projects for a company in Taiwan and a yoga studio here on Maui and doing various other smaller web-related tasks for other companies. Recently I started contracting with a great Rails consultancy in the Northwest, and they’ve got using [Basecamp][b] down to a science. These had come to the point of paying the bills without a ‘day job.’ I could have pursued all of these further and made a very good living for at least the next few months. But that’s not the big news.

The big news is that I’ve found a great team of people who want to change the world… not by developing the best bookmark manager or creating the next big thing in online address books, but by bringing together people interested in the spiritual life, in conscious living, in enlightened entrepreneurship, in communities of value, and by building the tools that help people succeed at making change happen in the world.

My job with this company will be to help the development team turn the vision of the company into reality. They’ve already got a great start, but both the CEOs want me to hit the ground running. (They’re out here in Maui to enjoy the sun and brain-dump as much of their vision to me). I’ll be developing in Ruby on Rails (I love it!), but more importantly, I’ll be able to take what I’ve learned about usability, about simplicity, about creating tools that really help people, and helping craft an incredible machine for change.

I’m amazed at how this job will bring together so many elements that have gone into my life: Buddhism, yoga, philosophy… (even Ken Wilbur had a part way back when I lived in Atlanta and was on a mailing list called armchair-philosophers; and a significant number of KW enthusiasts comprise the initial rush of their site members), self-improvement, BFL (Shawn Philips, brother of the creator of the Body-for-Life program, is a member), and so much more of what’s important to me… and yet provide me with the ability to use the professional knowledge I’ve gained over the years.

Did I mention I get to work from Boston with a team of people from across the continent and even the world?

I’m so excited to be a part of this team; it’s a little intense, but I know I’m embarking on an incredible journey.

But I bet you want to know who I’m talking about now, don’t you?

Alright. Go ahead. Sign up. Join the community I’m helping build at [Zaadz][z]! Psst… my profile is at [http://jake.zaadz.com][j]

P.S. It’s pronounced Z-ahhhhhh-dz; _zaad_ is Dutch for ’seed’.

[b]: http://basecamphq.com/
[z]: http://zaadz.com/
[j]: http://jake.zaadz.com

Grokking Ruby’s Blocks

19-Jan-06

So… everything I’ve read about Ruby’s blocks seems too esoteric to me… here’s what it boils down to in my mind. See if it helps you…

def myMethod(id)
num = Model.find(id).number_of_items
yield
end

called like:

myMethod(id) { |val| val*2 }

is equivalent to:

def myMethod(id)
num = Model.find(id).number_of_items
num * 2
end

Blocks provide a simple way to change the way a method works by in-lining the code in the block (between the { and the }). If I wanted `myMethod` to triple the number_of_items value (retrieved from a database, maybe?), I could call it thusly:

myMethod(1) { |val| val*3 }

How might this be useful? Let’s say you wanted to retrieve a bunch of rows from a database based on an input value (x), but you needed to format the display differently at different times.

Write your method to take a block, pass the values into the block (that’s what the `|val|` is about, and manipulate within the block!

That’s the way my mind sees it. Maybe it’ll clarify blocks for other someone else, too?

Really. Big. Newz.

19-Jan-06

I’m not going to say much more about it just yet, but a number of incredible opportunities have recently crossed my path, and I just grabbed the tail of one of them. This opportunity combines a number of my interests, including spirituality and Buddhism, yoga and Ruby on Rails. Can life get any better?

I’ll tease until I can share the news by saying this: I have returned to working in the web industry full-time.

In addition to everything else coming together (flight to Boston, a roof over our heads, a car, a great yoga teaching position for Jess) for our move back to Boston, the final piece in our puzzle has been solved.

And you know what else I’m excited about? This’ll free up some time to work on personal projects and ideas of my own - stuff that’s been getting put on the back burner up to now in order to handle all the client work that’s been on my plate.

Observation from the Rails

09-Jan-06

There are times I actually look at the amount of _code_ I’m writing per hour when developing a Rails application and feel guilty. Why? In general I write far less code per hour with Ruby on Rails than I ever did with PHP, Python, Java, ASP; but I know I’m not being less productive.

Sure, every so often I pop over to [api.rubyonrails.com][api] for reference, but no more than I ever visited the php.net function list. And I **know** I’m not having to consult the books as much as with Java, Python or Regular Expressions (took me a while, those did)

So what’s leading to this odd result?

I observed my process while working on a client application last night, and discovered that I only spend 20% of my time actually coding, and that 20% often works correctly the first or second try. (When it doesn’t, I’ve made a silly error, such as calling the wrong object from `collection_select` that takes me a few minutes to spot.)

I spend the other 80% of my time thinking, puzzling, pondering, figuring out the optimal way to solve the problem before me.

That’s the way programming should be: I should be able to dedicate most of my time solving the problems that matter to the client, not to solving the problem of _how to accomplish those solutions_ in a particular language.

Until [Django][dj], a good web application framework didn’t exist in Python. About the time I discovered Ruby on Rails, I’d been searching for a Python framework that took care of the details for me; as I said above, I wanted to spend my time solving the problems that matter, not reinventing the wheel. But everything I tried back then took way more setup time than I wanted to invest. Most of the existing frameworks required that I spend an inordinate amount of time just getting a development server running so I could get down to business. Sure, that’s a one-time deal, but when it came to Rails, I could type

script/server

and be done with it. I don’t have to configure apache, manage a pool of CGI servers, configure mod_python, etc…

I’m willing to put in plenty of effort building a production server, but here’s a tip to aspiring framework authors out there… if you want people to dive right in, don’t require them to bring a diving board and platform.

And I’ve singled out Python here - I actually really enjoy Python for anything other than web development - and I intend to keep an eye open on Django and other developments. I’ll use PHP here and there for the tiny little stuff, but the point is this:

> If I have to develop a significant web application in a language other than Ruby, I’ll be looking for frameworks that get me started developing solutions immediately.

[api]: http://api.rubyonrails.com/
[dj]: http://www.djangoproject.com/

Coming home

08-Jan-06

My family’s been hearing that I’d be returning to the Northeast in June, but since we’ve already begun the process here I think it’s time to surprise everyone again. We’ll be back in Boston sometime in March.

There are a number of reasons for moving earlier, not the least of it is the possibility of a great yoga teaching position opening up for Jess. My freelance web development work picked up quite a bit as well in the past several months, but being on the mainland, especially in Boston (a hotbed of Web 2.0 activity lately with the Startup School and all), will help me turn what’s now a part-time job into a full-time effort.

I’ve been saying lately that I think Maui is a good place to find yourself, but some people make the mistake of staying too long and forgetting their ambitions and goals. We’ve come to a point of choice: return to the land we both call ‘home’ and pursue our dreams, or stay here and bask in the warm sun and the sandy beaches.

There’s too much East Coast blood in both of us to remain here, so expect us to be back around the middle of March!