Notes on Life, ‘Puters and Hawaii

Switch to Google Apps

I switched my hosted domains’ mail to Google Apps over the weekend. I could not be happier. It’s free for most small organizations and you can host all your mail in one place. Not to mention the shared docs, calendar, the google portal with it’s “gadgets”. I am glad to have made the move.

For years I hosted my domains at my home, then I moved to managed servers, now I am using dyndns and managed applications. It’s great. The less I have to stress on making the core services that I rely on everyday reliable and easy to use, the better off I am.

itunes.queue.push(thom_yorke.the_eraser.black_swan)

Today I find myself in a hotel in Boston. I have traveled 5000 miles from my Hawaiian home to visit a client. Things are good. Can’t complain. We are readying our release - 5 months from conception to beta of one of the most advanced clustered apps I’ve seen. Nice!

Ruby Lasagna

You have heard of “Spaghetti code” if you’ve studied procedural or scripting-based programming. A similar thing can happen in Ruby with it’s polymorphism and the super-dynamic behavior. Ruby on Rails, combined with many plugins, can become a frustrating “Lasagna” sometimes with all these dynamic classes, dynamic instances and dynamic behavior. All this can be hard to debug and follow. (Thankfully we have a good debugging environment now for rails.)

Chad Fowler recently wrote “I love the tricks you can do with Ruby. method_missing, const_missing, autoloading, and their friends make really powerful things possible. But they do so at a price. When something goes wrong in a piece of code that relies heavily on one of these tricks, it can be much much harder to track down. So the decision to use such a tool shouldn’t be taken lightly. These are power tools. Used effectively, really cool things can happen. Used incorrectly, you can easily find yourself limb-less and bloody. So when you decide to use one of these power tools, you have to ask yourself: is it worth the risk?”

Try and Buy

In working with my new hires, I have found the try-and-buy works really well for the company. 50% of developers don’t make it during the trial period. It’s really important to try out new developers on a paid trial for a while. There is no interview long enough to make a decision to hire. Have them submit patches to your code base, don’t give them direct source access for the first week of the trial period. Review their patches. See how they respond to criticism. Watch how they interact with the team to solve problems.

You may think 50%!? That’s high. Not really. Think about it - 80-90% of all businesses fail in the first 5 years. The start-up failure rate is most likely higher on “the internets.” Just as much as it’s important to try out your employees before you hire them, it’s just as important for potential employees or consultants to try out potential employers or clients before making any commitments.

Lesson: You can’t change people. “They are who they are” starts the day you meet them. Pay close attention to warnings and your gut. If it’s not a fit, let them go in the first 2 weeks. Don’t wait a month or a year. Life is too short to work with unqualified people.

France and Italy

We took the night ferry over from Ireland to the north of France. From there we hopped on a train to Paris. Paris was fun and we spent three days there looking at the sites. Again, I had to work part time so I didn’t get to see as much as others. Still, it was a blast seeing all the sites and eating out. For the most part, French folks in Paris are not rude. I found them helpful and friendly.

After Paris, we took the night train to Genoa, Italy. That was an interesting experience. I have never tried to sleep on the train before. It was a jolt. I didn’t sleep well but it was interesting. From Genoa we took the train to Cinque Terra and spent three days there. That place is interesting but really full of tourists. As a result some of the people were rude, some were nice. It’s what you expect in a high-tourist area. It was very beautiful and it was fun watching the sun set into the Mediterranean sea from the bluffs.

From Cinque Terra we went to Rome and spent 3 days there looking at the ruins in the center of the city. I probably had the most fun of my trip here. We stayed at a bed and breakfast right in town and were able to hop a short bus to see the Vatican City and all the sites.

The last day of our trip we lied to Jacob and told him we were going to a geology museum in Paris for 10 hours. He was not happy with that but when we arrived he realized it was Disneyland Paris and changed his tune. :)

One Week in Ireland

I’ve now spent a week in Kerry and Cork, Ireland. “Nil Gaeilge maith agam” (I don’t speak Irish so well). Ireland was not as fun as I thought it would be.  ( Pints of Cider and Guiness aside ) Seeing ancient rock formations was fun. You really get a sense of how old Europe really is. The outdoor scenery is really beautiful and raw. It looks sort of glacially-formed and striking with lots of green hills and rocks jutting out everywhere.

The wedding we went to was held out in an island in the middle of this glass-like lake. It was so beautiful in this valley in the middle of no-where.  The ceremony was in this tiny catholic church that would seat maybe 20 people. We saw many castles and ruins on the way. It was something else.

Other than the wedding and being sick, I had to work most of the time. ( Sara and I ended up getting sick with the same flu Jacob had in Berlin. Not so fun. In fact it sucked bad. )

We are off to France tomorrow. Talk to you then.

Compiling GIT source control for Mac OS X

Git is a popular version control system designed to handle very large projects with speed and efficiency; it is used mainly for various open source projects, most notably the Linux kernel.

I needed to in install it on my mac because I want to follow the progress of Rubinius (a Ruby VM work in progress). Rubinius recently switched from SVN to GIT for source control. I will need to update my blog article on installing Rubinius. Anyway, here are the steps (in a Terminal window) to follow to *get* GIT.

Update: There is a newer article on this at this site

RailsConf EU 2007 Slides and Code

RailsConf EU 2007 is over. I think my talk went well. It was an experiment. I think it definitely shows the power of RESTful controllers and the many MIME formats that can be used to communicate with a Rails app. The approach may be useful for integrating odd apps and other languages too.

A gentleman approached me at the end of my talk and mentioned UJS & Lilu This just emphasizes the point - which is that separating the static mock-ups from the dynamic behavior and real data that comes when the application is assembled and running is a good thing.

Rails Code and Apple Keynote Slides

RailsConf EU 2007

RailsConf EU Speaker

So I am here in Germany in the Capital, Berlin, for RailsConf 2007 EU. I am speaking on Wednesday. My talk is on hacking Rails to integrate team-members of many talents. A summary is here.

Yesterday, Sara, Jacob and I traveled via rail from Koblenz to Berlin. We checked into the hotel and walked around a bit.

Today, I went to two tutorials. The first was a review of RSpec and BDD including a preview of the new “stories” functionality appearing on /trunk of RSpec SVN. The second was Flex on Rails. The Flex code was strikingly similar to the pure JQuery & HTML code that I will show interacting with Rails on Wednesday.

Jacob awoke with the flu this morning. Poor little guy. I hope he gets well soon.

European Workation

I finally made it to Germany after about 20 hours of travel. I am staying in Koblenz for two days before going to Berlin. I had terrible jet lag because we lost about half a day of sun-light in transit. When we landed in Frankfurt, we caught the Euro-rail to Koblenz about an hour or more away to the NW. When we arrived we found our hotel, got some bites to eat and promptly crashed. I awoke at 1am local time…. still not quite adjusted.

Some pictures.