4 out of 5 dentists recommend this site

if its not hard, you’re not learning

Still mostly reading Well Grounded Rubyist.  I also started tinkering around with Rails a little, though I’m definitely in over my head on that.

I’m in a place now where I want to build stuff, on my own, that isn’t just plain text on a screen.   I feel like I have a lot of knowledge, but not enough practice.  I feel like I could teach the Learn to Program book at this point, but still can’t figure out how to really put it all together.

Its interesting because I thought that this would be more like Legos than it is.  I would examine all the pieces.  Figure out what they do and how they interlock.  Look at a few other Lego structures and then I’d be all set.  Its more like a space shuttle.  I have studied all the parts and how they work.  I saw what a completed space shuttle looks like, but I’ll be damned if I know how to build one myself.

After I finish up with the Team Treehouse stuff (which is really great by the way) I’ll hit up Project Euler.  Varney keeps telling me to do it.  So I will just to shut him up.

weekend illness

There’s been a plague running rampant throughout my office and I think I finally contracted it.  That’s going to affect my ability and drive to study the ol’ Ruby book.  That’s unfortunate.

Any recommendations for something more easy on the brain that would still get me some value towards coding?  Perhaps a documentary or fun book?

my new favorite paragraph

“The class Class is an instance of itself; that is it’s a Class object.  And there’s more.  Remember the class Object?  Well, Object is a class – but classes are objects.  So, Object is an object.  And Class is a class.  And Object is a class and Class is an object.”

To be fair, in context, the paragraph is tongue-in-cheek.  Still no less dizzying.

some important Ruby stuff learned this weekend

The Well-Grounded Rubyist is such a great book.  The difference between it and other books is that it tells you the why, not just the what.

Thus far in my reading about objects I understood that they were just things that could store some value and you could perform various actions (methods) with them that you had to memorize from books and docs.  That was the extent of what I had gathered from my first couple books and interactive lessons.

In WGR, he describes it somewhat more poetically.  I’m very loosely paraphrasing, but what it boiled down to was that you could relate objects and methods in Ruby to objects and actions in real life.  You can build house =  What was stored in that house?  You could create a dog = and teach it how to behave.  You could turn on the radio = and give it something to say.

An object can be as complex or simple as you need it to be.  It can do anything that a computer can do, including emulate a lot of real life actions or values as long as you’re willing and capable of putting in the work to make it so.

Yes, this is elementary.  I’ve built arrays and cases.  I’m gone through all the basic flow control structures.  I’m built a handful of tiny programs.  But I still didn’t appreciate the conceptual power of objects until just this weekend.

And as GI Joe says, “Knowing all the crazy shit you can do with objects is half the battle, jerk.”

what I have learned so far

Based on the couple recommendations from the development lead and a pile of suggestions from my mentor, this is what I’ve accomplished so far:


Finished Learn to Program by Chris Pine

Installed Sinatra and got a “Hello World” local page up and running

Started RubyMonk only to find that its broken in a lot of spots  (its possible that its just my browser, but I don’t have time to figure that out)

I went through Man With Code’s Ruby videos

Started Learn Ruby the Hard Way by Zed A. Shaw

Started why’s Poignant Guide to Ruby

Purchased and started reading The Well-Grouded Rubyist

Purchased, but have not started Eloquent Ruby

Purchased, but have not started The Ruby Programming Language

Learn to Program was solid.  I don’t regret spending time with that.  With Sinatra, I probably got ahead of myself.  I was only able to put up the “Hello World” page because I followed some instructions, not because I understood what I was doing.  (Much like my Commodore 64 days.)  I will come back to this, though, once I can start actually building with Ruby.

RubyMonk, it took me awhile to realize it was the website that was broken and not me.  I would say I wasted a lot of emotional energy and some time here.  I was getting very frustrated because I was certain that I was entering the right answer.  And then I would out to Stack Overflow and confirm it and still nothing.  It made me feel like a crazy person.  Man With Code’s videos were fine.  Most of it was just reinforcement of things I already knew, but perhaps needed to think about again.

I think I started why’s Poignant Guide to Ruby too late.  This should have been the first thing I did after TryRuby.  I would have appreciated the humor and tangents more.  Now I feel like I just want to get to the meat and potatoes and I have to skip multiple paragraphs of entertainment.  Don’t get me wrong.  From the little I read this, I got a great impression of the material.  I just think I shouldn’t have waited so long to get into it.

Learn Ruby the Hard Way lives up to its name.  I’m not sure what the actual print book is like, but all I am able to find is the exercises online.  (Maybe that’s what the book is too?)  The book really does drop you off the deep end pretty quickly.  It seems Zed wants you to go out and do the research on what you don’t know.  And I do, but in a couple spots I find myself not even knowing how to search for the proper answer.  I have made it a personal goal to beat this, though.  I will finish this one if it drives me to alcoholism.

My favorite book so far as been the Well-Grounded Rubyist.  David A. Black lays out stuff exactly how I want to learn it.  Its straightforward and slightly dense. The book hasn’t completely lost me yet, which happened a couple times with some of the other things listed here.  While writing this, I’m getting excited about thinking and opening that book back up.  Kind of gross, I know.

I’m spending at least one hour a day and 14 hours a week minimum on this until I reach my goal.  For now my focus is purely Ruby.  Then Sinatra.  Then Rails.  Once I have all those down, I’ll see if there are any other gems I should know to get up to speed with what the dev team is doing.  I also need to learn Vim and some of the back end technologies we use at my company.  From there I’d like to strengthen my math skills, learn Python and Django, Javascript and Node.js, a little HTML and CSS and start learning about architecture.  It would probably benefit me to learn C, C++ or Java as well, but that’s a couple years away maybe.

I have not been this excited about my future, my career and about learning something ever.  I keep imagining myself as the generalist web developer.  Just walking in, building apps and solving problems.  Its going to be awesome.

how I got to this point

When I first started this, I didn’t even consider that my company would consider me for a junior developer position.  My initial thought was, “I’ll just learn a couple languages, build some stuff to show off my skills and get hired somewhere.”

I started by going back to Python.  This is my second time learning Python.  Some of it came back to me rather quickly, but for the most part it was not like riding a bike.  I was zooming through this for about 4 days when I started to reconsider my goals.  I know I said I wanted to build things, but what things?  What kind of company did I want to work at?  I started to get worried that I might end up as a junior developer at a company that builds user interfaces for blood pressure machines (no offense).  What I really wanted to do was work for a company that was disruptive, using the best technology and was staffed by smart developers I could learn from.

It occurred to me that I already worked at that company.

The next day I approached the development lead.  I asked, “If I get myself up to standard, do you think you would be willing to take me on as a junior developer in the next 18 months?”  He answered affirmatively and offered some advice to get started.  He told me to stop learning Python and just go straight to Ruby.  From there I should get a handle on Sinatra and then finally Rails, which is the framework we use in the office.

That same day, I approached another developer to see if he’d be willing to mentor me.  I wanted someone that I could ask programming questions of when I got stuck or perhaps advice on what book/subject I should be studying next.  That developer also agreed.

So here we are.  I’ve been studying Ruby for the last 12 days.


For two weeks now I’ve been teaching myself computer programming.  I decided to start a journal that would document my thoughts and methods along the way.  It will serve as a record of my struggles, successes and possibly be a source of humor in two years.

Why do I want to be a developer?

My father got me a Commodore 64 when I was very young.  At first I just played the games we had with it.  But those got boring after a short while.  So I started typing into the terminal.  First I typed random stuff.  It was fun for awhile to get this computer to respond to me with an error. I can’t remember what triggered the prompt or what it said, but at some point the computer let me know there was a command along the lines of ‘help’ that would give me a directory of things to do.

I started going through those commands and seeing what I could make the computer do.  I couldn’t get some of the commands to work, so I got out the manual.  That’s the first time I saw just pages and pages of BASIC code.

Entering my first program took forever.  I had to painstakingly copy each letter exactly, especially since I was too young to understand what exactly I was building with this code.  I spent most of a Saturday morning and part of the afternoon typing in what seemed to me some secret language.

Once finished, I hit the run key and lo and behold, an blip, shaped kind of like a football soared across the screen.  Bouncing off the edges of the monitor.  Like a game of Pong, but without the paddles or the horizontal voids.

It would be a few years before I programmed again.  But eventually I picked up QBASIC and programmed a small text adventure game like Zork.  I created a Risk-like game (though with no graphics, which made it hard to play).  And I created a cataloging system for my comic book collection.

Speeding things up a bit, I have continued to play with programming on and off since.  I was a computer science major (twice!), but never completed college.  Every time I have felt insecure about my future or even myself, I would find myself going back to learn Python.  I want to be able to create.  Right now, I sell.  So I create revenue in a sense.  But I want something more tangible.  Something more future proof and technical.

There’s also ways I think and go through the world that apply themselves to programming.  I found that I like gaming systems.  Finding patterns, remixing them and applying them to create more favorable results.  This way of thinking has found its way into my sales style, in video games, chess, my finances, etc.  I think that its a great complementary skill to development.  There’s also my appreciation of efficiency.  My appreciation of technical elegance.  My love of research and finding out answers to questions.

Though I’ve been in sales for the last 10+ years, I find myself in a fortunate situation where I’m surrounded by really smart developers and one of the top tech companies (in my opinion).  I’m also fortunate that this company is open minded about people trying new positions (assuming their qualified).

My goal is to get to the point where I can transition to become a junior developer at our company.  Ideally as soon as possible, by worst case scenario, by the end of 2013.