Grant McWilliams

×

Error

[sigplus] Critical error: Image gallery folder Gallerys/RoastChicken is expected to be a path relative to the image base folder specified in the back-end.

Garlic and Rosemary Roasted Chicken with Yukon Golds

Chicken is probably the most boring tasting animal on the planet, that's why when we don't know what something tastes like we say it tastes like chicken (meaning it has no strong flavor). However, chicken doesn't have to be boring at all and with a little work we can pick a good chicken, keep the flavor by cooking it right and even add to it using some specially selected herbs and vegetables. 

This recipe's purpose is to molest the chicken as little as possible and add subtle other flavors. The chicken also contributes by giving up a certain amount of it's juices and the runoff from the garlic and rosemary paste which drizzles down into the potatoes and shallots making for a very nice accompaniment.

This time around I waited about 20 minutes into the roasting and added sliced Sweet Potatoes which was very nice. Also instead of using just Yukon Golds I found a bag of mixed tiny potatoes at the store comprising of Yukon Golds, Purple and Red Bliss. The best tasting out of these three in this recipe is the Yukon Golds so this mix doesn't add to the quality of the meal however it does make it pretty. Yukon Golds just have the right amount of waxy texture and the right amount of starch to soak up the chicken's juices and yet hold themselves together. 

Try out the recipe and let me know what you think.

Recipe: Garlic and Rosemary Roasted Chicken with Yukon Golds

Gallery: {gallery}Gallerys/RoastChicken{/gallery}  

Add a comment

Recession Chef: Zesty Macaroni Salad

Several years ago I decided it was time to get serious about smoking meat so <joke> I lit one end of a chicken</joke>.... nevermind. What I really meant to say was that I'd gotten serious about BBQ and in time started working on the absolute best version of traditional American BBQ fare according to me. It has a nice tang in it, isn't boring with the peppers, carrots and celery and is actually quite smooth and sweet too. It's a nice blend I think.

I'm a perfectionist so I can take quite a while to get it all worked out and as soon as I do I'll upload the recipes. This recipe is for the most part done. Anyone can do Macaroni Salad right? Yes if you want plain old Mayonnaise and noodles for dinner. What I've created here I really like and make it often for my lunches even if I don't BBQ. The ingredients list is longer than traditional Macaroni Salad and a few my be surprising but you should just trust me on this one and make it. I usually use the 2lb bags of mini sweet peppers but when I can't get them I'll use regular sized red, orange or yellow bell peppers.  I've specified just ONE red bell pepper to keep the cost down but if  I'm making a double batch I like to put one red and one yellow or orange bell pepper in it. I've tried green but to me the flavor is too bitter for what I am trying to accomplish. 

Also on the recipe I've made a note about the sweetened condensed milk. I've tried several while creating the recipe and something falls flat when I use *whatever* brand. However, I've always had good luck with Nestle La Lechera sweetened condensed milk that I pick up from the local Mexican grocery for about $1.60. If you buy it from your local white man's grocery you'll pay at least double. Since you have to pick up a few veggies anyway it may warrant seeking out the Mexican Tienda. 

If you're going to use nasty iodized table salt then cut the amount in half. I don't like my food tasting like bitter soap so I use fresh  ground sea salt in my recipes and you should too. Also one last note. I've mentioned in the recipe that it gets better if the flavors meld. This is very true and you'll notice the noodles soak up some of the soupiness and the flavors are more balanced the next day. If I were having a BBQ I'd make this the day before. If this isn't possible don't stress it because the worst rendition of this you could make will be better than anything you can buy from the store.

Recipe: Zesty Macaroni Salad

Add a comment

Changes to Sound Transit bus/train service

 Note: This post will mean a lot more to those of you living in the Seattle/Tacoma/Olympia area and attempting to use public transportation. It's meant to be humorous but based in reality in a sort of depressing way.

The original Sound Transit announcement for reference.

-------------

Your current transit news from your transit news correspondent Haywood Jablomey.

Sound Transit remaps the 574 route to connect with the Sounder which goes in the OPPOSITE direction. So for those people traveling from the Airport to Seattle who want to transfer to the Sounder they can now do it at Lakewood… 35 miles from the city.

Pierce Transit after a massive service hour cut adds the 400 route to duplicate the service offered by the Sounder. Sound Transit counters by canceling a portion of the 578 route that duplicates what the PT 400 duplicates of the Sounder route thus saving tax payers $12 which is handed over to Piece Transit and immediately applied to it’s million dollar shortfall easing the tension between Piece Transit and all the cities that pay for it but it no longer services.

Sound Transit add Sunday service to the 578 for all the people who can’t connect to it using Sounder or Pierce Transit 400 due to there not being any weekend service on either.

Sound Transit discontinues the downtown Tacoma portion of the 586 because countless other services cover that route including the Oly Express which doesn’t stop at Tacoma Dome on hours ending with consonants on days ending in y (unless it’s raining then there’s a 50/50 chance due to the letter y not always being considered a vowel) resulting in 605 riders to the U District moving from a 2 seat ride to a 3 seat ride either 30%, 35% or 48% of the time.

Sound Transit extends Sounder south to get closer to 820 parking spots which couldn’t seem to squeeze near the 2283 already available stalls at Tacoma Dome Station thus encouraging people to drive south to park so they can catch the Sounder north back past their houses giving working husbands and wives a second chance to wave to their spouses and check on their lawns. Nobody else notices since the Oly Express still won’t make any sort of intelligent connection to the Sounder effectively keeping the 59x buses annoyingly full.

To discourage people from taking the Sounder Commuter Train Sound Transit has doubled the frequency of both the 590 and 594 in commute direction only thus making better use of empty parking spaces in the city that so far have not been fully utilized because in the past the buses were busy carrying people around. Coffee shops expect to see an increase in ticket sales from the hordes of ST bus drivers milling about during the day. It’s been proposed that cardboard “Occupy Wall Street” signs be added to their uniform so people won’t notice they are in fact employed bus drivers with nothing better to do.

Afraid that there may be some good news buried in the changes somewhere for at least ONE line Sound Transit has doubled the service runs of the 592 bus but stops short of actually delivering passengers anywhere useful. Options are to take the Sounder, walk a block to board the Link and travel one or two stops further north or south. Proposed changes are intended to either leave 592 riders stranded or irritated. Either is acceptable. Rumors of a conspiracy by Jamie Oliver to force long transit connection in an attempt to “slim Americans down” go unfounded. Rumors of him being awarded a second TED prize for an upcoming speech however just will not go away.

Not to leave a sour taste in anyone’s mouth Sound Transit has added ONE extra ST 510 run per day to Everett. It isn’t presently clear at what time a day it runs and it’s existence hasn’t been proven.

And that’s it for this week folks. Have a happy new year.

Add a comment

How to afford great food via personal subsidies

Using Food Subsidies at Home

Something I'll surely be talking about later is food subsidies. I often hear the argument that people can't afford to eat well. I understand that money is tight but I also understand that when the cost of each plate is important (as apposed to the monthly food bill) and the cost of each ingredient on that plate is known you have a lot of power and flexibility to afford better food. Maybe I need to explain.  In the restaurant business inventory cost is everything. You can't just make great food and send it out the door without knowing what it costs and one of the tricks to providing a great meal for a profit is to know the cost of *everything* on that plate. If you go out to dinner at a decent restaurant and you analyze the food on your plate you'd think that a bit of meat, some veggies and a starch is a balanced meal but you may be surprised to know that the items on that plate have little to do with nutrition and a lot to do with economics. Restaurants are in business to make money, not go broke. 

Let's take a closer look at what they do. I've somewhat randomly picked a menu from a local Seattle restaurant – The Pink Door. A swanky Italian/American restaurant with no visible name to be exact just a.... wait for it.... pink door in Post Alley near the very famous and tourist infested Pike Place Market. http://thepinkdoor.net/

Example Food Subsidy

We'll take a look at a few items on their dinner menu.


b u t t e r n u t s q u a s h r a v i o l i d e - c o n s t r u c t e d burst in your mouth mushroom consommé ravioli over creamy squash purée & fresh herbs 19


Let's assume they're going to give you 1.5 lbs of food here and we're going to divide the weight into pasta and squash since the latter is not only the filling but has it as a base too. That leaves us with ¾ lb of pasta dough and ¾ lb of butternut squash. Naturally the squash is going to have some herbs and spices in it which we don't know but they will be mere fractions of an ounce in weight so for our purposes negligible. We also see that we have a mushroom consommé in the filling. The material cost of making a pound of pasta is roughly 60 cents. The cost per pound for butternut squash is about $1. We don't know the mushrooms used but just for the sake of argument they're Portobella which usually run about $7/lb. That's a lot of money in comparison to the rest of the meal but if we only have ¾ lb of ravioli filling then the amount of mushrooms is probably in the 2 oz range or about 45 cents. Add in a half an ounce of fresh shaved cave aged Parmesan ($25/lb) and we're sitting squarely at $2.50 cents for this meal. If you want to really do it up some nice home baked rolls would be great. That would bump the cost to a whopping $2.75.

  • ¾ lb pasta - $.90/lb

  • ¾ lb squash – $1/lb

  • 2 oz Mushrooms - $7/lb

  • ½ oz grated Parmesan - $25/lb

Total material cost is $2.75. How do they get away with charging $19 then? Part of it is to cover the cost of the building, wages for the chefs and wait staff, profit for the owner and so on. We made a dish with $25/lb imported cheese and fairly expensive mushrooms by subsidizing the cost of the expensive items with the cost of the cheap ones. In this case pasta, squash and bread are the cheap items. I'd bet that part of this dish also subsidizes more expensive dishes. That's right, not only do we have subsidies going on within a dish but between them. Let's do another one with even more specialty items. More after the jump.

 

Add a comment

Read more: How to afford great food via personal subsidies

Recession Chef: Desi Ghee for cheap

Desi Ghee

Ghee is for the most part clarified butter.  In French cooking the butter is clarified until the milk solids drop to the bottom and the foam rises to the top. The foam is skimmed and the butter poared off. With Indian cooking the butter is clarified long enough for the water to evaporate. What you're left with is pure butter with no milk solids or moisture. Because Desi Ghee has no milk solids or water it can be stored at room temperature without fear of spoilage.

The reason you'd want to go through the process of clarifying it yourself is that Desi Ghee can be very expensive in the store. A mayonnaise jar of Ghee can run you 15 dollars.  You can make that amount yourself for about $5 or less depending on what kind of deal you get on butter.


See the Desi Ghee recipe for more details.

Add a comment

Standing Randy

 

Each letter of the alphabet creates a different dance move. Create your own combos to bug-out to!

Now you have the KEYS to dance!!!

Add a comment

grep a file in python

Grep in Linux is an amazing tool. Sometimes I just want the simplicity of grep in Python. This isn't the equal to grep but it will take a regular expression as an argument (two examples shown) and give a return code of success if found or None if not. It will also return the line just like grep. 

 

#!/usr/bin/env python
 
import re

def grep(patt,file):
    """ finds patt in file - patt is a compiled regex
        returns all lines that match patt """
    matchlines = []
filetxt = open(file) lines = filetxt.readlines() for line in lines: match = patt.search(line) if match: matchline = match.group() matchlines.append(matchline) results = '\n '.join(matchlines) if results: return results else: return None # Example use textfile = "/etc/hosts" file = open(textfile) criteria = "localhost" expr = re.compile(r'.*%s.*' % criteria) # finds line that starts with anything, ends with anything and has criteria in it #expr = re.compile(r'[0-9].*filename:(%s)\schecksum:.*result: (.*)' % criteria) # more complex example # using return code if grep(expr, file): print criteria + " is in " + textfile else: print criteria + " is not in " + textfile file.seek(0) # rewind file for next test # printing all matching lines results = grep(expr, file) print results file.close()

Since Python is so picky about indention (drives me crazy) you can download grep.py from my downloads section.

Add a comment

Pumpkin Smackdown!

Many years ago when my daughter was first born we'd receive WIC coupons from the local office for food to help with nutrition and such. Those coupons were only good for certain things but you could buy just about anything from the local farmers market with them. Breezing the halls of the farmers market was an interesting thing because at the time I didn't do a lot of cooking and the only thing the farmer's market sold was items that needed to be cooked. As fate would have it I made a choice and bought a pumpkin. Once home I had to figure out what to do with it so I made Pumpkin bread and the rest as they say is history.

I've now been making Pumpkin bread every fall for 20 years without missing a single season. Since then I've also learned a great deal about food and Pumpkins specifically. As most people I started out buying Jack-o-Lantern pumpkins because this is the quintessential pumpkin that everyone recognizes. Little did I know they don't make great food. Cooks Illustrated a magazine I respect greatly maintains the idea that it's just not worth the effort to cook raw pumpkins but I beg to differ. Had I stopped at the Jack-o-Lantern pumpkins I would agree but there are better pumpkins out there when you have food in mind which is why we're here today.

  

Pumpkin Varieties

Shortly I'll be outlining the 3 pumpkin varieties worth considering for food and referencing the pumpkin people usually try to make food out of unsuccessfully – the Jack-o-Lantern. There are many many varieties of pumpkins but half of them are branches from the Jack-o-lantern tree so we'll cover them together. Then there's the smallish Sugar Pie Pumpkin, the Long Island Cheese Wheel and the Cinderella. The latter two have limited availability although popularity of the Cinderella seems to be on the rise if only slightly.

 

Testing Criteria 

Flavor: Of course flavor will be number one. Contrary to popular belief not all pumpkins taste the same and why would they? Not all squash taste the same so it makes sense. 

Texture: Texture is important when making puree out of the meat.

Cookability: This is more important than you think. I've cooked pumpkins every possible way looking for the method that gives me the most meat, the best flavor and texture. Some pumpkins are more cookable than others. Pumpkins that are too small or too large are difficult to cook while either maintaining flavor or getting a decent ratio of meat to work involved. See my method on how to cook a pumpkin a bit later in this article. 

Longevity: Because I only use fresh pumpkin in my bread and I worry about availability more than most. Most pumpkins disappear from the store about Halloween time. This is a problem for me because I like cooking pumpkin bread for more than the two weeks leading up the Halloween. There are vast differences between pumpkins in regard to longevity.

Availability: Availability is important because if you can't buy the variety to begin with it doesn't matter how good it is. Some pumpkins like Jack-o-Lantern are always available around Halloween but ONLY right up to October 31st. Try to get one the next day. Others just aren't distributed or grown much.

Cost: How much do I usually have to pay?

  

Add a comment

Read more: Pumpkin Smackdown!

Create custom templates

Prerequisites

  • XCP/Xenserver

 

Creating a template

The following is how to create new custom templates based on existing templates in Xen Cloud Platform. 

1. Get the template UUID that we want to use as our base. As usual just copy and paste the line in yellow into a root terminal on your XCP host.

xe template-list | grep -B1 name-label | awk -F: '{print $2}'

The output should look like this..

 

 688c625b-93b8-8e66-62e5-4542eca1e597

 Red Hat Enterprise Linux 6 (32-bit)

 

 c4e28252-030f-524a-c5d8-7da85df3ccf5

Windows Server 2003 (64-bit)

......

 

Scroll through the list and find the template you want to clone then copy and past it's UUID number ie.  688c625b-93b8-8e66-62e5-4542eca1e597. Choose a new name for your custom template and enter the following line with the UUID of the template you want to clone and the name you want it to have.

 

xe vm-clone uuid=<UUID> new-name-label="<NAME>"
xe template-param-set uuid=<UUID> other-config:install-methods=http,ftp,nfs other-config:default_template=true

Now you should have a new template of your own that you can customize. More after the jump.

Add a comment

Read more: Create custom templates

How to manage VM images on XCP

Once you've created a VM from one of my other tutorials (CentOS 64bit/CentOS 32 bit) you may want to make copies/clones and/or backup the images. There are several ways that you can make a backup copy of a VM all with subtle differences so we'll cover them below. 

 

Copying a Virtual Machine

The following is how to make a full copy of a VM on Xen Cloud Platform. When you do a full copy it does just that, it creates a new VM and makes a full copy of the disk.

Syntax from the XenServer Administrators Guide

vm-copy new-name-label=<name_for_copy> [new-name-description=<description_for_copy>] 
[sr-uuid=<uuid_of_sr>] [<vm-selector>=<vm_selector_value>...]

This may need a bit of explaining. You need to know a couple of items before you can make a copy of a VM.

  1. The Name or UUID of the old VM
  2. The Name of the new VM
Optionally
  1. The Description of the new VM
  2. The Storage Repository to hold the new VM

 

The simplest method of copying a VM would be to just accept the defaults.

 

[[email protected] ~]# xe vm-list
uuid ( RO)           : adde907a-3b85-80e5-e7c9-47718dd1d55b
     name-label ( RW): baseimage
    power-state ( RO): halted
[[email protected] ~]# xe vm-copy name-label=baseimage new-name-label=baseimage-copy
 

This process may take a few minutes depending on the size of the disk image. It's worth noting that it's more reliable to use a VM's UUID to identify it than it's name and the reason for this is that XCP allows you to have more than one VM in a pool with the same name. The line above would look a bit different if we'd used the VM's UUID.

[[email protected] ~]# xe vm-list
uuid ( RO)           : adde907a-3b85-80e5 -e7c9-47718dd1d55b
     name-label ( RW): baseimage
    power-state ( RO): halted
 [[email protected] ~]# xe vm-copy vm-uuid=adde907a-3b85-80e5-e7c9-47718dd1d55bnew-name-description="Copy of baseimage" new-name-label=baseimage-copy new-name-label=baseimage-copy

 

Using the UUID isn't quite as people friendly as name-label because UUID's are a bit scary looking. I usually use name-label to identify VM's unless something funky is going on then I'll switch over to UUIDs. For instance I rebooted a VM by name-label and was logged into the whole time and it clearly didn't reboot. While troubleshooting I realized I had two VMs with the same name-label and XCP rebooted the one I wasn't logged into. Below is an example of multiple VMs using the same name-label.

  

[[email protected] ~]# xe vm-list name-label=baseimage-copy

uuid ( RO)           : 7062651a-6c05-ac3b-fe71-5dd9b6ca2c18

     name-label ( RW): baseimage-copyThe simplest method of copying a VM would be to just accept the defaults.

 

 

 

[[email protected] ~]# xe vm-list

uuid ( RO)           : adde907a-3b85-80e5-e7c9-47718dd1d55b

     name-label ( RW): baseimage

    power-state ( RO): halted

[[email protected] ~]# xe vm-copy name-label=baseimage new-name-label=baseimage-copy

 

This process may take a few minutes depending on the size of the disk image. It's worth noting that it's more reliable to use a VM's UUID to identify it than it's name and the reason for this is that XCP allows you to have more than one VM in a pool with the same name. The line above would look a bit different if we'd used the VM's UUID.

 

    power-state ( RO): halted

 

uuid ( RO)           : fce951a3-1105-6e36-b6db-09ba3fd37180

     name-label ( RW): baseimage-copy

    power-state ( RO): halted 

 

The other instance where I use UUIDs would be scripting. If I'm managing VMs using a shell script I'll always use UUIDs since shell scripts don't care about pretty name labels and UUIDs are more reliable.

You may want to add a description to the VM as well for future reference.

[[email protected] ~]# xe vm-list
uuid ( RO)           : adde907a-3b85-80e5-e7c9-47718dd1d55b
     name-label ( RW): baseimage
    power-state ( RO): haltedthe Man, the Myth, the Legend
 [[email protected] ~]# xe vm-copy name-label=baseimage new-name-label=baseimage-copy new-name-description="Copy of baseimage"
[[email protected] ~]# xe vm-list name-label=baseimage-copy params=name-description,name-label 
name-label ( RW)          : baseimage-copy
    name-description ( RW): Copy of baseimage
  
 
 
Sometimes you need to specify the Storage Repository to copy the image to. In the examples above the disk image will be copied to the DEFAULT Storage Repository so normally you don't have to specify. However there are several cases where you may want to specify. An example of this would be if the storage repository you want the VM copied to isn't default.
[[email protected] ~]# xe sr-list 
uuid ( RO)                : 92bf5d33-a164-d75c-26c0-3f53f0490ba0
          name-label ( RW): iSCSI_Disk2
    name-description ( RW): SSD on cloud0
                host ( RO): <shared> 
                type ( RO): lvmoiscsi
        content-type ( RO): user
[[email protected] ~]# xe sr-list
uuid ( RO)                : 92bf5d33-a164-d75c-26c0-3f53f0490ba0
          name-label ( RW): iSCSI_Disk2
    name-description ( RW): SSD on cloud0
                host ( RO): <shared>
                type ( RO): lvmoiscsi 
        content-type ( RO): user
[[email protected] ~]# xe vm-copy name-label=baseimage new-name-label=baseimage-copy new-name-description="Copy of baseimage" sr-uuid=92bf5d33-a164-d75c-26c0-3f53f0490ba0
 
 This will copy the VM to the Storage Repository with the UUID of 92bf5d33-a164-d75c-26c0-3f53f0490ba0. Be careful with this though. If the Storage Repository isn't accessible by that host ie. it isn't shared then the VM won't be able to start. 
 

Cloning a Virtual Machine

Cloning a VM is very similar to Copying it with the exception of it being much faster and you can't choose your Storage Repository. You can't specify the Storage Repository because it creates a Copy on Write instance of the original disk. This means the clone goes very fast due to it not writing very much data. As a VM changes the contents of the disk by adding/removing files the changes are stored in the Copy on Write clone and not the original disk. This means you can create them very fast but you can't clone to a new Storage Repository.

[[email protected] ~]# xe vm-list
uuid ( RO)           : adde907a-3b85-80e5-e7c9-47718dd1d55b
     name-label ( RW): baseimage
    power-state ( RO): haltedthe Man, the Myth, the Legend
 [[email protected] ~]# xe vm-clone name-label=baseimage new-name-label=baseimage-copy new-name-description="Copy of baseimage"
[[email protected] ~]# xe vm-list name-label=baseimage-copy params=name-description,name-label 
name-label ( RW)          : baseimage-copy
    name-description ( RW): Copy of baseimage

 

Something to keep in mind. If you clone VM1 to VM2, then clone that to VM3 and so on you will eventually have a great deal of overhead writing to the disks. Each time a VM wants to write to disk Xen Cloud Platform has to check each disk image to see what's changed. Therefor it's recommended to clone the original and not clone a clone. If you have multiple levels of clones you can do a vm-copy to make a fresh new VM disk to restore performance.

 

Add a comment

Read more: How to manage VM images on XCP