Something simple

Published by:

Late spring means strawberries in North Alabama. Strawberries require pound cake. They just do.

Good thing is that pound cake is one of simplest things you can bake. I’ve seen a number of recipes similar to this one spread throughout the Internet. More importantly to me is that this is very similar to recipe that my Mom uses for her pound cake.

Basic Pound Cake


1 1/3 c. butter, softened
2 1/2 c. sugar
6 eggs
3 c. all-purpose flour
1/2 c. buttermilk
1 teaspoon vanilla extract


Preheat oven to 325dF. Beat butter until creamy. Add sugar in portions, beating at medium until fluffy. Add eggs, 1 at a time, making certain that each egg is blended adding the next egg.

Add flour and buttermilk, beginning and ending with flour, beating at low speed until just blended. Stir in vanilla.

Pour into greased and floured tube pan. Bake for between 65 to 70 minutes. Test for doneness if toothpick comes out clean. Cool in pan for 10 to 15 minutes, remove from pan, and allow to cool for at least another 20 minutes before serving.


Spring. Something simple for the season

Published by:

Today’s Easter Sunday. Got me thinking back to my time working in Israel and remembered a chicken dish that I really liked at one of the restaurants in Tel Aviv. After some digging in my Israeli and Greek cookbooks, I’ve pulled together something I think might be close:

Braised Chicken with Lemon, Orange, Garlic, and Olives

4 bone-in, skin-on chicken thighs
Salt and black pepper, to taste
3 Tbs. olive oil
6 garlic closes
2 yellow onions, thinly sliced
1 lemon, juiced, zested, peeled, and thinly sliced
Juice from 2 tangerines
1 tbs. dried basil
1 tsb. oregano
1 cup mixed, pitted olives

Preheat oven to 375dF. Dry chicken and season with salt and pepper. In Dutch oven, heat olive oil over medium heat. Sear chicken until golden brown. Add garlic and zest of lemon. Cook until fragrant. Remove chicken and garlic from the pan and reserve.

Add onions to pan and cook until wilted. Add lemon slices and cook for 2-3 minutes. Add lemon and tangerine juice, basil, and oregano and deglaze pan. Add lemon slices and olives and stir to combine. Nestle thighs skin skin side up onto onion mixture. Cover and bake for 40 to 60 minutes.


The pie whose name we cannot say on the Internet

Published by:

One of the student organizations at work put on a bake sale around campus this week. Someone had baked a Chocolate Bourbon Pecan Pie… some of you may know of it as being a pie named after an event of the sport of kings held in the great Commonwealth of Kentucky. However, I have to be rather evasive and not use the actual name as the original developers of the recipe are painfully protective of their trademark.

No matter what, the pie itself was quite tasty; tasty enough that I went back through my files and dug out the recipe I had picked up from some Kentucky friends of mine. Their recipe is very similar to one I saw recently in Southern Living. Both recipes are very similar to the classic pecan pie recipe with the only real difference being the inclusion of chocolate when you put the pecans into the pie.

Chocolate Bourbon Pie

1/2 (15-ounce) package refrigerated piecrusts
1 1/2 cups chopped pecans
1 cup (6 ounces) semisweet chocolate morsels
1 cup dark corn syrup
1/2 cup granulated sugar 
1/2 cup firmly packed brown sugar 
1/4 cup bourbon or water
4 large eggs 
1/4 cup butter 
2 teaspoons cornmeal
2 teaspoons vanilla extract
1/2 teaspoon salt 
  • Fit piecrust into a 9-inch deep-dish pie plate according to package directions; fold edges under, and crimp.
  • Sprinkle pecans and chocolate evenly onto bottom of piecrust; set aside.
  • Combine corn syrup and next 3 ingredients in a large saucepan, and bring to a boil over medium heat. Cook, stirring constantly, 3 minutes. Remove from heat.
  • Whisk together eggs and next 4 ingredients. Gradually whisk about one-fourth hot mixture into egg mixture; add to remaining hot mixture, whisking constantly. Pour filling into prepared piecrust.

  • Bake at 325° for 55 minutes or until set; cool on wire rack.

Jan 1st: just how much of a milestone is it?

Published by:

Thoughts on the passing of the old year and starting of the new year.

It’s January 1st, 2015: New Year’s Day 2015 C.E. The start of a new year if you follow the Gregorian calendar. A time of renewal and starting fresh.


It’s not really a day I use as a milestone. Other events have more significance in my life. From a work standpoint, it’s the Graduation ceremony in the Summer term that marks the passing of another academic year. In my personal life, it’s always been Homecoming events at Sewanee (or, as we called it in my more callow and younger days: “Fall Party Weekend”) that have marked off another year since Graduation forced my departure from Percy’s “Arcadia”.

So, while today may notch another click in the years component in the odometer, it’s not much more beyond that for me.


Learning Ruby… going about learning a new programming language

Published by:

I teach computer science at a small state college to pay the bills. One course that I regularly teach is “Objected-Oriented Programming and Design”. Our program is very C++ focused and this course is the class where we pound the more advanced aspects of C++ into our students and try to give them a flavor of other ways of doing OOP by introducing them to other object-oriented languages.

So… what other languages? In the past, I’ve taught the course by talking advanced C++, hitting Java pretty heavy, and doing a quick overview of Smalltalk to show students the “pure object” way of thinking. Teaching Smalltalk has been problematic… that language is so different from anything most of my students have seen that they go into vapor lock. Most of these folks are community college graduates looking to complete their four-year degrees (more on that in a future post) and haven’t had the deep dive background that you get in other programs. This has meant that I’ve had to go looking for a language that I can use to demonstrate the “pure object” idea without causing heads to go spinning out in the classroom.

That leads us to Ruby. I like the way that Dave Thomas described the language in one of his books:

Take a true object-oriented language, such as Smalltalk. Drop the unfamiliar syntax and move to more conventional, file-based source code. Now add in a good measure of the flexibility and convenience of languages such as Python and Perl.

So it appears that it will meet the needs of my course. However, it’s not a language that I’ve ever used for production development. I like to develop some ninja-level skills with a language before I have to try to teach it to other people.

So, oh Noble Readers, I intend to subject you to a series of posts that describe my experiences on learning Ruby. These posts will be the basis of my lecture materials for my class and will hopefully give you a feel about how someone like myself who has had the “fortune” of having learn many different programming language over time learns a new one.


Tofu? You eat that stuff?

Published by:

A few friends of mine have been talking about ways to cook tofu. Being the “over-educated hillbilly” that I am, that compressed soy curd called tofu isn’t something that you would expect to see in my pantry. However, having worked for a number of years with folks from Japan and China + a few years of graduate school with people who regularly eat this stuff, I’ve tried fixing it a few different ways.

One recipe that I really like is a variation of one found in Mark Bittman’s How to Cook Everything cookbook called “Braised Tofu with Eggplant and Shitakes”:

Braised Tofu with Eggplant and Shiitake Mushrooms

From Mark Bittman’s How to Cook Everything

1 lb tofu
1/4 cup peanut oil or corn oil
1 c. shiitake mushrooms (soaked and drained)
Salt & pepper, to taste
1 TB garlic, minced
1 TB ginger, minced
1.5 lbs eggplant
1 TB siracha chille sauce
0.5 c. water
2 TB soy sauce
1 TB sesame oil
1 TB toasted sesame seeds
2 TB chopped green onions
  • Drain tofu and cut in half lengthwise. Place in-between four sheets of paper towels and then weight down the tofu (no more than 2 lbs weight). Let set for a minimum of 30 minutes but as long as possible.
  • Trim eggplant, cut into cubes and place in colander or strainers. Sprinkle liberally with salt and let eggplant drain for 30 minutes. Rinse and then pat dry.
  • Saute shiitakes w/ half of oil in deep skillet or wok w/ salt and peper until mushrooms are crisp (about 5 to 10 minutes). Remove to plate.
  • Add remaining oil and then sauté garlic and ginger for about a minute. Then add eggplant and sauté for until it browns. Add chile sauce and water and cook until eggplant is tender; add more water if needed.
  • Add tofu and soy sauce. Cook until tofu is heated. Add reserved mushrooms and turn off heat. Add sesame oil. Garish w/ sesame seeds and chopped green onions

What’s nice about this recipe is that you can adjust it quite easily if you have meat eaters in the house by replacing the mushrooms with chicken or shrimp (or in addition to the shiitakes). Another variation is to replace both the eggplant and mushrooms with ground pork. Good, quick, and easy way to do something far better than any Chinese takeout you get buy.

Building a minimal Linux desktop

Published by:

Got some old computers around the house? I have that problem. For many moons people have been telling me to not toss those old computers, just install Linux on them. Well, that used to be good advice… But the popular Linux distributions like Ubuntu, Fedora, and OpenSuSE have evolved to keep up with current hardware. This is a really true when it comes to window managers like GNOME and KDE. The most recent versions of those packages overwhelm older machines.

So, what can you do? There are lightweight distributions like Puppy Linux and Damn Small Linux that are designed to work on less powerful machines. However, I have found these distributions to be either too limited, too buggy, or both. Some people suggest to just fall back onto using older versions of common distributions. That’s not a good solution for me given what I do for a living. So, I have to find a way to thin down the current version of one of the popular distributions.

The first question is which distribution? Almost every distribution supports minimal installs so what I suggest is to go as far upstream as possible. So that means work with Debian, Slackware, or RHEL/CENTOS. For today’s discussion, let’s use Debian. Go to the Debian web page and download the minimal net-install ISO from (or one of its mirrors).

Go through the standard steps of a net-install up to the point where the installer runs APT to get stuff from one of the mirrors. At this point, de-select the entry for the “Desktop Environment” packages. Complete the install and reboot.

You have the first useful minimal configuration: a base system that boots to a command-line prompt. If you’re building a server, you can stop here and start loading server things (which is a topic for another post).

As we’re building a minimal desktop machine, log-on as root and let’s do some magic with apt-get:

  • Install the xserver by issuing an “apt-get install xserver-xorg-core xorg”
  • You have two options here. You can install a full desktop environment like GNOME or KDE but why didn’t you use the standard install if that’s what you wanted? Rather install one of the lightweight desktop environments like LXDE: “apt-get install lxde”. This will install a base set of packages and themes as well.
  • The other option is to go light and just install a window manager plus application packages. This is best for really old machines or if you want to get the best performance with the least overhead.

    • Install a login manager. I prefer xdm for this purpose: “apt-get install xdm”
    • You will need a window manager. The most popular of the lightweight WMs is either Fluxbox, Openbox, FWM, or JWM. If you prefer something that feels like Windows, then go with JWM: “apt-get install jwm”
    • I’d suggest installing a web browser: “apt-get install iceweasel” will do the trick if you’re using Debian Lenny

Now reboot and you should have a nice, clean, minimal Linux install with X/Windows. Use the package manager to download other stuff you may need or want.

A New Year and A Familiar Subject

Published by:

New Year’s Day. The start of a new year… And for those of us in higher-education, the start of a new term. Like most people who teach, the first few weeks of January involve the frantic rush of getting ready to teach the Spring courses. If you’re lucky, they are courses that you have the material all configured and ready to dump back onto your employer’s learning management system. But it’s not that way for me right now as I find myself getting ready to teach Software Engineering again after some time away from the subject. So, the gap between Christmas and the start of classes is filled with reviewing the course texts, editing slide decks, and updating syllabi.

The past few days have been reading days. And I found an interesting article in the Janurary 2014 edition of the Communications of the ACM discussing estimation in agile processes <link>. Software developers who become vocal agile proponents tend to look askance at estimation; thinking that estimation of a software project has some connection to complete definition of the requirements for a project. What is missed in this case is that you have introduced a disconnect between business and development aspects of a project.

Agile planning focuses on workflow: how to decide what to do over the next few increments of time and how to generate the most value in that time. In the CACM article, the author points out that is very different from the business requirement for estimation: generate the information required to determine what resources are required for a project. This is key, as most software projects are capitalized projects and some sort of connection between budgetary cycles and development plans are required.

This is an important point that is missed in instruction in agile development. Textbook discussions of agile planning focus on the workflow aspects and tend not to emphasize the connection to budgetary cycles and estimation. It’s an important point to remember when introducing novice practitioners to use of these techniques.


Slow Cooker Chipotle Molasses Pork Ribs

Published by:

The weather’s turned cold… time to break out the crock pot. Here’s something I clipped out of a newspaper article a few years ago. Good stuff for this time of the year.
2 lbs. country-style pork ribs 
2 T. creole seasoning (I'm partial to Slap Yo' Mama) 
1 T. veg. oil 

Chipotle Molassses BBQ Sauce
1.5 c. ketchup 
1 can chipotle peppers in adobo sauce 
0.25 c. apple cider vinegar 
0.5 c. cajun-style garlic hot sauce (Cajun Power brand is what I use) 
0.5 c. cane syrup (or light molasses if you're not in South Louisiana) 
1 T. worcestershire sauce 
1 T. soy sauce 
1 medium onion, chopped 
0.5 green pepper, chopped 
2. T. green parsley 
1 clove garlic 
0.5 t. liquid smoke 
1 t. salt 
1 t. black pepper 
1 t. creole seasoning 
1 t. cayenne pepper 


  • Prep your slow cooker. Dry the ribs with paper towels and season ribs with the creole seasoning. Sear the ribs in a large skillet using the oil.
  • In the meantime, combine the ingredients for the BBQ sauce in your blender and process until smooth (adjust the amount of peppers, creole seasoning, and cayenne pepper if you want less spice). Using a fine-mesh strainer, strain the sauce into your slow cooker, discarding the pepper seeds and any other solids that don’t go through the strainer.
  • Add the ribs into the cooker and let them cook for 4 to 6 hours on the cooker’s high setting, 6 to 8 hours on the low setting. About 30-45 minutes before completion, use a spoon or ladle to remove any fat that has risen to the surface of the sauce.