Tuesday, February 24, 2009

Moving right along

Since I'm never happy with the way things are, I've begun moving everything over to our own hosted site at beegle.org. I've published only one item of interest there so far. This post serves as a re-direct and a plug to go visit my new site. :)

Experiments in bag making, take 3 on laura.beegle.org.

Monday, February 16, 2009

Success in baking

Today I made "Shirley's Even Greater American Pound Cake" from the book Bakewise. It was quite specific about the preparation instructions and included a few things I'm not good at doing (in this case, folding whipped cream into a heavier batter).


Despite the complex preparation methods, I forged ahead. Having been indoctrinated with Alton Brown's "measure by weight, not volume" mantra, I weighed the ingredients for the recipe. This produced some trepidation as the volume by weight was quite different than the volumes listed. The recipe called for 2 2/3 cups flour or 332 grams of flour. By weight, it was only about 1 3/4 cups for me.


The description before the cake warns that this recipe doesn't have enough flour to use a normal loaf pan, but that it works just fine in a tube pan. Now, I was trusting a TV show chef that, no really, weight is what matters. Well, it turned out to be true; measuring by weight worked out just fine.


This cake is very tasty and wonderfully moist, but it's not as heavy as I normally think of a pound cake as being. Even early on, the way Shirley has you creaming the fats and mixing in the eggs, the batter was very light. Folding in the whipped cream made it even lighter. It has a nice crispy exterior and a moist, even texture without tasty greasy or heavy. Amazing!

I did skip a few steps in the recipe, but only because my freezer is not as big as Shirley's must be. At a few stages in the recipe, she wants you to put the mixing bowl in the freezer for 5 minutes. She must have a 4-6 body freezer because there is no way my mixing bowl would fit in the freezer with all the other stuff that's in there. I also had to move the batter to a separate bowl so I could use my mixer to whip the cream. But, it turned out just fine, so I'm guessing my variations on those points didn't make too much of a difference.


So, this was a very tasty experiment. Willie and I agree that it's hardly fair to call it a pound cake when its texture is so much lighter than a pound cake. The flavor is very good and we think a tart fruit drizzle would be excellent on it, though it's plenty sweet as-is. Best of all, even with the strange preparation directions, this cake didn't take much longer than a normal cake to prepare.

I'm happy and I look forward to the next recipe I try from this book.

Friday, February 13, 2009

The human side of user interfaces, part 2

After coming up with the list of things I wanted my to-do list software to do or not do, I started looking at Task Analysis.

As far as I can tell, task analysis is one step back from the software and looks at the humans almost exclusively. You analyze who the users are, what their backgrounds with computers are, and their goals. Task descriptions say what the user will do, not how they will do it, and reflects their real interests.

At first, I thought "add a task to my to-do list" is a goal, but it's not. Having an item on the list is my goal; I don't really want to add it, that's just the mechanism I use to have the reminder.

Perhaps a better example is one from the book I linked above. It was describing a store where you could enter the item number of something you wanted to buy into a computer and someone would bring it to you from the store-room in back. The computer UI for this looked completely reasonable to me: it had name and address fields, a place to choose cash or credit, etc, and a field to enter the item number.

But, reading the descriptions of the user's goals, it became clear to me that filling out the form is not the user's goal. The customer's goal is to buy something; they're not interested in using the software just for the sake of using it. If this user is paying cash, they don't want to fill out all that personal information, they just want their item and want to go. Most likely they will find a human or give up and go elsewhere. That's bad UI for the store!

Armed with this new way of thinking about tasks, I sat back and considered what tasks I wanted to accomplish with a to-do list. Here's what I found, first listing a few of the task descriptions I wrote up (made easier since I'm the only user).

Description 1

While getting a new bar of soap for my shower, I see that we are now out of reserve bars of soap.  I make a note to myself to get soap the next time I'm at a store that sells soap (CostCo, Target, drug store, etc).  I proceed to use the existing bar of soap for my shower.

Description 2

While sitting at work, I see something that reminds me I should call my mother that evening or over the up-coming weekend.  I make a note to myself to call my mom.  I continue with my previous reading or task.

Description 8

While at work, Willie emails me something else to add to the grocery list since I said I was going after work. I add the items to the list. I go back to checking my email.

Description 9

I'm coming home on Wednesday evening. I need to be reminded that it's time to take out the trash and whether it's a recycle week. I take out the trash.

I came up with 13 task descriptions in total. They fell into these categories:

  • add to list (shopping, reminder, projects, someday) - location varies
  • be reminded to do something - location varies
  • pick something to do - at computer
  • postpone item from reminder list (re-add with diff date/time) - location varies
  • plan a project - at computer
  • read whole shopping list - not at computer


After looking at that list, I realized that "paper and pencil" probably worked best for when I was not at the computer. But I also realized that paper can't remind me to do things at a certain time. So, I started looking for wristwatches with alarms.

What writing the task descriptions did for me was remind me that computer software is not always the answer. I'm not saying that I've found my to-do list nirvana or even a system that mostly works for me, but I have realized that focusing on computer software to the exclusion of other solutions is not the answer. And that any good software UI will be built with an understanding of how that software fits into the user's whole life, not just their interaction with the software.

Thursday, February 5, 2009

The human side of user interfaces

I had the fortune of working on user interfaces for the last several years. During that time, I got to work closely with a usability/human-computer interaction (HCI) expert. I have been fascinated by user interfaces since college when Windows 3.11, MacOS, MWM, and CDE were the big contenders. I always wondered what made some UIs "good" or "pleasant" or "easy" and others "annoying" or "stupid".

Working with UIs as a computer programmer, I was more concerned with making sure the right data got into the right fields at the right time, that errors were handled correctly, and the UI could communicate with the other programs it needed to. In other words, I was concerned with the mechanics of the user interface. My few forays into design usually had me thinking, "that just doesn't make sense, let's do it this other way instead". But, I had no training or credentials to back me up, just instinct.

The UI expert I worked with has her PhD in psychology and specialized in HCI. I kind of expected some psychology, or at least sociology, to be part of an HCI ciriculum, but not the focus. Recently, I asked for some pointers on how to measure a UI and determine if it's usable. She pointed me at the Goals Operations Methods and Selection-rules (GOMS) methodology. It's fascinating and bears a striking resemblance to how one writes or refactors code.

But most of the references I read included disclaimers to the effect of "you need to understand human cognition to apply this correctly". I was fairly disappointed, but I've never been one to let lack of training or knowledge keep me from trying something. The worst case scenario here is I make a bunch of useless UIs for programs that I'm likely to be the only user of. Oh damn.

The prerequisites for GOMS are a list of goals and you determine those goals by doing task analysis. I found a few papers discussing task analysis and most of them were quick to point out that you're not analyzing a machine, you're analyzing a human. For example, the paper I read pointed out that in addition to the goal of "open this valve" for a chemical plant operator, he also had goals like "get paid" and "don't screw up so I can keep my job". It's the analyst's job to be aware of those other goals and keep them in mind when coming up with the user's goals within the software.

At this point, I was feeling very under-qualified for ever writing a UI again. But, people do it all the time, so screw it, I plowed ahead. I started writing down what I wanted out of a to-do list application. I started with "add task" and "break task down into smaller steps", but decided that was too goal-specific. I thought about how I'd want to use the software and what I want to feel when I use it.

I know, it sounds cheesy, like the "lickable" interface in Mac OS X. I thought, "I don't want to have an emotional reaction to my UI, I just want it to work!". But, then I let go and tried really capturing what I want from a to-do list app. Here are a few of the more touchy-feely things I noted:

  • Gentle reminder of things I could be doing, not things I must do
  • Calendar/grocery list are more transient and more insistent, so different feeling of interaction with those items - no harm in crossing off an item, need reminders/popups
  • A way to ease the pain of letting go of something I thought I wanted to do, but just haven't gotten to


Suddenly, I understand why a psychology degree might be relevant to UI design. Those aren't just things I made up to be silly, that's really how I want to feel when using the perfect to-do list application. Of course, I can make do with a UI that doesn't meet those needs, but I will consider a UI "better" or "pleasant" if it meets my unspoken, even unconscious, needs.

It appears I have a lot to learn about UI design and about users.

Sunday, February 1, 2009

Better baking through chemistry

For the last few years I've been making a honey-raisin-spice quick bread for Imbolc. It was always tasty, but I had the hardest time getting the center to finish cooking before the edges got burned. I commented on the recipe, reminding myself to try adding more leavening next time.

After reading a section in Bakewise about chemical leaveners, I re-read the spice bread recipe. In Bakewise, Shirley says you need about 1 tsp baking powder or 1/4 tsp baking soda per cup of flour. (I'm sure this is only a general rule because I'm not done reading the book, especially the section on acids, which affects when bubbles are formed from the baking soda.)

The spice bread recipe called for 1 1/4 cup flour, 2 tsp baking powder, and 1/2 tsp baking soda. If Shirley's formula is right, then it should only need 1 tsp powder or 1/4 tsp soda. That's half of what the recipe calls for. Now, you may be thinking, like I was, that more leavening equals more bubbles and a bigger cake. However, Shirley points out that too much leavening can also result in flat or sunken cakes: the bubbles are formed and get so big that they escape the cake, leaving none left to lighten it.

That was apparently the problem for me. Today, I used 1 tsp baking powder and 1/4 tsp baking soda and ended up with flat, but not sunken, cakes.


With that combination of leavening, I only had to bake the cakes for the recommended time (43 minutes), so they didn't end up burned on the edges. I was very excited that my first application of baking math had fixed a recipe that I thought was terminally broken! So, without further explanation, here is the fixed recipe.

Returning Sun Spice Bread


Ingredients

  • 1 1/4 cup flour
  • 2 Tbsp poppyseeds
  • 1 tsp baking powder
  • 1/4 tsp baking soda
  • 1/8 tsp salt
  • 1/2 tsp ground ginger
  • 1 tsp each of cinnamon, nutmeg, allspice
  • 3/4 cup raisins, plain or golden
  • 1/2 cup butter, melted
  • 1/2 cup light brown sugar
  • 1/2 cup honey
  • 1/4 cup corn syrup
  • 1/4 cup milk
  • 1 large egg, beaten


Directions

  1. Preheat oven to 325 degrees.
  2. Mix the baking powder, baking soda, salt, and spices together. Stir the spice mixture into the flour in a large bowl and mix well.
  3. Stir in the poppyseeds and raisins.
  4. In a separate bowl, melt the butter. Stir in the brown sugar, honey, corn syrup, and milk. Stir in the egg.
  5. Pour the liquid mixture into the flour mixture. Stir to combine.
  6. Pour the batter into 4, well-greased, mini-loaf pans.
  7. Bake for 40-50 minutes.