Exercises from weeks 1 and 2 and first homework

These are the in class exercises and first homework.
So awesome. We haven't even covered `each` yet, but this is absolutely the best way to do it. What I was looking for was `0.upto(blog_posts.length - 1)` (which is far more confusing than simply just iterating over the collection with `each` like you're doing here. It's just hard to test looping with what we've learned so far.

A quick sidenote. Curly braces have two meanings in Ruby. First, is to define a hash, e.g. `sarah = {ruby_level: 'rainbow'}`, and second is to represent a block (which you're doing here). Blocks can be thought of as a kind of argument that you're passing to the previous method you're calling, but rather than passing data, you're passing code around that can later be executed (in Rails, the code gets executed [here](https://github.com/rails/rails/blob/8cae31c800f281212c9c5b5ac0ea2be98c4aa611/activesupport/lib/active_support/ordered_hash.rb#L162). As you know, using a curly brace here works, but we try to only use curly braces (when representing blocks) when the entire block can be condensed into one line, for example:

```ruby
blog_posts.each { |post| html << title_to_html(post[:title]) }
```

When we're working with blocks that span multiple lines, `do` and `end` are [preferred](https://github.com/bbatsov/ruby-style-guide#single-line-blocks).