Highlight of Your Day

Twitter is amazing. It is a global conversation and place where most of my friends spend their time. It is a place where I can go when I need to reach out to a friend or ask for help.  I have circles of friends who could not be more different, all on the same platform.

The only problem I see with Twitter is just how easy it is to be negative.  I do it all the time. It is always easier to complain about something than look at the bright side. Negativity then breeds.  Once you let the thoughts in, they are hard to stop.

The other day I was having one of the worst days I’ve had in a long time. I turned on some Louis Armstrong and started cooking (two things that always help me center).  Not long after that I began to see the morning in a very different light. I was standing in the mountains of colorado. The sun was shining. I was surrounded by friends. The list of good was easy to see once I started looking.

Yesterday my daughter called me in the middle of the day that had gone south emotionally: “Daddy, I just HAD to call you and tell you that I had the bestest day ever!” She was calling because she was made stamp captain.  A kindergartner’s day was made because she is the one who gets to stamp the hand of a kid that the teacher wants to recognize that day for good behavior.  Something so simple. A choice to be happy.

Join me in my latest crusade. Let’s remind each other of the good things in our lives. Each day has SOMETHING to offer us, we just have to actively look for it. Each day on twitter, post the #highlightofmyday. No this is not a new tag or meme, I’m just wanting us each to spread it.

You can follow mine, I’m @objo on twitter. If I don’t post one, call me on it.  And I’ll do the same if you want.

2 Comments

Filed under Uncategorized

Why Yml?

I wish someone would enlighten me.  I cannot for the life of me figure out why we use YML in Ruby. This is not a YML vs XML vs JSON discussion either.  It’s a question of why we would use any external configuration file.

External configuration files, as far as I can tell, began because of compiled languages.  Back in the day you would compile entire systems down into a jar file, exe,  dll or some such file. There would always be those little bits of information though that you could not possibly know.  What is the exact path to a particular folder for images? What is the database server address?

Here we are in Rails (or at least those of us that have come over) years later doing the same thing.  The funny thing is though, we are doing it half way.

We are in a dynamic, not compiled language. We are using one of the most expressive languages out there. We are don’t have a reason (as far as I can tell) to need a standalone configuration file in another language.

I’ve heard the argument that they are easy to find.  If you structure your application correctly, no matter if it’s code or configuration settings, finding them should be obvious (config folders, etc.).

I’m picking on the project a little here, but what got to me was when I saw an example of Mongoid and I saw this:

production:
    <<: *defaults
    host: <%= ENV['MONGOID_HOST'] %>
    port: <%= ENV['MONGOID_PORT'] %>
    database: <%= ENV['MONGOID_DATABASE'] %>

So now we are mixing ERB with YML?  I’m sorry, but this in what I call a code smell.  Why are we not just using Ruby?

7 Comments

Filed under Uncategorized

The Traveling Vegan

Back in December my friend and mentor, Neal Ford dared me to try going vegan for a month.  As he put it “what have you got to loose?”  It was a great decision. After two weeks I felt amazing. You never realize just how much sodium you are taking in until you get rid of cheese from your diet.  Wow.

Now to be completely fair, I built up to it. My daughter has severe food allergies and my wife is very active in the allergy community.  Eggs and milk were eliminated from her diet when she was an infant and my wife spent years finding good alternatives.  While I still consumed eggs and cheese regularly I knew of many alternatives that I liked and enjoyed.  I also had cut out red meat 5 years before that.  So again, it was almost an incremental step for me.

One of the things that convinced me to try it was because I found out I could do it and travel.  See Neal travels more that any individual I have ever met.  One year he actually spent more time in an airplane than in his condo (popular guy :-) ).  Anyway, not only does he travel but he is one of the biggest foodies I know.  So he had me convinced to try it.  I’m glad I did.

Traveling though has not been easy.  I’ve picked up a few pointers along the way and made some compromises.  I’ve been meaning to throw these up here. Thankfully Giles Bowkett gave me a nudge to get these up here.

I’m also feel bad calling myself vegan as labels can make us jump to assumptions. I should also clarify that I’m vegan in the sense that I do not eat meat, dairy or eggs.  I’m ok with honey. I do not eat fish, but have been known to cheat at times (sushi is an honest weakness).

Cliff Bars Are Your Friend

One of the worst things is being stuck.  Stuck in an airplane, stuck in an airport, etc. When this happens, having a cliff bar in your bag is huge. They last quite awhile and combined with a bottle of water can last you for quite some time.

Read Menu for Ingredients and Negotiate

Realize that you aren’t going to find a vegan item on the menu (many won’t have it). But you can find vegan ingredients.  Pasta dish with chicken over here, spinach salad with walnuts over here, grilled veggies over here as a side.  Now turn to the server and ask “Would it be ok to get the pasta dish without the chicken and throw in some spinach and grilled veggies.”  In the end I’ve only had a small handful of places not work with me.  Meat is the most expensive item on the menu.  When you ask them to leave it off, its amazing what you can get.

Omelet Stations Are Your Friend

One of my favorite tips involved omelet stations at restaurants. Ask for a veggie omelet without the egg. All but one time I’ve gotten an amazing plate of sauteed veggies.  Combine it with a legal english muffin or toast, some fruit and you have a great breakfast.

Finer Establishments Mean More Creativity

So far I have not found a vegetable I did not like.  We were taken to dinner in Sweden one time and they did not have any options I could see (or understand). So I asked the server if they could do ‘something.’  I gave them my limitations and told them I was open minded.  The meal I was served to this day ranks as one of my top 5 dishes of all time.

Get A Kitchen And Find a Whole Foods

Thankfully there is a trend of eating better in the US now. We are realizing just how much crap we are consuming (watch Food Inc sometime).  Whole Foods and Natural food stores are no longer ‘hippy’ places you only find near college campuses (unless maybe you are in Texas).  When you travel, stay in a Residence Inn (Marriott) or Homewood Suites (Hilton) establishment. It’s usually only a little bit more. First night you are there, go grocery shopping for some basics.  For me its Coconut Milk by So Delicious, So Delicious coconut milk coffee creamer, cereal, and fruit.  If I’m going to be there awhile, I’ll buy meals that I can make.

Plan And Be Flexible

Unfortunately the hardest part of this diet is that food can’t just be an afterthought. You begin to know restaurants where there really is nothing for you (BBQ comes to mind).  Look out for conference events that are food based.  Talk to the airline on international flights (I’ve had some killer meals on United believe it or not).  Understand ahead of time what you are going to do and what your backup plan is.

And in the end, be prepared to cheat slightly if you have to. Unlike my daughter’s allergies it is not a life threatening condition if I eat a muffin that had egg baked in.  I’m doing this for health not for political reasons so I’m able to cheat.  I’m ok with it in the end.  If doing well 98% of the time, I’m happy with myself.

I do encourage people to try it though.  It’s amazing what flavors and combinations exist that most people never get a chance to try.

I’ll post more if I think of them.

9 Comments

Filed under Uncategorized

Cost of Change

My first programming job was for a print company. One of the original founders quickly ripped out an entire ERP system for them that enabled them to have a leg up on the competition. They were in startup mode, so he did it in something that would allow it to get up ‘quickly.’ They chose FoxPro for Dos.

There I stood, 4 years and many, many employees later watching in horror as the company grew despite the software. They were now spread across 16 countries, all of their sales had become decentralized and the business was shifting underneath them rapidly.  Here they were with a FoxPro for Dos ERP system, with full replication. They had tried the ‘big rewrite’ and it failed miserably.  I do not blame them for that, they were the unfortunate victims of a great sales person for a company that could not deliver.

What it did show was just how important cost of change is.  The ability to take a system and let it grow is huge.

I have since worked in many, many companies.  Since founding EdgeCase four years ago, we have done projects of every different size.  I can say without a doubt that every single project ended up in a very different place than where it started.  As soon as startups see what’s possible or get the first bit of feedback they think of new directions.

Every single time, cost of change has been a major deciding factor in success or failure.  This is why we use Ruby on Rails.  This is why I think something like PHP is not a good business decision.

Are there many examples of companies that have thrived using PHP?  Sure.  Are there examples of companies who have chosen Ruby and Rails and ended up with a big pile of mud?  Sure.

In the end though, I prefer to choose a language with a web framework built on it so I can move in a different direction if I need.  I prefer a language that is expressive and tells just the essence of the business story that helps me build the application. I prefer a language that adopts and promotes unit testing to sometimes excessive levels (yes, anyone who was at Mountain.rb knows that I would rather have too many tests than none).

I’m not saying that you cannot unit test in PHP. Just like Objective-C, you CAN do it, but it is  not baked into the language and culture.  I do not see the same dedication to agile methodologies as I do in the Ruby community.   Yes, barrier of entry is low, but I don’t like to throw bodies at a solution.

Yes, I’m making lots of assumptions here.  Yes you are getting a slanted view point. I’m not trying to start a flame war, I’m simply stating what I see as vital when choosing technologies.

4 Comments

Filed under Uncategorized

PHP, there is a good side

I’m a self-proclaimed Ruby evangelist.  I ask people all the time to challenge the assumptions of the platform they are working in.  I challenge people to keep an open mind.  Today, a friend of mine challenged me on twitter to do the very same thing about a technology I have trouble finding the good side of.  I know that others have already built a list, but I wanted to write this list independently of others.

Keep in mind though, this comes from a developer who now spends a significant portion of his time in marketing, sales, training and evangelism.  The things I see are from my context.

So here goes.  10 things I like about PHP.

1. An open community:

This does not stand in contrast to other communities, however, the php community seems to be very open and welcoming. From the outside, I see very few walls.

2. The community takes care of its young.

Along those same lines, the barrier of entry to PHP still seems to be kept quite low and welcoming.  Having been a part of the Rails community for quite some time, I’ve seen us forget about those trying to enter the community one too many times.

3. The ubiquity of CMS options

While we do have things like Radiant and such, we do not have as many options for quick content managed solutions.

4. The hacking culture is alive and well

If you think I mean this in a negative way, go read Hackers and Painters and come back.  Sometimes you just want to rip something out, not worrying about the ceremony of it all.  Get out a proof of concept quickly.

5. They respect and fight for web standards

The community has been some of the most outspoken people when it comes to truly open web standards.  They don’t sacrifice standards for tools like some communities and platforms.

6. They have great sales examples

I’ll admit, I’m completely jealous of the fact that they can say that Digg, The White House, and Facebook run PHP (even if Facebook compiles it down to C++ first … I think that’s a bit cheating).

7. Numbers

If you are going to analyze a technology you cannot help but look at mindshare.  The community is huge.  There is no denying that.

8. Diverse skill set

As I eluded to earlier, they take care of their young.  In doing so you have a lot of great developers, and a lot of developers that are good, and a lot of new developers.  For a community to thrive you have to have a great mix at all levels.

9. Microsoft support

Now I admit to saying this with a bit of a bitter taste in my mouth but Microsoft has thrown its weight completely and totally behind PHP.  No matter how much many of us like our Macs, Windows is here to stay.  If any community is to grow (especially in companies) it has to be a technology taken seriously.  In the Ruby and Rails community we have fought hard to keep Windows support there, but it has been almost entirely community driven (one click installer, etc).  MS has donated thousands of lines of code back to the PHP community to make sure it operates well.  Yes, I’m bitter.  If Rails had 5% of that kind of support, we would have a much easier time.

10. Easy to deploy

PHP comes included in everything.  If you want to get it out there on the web, its a no brainer.  Despite people thinking this is a softball answer, it is not and should be pointed out.  I personally believe it is a large reason many people choose it.

Do I think PHP is a good business choice?  No.  Do I think there are good things about the language and platform?  Do I think other communities could learn a lot from them?  Most definitely.

Thank you for once again, making me take a real good look at something and making me challenge my beliefs.

11 Comments

Filed under Uncategorized

Blog Relaunch

I’m actually amazed at how many times I had the thought “I should blog that”.  I thought that anything I had to say worth hearing could be summed up in 140 characters (and many things not worth hearing, I do have 16k tweets and counting).

As any self-respecting geek would do though, I hosted my own blog. Which means that, just as a car mechanic rarely drives a new car, my blog was always in rough shape. I have learned a lot by doing it. It really is something every developer should do at some point.

Alas it was time to move on. I’m now using wordpress and letting someone else host it. I have plenty of control over the theme, and the things I like to futz with, while getting other goodies like a mobile theme.

Now I just need to come up with some content.

Leave a Comment

Filed under Uncategorized

Learning Ruby Through Testing

Back in 2005, Mike Clark wrote a blog post about learning ruby through unit testing. Ever since then I have had this itch to formalize what he was trying to do. Well, Jim Weirich and I got together to work on a Ruby 101 for the last CodeMash conference and out of it came the Ruby Koans a self-paced introduction to Ruby.

It is hosted on Github a killer service for social code hosting. If you are not using git, do not fret. You can always click the download button and get the latest copy of the project. Creating an account is free, and would allow you to fork the project, solve all the koans, and see what others have done.

Enjoy, and we look forward to the feedback.

Leave a Comment

Filed under Uncategorized