Learning to Code: Lessons From Building a Rails App with Treehouse

Learning to Code: Lessons from Building a Rails App with Treehouse

Last night I pushed my first Rails app to production – you can find it at (oops! It looks like all the traffic has crashed the app. Hiding the URL for now) Here’s what it looks like.

It’s like a super stripped down version of Twitter – you can create an account and post statuses. It uses Twitter Bootstrap for some basic styling and Gravatars for profile pics. One obvious area for improvement (among many) is that right now, you can post a status as any user (not just yourself) and edit anyone’s status.

Despite this issue, I’m still very proud of it. Deploying the app to Heroku was a very satisfying moment and feels like a real milestone in my quest to learn how to code. I have a long way to go, but I thought I’d stop and share some lessons I’ve learned so far as a business guy venturing into web development.

Note: My friend Bevan is starting a Ruby on Rails Newbies Meetup in SF if you’re interesting in connecting in meatspace.

Learning to Code: Lessons From Building a Rails App with Treehouse

1) Have a learning plan

I signed up for Treehouse (referral link) in late December and have been going through their modules for the past 6 weeks . You can see my progress here. Treehouse was recommended to me by a non-technical friend (thanks Tony!) who found it very accessible and I completely agree.

Having a program or system, especially an interactive one that’s designed for newbies, is incredibly comforting. I know I can work my way through the modules and learn the basics without missing something important or getting too stuck. Obviously there are many options beyond Treehouse. CodeSchool and Lynda are paid subscription based models, and the Ruby on Rails Tutorial are other learning plans that would be worth checking out.

2) Setup is a big hurdle and something to be proud of

When I tried to learn Rails a few years ago, I struggled with correctly configuring Rails and Ruby. It was frustrating and embarrassing to be stymied by such a basic issue that I didn’t feel comfortable asking for help. That was a mistake. I am comforted by Michale Hartle (author of Ruby on Rails Tutorial) when he talks about getting up and running:

There is quite a bit of overhead here, especially if you don’t have extensive programming experience, so don’t get discouraged if it takes a while to get started. It’s not just you; every developer goes through it (often more than once), but rest assured that the effort will be richly rewarded.

So don’t be discouraged by the first hurdle of just getting setup. When you finally get it done, celebrate it – it’s a worthy accomplishment for a newbie. Continue reading…

When Software is Eating the World, You Better Start Making Dishes

Photo Credit: Kuba Bożanowski via Compfight cc

One of my goals for 2013 is to learn enough about programming to build and release publicly a simple web application that does something interesting.

I’ve been working toward this goal for about a month and wanted to share some thoughts on it so far. In this post, I’ll share my history with programming and why I’ve dedicated myself toward this goal. In a later post, I’ll talk more about how it’s progressing.

My history with programming

In high school and college, I took a few basic computer science courses. I learned Java and Python, played with if/then statements and while loops, and built little applications that did things like simulate games of Craps.

While it was interesting, I struggled with the assignments and learned more towards basic sciences, like biology, where simply mastering a lot of content was enough to get good grades. I didn’t pursue advanced studies in CS.

In September 2010, I made my first attempt at learning Ruby on Rails. Back then I was still working at isocket as a business guy and not a founder.  I made a number of mistakes, including not having a learning plan and trying to start on the newly updated versions of Ruby and Rails at the time (1.9.2 and 3.0.0, respectively). Continue reading…

Doing a Clean Ruby on Rails Setup/Install on Snow Leopard

This is part of an on-going series of posts on learning Ruby on Rails. It’s a bit technical but not too much so. If you’re interested in startups and are a “business guy” it definitely wouldn’t hurt to understand everything I write here, as I’m pretty much a total noob, but was willing to learn. Enjoy!

While Ruby on Rails prides itself on requiring few dependencies, there are still a couple of things you need to install/setup in order to actually start doing anything in Rails.

  • Xcode Tools (the Apple developer toolkit)
  • Ruby (the most up-to-date version)
  • Ruby Gems (the package manager)
  • Rails (the framework itself)
  • Sqlite (one of the preferred database engines)

While there are apparently some auto-installers out there, I chose to use Hivelogic’s guide to installing Ruby – which is also referenced as a guide from the official Ruby on Rails site. I figured I’d do things manually so I could better understand what was going on – also none of three I looked at (Locomotive, MacPorts, Finks) seemed that very user-friendly, so might as well go with the pure install.

Note: In hindsight, I probably would have used the setup recommended by the Ruby section on About.com – it makes you install RVM (Ruby Version Manager) and Git but still it looks pretty easy.

What ended up happening was that things were a little bit trickier than I anticipated, and also because it is still so new, some stuff in Rails 3 wasn’t working exactly right, so it took roughly 4 hours for me and I’m still not 100% convinced I did it right. But anyway, here’s how it went:

Continue reading…

Why Learn Ruby on Rails?

Ruby on Rails is a web-oriented framework built on top of the scripting language Ruby. It’s specifically designed to help developers build web apps faster and more easily.

Hopefully I’ll update this page later on, but here is the bullet point version to why I’m choosing Rails over the many other ways I could learn how to develop web apps.

  • I love 37 signals (the creators of Rails)
  • Rails has a strong and growing community
  • Rails has a lot of off-the-shelf goodies
  • PHP (I’ve been told) can encourage sloppy/janky code-writing
  • I don’t really hear much about Django, the other big web framework
  • Rails powers Twitter! (and the fail whale isn’t because of Rails)
  • Rails 3.0 was just released (8-31-10) so I get a clean, powerful start
  • See quote below…’nuff said

Ruby on Rails is astounding. Using it is like watching a kung-fu movie, where a dozen bad-ass frameworks prepare to beat up the little newcomer only to be handed their asses in a variety of imaginative ways.”
-Nathan Torkington, O’Reilly Program Chair for OSCON (emphasis mine)

You can learn more about my adventures with Ruby on Rails here.

Why I Want to Learn How to Build Web Apps

I’ve been fascinated about building things on the web since the late 90′s. Remember Geocities? Yeah, I had a site there. I remember learning HTML for a back in middle school (late 90′s, early 2000′s) to build a webpage (no sites yet!) with animated construction gifs and guestbooks. I learned a bit of Java and Ti-83 BASIC in high school and some Python in college, but never got very into it because I had little interest writing really basic programs that weren’t useful.

I’ve watched the web develop, continued learning about HTML, and later CSS, and how to navigate my way around a WordPress installation. It seems like now with libraries like jQuery and symfony and web frameworks like Django, symfony (thanks smentek!) and Ruby on Rails, it is easier for people to build useful web apps without years of experience as a developer and/or thousands of hours of coding.

I do hope someday to found a web/tech startup and while I’ll never serve as CTO, I know understanding more about web development will be critical to our success. I also have a few ideas for web apps that I’d like to build. And to be honest? I’d love to gain some street cred as a geek. Hey – just being honest.

You can learn more about my adventures with Ruby on Rails here.