Homebrew Fundamentals

Spend enough time developing software on Mac OS X, and you will eventually need to install libraries that were written for Unix, but not specifically for OS X. Fortunately we have Homebrew, which makes it easier to install Unix libraries on the Mac.

Why Homebrew?

Before installing any new software, it is helpful to have a clear view of why we need it.

Homebrew is a package manager. It differs from earlier package managers like Fink and MacPorts because it is written in Ruby and based on Git. The Ruby/Git foundation means that developers from around the planet can easily contribute to Homebrew’s growth.

Before package managers, developers who needed a particular library would have to:

  • Manually download source code for the library.
  • Manually compile using gcc or another compiler.
  • Resolve dependencies manually.

Manually, manually, manually… The old way was long and error-prone. Max Howell created Homebrew to download, compile, and resolve dependencies automatically. Now developers can focus more attention on solving problems that are directly related to their work.

Continue reading →

Installing Rubinius Using RVM

Rubinius is an implementation of the Ruby language designed for concurrency. The lead developer of Rubinius, Brian Shirai, will present Rubinius at ChicagoRuby on March 4, 2014. ChicagoRuby will follow-up with a Rubinius-themed hack night on March 12th. Details.

To prepare for the Rubinius events, some people may choose to install Rubinius locally. RVM makes the process smooth.

Continue reading →

Exploring Controversial Coding Topics at 8th Light

8th Light recently hosted a panel discussion on Controversial Coding Topics. I was honored to share the panel with two technology leaders whom I admire: Mark Rickmeier of Table XI and Corey Haines of Wavetable. Rachel Feigenbaum of 8th Light organized the event.

Continue reading →

An Environment of Respect, 2nd Iteration

Thank you to everyone who offered feedback on An Environment of Respect, which included an early draft of the WindyCityRails Code of Conduct.

The frank and earnest exchange of ideas was educational. Some of the feedback was positive, on the order of “we’re all colleagues, we treat each other with respect, that’s good.”

However, I paid special attention to the negative feedback because it surprised me. Surprise happens when I face something that I do not understand. When I encounter something that I do not understand, there’s an opportunity for learning.

So I did what I always do when I need to learn more. I spoke with people who know more than me.

Continue reading →

An Environment of Respect

Here is an early draft of the WindyCityRails Code of Conduct:

WindyCityRails strives to provide a healthy, harassment-free conference experience for all attendees. Our Code of Conduct, which has been practiced by members of our community for years, is as follows: Treat everyone at the conference as you would want yourself, a family member, or an esteemed colleague to be treated. Our community is stronger when every member contributes to the safety and learning of the other members. We are colleagues, and we treat each other with respect.

There may be some wordsmithing and typo-correction this week, but the final version will essentially read as it appears above. Key objectives achieved:

  • Simplicity. The point is made with minimal words.
  • Inclusiveness. Everybody who wants to learn and engage is included.
  • Respect. Everybody is treated with respect. No threats are made.

You have already read the most important part of this post. The rest tells how the code came to be.

Continue reading →