New HF propagation widget

I modified the SonicChicken homepage today. The “weather pixie” links haven’t been working for some time now, so I finally removed all those. I may add some sort of weather widget back in later.

But in the meantime, I added a [radio propagation widget](http://sonicchicken.net/#rigref-solar-widget) to the bottom of the page. This gives an indication of solar/atmospheric conditions’ affect on the various high frequency (HF) amateur radio bands.

Posted in Uncategorized | Tagged , | Leave a comment

New tumblr user

Two weeks ago [NPR did a story on tumblr][1]. It piqued my interest, as it sounded like a cross between a blog and Facebook. Also the tumblr terms of service were attractive. So I decided to give it a try, and I started the [SonicChicken tumblog][]. So far I’ve mostly been using it for short sysadmin posts, and I’ve already seen some benefits — I had to [requeue some email messages][2], and a few days later I had to do it again. A quick copy-paste out of my tumblog and I was done. Win!

[1]: http://www.npr.org/blogs/alltechconsidered/2011/06/15/137182692/quick-blog-site-tumblr-takes-off-in-an-uncertain-marketplace
[2]: http://sonicchicken.tumblr.com/post/6735924416/requeueing-postfix-messages
[SonicChicken tumblog]: http://www.tumblr.com/tumblelog/sonicchicken

Posted in Uncategorized | Tagged , | Leave a comment

Bad synergy

Mac OS X has some great features, among which are Time Machine (which allows recovery of deleted or overwritten files) and Mail.app. Junk mail filtering means I rarely see spam in my inbox, but I keep “junk” mail in the spam folder for a while in case a real message gets mis-classified as spam. I also have Mail.app set up to cache all messages and attachments locally, so I have super-fast access to my received email, even when I’m not on the Internet. But I recently discovered a dark side to this combination (Time Machine+cached email): Old Windows viruses that were transmitted as spam are stored in my TM backups, where Sophos (free version, at least) is unable to automatically clean them up. Nuts!

Until recently I hadn’t bothered with anti-virus software for my Mac, (mistake #1). I occasionally saw some Windows viruses show up in email, but I just tagged the messages as “junk” and let the system delete them later, (mistake #2). And I was blithely comforted seeing TM backups occurring every hour or so. (Not a mistake per se, but failing to consider that some things really don’t belong in my backups was mistake #3.)

So when I finally did install Sophos and had it scan my system (including my Time Machine disk), it found a bunch of viruses and other malware in backups of my “Junk Mail” folder. I found a discussion of how to delete all backups of a file in TM, but it’s still a lot more difficult than having the anti-virus software clean up automatically. I’ve spent over an hour manually cleaning viruses out of TM, but at last I think I’m finished. Rescanning the whole system again, and hopefully this time no malware will be detected!

Lessons learned:

  1. If you don’t have anti-virus software on your Mac, get it now! I wish I’d installed Sophos before I started using Time Machine.
  2. If you were already running TM, don’t set your anti-virus software to automatically clean up infections, just log the infected files. If the infected files were backed up by TM, you can locate them at their original location in Finder, then go into TM, right-click on the file and select “Delete All Backups”.
  3. Turn down the dial on Junk mail retention in Mail.app. If you haven’t pulled it out of the junk folder within one day, you probably aren’t going to.
Posted in Mac OS X, Uncategorized | Tagged , , , | 1 Comment

Power supply project

11A PSU (front)

I built my 11-amp power supply a while ago, but I just now finished writing up the [article about it](http://www.n6na.org/home/UserN3JIMpowerSupply1).

Posted in Uncategorized | Tagged , , | Leave a comment

Home-brewed SWR meter

QRPSWR_final.JPG

I finished my home-brewed SWR meter last week, but this blog was down. (I failed to heed my hosting company’s warning about a PHP upgrade, doh!) So, now that the blog is back online, I’m posting it here as well.

Posted in Uncategorized | Tagged , , | Leave a comment

Blog updated

Well, it’s long past time that I updated this blog! I was given extra incentive when my hosting company updated PHP, which broke the old software. The new version of WordPress doesn’t support my old tags plugin, so I’ve finally made the jump to using WP tags. I used the Ultimate Tag Warrior Importer to convert the old UTW tags to WP native format. Bye, UTW, I’ll miss you! 🙁

The old REDoable theme was stuck displaying a “Get FireFox 2” (yikes!) banner, so I switched to the WP2010 theme. Not what I’d prefer, but I don’t have time to hack a theme into shape right now.

Posted in Uncategorized | Tagged , , , , | Leave a comment

January 2011 No-Pressure Cookers Menu and Recipes

New Year’s Good Luck turnovers

All-butter cornmeal pie dough:
1 c flour
1/2 c corn meal
1/2 t salt
1 stick cold butter cut into pieces
ice water
Blend all ingredients except water in food processor, until butter is pea sized, then add water in small amounts until a dough is formed.  Form into disk and refrigerate.  Roll out dough to 1/8″ inch thick, and cut into circles using a glass, coffee mug, or whatever as a form.  I used a pint glass.

Filling:
1/2 onion
1/4 lb panceta
1 can black eyed peas
1 bag of spinich
goat cheese, softened to room temp
Louisiana hot sauce to taste – I like Crystal
Salt and pepper to taste
Sweat onion in a bit of olive oil in a medium sized skillet.  Finely chop panceta and add to onion mixture.  Add salt and pepper.  Cook until pancetta has rendered most of its fat.  Empty can of black-eyed peas into collandar and rinse well.  Rinse again!  Add to pan and heat until beans are hot. Add spinich and continue to cook until spinich is completely wilted.  Add hot sauce to taste.  Remove from heat and allow to cool completely.

Assemble:
To each round piece of dough, add 1 to 2 teaspoons of filling.  Squeeze out goat cheese on top of filling. Fold dough over and seal with fork tongs until dough is completely sealed.  Prick each turnover 2-3 times to allow steam to escape

Cook:
Bake at 375 for approximately 20-25 minutes, until crust is golden brown.

Note, these can be prepared in advance and then frozen.  If frozen, allow 5 more minutes or so for cooking.

Roasted Beet Salad

Wash fresh beets and place on foil lined baking sheet in oven at 375 for about an hour, or until fork tender – not as soft as potatoes, but the fork should pierce the beets.  Smaller beets take less time, so if you have a mixture, stagger when they are added or removed.

Allow beets to cool and then dice into pieces.

Wash a bag of baby greens, add chopped green onion, carrots, toasted hazelnuts, beets, and crumbled goat cheese.

Dressing:  olive oil, red wine vinegar, lemon juice, lemon zest, orange juice, salt, pepper.

Barbara’s Roasted Sweet Potatoes

Peel and cut sweet potatoes into chunks.  For a 9 inch pan you need approximately 5 good sized sweet potatoes.  I typically use yams and I try to buy the skinny ones – they are easier to cut.  Boil in water until fork tender and then drain. (Note, for the cooking club dinner, I actually roasted the whole sweet potatoes in the oven and then scooped out the
meat). Place sweet potatoes into buttered 9 inch pan.  Add 1 pat of butter, 1 T milk, 1 T orange juice and 1 small pinch of nutmeg.  I sometimes add cinnamin.  Smash with fork until smooth and ingredients are consistent.  Cover with pecan halves, with centers down into the sweet potato mixture.  Cover pecan halves with brown sugar.  Bake covered at 375 for about 40 minutes.

Chicken Ettouffe

This was a mixture of two recipe’s I found.  I would definitely do this differently – more about that at the end.  Here is how it was actually prepared:

4 boneless skinless chicken breast halves
6 boneless skinless chicken thighs
1 T vegetable oil / 1/4 stick butter

Sear chicken until golden, but not thoroughly cooked.  Remove from pot.

Add 3/4 stick of butter to pan, and another T of oil.  Add in 1 c of flour, gradually to form a roux.  Cook the roux on very low heat, stirring constantly, careful not to burn the butter, until a deep color.  If the butter burns, you must start again.  I cooked mine for about 40 minutes, and ended up with a roux that was slightly lighter than chocolate. It can be done quicker than this – but I didn’t want to take the risk of burning it and losing my browned chicken bits.

A great image of roux colors can be found at

http://culinarymasterclass.com/techniques.php?techniques__state=selected_technique&technique_id=54

Once the roux is complete, immediately stir in 1 diced onion, 1 diced green bell pepper, 1 diced red bell pepper, 6 diced celery stalks.  This will form almost a paste.  Cook until he onion is soft, stirring often, if not contstantly.  I turned up the heat, but again areful not to burn.  Once the onion is soft, add a couple of cloves of minced garlic and continue to stir until fragrant.

Add 1 bottle of ale, stirring to loosen any brown bits on the bottom of the pan.  Add 2 (or 3) cans chicken stock, 2 t brown sugar, 1/4 c hot sauce, 1 T Worchestershire sauce, 2 bay leaves.

Bring to a boil and then add chicken back into pot.  Simmer – approximately 3 hours and serve over white rice.

What I would do differently:

Use chicken breasts and thighs with skin and bones.  Use the same browning procedure, and add the chicken to the pot to cook in the sauce, but once the chicken is cooked through, remove the chicken and discard the skin and bones.  Add the chicken meat back in and continue to simmer.  This will produce a much richer chicken flavor.

Leave out the beer and add a tablespoon of sherry.  Not too much sherry, but enough to provide just a hint of richness.  This may be sacrilege, I don’t know.

Simmer for less time.  I think mine broke down and became a bit gloppy.  If the chicken had bones, it would take longer though, so that should be taken into account.

Once the chicken is done simmering, you should cool it a bit and then add File.  I didn’t do this.  Beware, if the chicken is too hot, the File will become stringy.

Posted in Recipes, Uncategorized | Tagged , , , , , | Leave a comment

PHP/curl proxy error

Yesterday I ran into a tough problem at work, (i.e. Google didn’t return a web page describing the solution). I spent almost a whole day trying to figure this out, and the solution turned out to be incredibly easy.

We are building a new web server ([PHP][], [Apache][], [FreeBSD][]) under pretty strict security guidelines. In particular, this server isn’t allowed to do outbound http[s] queries except through a proxy. You may be asking why a web server needs to issue http queries itself — in our case, we’re looking up shipping prices at UPS, FedEx, etc. using [PHP’s cURL module][PHP_cURL]. When we finally got around to testing our PHP script, it didn’t fail, but it didn’t actually return any results either.

Our script didn’t have much in the way of error checking, in particular on the [curl_setopt][] calls.
I tried adding some diagnostics, hoping to get some helpful error messages:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.ups.com') or die(curl_error($ch));
echo "url set\n";
curl_setopt($ch, CURLOPT_HEADER, TRUE) or die(curl_error($ch));
echo "header set\n";
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE) or die(curl_error($ch));
echo "returntransfer set\n";
curl_setopt($ch, CURLOPT_PROXY, 'http://proxy.example.com:3128') or die(curl_error($ch));
echo "proxy set\n";

$data = curl_exec($ch);
echo 'Results: ', $data;
echo "\n";
curl_close($ch);

The only thing we found from this script was that the final curl\_setopt (for CURLOPT\_PROXY) was failing, but there was no output from curl_error.
I chased after a few red herrings at this point:

* One suggestion (I believe it was on the [curl_setopt][] user-contributed documentation) suggested that Apache needed to have mod\_proxy and mod\_proxy\_http loaded. This didn’t solve the problem for us, and we removed these (after finding the real solution) to verify that they weren’t needed.
* Another post suggested that we turn off CURLOPT\_HTTPPROXYTUNNEL. As far I as know, this one didn’t make any difference for our app.
* The final red herring suggested that we set CURLOPT\_HTTPHEADER since we were requesting an XML document. It also suggested that we disable caching with CURLOPT\_FORBID\_REUSE and CURLOPT\_FRESH\_CONNECT. These turned out to be unnecessary for us.

At this point I was running out of ideas. I finally decided to try the [cURL][] utility itself from the command line:

curl --proxy http://proxy.example.com:3128 --verbose http://www.ups.com/

Unfortunately I closed the terminal window with the output of this command, but if I recall correctly it showed that the proxy wasn’t being queried and curl was failing over to (attempt) directly accessing the target. Some more digging and I discovered that curl had been built without proxy support. As soon as I rebuilt ftp/curl WITH_PROXY=TRUE the curl command worked flawlessly, as did our PHP script.

[PHP]: http://php.net/ “PHP scripting language”
[Apache]: http://www.apache.org/ “Apache web server”
[FreeBSD]: http://www.freebsd.org/ “FreeBSD Unix”
[PHP_cURL]: http://www.php.net/manual/en/curl.examples-basic.php “Client URL library for PHP”
[curl_setopt]: http://www.php.net/manual/en/function.curl-setopt.php “Documentation for PHP’s curl_setopt function”
[cURL]: http://curl.haxx.se/ “The cURL library and CLI tool”

Posted in FreeBSD, Uncategorized | Tagged , , , , , | Leave a comment

Sopa de albondigas (meatball soup)

Our neighbors traditionally exchange homemade gifts (e.g. cookies, jam) during Christmas. Two years ago, we got some sopa de albondigas, along with this recipe. We all loved it, but never got around to making it ourselves until last night. It took my wife and me only about 30 minutes to make, plus another 30 minutes to simmer. Simple, hearty, and delicious, this makes a great meal for cold wet weather such as we’ve been having the last few days.

Ingredients:

  • 1 egg, beaten
  • ¼ cup cilantro, minced
  • 1 tsp salt
  • ½ tsp oregano
  • ¼ tsp pepper
  • 1 lb ground beef
  • ¼ cup uncooked rice
  • 2 Tbsp oil
  • ½ cup chopped onion
  • 1 clove garlic, minced
  • 4 cups water
  • 20 oz beef broth
  • 1 can (6 oz) tomato paste
  • 2 medium potatoes, peeled and cubed (½ inch dice)
  • 2 medium carrots, sliced

Method:

  1. Combine egg, cilantro, salt, oregano, and pepper. Add the ground beef and uncooked rice, mix well.
  2. Form mixture into 1-inch meatballs, set aside.
  3. Saute the onions in hot oil for a few minutes.
  4. Add the minced garlic, continue sauteing for ~30 seconds.
  5. Add the water, broth, and tomato paste, bring to the boil.
  6. Add potatoes and carrots, simmer for 5 minutes.
  7. Increase heat and add the meatballs a few at a time to the simmering soup.
  8. Return to boiling, then reduce heat and simmer for approximately 30 minutes, until meatballs and vegetables are done.
Posted in Recipes, Uncategorized | Tagged , | Leave a comment

Poppy seed rolls

Poppy seed rolls are one of our family’s favorite Thanksgiving traditions. These are mashed potato rolls with poppy seed filling. We’ve found that this dough is very sensitive to cold, so we bump the thermostat up to about 75° F (about 25° C) and disable the nighttime setback while it’s rising.

Mashed Potato Rolls

Ingredients:

  • 2/3 cup sugar
  • 1 1/2 cup scalded milk
  • 2/3 cup shortening
  • 1 tsp salt
  • 1 cup mashed potatoes
  • 1/2 cup lukewarm water
  • 1 pkg yeast
  • 2 beaten eggs
  • 6 cups flour

Directions:

To the scalded milk, add sugar, shortening and salt. Stir until dissolved. Cool to lukewarm. Then add mashed potatoes and yeast which has been dissolved in 1/2 cup lukewarm water. Add enough flour (3 cups). Beat until smooth and elastic. Cover and set in a cozy place until bubbly. Beat again and fold in 2 beaten eggs and enough flour (~3 cups) to make a soft dough. Mix well. Place in a greased bowl. Let rise until double. About two hours prior to baking, form into rolls. Let rise. Bake.

Poppy Seed Rolls

Ingredients:

  • 1/2 cup milk
  • 1/2 cup sugar
  • 1/2 cup poppy seed
  • 1 T. butter

Directions:

Simmer ingredients until thick, stir often. (I think this is really a “candy” recipe, but I don’t know what temperature the mixture is when we finish.) Allow the mixture to cool somewhat. Completely conceal a small amount (1/2 Tbsp?) of mixture in the yeast roll dough. Bake as directed.

  1. 425° F – 10 minutes
  2. 400° F – 15 minutes
  3. 375° F – 20-25 minutes
Posted in Recipes, Uncategorized | Tagged | Leave a comment