Sunday, August 24, 2014

Kefir Green Smoothie

Erick's Kefir Green Smoothie

After reading Donna Schwenk's recipe for a Kefir Green Smoothie, I was motivated to tailor it for my family. In particular, I needed to get rid of the banana. One of my little ones has a problem with bananas. So, after some experimenting and some suggestions from Selena, we've settled on this Kefir Green Smoothie recipe. It's not perfect, but it works for us.

The Recipe

Ingredients for Erick's Kefir Green Smoothie

  • One cup (8 oz) dairy kefir
  • 1/2 cup frozen fruit, heaping (and I mean REALLY heaping)
  • 1 tablespoon coconut cream, heaping
  • 1 tablespoon raw honey, heaping
  • 1 teaspoon chia seeds
  • a handful of spinach

Procedure

Put it all in a small blender. Blend until smooth. Enjoy immediately.

Variations

We like to vary the fruit. Strawberries are a bit hit, but they make the smoothing a bit brownish. We've found a mix of peaches, mangos, pineapple and strawberries that renders a nice light green color and tastes great. Blueberries are delicious, too, and the blue completely overwhelms the green from the spinach, so you get a nice blue smoothie that still has the green stuff in it. (That might be good for kids who are squeamish about green.

The green doesn't have to come from spinach. You could use any greens that you like.

You could try a different sweetener if you like. Grade B maple syrup might be nice. Or use stevia or rapadura. Whatever you like.

Make popsicles. The kids love 'em!

Creative Commons License
Erick's Kefir Green Smoothie by Erick G. Hagstrom is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
Based on a work at http://erickhagstrom.blogspot.com/2014/08/kefir-green-smoothie.html.

Tuesday, January 14, 2014

Homemade Breakfast Sausage 3

Success!

Ok, so I thought this would take longer, but recipe #2 turned out to be a huge success. My wife claims that it's so good she wants to eat the kids' sausage! So, officially, we're done. We've found a good substitute for the chemical-laden stuff the stores sell as breakfast sausage.

That doesn't mean I won't tweak the recipe now and then, or try out other flavor profiles. But for the moment, this experiment is concluded successfully. Thanks for following along!

Monday, January 13, 2014

Homemade Breakfast Sausage 2

Homemade Breakfast Sausage

The Sausage Experiment, #2

This is the second post on my sausage experiment. If you read that post, you'll know that the first recipe turned out pretty good, but we all thought it could be improved. So for today, I tried just a little tweak. I added a small quantity of red pepper flakes to give it a little kick, and I used a slightly smaller clove of garlic.It's still going to be quite garlicky, though. But that's ok. We like garlic.

So, without further ado, here's today's recipe.

Second Recipe


1 pound fresh ground pork (from the supermarket)
1/4 tsp each of the following:
  • ground black pepper
  • basil
  • coriander
  • oregano
  • thyme
one large garlic clove, chopped
1/2 tsp kosher salt
1/8 tsp red pepper flakes

I just mixed it all up and let it sit in the fridge overnight, then pan fried as usual.

Family Reactions

 Stay tuned. We haven't tried it yet. I'll update this post when I get reactions.

Sunday, January 12, 2014

The Sausage Experiment

On Avoiding Nitrates and Nitrates While Still Enjoying Breakfast

My family and I have come to understand that animals are good for people to eat. We pretty much need 'em. Even the fat, though grain fed animals produce more fat than is strictly necessary. But grass fed is so expensive. So we do what we can.

We especially enjoy our morning bacon and sausage, though I am a bit concerned about all of the nitrogen compounds present in those delicious morsels. We tried uncured bacon, but then I read or heard (don't remember where, so no source at the moment) that bacon processed in celery juice--rather than chemical nitrates and nitrites--actually contains three orders of magnitude more of those chemicals than regular bacon. Seems there's a chemical reaction between celery juice and salt that produces nitrates and/or nitrites. Makes sense. They had to come from somewhere originally. Cured meats have been made with nitrogen salts for centuries.

So how to avoid those nitrogen salts entirely? I've decided to experiment with making my own pork breakfast sausage, uncured and unceleried. So it's not really sausage in the traditional preserved meat sense. But I hope it'll taste something like sausage and help us enjoy our morning piggies without added chemicals. And in the interest of science--and to help me remember what I did last time--I'll be recording my recipes and family reactions right here.

First Recipe


1 pound fresh ground pork (from the supermarket)
1/4 tsp each of the following:
  • ground black pepper
  • basil
  • coriander
  • oregano
  • thyme
one very large garlic clove, chopped
1/2 tsp kosher salt

I just mixed it all up and let it sit in the fridge overnight, then pan fried as usual.

Family Reactions

LOTS of garlic. Could cut back a bit.
Seems to lack zip otherwise. Maybe some red pepper flakes or cayenne?

My personal feeling is that I could add more of the herbs, too.

Wait, no sage?

That's right, no sage. My wife is breastfeeding. Sage reduces milk production. Don't want to feed the eaters and starve the drinker.

Thursday, August 15, 2013

Return Type Covariance, The Forgotten Form of Polymorphism

Hey, that's a real catchy title, isn't it? This post is inspired by a programmer who I know and respect who always likes to ask in interviews, "What is polymorphism?" Good question, conceptually simple, but full of the kinds of details that can really separate thems that know sumpin' from thems that don't. (Sorry, I think living in the South has gotten to me.)

First, the basic definition: polymorphism is the idea that there's more than one way to satisfy a contract. Say I have a class called Animal, another called Dog and a third called Cat. Dog and Cat both extend Animal, to use the Java terminology. Without going into the details, anywhere any code expects an Animal, you can supply a Dog, a Cat, or any other object that extends Animal. We say that Dog and Cat are substitutable for Animal because anywhere you need an Animal you can substitute a Dog or a Cat. There's a lot more to be said about that, and maybe I will at some point, but for now I'm moving on to return type covariance.

If Dog and Cat are both derived from Animal, then they could be said colloquially to be more specific than Animal. The set of all Dogs is a subset of Animals. Dog and Cat are partitions of Animal. Dog and Cat are subtypes of Animal, and Animal is a supertype of Dog and Cat. Computer scientists would say that Dog and Cat are both narrower than Animal.
All of those statements express the same concept.

Here's some code for reference:

public class Animal
{
   public String speak()
   {
      return "Basic animal noise";
   }
}

public class Dog extends Animal
{
   @Override
   public String speak()
   {
      return "Woof";
   }
}

public class Cat extends Animal
{
   @Override
   public String speak()
   {
      return "Meow";
   }
}

Do you see that there's a method named speak() defined in Animal that's redefined in both Cat and Dog? And the @Override annotation that precedes those redefinitions? Yeah, yeah, standard textbook polymorphism. But have you ever done this?

public class Animal
{
...
   public Animal getSelf()
   {
      return this;
   }
}

public class Dog
{
...
   @Override
   public Dog getSelf()
   {
      return this;
   }
}

public class Cat
{
...
   @Override
   public Cat getSelf()
   {
      return this;
   }
}

Even though Animal defines the return type of getSelf() as Animal, Dog and Cat have successfully redefined that (as evidenced by the @Override annotation) to return instances of their own narrower type. That's legal Java, and it's pretty useful at times. They have redefined a method using a return type that's narrower than that returned by the method declaration that they're overriding. Catch that? Narrower return type? That's what "return type covariance" is.

Why is that ok? It's because the original method definition promised an Animal, and that's exactly what you're getting from all three. Dog is an Animal. Cat is an Animal. So it's ok if they declare the fact that you can expect a narrower form of Animal, right?

So the next time someone asks you what polymorphism is, don't just spout off the usual pablum about redefining methods in subtypes and such. Mention return type covariance. They'll be impressed.

Happy coding!

Sunday, July 15, 2012

Learning Functional Programming with Scala

It seems to me that it's time that I looked into functional programming, and Scala seems to be a really good entry point. Why?

  1. It's open source, so there's little financial cost of entry.
  2. It's built on the Java Virtual Machine (JVM), so whatever I write will be runtime compatible with anything I do or have done in Java.
  3. There's an Eclipse Plugin for that, so I get to use my favorite development environment.
  4. It seems to be maturing. Scala is actively maintained, has a good user community, and people are writing helpful things about it. (I hope eventually to be one of the latter.)

So here's what I'm going to do...

  • I'm going to get a Scala environment installed on my machine.
  • I'm going to start fooling around with tutorials and such.
  • I'm going to write something that I can share with the world. It'll run wherever Java runs (that I am able to test), meaning that at minimum I want it to be able to run on my desktop, on the web (including as a Facebook app) and on my Android.

If you've ever thought about following this blog, or following me on Facebook or Twitter, now would be a good time.

Busy family person disclaimer: I don't know how consistently I'll be able to pursue this. This is strictly a time-available kind of thing. Why? Little people are competing for my time, and they win. But they sleep more than I do, so I think I have a fighting chance to get a post or two out once in a while.

Monday, November 29, 2010

AMP-lify Your Career with a Master's Degree in Systems Engineering from UVa!

I am a graduate of this program and am very happy to say so. I recommend it to anyone interested in an excellent education in Systems Engineering.

The University of Virginia Accelerated Master's Program in Systems Engineering (AMP) is designed for working professionals eager to enhance their skills and advance their careers. Students from the Mid-Atlantic region travel to Charlottesville for classes all day every other Friday and Saturday with a week in residence at the beginning and end of the program. Two weeks in residence plus 20 Fri./Sat. weekends leads to a master's degree in just one year (May - April) from one of the top universities in the country.

You are cordially invited to an AMP Open House on Saturday, December 4, from 9 am - 1 pm, at the Darden Graduate School of Business in Charlottesville.

Attending an Open House is a great way to learn more about the Accelerated Master's Degree in Systems Engineering. You will meet the academic director and other faculty members, hear highlights of the program and AMP-V, our new options for veterans, participate in a mini-class, talk with current students during breaks, lunch, and at a panel discussion, and tour the Darden School and lodgings. There will also be a short session about education loans that can help make the program accessible to all. The Open House starts with a continental breakfast meet-and-greet and concludes with lunch in the Abbott Center Dining Room (both complimentary). You are welcome to bring your spouse or significant other. Invite friends and colleagues to come explore the program with you.

Register to attend via a short online form at http://www.surveymonkey.com/s/Q3HBYNJ, from the sign up link on the AMP web site, www.sys.virginia.edu/accelerated, or by emailing accmp@virginia.edu. We hope to see you there!