Gordon B. Hinckley passed away Sunday, and since then I’ve thought back on the many memories I have of him. He was called to serve as a counselor in the first presidency one week before I was born, so his face has always been a familiar one. In March of 1996 he was ordained 15th President of the Church of Jesus Christ of Latter-day Saints (casually known as the Mormon Church). In our seminary class later that year we were given a challenge to learn if he really was a prophet. Around the time of General Conference that fall, I took that challenge to heart and prayed to learn if he really was a prophet of God. After praying, I felt in my heart that he really was someone that God had ordained to teach us and reveal his will to us. Explaining how I know it is difficult, but this scripture from the Book of Ether, written by an ancient American prophet, may help:
“But he that believeth these things which I have spoken, him will I visit with the manifestations of my Spirit, and he shall know and bear record. For because of my Spirit he shall know that these things are true; for it persuadeth men to do good.”
Ether 4:11 (emphasis mine)
As a prophet, President Hinckley led and guided his people. As a leader, he touched our hearts and helped us do good. As a person, he was a humanitarian and someone who loved others. A recent insert to the Daily Universe, Brigham Young University’s student newspaper, highlights many of the major accomplishments of his life.
I am very grateful to have been able to listen to his words, including a few times when I was able to listen to his teachings in person. His words touched my heart and helped me become a better person.
This past week I’ve spent some time evaluating CakePHP and trying to compare it to the things I’ve learned in Ruby on Rails. I checked out CakePHP over a year ago, and I admit I didn’t get into it as much as I had hoped. Having dealt with Struts while using Java, I felt at home with both in terms of their MVC nature and I have no desire to go back to life without a framework. Because CakePHP started out as a Rails Clone, they share many advantages:
- Convention over Configuration – Each framework tries to follow a set of standards in filenames, controller names, and so on so on. When I work on a site someone else designed using a framework, I know where things go and I can familiarize myself with that application much more quickly.
- Don’t Repeat Yourself – Specifying code in one place means that you only have to change it once should it need updating.
- MVC and a focus on “Fat Models” – Separate models, views, and controllers make life easier down the road when it comes time to switch to a new system that has a new database or when you want to make a fancy interface for an iPhone or the next new thing.
There are many other advantages to each, but let’s move on to the differences and disadvantages of these frameworks (keep in mind that this is from a somewhat unexperienced perspective, please let me know if these don’t convey the whole truth):
- CakePHP isn’t as mature as Ruby on Rails. Migrations aren’t fully integrated and the feature set seems to be a few steps behind Rails.
- CakePHP isn’t as easy to deploy as Ruby on Rails. This might matter more for larger applications, but I haven’t seen anything like Capistrano in Rails.
- Documentation is somewhat lacking in both. I had a hard time getting going using only tutorials that I found online. Rails has some great books, but I haven’t found any for CakePHP (although the tutorials and my familiarity with PHP made things easier).
- Ruby is new to me. In my opinion, it has a higher learning curve than PHP (possibly because I already knew Java before learning PHP).
- There are far fewer hosting solutions that provide good Ruby on Rails support. Although it’s pretty easy to get both up and running (especially for the lucky users of Mac OS 10.5), good hosting is pricier for Rails applications.
With all that said, there’s no way I’d like to go back to plain old PHP for developing a website. Things have come a long way even in just the past year for both of these frameworks, so I hope to keep learning them both. In the meantime, though, I’m devoting more of my time to Ruby on Rails, simply because I’m actually finding it fun to code in Ruby (and the Ruby Quiz is something I wish my programming classes had been) while PHP never had me quite as excited.
This is a meme that Beth tagged me to do. You asked for it, you got it. Toyota.
8 things I’m passionate about:
2. Being a good husband and father
2. Living up to my beliefs
3. Having fun
4. Being prepared
5. Tinkering with technology
6. Learning about how to be a good husband and father
7. Learning about having fun
8. Learning about how to tinker with technology
8 things I want to do before I die:
1. Finish school
2. Decide what “finishing school” actually means
3. Own a house
4. See lots of places with family (because family vacations are more fun)
5. Get season tickets for a baseball team and go to every game
6. Never throw up again
7. Become a contestant on Jeopardy!
8. Visit all 50 states
8 things I say often:
1. “You guys are dangerous”
2. Too early for flapjacks?
3. When will then be now?
4. We got no food, we got no jobs, our pets’ heads are fallin’ off!!
5. Don’t you worry about blank, let me worry about blank.
6. God’s given me a gift. I shovel well. I shovel very well.
7. You have the whitest white part of the eyes I’ve ever seen. Do you floss?
8. Last night, Darth Vader came down from planet Vulcan and told me that if I didn’t take Lorraine out that he’d melt my brain.
8 books I’ve recently read:
1. Hop on Pop
2. One Fish, Two Fish, Red Fish, Blue Fish (I hope to have this memorized soon)
3. The Book of Mormon
4. There Was an Old Lady
5. Clifford does something with something else
6. Agile Web Development With Rails
7. Grover’s Own Alphabet
8. The King of Torts
8 songs I could listen to over and over:
1. “It’s the End of the World as We Know It (And I Feel Fine)” by R.E.M.
2. “Mmm Mmm Mmm Mmm” by Crash Test Dummies
3. “Birdhouse in Your Soul” by They Might Be Giants
4. “Arch Drive Goodbye” by Eve 6
5. “Real World” by Matchbox Twenty
6. “Soul Meets Body” by Death Cab for Cutie
7. “Omaha” by Counting Crows
8. “Breathing” by Lifehouse
8 things that attract me to my best friends:
2. Respect for things that I respect
3. Easygoing nature
4. Similar interests
5. Affinity for the movie Groundhog Day
6. Respect for my beliefs
8. They drive me to be a better person
8 things I’ve learned this past year:
1. Being a parent is often more fun than it should be.
2. Children do crazy things.
3. It’s easier to be happy when you have a budget
4. I don’t take enough pictures
5. I enjoy having a backyard
6. Playing in the snow is fun
7. Be sure to make comments like “If the Rockies go to the World Series, can I go?” when they have such a small chance of doing it that your spouse is required to say yes.
8. “By small means the Lord can bring about great things”
8 people I think should do Crazy 8’s:
1. The Monster from Cloverfield
2. A monkey with a typewriter
3. Jane Austen
4. Mike Tyson
5. Optimus Prime
6. OK Go
8. Howie Mandel, cult leader
I got a little teary-eyed when I read that the humanitarian efforts of the Church of Jesus Christ of Latter-day Saints have saved over 400,000 lives in developing countries by “training medical staff and birth attendants how to resuscitate oxygen-deprived babies at birth”. Our little girl Emmy had problems breathing at birth and it was those skills combined with a loving Father in Heaven that allowed her to live. I’m glad that an increasing number of parents around the world can see doctors and nurses perform these miracles.
I just had a few weeks off from school and work, so I thought I’d take a look at Ruby on Rails, which has been the “next big thing” in web programming for over a year now. Two books and over a month later, I can say that I’ve been impressed with that test drive and I think I’ll devote some more time to learning more about how to use it. As a test project, I’m working on re-writing Quotational using Ruby on Rails to get some experience beyond just typing in some example code from books.
I enjoy the structure that Rails offers, and that way it has of making web programming fun again. I’ve used PHP for several years now, and I find myself rewriting things continuously just to make things better. While this has certainly made me a better programmer, the steeper learning curve of Rails lets me do more in a shorter period of time although the degree of difficulty is higher. Rails brings a common framework with it, and one that seems to be more accepted in my experience than any PHP framework that I’ve worked with.
So far, the major drawback has been the availability of free resources for the Rails newbie, although this is a problem that is increasingly getting smaller. My initial impetus to take that first step toward learning Ruby on Rails was an offer for a free PDF book from Sitepoint, a deal that has since expired but is still definitely worth paying money for. That book was a great resource for me, and I’ve since gone on to buy a similar book, Agile Web Development with Rails. Those two books provide a lot of the same information, but reading through them both helped me pick up on things that I would have missed otherwise. From here I may not have a lot of time to devote to learning Ruby on Rails, but I definitely plan on continuing that effort.