Showing posts with label agile. Show all posts
Showing posts with label agile. Show all posts

Saturday, February 20, 2010

The... "Recipe"...

I have applied some interesting tags to this post, so I should define exactly what I am talking about here, I don't want there to be any confusion:

The point of this post is to provide my AMAZING recipe for red beans and rice.

However, I am hoping to kickstart some discussion about programming processes. For me this is an intersection of things, we are at a nexus so to speak, between how my brainz applies thing I learn to reality. Welcome to my worldview. First things first, here's the recipe:

Red Beans and Rice
--GB Hoyt style--

(feeds 8, maybe more)
ingredients:
  • 2lbs red beans, dried
  • 1 cup all purpose flour
  • 1 cup olive oil
  • 2 32oz boxes of chicken broth
  • 1 head of celery
  • 1 green bell pepper
  • 1 red onion
  • 1 bunch green onions.
  • 2 tsp rubbed sage
  • 2 tsp white pepper
  • 2 tsp black pepper
  • 4 cloves of garlic
  • 3-6 bay leaves
  • garlic salt (to taste)
  • Tiger Sauce brand hot sauce
  • Sausage, something with flavor, traditionally, andouille



NOTE:
To make really good red beans and rice, that will feed about eight adults all the beans they want, you need a two pound bag of dried beans. That is important. Early iterations containing canned beans were judged to be definitely inferior to later iterations containing more labor intensive dried beans.

30 hours prior to serving time: in a large bowl, start soaking the beans, cover them with about 2 inches of water.
Right before bedtime: Drain and refill bean water.
Right after waking up: Drain and refill bean water.
The previous steps will help eliminate the 'aftereffects' of eating beans, but it's not fool proof, I understand the Amish let their legumes sprout for the same reason before cooking, I haven't tried that yet.

About five hours prior to serving time:
Make a roux:
in a black skillet, or pot you will cook beans in, heat the olive oil to about the temperature you would cook hotcakes at.
combine flour with black pepper, white pepper, and sage. Slowly add the flour mix to the hot oil, stirring often, try to evenly add it across the bottom of the pan. There should be enough flour to make the mixture thick, but not gloppy. It's an art, making roux. Let the flour darken until it's a dark brick color. you don't want to scorch the roux, so cook it slow, only turning the heat up if you have to.
If your Red beans are to be cooked in a different pot, you can go ahead and start warming up the chicken broth, adding the bay leaves, garlic, and a little more sage. When the roux is brown enough, add it to the broth, stir well, turn the heat up and bring to a rolling boil. If you are cooking the beans in the same pot as you make the roux (this is ideal, dutch oven to be 'authentic'), add your broth and spices to the roux. When the broth/roux mix starts to boil, drainthe beans and add them to the pot. boil on high for about 15 minutes, then turn heat down to a low boil. It should be about 4-5 hours till serving time. Two hours before serving time, dice the onion and bell pepper, and slice the celery to the mix, stirring each into the mix. then slice and add your sausage, let cook for about two hours. If you add the celery, bell pepper, onion, and sausage too soon, it will break down into flavourless goo, too early, and it won't marry. I find that dicing the onion and bell pepper, and leaving the celery in bigger chunks marries all three flavors, and adds great texture. Cook 4 cups of dry rice about half an hour before serving time. I also make cornbread to go with this meal. Shortly before serving, chop the green onion, and let each person add to taste to their dish. This is a functional garnish. Not only does the onion look pretty on top of the dish, but it is what really sets the flavor off.
enjoy!

Now, what does this have to do with agile development? Namely, this recipe was developed using Behavior Driven Development (BDD)
It contained "Domain Driven Design" where the domain is the collection of people eating at my house on Friday nites that I am off.
It contains "Acceptance test driven planning" because if the Domain disapproves of the flavor, it must be modified!
It also contains "Test driven development" because certain assumptions were made like "The red beans and rice should be slightly pasty when served", early iterations were too watery, then too gooey, finally, the magic ingredient (the roux) emerged when an older recipe was perused. I know you don't see but what one recipe here, so this is where I pose a question to the group, What's the next test? Where goes the next iteration? Should I codify the sausage, and say "always use this sausage", should I detail out the roux? The right roux has definitely played the biggest part of making this dish right. That, and waiting till the end to add the green onion.

l8rz!

Thursday, October 1, 2009

Ruby Foo and the Art of Application Development

Hmmmm,
I'm thinking about what it takes to write really good programs. I'm thinking about this a lot lately, because I want to earn a living writing really good, useful, soul searching programs. So let's talk about cucumber. I discovered cucumber about 10 months ago, right when it was starting to become usable. The team I was working with used cucumber for writing stories in their development cycle. The whole BDD/TDD development process was new (and still is new) to me at the time, but I was having fun, and it seemed to me that this cucumber thing was great fun. I had no idea what it really did.

I suppose you should be making fun of me, it's not after all, very reasonable to use a tool you understand nothing about, but I am a jump then look kinda guy when it comes to some things, and learning is one of them (sometimes). I did what any reasonable person does after discovering something shiny and nifty, I bought a book about it.

Actually, what I bought was a promise for a book, at a special discount. The simply named The Rspec Book is a great lil' book. It's not released yet, but it's in 'beta' mode. That means I get regular updates when Dave, or Aslak, or whoever updates the book. I got it round about version 4, it's on version 10 and set to release in it's final version in December of this year. I'll get a hard copy of the book once it's officially released too. Personally, I think that this is a great way to do publishing. Since this book was first announced/released, there have been several changes to the methodology of running cucumber and rspec. There have been minor syntax changes, new habits for namespacing, etc. The book remains current. I mean, it is seriously Agile (must be Italian)! It's easy to read if you are a n00b or if you are a wannabe (like me), and the support the guys give with the Rspec and Cucumber groups online is outstanding.

The book takes you on a journey through the methodology of Acceptance test driven planning, Domain Driven Design, and Test Driven Development. This triad forms the basis for Behavior Driven Development (BDD), a system by which good software 'emerges' from the process by writing the code that answers the questions users ask.

I'll leave you with that for now.
I :heart: you guys.

G. Brandon Hoyt