Master of Puppet

Puppet. If you’re a systems administrator you need to learn it, love it and live it.  We used Puppet at Terremark for Linux systems but never really seemed to leverages more than 20% of its capability.  Since then Puppet 3 has been released and I’ve just finished taking an Intro class at work.  Man, this stuff is cool.  Between VM templates in ESXi and Puppet I’ll be able to overload my ESX hosts in no time flat and do it in a completely automated fashion.  Whee!!!

Of course automation is a huge time saver.   It can (and often does) completely scramble your environment in record time.  As with any automated tool the development cycle *MUST* include thorough testing.  Fortunately Puppet has a lot of features that let you do exactly that.

The old becomes new again.

Once upon a time I was pondering a 2M RES for noodling around the sky. Recently I was contacted by a couple of nice gents from RCGroups and I think I may pick that gauntlet up again after I finish building my Bird of Time. Maybe I’ll call it the Birt of Dime but it’s original name was the Beaky Buzzard, named after the rather daft buzzard that pestered Bugs Bunny in so many cartoons. Here’s the raw design in XFLR5. The tail looks too small though. I need to run it through a stability analysis still but I expect it will grow quite a bit in span.


Well, dang it

I decided to take a quick break to fly in exceptional gliding weather so I grabbed my trusty Chrysalis 2M electric sailplane. After a rather short first hop I discovered that the brake wasn’t set aggressively enough and the prop continued to windmill. No problem. Put the beans to it and when the motor gets shut off by the ALES switch just stall the plane and the prop will slow down enough to fold. Second flight was short but only because I dumb thumbed it a few times. Third hop was nice and brisk right on up to 200m where the switch cut off and I got another 10 minute flight on it. I decided to go ahead and land to reset the camera mounted on top of the wing so I brought it in. My typical launch involves me throwing the plane at the sky and letting it glide for a moment while I get my hands on the sticks before I give it the beans. Once I applied power I quickly realized that I only had one blade and shut the power off but not before it shook the firewall loose. Apparently a pivot screw had worked it’s way out and the impact of landing was enough for the blade to seperate from the hub. I assumed I’d lost it in flight so I just packed everything up and went home. It wasn’t until I reviewed the video that it became evident where I actually lost the blade. Dang it. Oh well.

This poor fuse has been through heck and back so I’ve decide to retire it. I threw together a quick (for me) 3D sketch of what I think I’ll build as it’s replacement. The emphasis is on removing as much weight as practical from the tail so this will be a pod and boom affair with a carbon fiber tube inserted into a balsa/ply pod. Basic dimensions are similar to the Chrysalis but I’ll use a cruciform tail to simplify and speed construction. I do like the V-tail but a cruciform tail is faster to build and much faster to set up. There’s zero chance I’ll be able to tell the performance differences with a wooden ship that *I* built.

So now for the teaser, the first screen shot.

Fixing broken code, the bane and blessing of Open Source projects

I work with monitoring software day in and day out.  As with everything else there are advantages with closed systems and advantages to open systems.  In this case the supposedly matured open system has obvious glaring problems that really piss me off.

Recently I began evaluating alternative solutions to the closed system we employ in the office.  I’ve been a Unix guy for literally decades but we live in a Windows world.  The systems we use must have a MS SQL backend to them which automatically excludes pretty much every open source project in the world that would even be worth considering.  Add to this their distrust of anything UDP-based and previous experience with absolutely hideous Unix-based open source programs in the past I can almost understand their shyness.   Horrid packages like NMIS, a gigantic monolithic Perl script that’s as awkward to use as any interface I’ve had the displeasure to use, and Big Brother, the admittedly better but still mind-alteringly annoying system monitoring package, have invaded their little Redmond-esque fiefdom.  They probably also made the mistake of trusting averages of averages of averages for billing, courtesy of MRTG, Cacti and other RRDTool based systems.  Of course you can reconfigure any of these to average across an arbitrary period rather than the default 1 hour boundary but reconfiguring these tools is not what they desire regardless of cost.  I can respect that because I also found that incredibly annoying.  So much so that I wrote a program for a previous employer that kept all the data in an unaggregated binary flat file.  Sadly that code is long gone but I’m confident that I could write a better, faster, and tighter bit of kit now compared to 15 years ago.

In my digging around the internet for alternatives to expensive, closed systems I’ve run across a few that piqued my interest.  One of which is the Nagios-based package Opsview.  Nagios has been around for quite a long time so I suspected that this would be a relative cake-walk.   Something I could throw down on any random VM on my home ESXi server and have running in no time flat, just like I did with the fore mentioned Cacti.  Sadly this was not the case.  After going through the exercise of actually getting Opsview running and figuring out the relatively clunky interface I finally settled down to add some hosts.  That’s where the drama really starts.

The installation worked pretty much as described, thankfully.   Adding devices to the system is less than intuitive.  At least with Zenoss you can usually figure out that the big ‘+’ means add a new thing.  Google came to the rescue for Opsview.  Getting SNMP-based metrics should be a fundamental feature.  Apparently the folks that wrote these Nagios modules didn’t get the memo.  A very simple script like check_snmp_perfstats should absolutely work out of the box.  Sadly it didn’t.  There is a call to return_snmpcommunity() that failed to retrieve the necessary information and simply and silently returned the default string of ‘public’.  Anyone that’s taken IT Security 101 or been in the service industry for more than a week should know to change the default community string for any SNMP enabled device.  I circumvented that function and used the community string passed by the -C option built in to the management service.  A similar problem existed with check_snmp_noprocesses with a similar solution.  It seems the remaining SNMP scripts probably work since they don’t call return_snmpcommunity() but I decided to avoid frustration and didn’t use them.

Finally that brings me to check_snmp_uptime where I will probably start a religious war.  It uses (used) iso::mgmt.sysUptime which returns the time since the SNMP agent was restarted.   That value is probably accurate enough for most people that just reboot their servers.  My servers are typically running for years at a time unless there is a kernel vulnerability that mandates a reboot.  Daemons may be restarted but I don’t often see a need to reboot my machines without provocation.  This isn’t Windows-land where the three-finger-salute solves 99% of your problems and uptime is usually less than a month.  I replaced that OID with a much more meaningful metric that returns the actual uptime of the server rather than the uptime of snmpd.  In this regard HOST-RESOURCE-MIB::hrSystemUptime is much more meaningful.

So, while I was optimistic that yet another open source product turned commercial was going to be my savior in the real world I was heartbroken.  My hope, sprung eternal, that yet another nail in the coffin of Windows-based closed-source commercial ware would be hammered home instead smashed into tiny bits of mostly fluff.  Nagios itself is well known and apparently loved by large parts of the community but I find it bloated, slow and a huge resource hog.  My Zenoss machine has all of 768MB of RAM on it and runs like a top.  The same exact endpoints being monitored by Opsview required twice as much CPU and 6 times as much RAM.  A sad, sad day that a Linux-based solution would require the resources of a Windows-based solution to monitor *ONLY* a half dozen endpoints.  I suspect that large portions of the code are terribly inefficient.  How else can you explain that when I wrote a Perl the could measure several thousand interfaces in less than half a minute on a dual proc 233MHz P-II.  A sad, sad day indeed.

A rant on the futility of plug-in and electric hybrid cars

Several of my workmates have recently been getting hybrid cars to replace their perfectly functional gasoline fueled transport.  While I don’t particularly care for hybrids I feel that replacing a functional car with a new car “just because” is dumb.  You don’t replace your house “just because” do you?  Next to your house and your children the family vehicle is likely your next largest expenditure of your hard earned dollar.  So you buy a hybrid because you’ve swallowed the “save the environment” kool-aid without actually doing any research of your own.  That’s exactly what many short-sighted, narrow field of view, tree hugging hippie types would love for everyone to do and here’s why I think it’s dumb.

The EPA’s “new MPG” calculation estimates mileage at a much lower value than my personal experience of calculated fuel economy.   In the past the EPA mileage matched my calculated mileage to within 1 mpg of real-world use.   Why the change in calculation by the EPA then?  To make *electric* cars look more attractive.  Not hybrids, though they certainly benefit, but pure electric cars.  IMHO economy of a vehicle shouldn’t be measured in miles per gallon, it should be in dollars per unit of distance.  The reason for this is that as plug-in electrics become more common it *will* drive electric utility costs up as the public utilities grow infrastructure to meet demand.  It is inevitable if plug-in electrics are adopted en mass.  This pisses me off because that means that I, as a non-plug-in owner, will be subsidizing your electricity consumption for your plug-in vehicle.  I guaranty you will not be charged a higher cost per kWh than I am but generating that much more energy comes with an associated infrastructure cost.  You don’t subsidize my fuel costs, why should I subsidize yours?  I’m already subsidizing your car through federal government credits ($1,450 on the Honda Insight and a staggering $7,500 on the new Chevy Volt)  but you don’t subsidize my car do you?  Manufacturers know they can’t produce these cars at a reasonable price point so they look to Uncle Sam (that’s the 53% of us that don’t get our income taxes back) to bail them out, again.  Remove those subsidies and recalculate the real-world cost of these cars and they very quickly become unattractive.  An additional real-world variable the calculation should include the cost of periodically replacing the very large NiCd or NiMH battery pack that most hybrids and plug-ins.  If you make these assumptions I suspect the difference is no where near as great.  According to Wikipedia the cost of the battery pack for a Honda Insight is $1,968 with approximately $900 additional in labor.  There are cited examples of people replacing the used-up battery with a $300 aftermarket or reconditioned battery.  Do you trust your life and the lives of your passengers to a battery that costs 85% less than what the manufacturer can produce it for?  If you’ve ever seen a NiMH or Lithium battery burn you know what I’m talking about.  This is a another testament to the short-sightedness of people jumping blindly onto the hybrid/plug-in band-wagon.  I fear what happens when they realize their well intentioned misgivings and nickel-based or Lithium-based battery packs start showing up in large quantities as electric cars are abandoned to scrap.  The haz-mat equipped recycling centers will *NOT* be able to grow fast enough with the current EPA guidelines.

If you truly want a tree-hugger car get a 2002 VW Jetta TDI.  As reported by real owners to the EPA,  the 2002 Jetta TDI gets between 44 and 52mpg.  A friend of mine that has one gets between 47 and 55mpg depending on how much freeway and traffic time he has.  Added benefit, you don’t have to replace the batteries at a huge expense and there’s not the grotesque environmental impact of caustically mining the nickel for the batteries.  If you’re an informed tree hugger, that’s what you get.  If you want to maximize your economy in a car that will last a long, long time that’s what you get.  If it made financial sense to replace my 1996 F350 turbo diesel that’s what I’d want to replace it with.  With 340k miles on it there is little indication that it’s going to fail any time soon.  It weighs 6000lbs but still manages to get 20mpg which makes it impractical to assume a car payment until diesel and regular unleaded gasoline are separated by at least 50%.

There are a couple dirty little secrets about diesel engines.  One  is that gasoline is a solvent while diesel is a lubricant.  Guess which one is more conducive to engine wear?  Diesel engines just last longer and have more energy per gallon of fuel than gasoline.  They also typically require much less maintenance than gasoline engines do.  There’s a reason why long-haul trucks and freight trains use diesel engines.  It used to be that diesel fuel was the cheapest since consumers wanted gasoline but that started changing in the last decade.  Since EPA began requiring ultra-low sulfur diesel for all public road travel and as diesel becomes more commonplace the cost of diesel has steadily increased.  Currently it is priced on par with or higher than premium unleaded.  Even then it doesn’t make fiscal sense to get rid of my 3 ton truck.

Diesels used to make that ugly soot and clatter like mad.  Modern diesel engines have none of that.any more.  Diesels always run with more oxygen than the fuel can burn thus the soot. Manufacturers, primarily in Europe where diesel is approximately $6/gallon or 25% cheaper than gasoline at $8/gallon, have met customer demand and that is no longer the case.  A modern turbo-diesel lasts a long time, gets greater return on energy per gallon of fuel and of course significantly better mileage.  If you want the ultimate in electric hybrid get rid of that stupid gasoline engine and put a small turbo diesel in.  Run the generator off a constant velocity transmission much like diesel locomotives do.

Diesel also has the added benefit of being significantly less flammable than gasoline which will be useful when your plastic hybrid car gets crushed by a city dump truck, long haul truck or the last ghettoized Cadillac.  Obviously that doesn’t mean it won’t burn, it’s just harder to get lit without compression.  That reduced flammability will at least make the body easier to identify.

CNC foam cutter, part IX?

I haven’t posted anything here yet so I figure I ought to fix that.  One project I’m working on is a 1.5M discus launched radio controlled sailplane.  “What in the heck is that?” you say.  If you go to Google and search for ‘dlg sailplane’ you’re bound to find better explanations than I can give and some wicked cool videos.  You see, at my core I’m really cheap.  I can’t see spending several hundred dollars on a 60″ sailplane that I’m going to beat the living tar out of when I can build one myself.  Thus the CNC foam cutter project was born. I have built several wooden winged DLGs and now I’m getting to the point where I need more consistency, lighter weight and more strength.  This is accomplished by using insulation foam as the substrate and laminating that with epoxy saturated fiberglass, carbon fiber and kevlar.

The CNC project has been under way for a few weeks but mostly in the collection of parts and first steps at testing.  I’m using a HobbyCNC 4-axis driver board that is available as a kit.  There is support but only if you’re an engineer and have read all the engineer-written documentation and haven’t made a mistake.  Otherwise you’re at the mercy of other users found in the Yahoo Group for said CNC controller.  The board itself works brilliantly, the support not so much.  If you can solder and follow the sparse instructions you’ll be fine.

The following account, reproduced here, is my experience with using locally source (and cheap) home improvement store bits as critical mechanical components of this computerized hot wire foam cutting machine.


ACME screw-lite, or, How to make threaded rod suck less

Acme screws are dang expensive. Really expensive. Even in the tiny little 1/4-x sizes they’re $100 for 6 feet of screw + $20-$40 Acme nuts for each axis. Very quickly two axes would be more than the balance of my CNC investment. Solutions I’ve seen frequently for ultra-light duty are timing belts on linear slides and threaded rod with blind nuts. I opted for the later since there’s a Lowe’s Home Improvement almost within walking distance and a Home Depot across the street and down half a block. That’s the good news.

The bad news is that threaded rod sucks as a lead screw. Particularly the inconsistent and frequently bent stuff often found in bulk barrels at said stores. I figured this out after I’d assembled my X and U axes. My $5 stepper motors kept stalling regardless of how well I lubricated them and aligned and realigned the axis. Finally I disassembled it and figured out quickly why. The stupid thing was binding horribly thanks to the awesomeness of the bulk threaded rod. I couldn’t run even a normal nut up and down the thread without some serious effort. I read on some site that I can’t find at the moment that you can hone the threads with a coupler and some sort of mild abrasive that escapes my mind. I got a coupler and ran it down the thread a few times with one end of the threaded rod firmly attached to the chuck of my drill and the coupler in a nice gigantic wrench. It definitely loosened up so I reassembled the axis and gave it another shot. Much, much better. And then it bound. And then it stalled. And then I cursed. A lot.

Fast forward to today. After waking at the crack of 7:30 and getting some much needed C8-H10-N4-O2 (caffeine) I wandered across the street to Lowe’s. There I acquired a tap and die set and set about truing the thread on my threaded rods. While waiting for my laptop to boot, VPN to connect, etc. I cleaned up one axis and reassembled it. Thence over the course of the next several hours the next axis was cleaned up and reassembled it just before lunch. There were shavings all over the table so it must be perfect by now, right? Boot up ye olde CNC machine and start running tests. Absolutely, positively . . . . worse. Much, much more cursing.

It was at this time that I remembered seeing somewhere that a local store had some nice shiny threaded rod instead of this bronzish looking stuff I found at Lowe’s. I figure it must have been Home Depot so off I went at lunch to search for it. Sure enough, right in front of all the other threaded rod were some shiny threaded rod whose tags said ‘Zinc’ on them. I assume these are some kind of mild steel that are zinc plated. I also got some push-in threaded furniture inserts made of what looks and feels like pig iron. I cleaned the threads up quickly with the tap. These furniture inserts would make several rotations under their own inertia if I gave them a good spin. These had to have been 10x better than the blind nuts but the longer barrel length with demand greater precision in alignment, or so I thought.

After wrapping up work for the day I cut some more bearing plates, measured and drilled them for the inserts and pressed them in with my handy, dandy desktop vise. A careful alignment at the far end of the threaded rod, threaded in an inch or so for good measure. I was surprised at how smooth and consistent this assembly was. I ran it for two solid hours in a loop, forward and back across the length of the lead screw. No issues. This is my final answer. I found that this new solution was able to traverse literally twice as fast as the previous configuration. Conclusion: a crap ton less drag equals a boat load more speed. It should also aid in accuracy and repeatability but I suppose time will tell.


  • Most threaded rods suck, some suck less. Use a long coupler to field test thread quality.
  • Blind nuts suck as lead screw nuts.
  • Furniture inserts suck less.
  • Cut your threads yourself. Invest in a tap and die if you don’t have one.
  • Measure four times, adjust infinitely.

How’d that get up there?

Lacquerhead's DJ Aerotech Chrysalis 2M Electric glider in flightThere’s a lot to be said for electric soaring.  There’s less time setting up and tearing down.  If you have the discipline to leave the power off you can keep yourself more or less honest.  If you don’t, you can get a altitude/time limiting switch that will keep you more honest without having to land to reset it.   The pay-off is more time flying and less time fetching.  Don’t get me wrong, I like “pure” sailing as well but electric soaring is just so convenient these days.  With the advent of inexpensive brushless outrunner motors and Lithium-Polymer batteries the weight penalty is significantly less than it used to be.  For example, my Chrysalis 2M-E is 34 ounces AUW and the same wing on the pure sailplane fuse is 31oz.  The design was based on NiCD batteries and a Speed 600 brushed motor with a upper AUW of 52oz. so there is plenty of margin for ballast.  When you can drive to your local vacant lot and go soaring during your lunch break, all is well in the world.

New Hatch for Chrysalis 2M Electric

I finally made a magnetic hatch for the Chrysalis 2M-E.  I made one for the sailplane fuse when I built that one and really loved how well it worked.  I’ve retrofitted the hatch for the Electric fuse to be magnetic and I expect this will help if I need to make any battery changes at the local contests.  I don’t think that will be much of a problem though with the 1800mAh batteries I’m using.  I’ve made four or five climbs on a single battery with no obvious change in performace, at least to my untrained eye.