Nathen Harvey

a blog

MongoDB Community Awards

During this year’s MongoSV, 10gen presented awards to peer-nominated community members for their contributions to the MongoDB project.

There were 3 different categories:

  1. Innovative Application Award - recognizes a company or individual who has built an innovative application using MongoDB.
  2. Core Contributor Award - recognizes a community member for significant contribution to the codebase of the MongoDB core server, language drivers, or tools.
  3. Community Champion Award - recognizes an individual for their efforts evangelizing and growing the MongoDB community.

This is the first year that 10gen has organized these awards. I think they’re a great way to recognize the contributions made by a few members of the community. I hope a significant portion of people in the community took the time to nominate or vote for another individual. I suspect more community members will participate and 10gen will do a more to advertise the program in years to come.


I was selected to share some of my experience with MongoDB at MongoSV.

“MongoSV is an annual one-day conference in Silicon Valley dedicated to the open source, non-relational database MongoDB. The comprehensive agenda includes 50+ sessions covering topics for both the novice and experienced user, with presentations from 10gen engineers as well as MongoDB users.”

Impressions and Observations

MongoSV I’ve been to a few other similar MongoDB events in NYC and DC but this was the largest by far. There were over 1,000 attendees and 5 tracks plus whiteboard and birds of a feather sessions.

Schema free != Design free

As freeing as a document store is, there’s still work to be done in designing how you’ll store and retrieve your data. It’s super-easy to get up and running without giving this much thought but you will need to design your documents eventually. There were at least 3 sessions about schema design during MongoSV.

Aggregation Framework

The new aggregation framework is great, highly anticipated, and much needed. During the Keynote, Eliot Horowitz demonstrated an application built on MonogDB that used the Twitter API to capture tweets related to the day’s events. The demo site ran throughout the day and was used in a contest to see who tweeted the most about the conference and who was mentioned most. The source code for the app was subsequently made available on github. Check out Chris Westin’s presentation on MongoDB’s New Aggregation Framework.

MongoDB Masters

Shortly before MongoSV 2011, 10gen announced the MongoDB Masters Program.

“The MongoDB Masters program is designed to recognize the achievements of leaders in the community and enable the exchange of knowledge between and among 10gen and the community.”

I am honored to be counted among such a great group of MongoDB enthusiasts. I was selected to join the Masters primarily because of my work with the Washington DC MongoDB User Group which I’ve been helping to organize for almost a year. The group has monthly meetings at CustomInk’s headquarters in Tysons, VA.

The day before MongoSV, most of the MongoDB Masters met for the inaugural Masters Summit. The Masters Summit was run like an “un-conference”; the members decided on topics and broke into discussion groups to cover each topic. There were also a number of lightning talks.

We had break-out groups on 16 different topics including

  • Operations, hosting, and production architecture
  • Drivers
  • MongoDB and Windows
  • Reporting

Agenda Tips for a Tech User Group

In my previous post, I gave some ideas about how to run a successful user group meeting. In this post, I’ll focus on the actual meeting format we typically use for our Washington DC MongoDB Users Group. You may find that this format works well for any technical user group.

We’ve experimented with a couple of different formats but I think we’ve settled into something that generally works for us. Some of these don’t work with a meeting that’s larger than 20 people; adjust accordingly.

Tips for Hosting a Tech User Group

In January of 2011, I started hosting a monthly MongoDB meetup. My employer, CustomInk, was looking for ways to become better known in the local DC technology market. We were also just getting started with our initial production deployment of MonogoDB. Having engineers from the area come to our office, get to know CustomInk, and share their experiences with using MongoDB was a great opportunity!

Before I get much further, I’d like to give a hat tip to those user groups and podcasts that I learned from and stole ideas from. Namely, DC RUG, B’more on Rails group, and the Ruby Rogues podcast.

Having a good space for hosting these types of meetings is important. CustomInk has two different spaces that we can utilize. The Parlour is a very cozy sitting room that includes a fireplace. It’s suitable for a groups of up to 30 people. The Cafe is quite a bit larger, we can host up to 80 people there. We also have a very nice outdoor patio which could hold 80 people but planning weather-dependent meetings doesn’t feel like the right way to go. The patio is connected to both the Parlour and the Cafe so networking at the beginning of the meeting sometimes happens there.

Our success hosting the MongoDB User Group has led to us hosting a number of other meetups. We are the regular host for the DevOps DC meetup and have hosted events for Android application development, R user group, JavaScript user group, and a Twitter API meetup.

The MongoDB group now includes over 250 members and the DevOps DC group is over 100. Based on our experience, I believe there are a number of things that you can do to grow and run a successful meetup group.

Brine Your Turkey!

It’s Thanksgiving week. That means it’s time to start prepping your turkey.

In my opinion there are three very important things required for a terrific turkey:

  1. Start with a fresh turkey, I get mine from Maple Lawn Farms.
  2. Brine the turkey (for 12-24 hours)
  3. Once it’s in the oven, leave it alone!

I always prepare mine in an apple cider brine:

  • 8 cups apple cider
  • 2/3 cup kosher salt
  • 2/3 cup sugar
  • 1 tablespoon black peppercorns, coarsely crushed
  • 1 tablespoon whole allspice, coarsely crushed
  • 8 (1/8-inch-thick) slices peeled fresh ginger
  • 6 whole cloves
  • 2 bay leaves
  • 1 (12-pound) fresh or frozen turkey, thawed
  • 2 oranges, quartered
  • 6 cups ice

Of course, this is for a 12-pound turkey, adjust for the size of your turkey.

To prepare brine

  • combine first 8 ingredients in a large saucepan; bring to a boil.
  • Cook 5 minutes or until sugar and salt dissolve.
  • Cool completely.

To prepare the turkey

  • Remove giblets and neck from turkey.
  • Rinse turkey with cold water; pat dry.
  • Trim excess fat.
  • Stuff body cavity with orange quarters.

You’ll need something to to store the turkey in while it brines. Brine bags are relatively easy to find. They can be a bit messy to deal with so you might just use a large stockpot or a bucket. The important things are that the turkey is fully submersed in the brine and that you keep the whole thing cold throughout the process.

Place the turkey in the brine bag or other vessel of your choice and cover with the liquid. Place all of that into a cooler and fill with ice or place it into your refrigerator, if you have the room. Leave the turkey in the brine for 12-24 hours, turning occasionally.

Cooking the turkey

  • Remove the turkey from the brine
  • Discard the brine and orange quarters
  • Rinse the turkey and pat it dry

Cook the turkey as you normally would. I like to start it breast side down for the first 30 minutes at a higher temperature (475º - 500º) then flip it over and reduce the heat to 350º for the remainder. If possible, use a leave-in thermometer so that you don’t have to continually open the oven to check the temperature of the turkey.

Once the turkey is done cooking, be sure to let it rest at least 20 minutes before carving.

I’m Speaking at MongoSV

MongoSV is an annual one-day conference in Silicon Valley dedicated to the open source, non-relational database MongoDB. The comprehensive agenda includes 50+ sessions covering topics for both the novice and experienced user, with presentations from 10gen engineers as well as MongoDB users.

I’m one of the MongoDB users who will be speaking at the conference. The title of my talk is ”MongoDB at CustomInk - Adoption, Operations, and Community

In this talk I’ll detail some of the reasons we decided to go with MongoDB, the challenges we faced bringing it into the organization, how we’re using it in production today, lessons learned, and some of our future plans. The talk will also describe some of the operational considerations for putting MongoDB into production: how do we deploy, operate, and monitor MongoDB. During this talk I’ll also describe CustomInk’s involvement in the MongoDB community.

Since January, CustomInk has been hosting the Washington DC MongoDB Users Group. I’ll share some of my experience with, tips for, and lessons learned growing a monthly user group.

The talk will be a refreshed and expanded version of the presentation I gave at MongoDC back in June. You can find slides and reviews from MongoDC on SpeakerRate.

10gen does a great job with these conferences. They’re always packed full of great information and you’ll get to meets lots of people from the community. MongoSV is the largest of these one-day conferences that 10gen organizes. This year, the conference also includes the MongoDB Community Awards where you can nominate someone in three different categories:

  • Innovative Application
  • Community Champion
  • Contributor

If you’re in Santa Clara on December 9th, or need a reason to be, be sure to stop by MongoSV. I have a discount code I can share with you to lower the cost of admission significantly, just let me know if you’re interested.

Why We Chose Chef Over Puppet at CustomInk

Not unlike most technology choices, the choice of which configuration management tool to use for managing your infrastructure as code is sure to spark debate among opinionated technologists. There are certainly a number of choices available all of which have their own strengths and weaknesses. There are a number of things to consider as you select a tool.

Before we get into any of the specifics, I want to make it clear that the “right” answer to this question is a simple, but emphatic “yes!” Yes, you should be using a tool that allows you to manage your infrastructure as code. That tool should NOT be a server.txt file that you keep on the machine that documents the installation, set-up, and configuration changes you’ve made. Moving that text to somewhere other than the local server is a step in the right direction but isn’t really the answer. Moving the server.txt file to your corporate wiki is going to suck just as bad.

I think Mark Imbriaco summed it up quite nicely in 140 characters or less:

“Pro-tip: Nobody gives a shit about your opinion of Chef vs. Puppet. Seriously. Just fucking stop it already. #usewhatworksforyou”

As you consider which tool is right for you, you’ll need to consider a number of questions. I think of these as the WIIFs, or “what’s in it for…” questions:

Vagrant and VBoxManage Import

I’ve recently started using Vagrant for building local VMs with VirtualBox. It’s a great way to test out my Chef cookbooks.

I recently ran into an error after a system crash. When I tried to run:

vagrant up

the following error was reported:

The VM import failed! Try running `VBoxManage import` on the box file manually
for more verbose error output.

To successfully run VBoxManage import, you first need to locate the .ovf file used by Vagrant when building your VM. Typically, you’ll find your box definitions in the ~/.vagrant/boxes directory. So, I tried to run the command specified from there:

cd ~/.vagrant/boxes/base

VBoxManage import box.ovf

ERROR: Cannot register the hard disk
'~/.vagrant/boxes/base/vagrant-centos64-disk.vmdk' with UUID
{5d2426bf-f04e-40a0-bf36-a27c8d45f920} because a hard disk
'~/.vagrant/boxes/base/vagrant-centos64-disk.vmdk' with UUID
{5d2426bf-f04e-40a0-bf36-a27c8d45f920} already exists in the media registry

To get around this, I simply removed ~/Library/VirtualBox/VirtualBox.xml. I was then able to vagrant up and continue on with my Chef cookbook.

Citizen Cope Concert

Citizen Cope came to the Rams Head On Stage in Annapolis for 3 sold out solo shows. I was at the first one and was able to make some fairly good recordings.

The playlist below includes the entire Cope set. Have a listen and let me know what you think.

This concert is now also available on Live Music Archive.

  1. Every Waking Moment
  2. Salvation
  3. More Than It Seems
  4. Bullet And A Target
  5. Out on the Weekend (Neil Young cover)
  6. Holdin’ On
  7. All Dressed Up
  8. Lifeline
  9. Healing Hands
  10. Keep Askin’
  11. Pablo Picasso
  12. D’Artagnan’s Theme
  13. 200,000 (in counterfeit 50 dollar bills)
  14. If There’s Love
  15. Comin’ Back
  16. One Lovely Day
  17. Son’s Gonna Rise
  18. Sideways
  19. Hurricane Waters
  20. Hands of the Saints
  21. My Way Home
  22. Left For Dead