I enjoy life, and make stuff for people I care about :)

Have you ever setup a Rails production environment from scratch, by
hand? If you had, I share your pain every time when a new project
started.

The process is often repetitive. To me, it seems to be a waste to do it
manually every time. It also consumes time and attention. It would be
great if I could spend them on tasks that bring more values to clients.

To minimize such waste, I have written two Chef cookbooks to automate
the process:

In this example code, the controller object holds a strong reference to
doneButton object. But because doneButton onTouch: block is calling
self, now the button object holds a strong reference back to the controller
object.

When object A points strongly to object B, and B points strongly to A, a
retain cycle is created,
and both objects cannot be released from memory.

Because we are using __weak qualifier, doneButton onTouch: block
only has a weak reference to the controller object. Now, the controller
object can be released from memory when its reference count drops to 0.