Google Analytics

Sunday, July 29, 2012

BBQ Tests - how long at temperature to produce pullable BBQ?

I wanted to determine how long it would take, at a given internal meat temperature, to produce pullable BBQ.  So armed with a thermocouple and a Sous Vide machine, I took some tests.  I was hoping to insert the spreadsheet that has the data, but so far, I haven't been able to find a way to do that...still evolving.

Here's a summary of the data:


The purpose of the test was to allow me to obtain some data that would allow me to select a desired time (just like my need for 6 hours today!), and then determine what the temperature should be held at for the meat's internal temperature.  The data was obtained from a thermocouple inserted into the middle of a controlled cross-section of pork shoulder (boneless).  It was then cooked in a Souse Vide machine (in a bag to keep out the water), at a controlled temperature (+/- 2 degrees) until the meat (in my subjective judgement) was pullable.

The test was to determine the length of time necessary to produce pullable meat if  the internal temperature of the meat was held at a controlled constant temperature.  The time to cook at temperature is started when the meat reaches the stated test temperature.  It does not include the time to bring the meat up to that controlled temperature. That's very important to understand.  Since bigger pieces of meat require longer to come up to temperature, that time would vary depending on the size and shape of your meat.  However, once it's up to the controlled temperature, the question was - how long does it need to remain at this temperature before it becomes pullable (and that's subjective based on what I consider pullable).

So here is the summary of the data.  

Controlled Temperature                Time at Temperature to become pullable
145 dF                                        41 hours
155 dF                                        31 hours
165 dF                                        14.5 hours
175 dF                                        bad data - temperature probe pulled out
185 dF                                        5.25 hours
195 dF                                        2 hours

I did a scatter-plot of the times, and they are predictable.  

Tuesday, July 3, 2012

Banjo's Perfect Smoked BBQ Ribs

Searching for the Holy Grail of best combination of time and temperature!


Fall off the bone, tender, with just enough tooth and juice to make you come back to these for the rest of your life!

I've been doing a series of tests for BBQ Ribs recently.  I've done twelve (12) tests in the past six (6) weeks, or two (2) tests per week!  And there's just two (2) of us!

Before you think we are overloading on pork, I buy three (3) racks of St. Louis-style Spare Ribs.  I take out all three (3) racks, and cut them in half, so I have six (6) half-racks.  I place two (2) of these half racks into two (2) seal-able freezer bag and place into the freezer; that takes care of two (2) of the racks, leaving one rack unfrozen.

Each test was conducted with a half-rack of ribs.

I take half of the remaining whole rack and place it into the refrigerator for cooking later during the week.  The other half rack I cook tonight!

During these tests, I'm looking for one thing: the best combination of temperature and time that produces mouth-watering, lip smacking, finger sucking ribs!

And, I've found them.

And I'm going to share it with you.

The Conclusion:
215 dF, for three (3) hours, produces the best ribs!

My Smoker
I have worked on my smoker so I can precisely control the temperature.  I can add as much charcoal as I want with out the temperature getting out of control.  This is important! Your smoker should be able to have as much charcoal added as you need for three (3) hours of smoking these ribs, without changing the temperature.  If your temperature varies by the amount of charcoal you have in your smoker, then you have air leaks, and should take the time to fix them.  However you accomplish it, whether by controlling the amount of air, or controlling the amount of charcoal, you must maintain 215 dF!

My temperature Gauge
It's important to accurately know what your temperature gauge is reporting.  This means you've got to start with an accurate temperature gauge!  This means you've got to pull it out and calibrate it!  I live at about 1,100 feet above sea-level, which means water is going to boil at about 110 dF (1 dF lower for each 500 feet above sea-level).  So I bring a big pot of water to a rolling boil, then immerse my temperature gauge (the probe end) into the water, making sure the probe isn't coming into contact with the sides or bottom of the pot!  Then I use a small wrench to adjust the temperature until it reads correctly.  You do this by placing the wrench on the nut, and twisting the outside of the dial, rotating the face of the dial until the needle reads correctly.  BTW - I haven't found many digital gauges to be accurate, and no way to calibrate.  If you have a digital one that you can calibrate, then go for it!

It's also important that your gauge probe be at the same level in your smoker as your ribs. If it's not, then I would put an oven gauge onto the rack near, but not touching, the ribs, and use that for my initial setup.  Once you know the difference between what's shown on this oven gauge vs. the gauge on your smoker, then you know what mental adjustment you need to make when reading your temperature gauge in order to get 215 dF.

Prepare your ribs
I just add sea-salt and fresh ground pepper to mine, coated liberally.  I sometimes put a rub on mine, but when I'm testing, I never put a rub on because I just want to be able to judge the ribs themselves without searching for the answer.  Feel free to adjust your ribs as you prefer - but do not put any sugar based sauce on them at this time, as it will burn!  Save any thick sauces until the last ten (10) minutes.

Prepare your Smoker
I set my smoker for 215 dF.  I let it come to temperature, and let it stay there for 30 minutes, so that I know I've got the temperature rock-solid and under control.  I use charcoal.  In the past I've used lump, and have even made my own charcoal, but right now, I'm using Kingford's Competition charcoal-briquettes.  I really like these.  (I'm not associated with Kingford's in any way, nor receiving any type of awards from them for this statement - it's my honest opinion).  Place enough charcoal into your smoker so it will last for three (3) hours without peeking in!  After the end of the thirty (30) minutes of settle-in time, put your wood chips on top of the briquettes.  This is done just prior to putting your ribs on!  I use a chunk of wood about the size of my fist.  I like Hickory, and I like Mesquite, but use whatever you like!

Place your ribs into your smoker
This may not seem obvious, but it's important to have your ribs at the same point (or as near as you can get) to your temperature gauge!  A difference of 4" can cause a temperature difference of 25 dF!

I like to put my ribs on my smoker meat-side-down.  This means the silver-skin is facing up.  Some like to pull this off, others don't care.  I don't really care, but I do want that side up!

Close up your smoker and wait three (3) hours!
Have a brew!  If you want to add any thick sauce, do this in the last ten (10) minutes.

Taking off of the smoker
I take them off, put them onto a platter, take them inside and place meat-side-down onto a cutting board.  I cut each each rib separating them from the other ribs.  Then I wrap them up in foil until everything else is ready....seems like someone, or something is not quite ready!

There are twelve (12) bones to a rack
There are twelve (12) bones to a whole rack, and six (6) bones to a half rack, to be divided among your guests.

If you cook on multiple racks (e.g., so many ribs they won't all fit on one rack)
Then you really should do a test run, with some ribs on one rack, and some other ribs on another rack.  I didn't do that the last time I had guests over, assuming that the 4" difference in rack height wouldn't make much difference - boy was I wrong!  The ribs on the lower rack, which was the basis for all of my tests, was perfect - but the rack 4" higher, those ribs were done but tough!

Let me know your results!


Banjo
  

Tuesday, June 26, 2012

Banjo on - AVR Bootloader with USBtinyISP

I've been really struggling with something that just didn't make sense. Part of the reason is incomplete information on my part.  But part of that blame goes to those that are selling ISP programmers in not making this clear.

I'm going to put this here in the hopes that it helps someone, and also so I can refer back to it in the future!  However, this post is going to be subject to change as I learn more or need to correct it.


I built this Minimilast EvilMadScientist board for ISP programming, an ISP (In System Programmer).  Only it didn't work for me.  There wasn't a problem with the board; there was a problem with my understanding.

I had this device (USBtinyISP) to use to with the board above.

I never could get things to work...until I found out ONE THING...

When you buy an ATMega328P without a bootloader, by default it comes with the fuse set for using the internal crystal.  However, if you place a bootloader on this chip via an ISP such as the USBtinyISP above,   then it changes the fuse to use an external crystal....at least that's my understanding right now, and it appears to be right based on ability to now place a bootloader on a chip.


Burning a Bootloader
So, here's my understanding of how to place a bootloader onto a chip that doesn't have a bootloader.  It will use the AVRDUDE to load the data, and it will need to have an device driver installed for Windows (I don't know about Linux of Mac).  See this for details and a link, and scroll down to the Description section for info on this.

Now:

  1. Place the chip onto the device that will hold the chip, such as the Minimalist EMS board above.
  2. If it's a new chip and doesn't have a bootloader on it, then you can use the USBtinyISP to program it by connecting the USBtinyISP to the header on the board.
  3. Using the Arduino 1.0 IDE, select: Tools->Board->Arduino Duemilanove.  This is what I have to do on mine to get it to work....not sure why this matters; I could be wrong, since we aren't communicating to a board in this case.
  4. Again, on the Arduino 1.0 IDE, select: Tools->Programmer->USBtinyISP.
  5. Again, on the Arduino 1.0 IDE, select: Tools->Burn Bootloader.  If this doesn't work for you, then I can't help you yet as I don't know enough yet!  So have a look at this site and also anything else you can dig up via google.
If you've got a chip that you want to add code to it, and it has had a bootloader on it before, and for some reason it won't work anymore (e.g., gets a synch problem from the Arduino 1.0 IDE), then you may need to reload a bootloader.  However, if you need to do so, the fuse may have been set to use an external crystal.  So now, you are going to have to add an external crystal to the board, and then you will be able to push a bootloader onto it, and then use it in an Arduino board.  

NEEDS SOME MORE WORK

To transfer a file to a chip via the ISP and the USBtinyISP, you'll need to open a command prompt and use avrdude.  Note that this approach, not using the Arduino IDE, and directly using avrdude, means you are going to be transferring a HEX file.

How do you get a .hex file?  Well, it's actually produced each time by the Arduino 1.0 IDE.  You don't normally see it because it's placed into (at least on my computer!  Your's may differ!) C:\Users\\AppData\Local\Temp\.  (Note: you can probably change the Arduino 1.0 IDE preferences.txt to put it somewhere easier to get to).  (Note: AppData is a hidden directory, so you'll have to enable it in your file folders setting to even be able to find it! - one way to locate it is to do a file search for the file.)

On my sysem, doing the compile under Arduino 1.0 IDE for my Blinky2.ino produces a hex file named Blink2.cpp.hex, and places this into a new file folder (see the date/time stamp on the folder) in the AppData folder.  This is the file I'm going to transfer!

And here's how I'm going to transfer it to the chip.  If the chip has a bootloader on it, this is going to overlay it, so the bootloader won't work now on a Arduino.  So you just got 2K back from not having a bootloader.  However, if this chip had a bootloader on it at some point, then the fuse is set for external crystal, and won't run unless you either change the fuse setting (I'm not getting into that here - search google), or have a crystal on the target board.  It's also going to have to be there for the transfer to work!

Here's the command line (in a command window) that's going to do the transfer (make sure you've installed WinAVR per the link above with the driver info - if you get a 'command not found' error, then either your PATH isn't set up in your environment variables, or you haven't installed the drivers and WinAVR).  
        
         avrdude -p m328p -c usbtiny -U flash:w:Blink2.cpp.hex

Vertical Smoker Mod

Making my vertical smoker breath right!

I have several smokers, one of which is a 'Great Outdoors - Smoky Mountain Series'.

Some things I really like about this smoker, but some things were really, really wrong with it.  So this post is about fixing the things that were wrong!

1st Picture: Leaky Vertical Smoker
As you can see from the first picture, there is exactly one door latch on the smoker, located on the right side of the door at the midway point - the coil spring you see.  This latch holds the door against the frame - at this point only!

The top and bottom aren't pulled tight, so inlet air comes in at bottom half of the door, and exhaust air goes out the top half of the door.  Ican see it leaking the exhaust smoke.  Of course, I can't see the inlet air going in, but I know it's there because it's difficult to control the temperature!











2nd Picture: Left side
Inlet air damper control
(with modification)
There are two (2) inlet dampers (see second picture of left side - it has some holes that are part of the modification), one on the left side (at the bottom), and one at the right side of the smoker.  Turning this plate allows more air in, or less air in.  There is one (1) outlet (exhaust) damper located on the top of the smoker (not shown).  Turning this plate allows more air out, or less air out.
















I was consistently having problems with this smoker.  Once it started warming up, even with the inlet dampers fully closed, and the exhaust damper fully closed, the temperature would keep climbing, and of course I could see lots of exhaust smoke coming out around the door, and I knew that air had to be drawn in at the bottom to feed the fire, making the temperature rise, past where I wanted it...


So, if I was going to ever make good BBQ with this smoker, I had to figure out a way to either make the whole smoker air tight, or I was going to have to enclose the fire in such a way that the fire was air tight.  After considering different ways to accomplish this, I opted for what I thought would balance the multiple goals of easiest, cheapest, least time involvement, while ensuring success.  I decided to enclose the fire, by placing the fire inside a piece of black stovepipe.  I would use the existing inlet air to feed air into the stove pipe, and the other end of the stove pipe would be the exhaust, with the charcoal and fire being in the middle.  I decided to also use a T stove pipe piece to facilitate adding charcoal and lighting it.

Imprecise temperature control makes for bad BBQ!


Here's How I Fixed the Problem
I went to Lowes hardware store and bought a 6" T stove pipe connector, and two (2) 6" stove pipe endcaps (one male, one female).  The stove pipe T has two female 'ports' - one end and middle; the other end is male.

3rd Picture: Smoker after mod.
Black stove pipe T
at bottom, connected to left
sidewall of smoker via
end-cap.  Right side is
capped off with end-cap.
Brick under right end to
support weight of T.
This is a picture of the modification after installation.  Simple, quick, and most important....it works!

There's charcoal in the T, and it's producing some smoke, which is rising up from the middle 'port' of the T.  The right end is capped off with an end-cap, and there's a brick under the right end to support the right side of the T.























STEPS
- One end of the T is going to be closed off; in this case, it's the right end.  I slipped an end-cap onto that end.
- The middle of the T is going to be the exhaust.  I didn't do anything with this opening, except to make sure it was pointing up when everything was finished.
- The left end of the T is going to connect to the left-side inlet air damper control.  To simplify this connection, I used the other end-cap, where I first drilled holes in it to correspond to the opening on the control damper, where air could flow in when the damper is in the open position.  I secured this using the same screw that attaches the inlet air damper to the sidewall.
- Once I had the left end-cap secured to the left-side of the smoker, I slipped the T into position, and inserted it into the left side end-cap.
- I made sure the middle of the T was pointed up - this is the exhaust.
- I filled up the T with charcoal, and lit a couple of pieces on the top of the stack of charcoal that is within the T.

I use another end cap that I have sitting around to put wood sawdust into for smoking, or just place whole chunks directly into the middle of the T where the charcoal is burning.  Adding charcoal or smoking-wood is easy as opening the door and placing into the middle of the T.

Sometimes, I found that using an end-cap upside down, I can block some of the exhaust coming off of the T, and that helps cut down on the smoke coming out of the door.  It also lets me use the top damper with more precision.

Hope this helps you if you have a similar problem!

Tuesday, June 19, 2012

Banjo's Stove Pipe Smoker - BBQ Smoker


This will track my design and build of my new Stove Pipe Smoker.  It will utilize single wall black stove pipe for the combustion chamber, and a small barrel for the smoking chamber.  I'll update as I move along with this project.  Have included a conceptual design for reference.


Banjo's Stove Pipe Smoker
-Conceptual Drawing-

Banjo's Stove Pipe Smoker
-Combustion Chamber Detail-



















First, the title is 'Stove Pipe Smoker', because the stove pipe will be a major component (the combustion chamber), but I will also be using a small barrel with grates for holding the meat.  I wanted to keep the title short, so hope you feel OK with that for the title, and also it is the major difference between this smoker and any I've ever seen.

Design goal:
This will primarily be used as a smoker for ribs, and only a couple of racks - maybe 4 max.  I want to be able to burn charcoal in it (lately have been impressed with Kingsford Competition Grad), for about 3 hours or so, without having to add any charcoal.  I hope to have a premeasured amount of charcoal that will be good for 3 hours at 225 dF before it starts to taper off.  I want it to be air tight in the combustion chamber, so I can easily control the temperature.  For an average day (wind wise), I want to be able to set-and-forget the temperature controls (inlet and outlet dampers) for the whole burn.  I want it to be inexpensive and easy to build for anyone that wants to build one.

Design  
I will be using:

1 - a small barrel, standing upright on three (3) legs, for the smoke chamber.  I'm not sure of the dimensions of this barrel (yet), but I have a couple downstairs.  They are much smaller than a 55 gal drum, about 3 feet tall, about 2 feet diameter.  Will publish dimensions later.
2 - a 6" or 8" length of black single-wall stove pipe, connected on the bottom of the upright barrel, which will be the combustion chamber.  This will also be oriented vertical.
3 - bottom of the combustion stove pipe will have a stove pipe end-cap.  Removable for ash dumping.
4 - small valve (something like used on the UDS I've seen) inlet air control on bottom, possible offset to decrease ash disturbance.
5 - wire supports to support charcoal about 4 inches off of the bottom to allow for ash collection.  Will fine-tune placement after testing.
6 - handle on combustion stove pipe to aid in removal from smoke chamber.
7 - combustion stove pipe connects to bottom of smoke chamber via stove pipe end-cap, held with screws, into bottom of smoke chamber.  2" hole in this end-cap to allow smoke to move from combustion chamber to smoke chamber.
8 - 2" hole in bottom of smoke chamber to allow for entry of smoke from combustion chamber.  Lines up with hole in combustion chamber.
9 - exact size of hole that mates combustion chamber to smoke chamber to be determined via testing.
10 - diffuser plate in in bottom of smoke chamber, over inlet smoke hole, to create turbulence in smoke so it doesn't flow straight up.  This also blocks any direct infrared from combustion chamber.  Can also sit a drippings pan here, or up one level on grate.
11 - exhaust with damper located on top of smoke chamber
12 - no doors on smoke chamber nor on combustion chamber
13 - removable lid on smoke chamber.
14 - combustion chamber removable from smoke chamber, held in place through wire-dogs.
15 - ground clearance of at about 6" below bottom of combustion chamber, more if testing dictates.
16 - 3 legs, connected to sidewall of smoke chamber, tall enough to provide clearance under combustion chamber to ground.
17 - handles for ease of moving.
18 - meat racks from weber-style round grills, 2 or 3.  One may  be used for drip pan on bottom.  Supported by L-brackets (3 per rack) placed into sidewall of smoke chamber.  All will lift out via removing top of smoke chamber.


I've got the barrel, and some of the black single wall stove pipe.  Hope to pick up any additional parts needed today from Lowes or HD.

My plan is to provide pictures and a build-log as I go, with updates on any day I've worked on it.

Banjo

Some concept pictures:
Major parts - 6" stove pipe (left - combustion chamber)
small barrel (middle - smoke chamber 27" x 14.5")
lid(right).  Will be using a slightly larger barrel (28" x 19"),
but this was what I had at hand for the test build.


Concept, but without the legs (3 attaching to
barrel sidewall).  Looks a little unwieldly. May
switch to 8" stove pipe, which will allow me to
shorten height by 1/2.

Monday, June 18, 2012

Market change confirmed!

An interesting observation.


On June 8th, I posted a blog that I thought we might be at a market turning point.  This past Friday, June 15th, Investor's Business Daily (Investors.com) announced we had in fact turned.


When I'm daytrading (as opposed to my longer term investments), sometimes I'm long (buying first, then selling later, with the expectation that the market is going up), and sometimes I'm short (selling first, then buying later, with the expectation that the market is going down). At any given point on any given day, I will be long or short. I will typically be long and short at some point during the same day.

My day-trading futures strategy makes money, until it doesn't. 

Recently, after consistently generating profits, it started consistently generated losses. 

Which begs the question: how can something be consistently making money, then consistently losing money, with no change to the strategy, unless something is different about the market? I became convinced that there was something different about how the market was trading that was causing my to move from success to failure.

I pulled my daytrading logs, and did a little research from trades over the past year. 

I found that I go through this same change when the market is making a change from one direction to another. If I was successful while it was going up, then when it hovered prior to switching to going down, during this transition I experienced failures. Likewise, if I was successful while it was going down, then when it hovered prior to switching to going up, during that transition I experienced failures.

This was a very big surprise to me - not only that a strategy could suddenly switch like this, but it was also capable of prediction. In other words, the fact that my trading strategy moved from success to failure meant that the market was going to change direction. Once it moved from failure to success, then the new direction had been shown.

From my logs, I had been successful at trading until the end of July 2011, when the market bottomed, then I wasn't again until October, when the market moved out of a sideways correction to an uptrend. I started experiencing failures again at the end of November, when the market turned, and started being successful again at the end of December, when the market turned. I started experiencing failures again in April, then success again in May, followed by problems at the first of June, followed by successes again last week. 

On June 8th, 10 days ago, I noted on my blog that, based on the shift of my trading strategy from success to failure, the market was at a turning point, changing from 'downtrend' to 'uptrend'. The market had been in a downtrend since the first part of April, 2012.

This past Friday, as noted by Investor's Business Daily (Investors.com), the market has changed from 'Market in Correction' to 'Market in Confirmed Uptrend'.

So, in other words, my trading strategy's shift from loss to profit, led me to predict on June 8th, that the market had changed direction from downtrend to uptrend, and on Friday, June 15th, the Investor's Business Daily announced this change in market direction.

So - here's what I've learned:
1 - my strategy is successful when the market is moving in a direction, up or down.
2 - my strategy fails when the market is in a transition, moving sideways.
3 - my strategy predicts the turn from a direction to moving sideways.
4 - my strategy predicts the turn from moving sideways to a direction.
5 - I need to employ a different strategy while the market is moving sideways, and abandon my original trading strategy, when the market is in a transition. 

This has been pretty fascinating to me!

Thursday, June 14, 2012

Banjo cooking BBQ Ribs

Well, I'm stunned. I've been cooking BBQ for 26 years, but never cooking what I consider to be competition grade ribs....until tonight! 

Yes!

As I mentioned about a month ago, I was starting a series of test on cooking BBQ ribs, until I got it right. I bought a rib package from Costco, which contained three (3) racks of St. Luis style pork spareribs. I split these in two, and cooked that half rack for a test. Pat and I then split that 1/2 rack, so we ended up with a 1/4 rack each - or 3 ribs each, which is about 4 oz of meat. So 1 package from Costco was good for 6 tests, with six small portions for two people over the past month.

Tonight was Test #10! And it was a success! I have never had ribs this good, any where, any time. No sauce, nothing to hide the flavor or mask the mistakes. No rubs, no seasonings, just naked ribs.

They aren't perfect. The smoker I'm using has some air leaks, so I am having some difficulty controlling the temperature. It's looking like I may have to weld-up my own rib smoker in order to have complete control over the temperature - I've been working on some plans.

But they're still the best ribs I've ever had, any where, any time...and when I have full control over the smoker, I looking for the champs!

Friday, June 8, 2012

A Market Turn?

A couple of weeks back I posted an entry in this blog that I was declaring success in my daytrading of the E-mini S&P 500 futures.

And then suddenly, the style that was giving so much success, quit being successful.

So I pulled my trading logs, and reviewed the last year, and noted something that I feel is important for me: I start losing at market turns.  In other words, during an uptrend, and during a downtrend, I consistently make money.  But at the point where the market is turning, I consistently lose money.

One way to look at this, is I have a tool that says the market is turning!


And, assuming this insight is correct, then it is saying we are having a market turn right now, starting with Monday June 4 2012. That day was the last day, that I made money all day long, on every trade.  Every day since then, Tue - Fri, I lost.  And it was the first loosing week in a month.


It doesn't say for how long it will be heading up, just that it is turning!

UPDATE: Investors.com (Investor's Business Daily), on Friday June 15th, said the market changed to an uptrend.  Here's my new post on this.

Monday, May 7, 2012

Tall Ship's Challenge 2012

We are on Tybee Island, GA (May 7 2012), waiting for the Tall Ships  Challenge 2012 to pass by our 3rd floor condo.  They should come into view at about 1:15 PM EDT today.  There are 12 ships in total.

We have an excellent view!  I will posting some pictures today as they pass by!

Monday, April 23, 2012

Banjo's Best Crab Cakes - Ever 2012!

Banjo's Best Crab Cake 2012 Award goes to.....

While hundreds, if not thousands, of coveted dining establishments anxiously await the Banjo's 2012 Best Crab Cake Award announcement, it was a late entrant that swept the judges taste buds on the way to the alter!

Coco's on Tybee Island GA, and which is located here on Google Maps!  Wonderful!  We've eaten crab cakes our entire life, starting at Calabash NC, Tampa FL, Pensacola FL, Charleston SC, Myrtle Beach SC......

and the WINNER (Tadah! Tadah! Tadah!)of the 2012 Bajno's Best Crab Cakes on the Entire Eastern Seaboard of the United States of America is.....

Coco's on Tybee Island, GA.

Every night at Sunset, Mary, the bartender/server, gets everyone up for a CONGO DANCE LINE!  All patrons, both young and old, are required to participate in the Sunset Dance Line that tours the dining room!  Mary leads the Congo Line for the Sunset Tour!  Summer months it stretches down to the docks and back!

Hat's off for 30 seconds please, and a deep bow to Tracy and her staff at Coco's!

and ... thanks to a wonderful bartender/server, who managed to double our bill by suggesting the great, wonderful 'Fried Strawberries" goes to.... MARY!  and - the unknown chef who prepared them!

YEA!  Blow your horn Mary!

Tuesday, April 17, 2012

Nothing better...

There's nothing better than sitting on a porch, when the temperature is "just right", and it rains, and you're in a rocking chair, and you can smell the fresh rain, and you can feel the temperature drop, and you can hear the birds, and you've got a little jazz playing.

And, a little beer helps.

Sunday, April 1, 2012

Arduino - Obtaining User Values Using Potentiometer


Obtaining User Input to an Arduino Using a Potentiometer

(code example at end)

There are many times where it's convenient to enter in values using a simple potentiometer instead of a GUI interface. An example would be whereby a user wants to set the desired temperature on a thermostat.

A potentiometer has three (3) leads coming from it. Typically, the center lead is the 'wiper'. The wiper has the ability to vary the resistance from one end of the potentiometer to the other end.

A potentiometer has a maximum resistance between two leads, typically the first and last lead, and an ability to vary the resistance seen on the other lead, the wiper.

Another way to think of this is to realize the potentiometer's wiper has the ability to provide 0% through 100% of the total resistance available through the other two (2) leads.

Per Ohm's law, which states the interaction between three (3) entities – resistance, voltage, and current – if a resistance is connected to a voltage source, than there will be a voltage drop across the two ends of the resistor.

A potentiometer is a resister that also includes a third lead – the wiper, can can move between the two ends of the resistor, and is capable of varying it's resistance while doing so. Because of this, the wiper lead sees a different voltage.

The voltage at the wiper can not be more than the maximum voltage connected on the voltage-in side of the resistor, when measured to the other end of the resistor. Likewise, the voltage at the wiper can not be less than the minimum voltage connected on the voltage-out side of the resistor.

So the voltage seen at the wiper will vary between 100% of the voltage at one end of the resistor, and 0% of the voltage at the other end of the resistor.

In a linear potentiometer (as opposed to a non-linear potentiometer, such as an 'audio' potentiometer, which is logarithmic), turning the potentiometer 5% clockwise will result in a change in the resistance seen at the wiper, by 5%. If there is a voltage applied to the first lead of the potentiometer, and ground and the last lead of the potentiometer, then this 5% change in the resistance will result in a 5% change in the voltage.

The voltage will drop across the potentiometer's wiper. Remember, it will either be at 0% of maximum, or 100% of maximum, or anywhere in between, but can not exceed those two values.

When working with an Arduino, I'm not typically concerned about the actual voltage present at the wiper. Instead, I'm concerned about the position of the wiper. For instance, when using a potentiometer to turn a setpoint up or down for a thermostat, I'm not interested, as a user of the thermostat, of the voltage that is being changed; instead, I'm interested in the temperature represented by the potentiometer, and how I'm changing it.

For this reason, when using a potentiometer in an Arduino circuit, I'm typically using it as a ratio-device. I'm more interested in the ratio, or percentage, of the position of the potentiometer's wiper, not the voltage being read at the wiper.

Here's what I mean by that.

On my porch heater thermostat, I have placed a potentiometer, which I use to set the temperature that I desire the porch to stay at. By setting the potentiometer's value, I am setting the temperature I desire for my porch.

If the potentiometer is connected at one end to a 5 volt power supply, and the other end is connected to ground, then the wiper, when turned, is capable of being at any voltage between 5 volts and 0 volts, inclusive.

But I don't set my porch heater to a voltage, I set it to a temperature.

On my porch heater, I decided I wanted to be able to specify (the setpoint), a temperature between 70 dF and 75 dF. That's a 5 degree F range. Thinking in percentages, 0% would be 70 dF, and 100% would be 75 dF. 50% would be half way the range of 5 degrees, or 2.5 dF. Since my bottom temperature is 0% at 70 dF, and 50% is half way between a range of 5 dF, thus the 2.5 dF, then that 2.5 added to the 0% of 70 dF is 72.5 dF. So, if I set my potentiometer to 50%, I'm actually setting my temperature to 72.5 dF.

Well, OK, you might be thinking, but how do I get voltages and percentages into temperature?

That's where software comes into play – the flexibility of software.

I'm constrained by the hardware here – the only thing I've got to work with here is the voltage, and it is going to range between 0% and 100% of the total 5 volts available. The Arduino is capable of reading the voltage. So it's capable of reading the 0 volts through 5 volts that are being supplied by the potentiometer. But that's all it's directly capable of doing using its Analog to Digital Converter (ADC).

So anything I want to do with the Arduino, in reading an external voltage, is going to range between this 0 volts and 5 volts. And the Arduino, in converting this analog value to digital, has the capability of dividing that 0 – 5 volts into 1024 equal divisions, because it has a 10 bit ADC converter. (Take a calculator and see what 2^10 gives you). The calculator will show you that 2^10 is 1024 individual values. But, since we are starting at 0 instead of at one, then the range is 0 – 1023.

So the Arduino converts the analog 0 – 5 volts to a digital value of 0 – 1023.

Here's where the ratios make everything simple, so it's important to understand this.

The ratio, or percentage, of the 0 – 5 volts is the same ratio, or percentage of 0 – 1023.

For example:
  • a voltage of 5 volts at the wiper, is 100% of the 0 – 5 volts. Likewise, it is 100% of the 1023 value, or 1023.
  • a voltage of 2.5 volts at the wiper, is 50% of the 0 – 5 volts, or 2.5 volts. Likewise, it is 50% of the 1023 value, or 512 (integer, not floating).
  • A voltage of 0 volts at the wiper, is 0% of the 0 – 5 volts, or 0 volts. Likewise, it is 0% of the 1023 value, or 0.

What that means, is if you can convert the input value to a ratio, or percentage, then you can apply that percentage to anything.

For instance, on my porch heater, I read the potentiometer, and get back a count of 256. To convert this to a ratio, then I'm trying to find out what percentage is 256 of the total 1024? So I'm going to divide 256 by 1024, and that will give me 25%. From a voltage standpoint, 25% of 5 volts is 1.25 volts, but I don't care about this at all. I'm only concerned with the percentage, which we've determined is 25%. But I am concerned with temperature, and my temperature range, 0% - 100% is 70 dF – 75 dF, which is a range of 5 degrees F. So 25% of the range of 5 degrees F is 1.25 degrees F, and since my base is 70 dF, and I'm 1.25 dF above that 0% value, then I'm at 71.25 dF.

So you can apply this to anything, and it's what makes a potentiometer so powerful in any circuit you are building.

The hardware gives you the range of 0 – 5 vdc, 0% - 100%, the ADC gives you 0% - 100% of 0 – 1023, and then using software, you choose what you want that to represent. In my case, I wanted that 0% - 100% to represent 70 dF to 75 dF for a porch heater. But for my Sous Vide cooker, I want that to represent 150 dF – 200 dF, which has a range of 50 dF, and using the previous example of 25% of the potentiometer, and 25% of the max 1024 counts, then I'm now talking about 25% of the range of 50 dF, or 12.5 degrees F above the base of 150 dF, or 162.5 dF.

Using software, you decide what the final values are that you are representing with the potentiometer. Then taking the percentage of the potentiometer, and the percentage of the maximum counts of 1024, you can directly apply that to whatever you are doing – RPMs, population, weights, valve opening, whatever.

Here's a coding example.

Assume we are wanting to set a desired temperature onto a thermostat. Further assume the thermostate will be capable of setting the temperature anywhere from 70 to 75 dF. Assume we will use analog pin A0 for the wiper on the potentiometer.

void setup() {
     pinMode(A0, INPUT);
     Serial.begin(9600);
}

void loop() {
     float setpoint = 0.0;
     float volts = 0.0;
     int counts = 0;
     float ratio = 0.0;
     float baseTemperature = 70.0;
     float tempratureRange = 5.0; //75 dF – 70dF = 5 degrees F range

     //get the potentiometer's wiper value in counts, 0 – 1024
     counts = analogRead(A0);

     //get the ratio of the counts as a percentage of mximum
     ratio = (float)counts / 1023.0;
     
     //using the ratio to calc the voltage (maximum of 5 vdc). It's not used, but just for fun.
     volts = 5.0 * ratio;  //we have a max of 5 volts

     //now get the setpoint temperature
     setpoint = (ratio * temperatureRange) + baseTemperature;

     //that's all there is to it!

     // now print this out
     Serial.print(“counts: “); Serial.print(counts);
     Serial.print(“, ratio: “); Serial.print(ratio);
     Serial.print(“, volts: “); Serial.print(volts);
     Serial.print(“, setpoint: “); Serial.println(setpoint);

}


Saturday, March 24, 2012

Goolsby's Sausage Patty Melt

Man, oh man, do I love a good Sausage Patty Melt!

My wife, The Queen, made me great one today!  I've just finished it, and it's better than any I've ever had at Waffle House!

In case you aren't happily familiar with Sausage Patty Melts, it consists of fried sausage, on toast, with a thick slice of onion, coated with mustard, along with a dash of Tabasco sauce, and topped with cheese.  Man, oh man...

Today she made her's with Goolsby Sausage, which has become our favorite sausage, bumping out previous first place go-to sausage king Jimmy Dean Sausage.  See my other Goolsby's Sausage recipe here.

Here's the recipe:

Ingredients

  • 4 patties of Goolsby's Sausage.  We buy ours at Costco.
  • 1 thick slice of onion
  • 2 pieces of bread, preferably thick slice Texas Style, but any will do.
  • 2 pieces of sliced, extra sharp cheddar cheese
  • Mustard
  • Tabasco
  • Cooking pan with lid
Cooking Instructions


  • Cut a thick slice of onion.
  • Use cooking instructions on box for Goolsby's Sausage.  These sausages are preformed and frozen. 
  • Once sausage is done, reduce heat and remove sausage from pan.
  • build up the patty melt
    • Place slice of bread onto plate.  
    • Place all four pieces of cooked sausage onto bread.  Some overlapping may occur, but that's OK.
    • Cover sausage with mustard.
    • Add any desired Tabasco sauce.
    • Place onion onto mustard
    • Place cheese onto onion
    • Cover with remaining slice of bread
  • Transfer back to pan
  • Set temperature of pan to medium.
  • Cover pan with lid.  This will help the cheese to melt.
  • Cook until toasted on first side.
  • Flip to other side
  • Cook until toasted on second side.
  • Remove and serve with strong, black, coffee.
Enjoy!


Friday, March 23, 2012

Banjo and Wife Take Tai Chi Lessons



What my wife looks like doing Tai Chi
My wife and I have recently started a Tai Chi class, attending once a week. She never looked better. She manages a grace that, so far, has eluded me.  I don't let that bother me.

Our instructor plays flute music. All Tai Chi instructors appear to do this. I think they do this to cover up the grunts. I played music all through high school and college, so I enjoy music. But this music doesn't appear to have a beginning or an end. It's always in the middle of whatever piece they are playing. It never goes anywhere. It starts in the middle, meanders around, and ends in the middle. Who thinks up music like this? I think they need some BBQ, then they can get somewhere, and have a start, middle, and end, instead of all this wandering around.

What I look like doing Tai Chi
We do things with our arms. And then we do things with our legs. The music facilitates this, as arms, legs and music are all wandering. Sometimes I just stand and stare at my arms – they are doing things I don't remember issuing commands to do. Sort of like autonomous arms, I guess. I don't know if this is good or bad, but I'm keeping an eye on them just in case they start to do something embarrassing or illegal. I don't think I'll be able to stop them, but I'm keeping an eye on them anyway.

I have to remember to keep my mouth closed. All this wandering about makes it want to gap open.

It's important to keep your toes pointed in the correct direction.  Mine want to wander.  Some people go barefoot, but I keep my shoes on so all my toes are forced to go in the same direction.  It's also important to use your head.  He hasn't said why yet, but I can tell by his looks at me that this is important.  Someday I'll figure this part out.  In the meantime, I'm busy keeping my toes pointed in the right direction, my head doing something as yet unknown, and my gaped-open mouth closed.  This all keeps me pretty busy.  My wife is not amused.  A husband can tell.

Sometimes we stand on one leg, and for some reason, yet unknown, we extend that leg. I'm glad nobody from my old hometown can see me like this. We don't go any where with it, just put it out there, then bring it back in and put it right back where it was before. We do it s-l-o-w. Then we do it again, except with the other leg. At least, I think we do.

Whatever.

Sometimes my arms do something like you might think a propeller would do, if a propeller had arms. It's been my experience, making buzzing sounds while doing this doesn't appear to be part of the approved plan. My instructor has a bald head; when he frowns, like when I'm making buzzing sounds, it goes up all the way from his eyebrows, up over the top of his head, and down his neck to his shoulders. You can see it. It's like one of those Chinese dogs – Sharpies, or something like that – the one with all the wrinkles - whatever. It's almost worth the price of admission to see that. But, seeing it once was enough – remember when they told you, as a kid, not to cross your eyes, or they might get stuck - so I don't do that any more – I don't want him stuck like that.  Did I say my wife was not amused? A husband can tell.

We do other things, all of which have names, but none of which appear to have anything to do with the names given them. We do brushing knees, first one, then the other. We brush them without touching them. It reminds me of how I cleaned my house when I was a bachelor.

We do parting horses manes, first the horse on one side, then the other horse. It's never the same horse, so I don't try to learn the horses names. It's probably better that way. It'd be my luck to get a frilly horse, one with ribbons that wants me to use a comb, when what I was really wanting was a Mustang, snorting and … oh, never mind.

We also push clouds around. Then we stand on one leg, push it out, then the other leg. But we don't go anywhere.  I can't tell if I'm pushing the clouds right or not; I can't see them.  I'm apparently the only one that can't see them, because everyone else is doing this with great enthusiasm.  I don't let that bother me either.

Sometimes, while doing things with our legs, we twirl our arms. At least, I twirl my arms; my wife appears to be doing some sort of smooth, silky ballet, performed with grace and elegance; what I do reminds me of hanging tobacco in barns to cure when I was a boy. No body accused me of dancing ballet then, nor are they likely to do so now.

Everything is done deliberately. There appears to be two speeds: slow, and real slow. I thought at first we were going slow so we could learn better, but I think the more we learn, the slower we are going. It might be the music.

I have to say I'm excelling at breathing. People are turning to stare, so I'm taking quite pride in that. It's apparent they think I know what I'm doing, and hope to learn from the master. I can also stand on one leg pretty good now, then the other. But I never seem to go anywhere.

I think things would work better if they got some new names for the different moves. I even wonder if they got them translated right. Wouldn't it be funny if, instead of parting horse's mane, it really meant baiting a hook?

Here are some names that I think would work better:

  • Pushing off a seat on MARTA. This would consist of lowering oneself onto one leg, while extending the other, to gently push off nappers so you can sit down.
  • One legged twirl. You extend one leg, holding it by the toe with one hand, while extending the other arm up in the air, all the while hopping on the other leg. I think the Russians have a dance similar to this, called the Putin Vodka Punch Roll.
  • Parting Lion's mane. This would consist of a quick forward thrust with one arm then the other arm, on a sleeping lion. This time, the legs are picking up and putting down as fast as they will go, and you are going somewhere, or else you're dinner.
  • Bowling clouds. Left arm comes up to your chin, where it grabs a cloud and moves it aside. Meanwhile, the other arm is coming up to do the same thing. Where these clouds are coming from, nobody has said, nor where they are going. However, with one leg in the air, turn, squat, and lay that sucker down the hall for a strike.
  • Old man grunt. This is where you extend one arm up high, do something with the palm, count your thumbs; turn real slow, sweep the floor with it, grunt, and repeat until you no longer grunt, or death, whichever comes first.
  • Saturday Night Fever. In this one, you try to look like John Travolta. Or in my case, you just try to stand with one arm up high, and the other is down low, with the finger pointed. Shake your hips some. It's hard to find a beat with that meditation music, but I never let not finding the beat get in my way before, so I'm not going to start worrying about that now.
  • One Quack Waddle. This is where you pick your leg up s-l-o-w-l-y, then semi-squat on the other. Then, with one hand in the air, and the other hand stretched out in front of you, with your palm up, wiggle your hips while scooting forwards. It works better on a wooden floor; unfortunately, our floor is carpeted, so I keep pitching forward, doing face-plants. That's OK, because everybody appears to enjoy pointing and laughing, and you get bonus points if you quack while falling forward s-l-o-w-l-y.

There appears to be a correct way to do everything. So far, it has eluded me.  I'm not holding out much hope for the future either.

I was told tonight to extend my left arm, to put my left palm facing me. I would know that I had done it right because the thumb on my left had would be pointing to my right. Meanwhile, stand on one leg.

Try as I might, I was unable to put my left palm facing me, and have the thumb on that hand be on my right. My dumb left hand's thumb just kept ending up on the left when I had my palm facing me. I must have the wrong thumb on the wrong hand, or the right thumb on the left hand. Or something like that. I'm not even sure what that means, I'm so confused.  My wife is concerned.  A husband can tell.

So far, I can say this with authority: my wife looks good doing this, and I can stand on one leg. I'm not sure why yet, but I'm doing it. Along with breathing and grunting.


APPLE (AAPL) - This is what a Flash Crash looks like

Today, at 10:57, Apple (symbol AAPL) had a whopper of a drop, with some systems (CNBC) showing a 9% drop, while my service (Think or Swim) is showing it dropping 1.3% from 598 to 590 .  This was not a high volume dump of the stock - instead, it was a regular volume trade.

Some media reports, (CNBC for instance http://www.cnbc.com/id/46835129) are calling this a Flash Crash, and saying: Apple Flash Crash: Stock Halted After Trade Causes 9% Plunge.

My chart (see picture), which is showing data from "Think or Swim", shows a drop from 598 to 590, which is 8/598, or 1.3%.  So, I don't know which report is correct, since the math appears to be different between the two systems..  Of course, the system I use for stock trading, Think Or Swim, may not have captured the whole move.

Also, I don't see any evidence that the stock has halted trading - have a look at the picture yourself - it's still moving around as I post this.

Anyway, here's the picture!


Thursday, March 22, 2012

Stock Market - interpreting volume

I watch $UPVOL - $DWNVOL (NYSE, up-volume is trading volume for shares increasing in price, while down-volume is trading volume for shares decreasing in price.  $UPVOL minus $DWNVOL is the difference in trading volume.  On market-down days, the difference will be negative, while on market-up days, the difference will be positive).  I have watched it for a long time, but today I gained more insight.

What I realized:


  • Constant slope means:
    • - No rate of change, no acceleration, constant speed.
    • - The rate of things changing is staying the same.
  • The size of a bar
    • - shows the amount of accelaration
    • - or rate of change
    • - continued acceleration down, changing slope down, shows panic
  • Downward direction means:
    • - The difference in the volume of stocks,  upVol vs dwnVol, is more down vol.
  • A change in the direction (e.g., slope up instead of down) of the slope
    • - shows a change in the sentiment

Tuesday, March 20, 2012

Using Arduino to read embedded AVR

If you are needing to communicate with an embedded project, then this may be the solution you need!

Building a stand-alone device such as a Multi-channel Thermocouple Reader with Datalogger is an ambitious project for a hobbyest.  Since it is my own design, it means, on my first cut, there isn't a PCB - everything is hand soldered - thus multiple opportunities for problems.

Being a stand-alone, embedded application (not built around Aruduino board, but instead built using the ATMEGA328P chip that is used on an Arduino) means Arduino's useful USB connection isn't there.

Program updates are pushed onto the ATMEGA chip via a ISP header I placed onto the board, using a programmer (in this case, I'm using the USBtinyISP programmer from Adafruit).   The ISP interface, which makes use of the MISO/MOSI interface, does not provide a way to communicate directly with the Arduino IDE Serial Monitor directly, so there's no easy way for me to observe data from the embedded ATMEGA, like there is on the Arduino (via Serial.print() statements).

I programmed some 'blink()' status LEDs, and that worked, but it is slow.  At some point during the build, I had enough working that I could output data directly to the SD Card, but to read that data entailed shutting down the power, pulling the card, inserting it into the PC, opening the file and reading it.  Reverse to put the card back into my project - slow....

I began to wonder if there wasn't some way I could use a separate Arduino UNO to serve as a communication hub between my embedded project and the PC running the Serial Monitor.

Looking around, I spotted this, which is using an Arduino to push a program onto an embedded chip.

There are two key things to take away from the schematic for the UNO:

  • The USB on the Arduino has an additional ATMEGA chip that enables communications, and sits between the USB and the ATMEGA328P that we program our projects onto.  
  • The TX and RX connections are used between these two chips for communications.
So, since these two chips are communicating, which is what I was wanting to do, I thought I should be able to emulate this connection.  I was getting all complicated with this before I spotted the statement: "To do, you remove the microcontroller from the Arduino board ", which meant I could pull out the Arduino's ATMEGA328P chip, then connect to my project, using the Arduino's RX and TX header (D0 & D1 on my Arduino).

I had been careful to keep the RX & TX pins unused on my project board, so it was a simple matter of soldering in two wires that I could then plug into the Arduino's RX & TX header.

Then I added some Serial.print() statements into my embedded project, and cranked it up and .... nothing appeared on my IDE's Serial Monitor.

So I reversed the wires, because this is a common issue with RX & TX - RX on one board has to connect to TX on the other board, and vice-verse, and you never know how it's been defined between the two boards, so always try swapping if it doesn't work.  

BANJO!  

It worked!  I was seeing my Serial.print() statements streaming by from my embedded project, using the Arduino as the communications hub!

Monday, March 12, 2012

Arduino - COM USB Unknown Device Problem

Every once in a while, while working on my Arduino stuff, I get this really aggravating problem, whereby my USB suddenly disappears.  This means I can't upload code to the Arduino, and I can't access the Serial Monitor to see what the Arduino might be printing out.  Windows, after working with it for weeks, if not months, suddenly decides it doesn't know what this device is!  It also decides that it will load a device driver for you.  And of course, once it's loaded this bad device driver, you can no longer talk to your Arduino.

To add insult to injury, you may have gone to the Control Panel -> Device Manager -> USB devices, and selected the 'Unknown Device', as Windows has labeled it, and attempt to update the device driver.  And that's when things really get pissie - Windows now tells me that it's using the right driver, so it's not going to do anything.

There are a lot of entries out in the web-o-sphere, where people are looking for answers to this.  Some of those answers will work, for some of the people.  Other peoples' problems might be too severe for those treatments, and so they are still looking for a solution - and I hope the solution I'm going to give you below is the one you need to make it work again!

First, try the other solutions you might find.  Only use these if those solutions haven't worked for you!!!


First, go to the Control Panel -> Device Manager, and delete every entry you see within the higher level USB entry.  In other words, in the Device Manager, enter the USB devices area, then in that area, delete everything.  Then shutdown (hard shutdown), to make sure all of the power is off of the motherboard and parts.  Now boot up. The system will start loading and defining the USB ports.  This might be all you need - it was for me a couple of times.  Try out your Arduino IDE software now.


If that didn't work, then go back and delete everything again.  Then, using a Registry Cleanup tool, like the one that comes with Symantic's Norton 360, run the Registry Cleanup.  This will remove any hanging port definitions that Windows changed when it decided it was going to help you earlier.  Shut down, boot back up, and see if things work.  Hopefully, you can stop here.

If you still aren't working, then make a backup of your sketch folders - you should have placed them somewhere else other than in the folders that hold the Arduino binaries anyway.  Then delete the Arduino binaries - the whole directory structure, from the top of the Arduino folders to the bottom, but remember - your sketch stuff and 3rd party libraries should be in another directory structure if you set things up properly.  Now download a new instance of Arduino, and install it (unless, of course, you still have the zip from your previous download of Arduino, in which case you can just install it again).  You are doing this because Arduino isn't currently 'installed' into the Windows program environment, so you can't 'uninstall' it either - you've got to delete stuff.  Now do the stuff you did earlier - USB deletions, Registry Cleanup, etc.  Now install the complete Arduino package.  See if your stuff works.  I hope it does!

If it doesn't then open the Arduino IDE, go to FILES, then open the 'prefereneces' - it will give you the file location, in the AppData directory (it may be hidden, in which case you'll have to override Windows and make it visable).  Now rename the preferences.txt file to something like presferences.txt.old.  Now restart the IDE; this will recreate the preferences.txt file.  Now try to see if you can access the port.  If not, then do everything from beginning to end, including the deletion and recreation of the preferences.txt file, and see if it works...I hope it does, because this has been the answer to all my problems that I've encountered!

Banjo

Appears like the Wind is from the West

Appears like Wind is From the West



Maddie the Coon Dog

Saturday, March 10, 2012

Banjo - On Controlling Remotes


We've been married for 36 years. Thankfully, they've been wonderful years!
There was a time when I couldn't imagine being 30, let alone being married more than 30 years. 
I wanted to impart some of the wisdom I've discovered that have helped make this feat possible.
The most important thing in a marriage, as we all know (at least those that have been married more than two years), is … who controls the remote. It's popularly known as the 'remote control.' That's not entirely correct – it's actually the 'who controls the remote' remote-thingie.
When we were first married, we didn't even have a remote. I had seen remotes; I even had an uncle that owned a furniture store, and who actually owned a remote control, back in the 60s. This was a big, heavy thing made by Zenith. It was gold colored, and had a wire-grill on the front where the radio waves would emerge to turn the channel.  To change the channel, you pointed it at the TV and pushed the 'up channel' button or the 'down channel' button - there was no way to select individual channels. But that was OK, because there was only three channels anyway, and you were never more than two clicks up or down ever.  And it changed the channel by this little motor on the TV; it would go, sorta slow-like: 'ca-didge, ca-didge, ca-dige', and you had just gone through all three channels. 
Well, we didn't have a Zenith remote control, and we sure didn't have a furniture store either, so we made do.
What we made-do with was a black-and-white TV that I had 'repaired' by replacing the 'on/off' button. Only I couldn't find an 'on/off' button that looked like the one that was already on the TV, so I had to make do with what I could find. And what I could find was this BIG RED (that's in caps because it was BIG and it was REAL RED) that I mounted on the top of the TV.  If there's another one of these out there anywhere, it's probably on the TV set of Larry The Cable Guy.  
That wasn't just an ordinary BIG RED switch either; it was PUSH-BUTTON!  The way I figured it, that put us somewhere ahead of the rest of the people that made do with some sort of BIG RED TOGGLE SWITCH.  It worked great, but you were never quite sure, when you pushed it, if the TV was going to come on or you were going to launch!
We didn't realize it, but we were actually quite ahead for our times – this was not only a TV with a big RED launch button, but it was also an e-x-e-r-c-i-s-e machine! It was a simple exercise machine; the idea was, you waited around long enough until something came on you didn't want to watch, then you jumped up, ran the eight feet across our 'big' living room, and you CHANGED THE CHANNEL by twirling a knob; then you twirled another knob to 'fine tune it'. Then you sort of swaggered back to your seat on the couch, to gratitude from your mate. YOU were the channel-changer-remote-thingie, not some dumb plastic thing that only offers impersonal service; this was 'husband-to-go' and TV remote all rolled into one.
But. That's not what I learned that I'm trying to teach you about being married for a while.
What I learned is: how to tell how long a couple has been married.  And you don't have to be an anthropologist to do it.  
It appears that marriages start out where she's changing the channels for the two of you, and she does it with a smile ;-) too!
Then it becomes, he's changing the channels for the two of you, and he'd better do it with a smile :-O too!
Then technology advances; if you are lucky, you get a new remote; if not, you get divorced!
We were lucky; we got a new COLOR TV because I wanted to GRAPH MATH FUNCTIONS and see them in color on a friend's Apple II!
Yup, that actually pretty much sums me up – I bought our first color TV because I wanted to be able to see different equations in different colors. Since this was pre-computer monitors, this meant a color TV. And, since we were living in the future now, with computers and cassette players, that TV came with a remote! Best of all, you didn't have to own a furniture store to get one!
But I've been wandering around without getting to the point. So let me see if I can get back to the point.
When the marriage starts out (in the old days before Facebook), each one of the young marrieds gets up to change the channel.
Then, when you get the new color TV (were talking tubes here, not LCD or Plasma), and it comes with the remote, the guy takes charge of the remote.  I know some of you are busting-a-gut over that wording, but that's pretty much it.
The lasts until about the time the kids graduate from high school. Once those kids are gone, there's a new power structure – suddenly, the wife is in charge of the remote!  I think, best I can figure out, is that this is probably the first time she's had to actually sit down to watch TV since the children have been born, and by golly - she's dang-sure going to watch what she wants to watch!  
Fair enough. 
So, I'm sitting here tonight watching reruns of Everybody Loves Ramon, which was shown new in 2004. I'm watching it because I don't have charge of the remote. Of course, I could get up to change the TV manually, but first, I'd have to get up. Second, those little dim gray-on-black buttons that are flush on my TV – I can't see them without a flashlight. That's OK, because the price of those new LED flashlights has dropped so much, I get a pack of three every time I go to Fry's. I have one in my pocket still from last night's storms in case we lost power – they are just the thing to see those dim buttons.  But, as I said, I'd have to get up.  
So, what's a guy to do? She's got the remote.  She's in charge of the remote.  I read sometimes where guys say they've got charge of the remote, but either they are single, newly wed, or just a short-step away from divorse, if the kids are gon; if the kids are still home, there still some time left to pretend.  
It may be that she's got it because she's the only one that can find anything – I'm always setting something down and dang-it, where did I leave that? But she knows, or maybe she's hiding it, but anyway, she can find it so she's in charge of it.
For a guy like me, that's keen on technology, in addition to math equations, that means just one thing: I'm building my own remote control using an Arduino, and I'm going to mount it to my belt buckle. And, I'm going to make sure mine has brighter LEDs, so I can override hers!  And, if we don't get a sun-tan or convulsions when I stobe it, we may just be watching Nova next!