I have 3 kids. And a wife. We lead pretty hectic lives, and there doesn't seem to be an end in sight to the insanity. Given all of that, it seems as if we always have a list of stuff that we need from the grocery store.
More than once, I've been at the grocery store fulfilling the needs on the pre-written list only to be bombarded with text messages asking for this and that. Sometimes I get lucky and manage to get everything on the lists (the written lists and all of the impromptu SMS lists). More often than not I end up overlooking something because it isn't all in one place. Quite frankly it doesn't help that I'm easily distracted in the grocery store.
There has to be a better way.
We've recently begun writing automated UI tests in Calabash for our main Xamarin.iOS project. While the tests are still under development, I decided to make a Jenkins job to fire off the the UI tests whenever a change was detected on the branch where the tests were being developed.
It took a little more than I was expecting to getting it running, so it is going to become the 2nd article in my impromptu series about Jenkins and Xamarin.
A couple of weeks ago I started putting some thought into moving my blog away from Wordpress. I don't necessarily have any problems with Wordpress, I was just looking from something different, something simpler.
For the most part I don't think very much attention gets paid to what I write here, but I write down a lot of things that I want to remember long term. Wordpress was an easy way to get started, but it really was overkill for what I end up doing here.
I've written an other blog post about being an Apple Enterprise developer and the particular challenges that ensue therefrom. In a nutshell, when you are an enterprise developer developing apps for other people, you have to work closely with your clients to get the provisioning working correctly. Then the hard part starts: you need to figure out how to make it all work in Xamarin Studio.
OK. Maybe that is a little over the top. Yesterday we went through and set up some git goodness in Windows. But using it kind of sucks, so in this installation we will work on making things a little bit nicer to use.
Now I have to admit, I'm not a windows guy, but I noticed right off that by default the git-bash stuff was useful, but pretty spartan. Being the Mac user I seem to have become, I expect things to be a little bit nicer.
So at work we recently migrated from SVN to Git, and we chose BitBucket as our git host. Some tutorials were written internally about how to get started using git, but since all of the developers have Macs, and I am a Mac user, we wrote the tutorial assuming OS X. It was mostly designed to get used to some of the different concepts of DVCS versus the old Subversion model, and not at all an in depth look at git.
I've got an idea for something that I want to write, but I'm going to keep it to myself while I work it all out. It will involve using Twilio. I'm not a programmer, and I'm by no means a Python expert. I've written one thing in Python so far (a bot for the now defunct turntable.fm). I'll probably keep this next project in a private github repo until I get it done.
In any case, I wanted to learn how to use Twilio, and beef up on my Python skills at the same time. Some of what follows may be just because I am a relative neophyte, and if so, I apologize. Also, I'm mostly writing this in response to a tweet from the Twilio team. It seemed like it was going to be long for an e-mail, and I wanted to have a copy for posterities sake. If it isn't obvious, all of the code you'll see below is taken from Twilio's tutorials, and modified slightly by me. I think I've linked everything pretty well. (Of course if Twilio makes some adjustments, then this article might not make a lot of sense in the future.)
I'll be honest -- I don't really like turkey. Even though this year, I think the turkey turned out pretty well. Turkey notwithstanding, Thanksgiving is one of my favorite holidays. I enjoy all of the cooking and then the 2 days of leftovers. I got a couple of phone calls yesterday about how I do a few different things, so I decided that I'd take a moment and jot down what I did this year from a cooking perspective. While it is too late for this article to help the people that called, maybe they will remember this article next year and be able to refer to it.
One of the traditions that we have, that I really enjoy, is that everyone is responsible for bringing something to the table. Then I generally fill in the gaps. Some years I get more creative than others. In any case, Ross always enjoys making the cranberry sauce from scratch, so I decided early to try to tie the cranberry flavor into the turkey itself. Here is how it went.
On Monday, I put the turkey in a brine. Essentially, I took the frozen turkey and put it in a 5 gallon gatorade cooler that we had double lined with garbage bags. I made a brine out of 1/2 gallon of water, 1 pound of kosher salt, 1/2 gallon of 100% cranberry juice, 1/2 of 100% apple juice, 1 quart of apple cider vinegar, 15 - 20 whole cloves, and 2 handfuls of black peppercorns. I left the bird to soak in the brine in the cooler until Thursday morning.
The Big Day
I cheated on the stuffing this year. I bought a bag of Pepperidge farm Onion & Sage and a bag of Pepperidge farm Cornbread stuffing. On Thursday morning, I dumped both of the bags into a large bowl. I then fried up a large onion and 3 sticks of celery that I had minced, and a few leftover breakfast sausage patties that were in the fridge from a couple of days earlier. I dumped the onions & celery into the stuffing mix, and then dumped in a quart of chicken broth. (A note on chicken broth -- spring for the organic low sodium stuff that your grocery store probably keeps in the health foods section. It actually tastes like chicken, not salt, and is worth every cent of the extra money. The name brand stuff tastes like bouillon cubes … nasty.) For good measure, I sprinkled in some ground coriander, ground rosemary, ground sage, and ground thyme. I don't really know how much of any of that stuff, just what felt right.
I shoved about 1/3 of that concoction into the turkey. Then I sprinkled ground black pepper, ground rosemary, ground thyme, and kosher salt all over the bird. Set it in the electric roasting pan, and let it go.I've come to really like the electric roasting pan -- I can get it out of the way, and it leaves the oven for all of the other stuff. I only have the mess with it when I am basting -- which is generally about every 20 minutes after the first hour of cooking.
I took the offal from the bird -- you know, the little packet of stuff in the turkey that you generally throw away -- and put it in a 4 quart saucepan with some thyme, rosemary, salt (probably 1/4 cup), and ground black pepper over low heat and let it simmer for the next 3 hours. I never have a specific plan for this stuff … it's just handy to have when you need some liquid for something. Since the offal soaked in the same brine as the turkey, some of the same flavors will come through. So let it simmer for a while knowing that the meat can be thrown away once you've cooked the flavor out of it.
Ross stepped into the kitchen at some point here to make his cranberry sauce. Started with fresh cranberries -- 1 lb of them, and added in 1/2 cup of OJ (use the stuff you would want to drink) and 1 cup of honey. Sounds like a lot, but you end up with cranberry sauce that is sweet and tart. Just let it all boil on the stove for about 15 minutes. If you want, after 15 minutes, throw a stick blender in there and smooth it all out (let it cool off for a few minutes first). We didn't blend it -- Ross likes cranberries and wanted the chunks in there.
When it comes to potatoes, we used yellow potatoes -- they are awesome for making mashed potatoes -- naturally buttery and smooth. Boiled them in water with no salt (surprise!). Near the end of the cooking time, I took 1 stick of butter (we had 2 lbs of potatoes cooking, so that much butter seems appropriate), and melted it in a small sauce pan. I added in some of the broth from the offal and added in some milk and let it all warm up. You could easily use all broth here. The potatoes would be a little less creamy, but still just as good. Mashed em up with salt and pepper -- nom nom.
By this point the turkey was done, so I lifted it out, and let it set to rest. Now is the time for making some gravy. My 2nd favorite part about cooking a turkey is the gravy (the favorite part is yet to come). Since it is really hard to tell if the meat will be moist or not, I like to have lots of gravy. In this case, I took the drippings from the bird, and then added in some of the broth from the offal to make 8 cups of gravy juice. Mixed up a roux and made the gravy. It turned out so good that a guest took some with him to the next meal he was scheduled to attend. What's great about it is that the flavors from the brine come through in the gravy -- so in this case it tastes like turkey with a hint of thyme and apple. It was really pretty good.
After the meal comes my favorite part of cooking a turkey. I picked as much meat as possible off of the carcass, and put all of the meat in the fridge. Then I put everything that you would probably be thinking about throwing away -- bones, skin, all of it, back into the roasting pan. I filled the roasting pan with enough water to cover the carcass, and dumped in a couple of handfuls of salt. I also put in the rest of the ground rosemary & thyme, & a good handful of black peppercorns. We washed off the rest of the celery, and broke it into pieces (nothing fancy here -- literally broke with our hands) and put it in. Same thing for around 2 lbs of carrots. 2 large onions got cut into quarters and went in (paper and all) along with 2 full heads of garlic (paper and all). We has also cooked a small ham for dinner this year, so I also put the ham bones in.
I put the lid on the roasting pan, and set the temperature at 200 degrees. The temperature is important. The goal here is to melt all of the collagen out of the carcass without breaking the collagen down. (If you've ever eaten soup that seems to stick to your tongue in a good way, that is from collagen). As much as possible, keep it on the verge of boiling, without actually boilng. On my roasting pan, 200˚ seems to fit the bill nicely.
As I sit here and write this, the stock is still cooking away and the house smells amazing. I think I'll probably end up with around 2 gallons of stock -- maybe more. It's been cooking for 18 hours or so, and I can probably process it at any point . The best way to tell if you've gotten everything you can is to pull out one of the turkey bones and let it cool off for a couple of minutes. If you can crush it with your fingers, then that carcass has nothing left to give.
Once the time is right, get all of the big stuff out -- the bones, the veggies, etc and throw it all away. It's got nothing left for you. Strain the stock through a sieve a couple of times to get all of the nasty bits out. Then let it cool. If you want, you can put it in the fridge over night, and then pull off the solidified fat from the top of the container. If you do that, have a look at the stock -- if you got the collagen, it will look like turkey flavored Jello. Sounds nasty. But cook some pasta, and pour some of this stuff over it (warmed up) and tell me that it isn't the best soup you've had in a good long time.
The last thing that I'll do will involve the gravy. I had a lot of leftover gravy, since the turkey was moist this year. So I'll probably take some left over meat, all of the gravy, some of the stock, and some veggies, and make a stew. Maybe I'll do that for lunch right now ...
In my previous post about keeping unsavory things off of your network, I made an analogy between DNS and the Contacts database on your mobile phone. As I was explaining this to someone the other day, I used the analogy of a phone book. I pointed out that back in the day, if my parents didn't want a phone number to be accessible, then they could have blacked it out of the phone book with a marker. Such an act would have effectively made that number impossible to find. And that is essentially what Open DNS will do for you.