Copy first proc example.
Copy 2nd proc example.
Demonstrate sending procs into methods.

You can create a method to do something before and after a block of
code is run. The proc is sent to the method as a parameter, and called
between the before and after code.
Demonstrate method logic in calling procs.

Methods can be written to determine if/when a proc is called, and how
many times.
Pass a parameter and a proc into a method.

The same method can do very different things depending on the proc and
variables passed into it.
Use a method to build a new proc.

Pass in two procs, and have the method build a new proc, using the
output from proc1 as the input for proc2.
Demonstrate passing blocks into methods.

I like his point that you don't have to remember how these methods work
once you write them. In fact, that's *why* we write methods like this—so
we never have to think about how they work again. We just use them.
Time a section of code.

Writing a simple method, you can then use that method easily, anywhere,
to test the amount of time a section of code takes to run.
Turn profiling on or off with one change.
Complete grandfater clock exercises.

I have no idea how he came up with that hours algorithm. I mean
obviously it works and is beautifully refactored. I'm just not confident
I could come up with something like that on my own. I guess you just
learn more and more tricks, and eventually start coming up with your
own.
Create a basic program logger.
Complete 'better program logger' exercise.
Merge branch 'chap14' into develop