Wednesday, August 23, 2017


Victory!  Yesterday afternoon I watched our sprinkler contractor load a giant steel culvert onto his trailer for transport to the metal recycling facility in town.  This is the culvert I had photographed a few days ago, after Mark first extracted it from the ground where it was 3/4 buried.  Yesterday his sidekick Dave (photo at right) took a battery-powered Sawzall and cut it into three sections (on a single charge, no less!).  These were small enough for Mark to lift with his skid-steer, to get the dirt out.  Then he could lift and transport them to his trailer.  I'll find out tomorrow what price they fetched, but I'm guessing not much – steel prices are pretty low right now.  Too bad they weren't copper! :)

Anyhow, it's just great to get that eyesore out of the ground.  Even though it's a long way from our house, just knowing it was there was irritating.  It was actually quite close (less than 50 ft) from one of our neighbors' homes, so hopefully they're happy to have it gone...

We've discovered a new bread...

We've discovered a new bread...  This one – tomato herb bread – is from Great Harvest, in downtown Logan, where we did some bread shopping yesterday (and practically filled our freezer with fresh loaves!).  When we picked up our bread, these had just come out of the oven, and the aroma was irresistible.  Debbie and I both had a slice as soon as we got home.  Then we tried toasting it, and it's clear this will be one of our favorite toasting breads.  Several of the breads from Great Harvest have turned out to be terrific as toast – Cache Crunch and their raisin bread are two of my other favorites for toasting (and Cache Crunch makes a great sandwich, too).

We frequently reflect on the generally higher quality of food here as compared with San Diego.  Baked goods are one of the more extreme examples of this.  In San Diego, we only knew a couple of places to get good bread (Dudley's Bakery in the mountains was the standout, even though it was 30 miles from San Diego).  There were a few restaurants that had consistently good bread, too (such as the Fish Market with their sourdough).  Here we have three outstanding dedicated bakeries in Logan – all three with excellent bread, one with sublime classic pastries, another with local pastry favorites, and all three with great cookies, cakes, and biscotti.  On top of that bounty, we have two grocery stores with in-store bakeries that aren't bad at all – and with particular items (like the cheese-onion rolls from Macey's) that are high on our list of favorites.  If we venture further afield, there are even more choices.  At the time we chose Cache Valley as the place we'd spend our retirement, we had no idea at all that we'd find such great food here.  In fact, we worried that the opposite would be true – that the great restaurants we loved in San Diego would be but memories.  Oh, how wrong we were!  And happily so!

The banana game...

The banana game...  We have a ritual every morning in our house, and I've probably mentioned it before.  We call it the “banana game”.  A few years ago we discovered that our dogs (all four of them!) absolutely love bananas – and bananas are actually good for them.  Sometime after that I started getting in the habit of feeding slices of a banana to them in the morning, right after I got up and went to the kitchen.  I have a particular place in the kitchen where I stand to do this.  It didn't take long for the dogs to associate me standing in that place with delicious banana treats descending from the sky. :)

But over time they've learned earlier and earlier indications that banana slices are imminent.  First they learned that I would peel the banana in the kitchen sink, so they'd all sit next to me and watch, rapturously.  Then they learned that I removed one banana from the bunch first, and they'd start getting excited if I just moved in the general direction of the banana bunch (and trust me, they know exactly where that is!).  This morning I noticed a new observation on their part: they've learned that when I pull a steak knife out of its block in the morning, the next step is the banana separation.  I think they may have reached the limit here, because so far as I know there's no earlier indicator in my banana slicing pattern.  This morning I had four sets of doggie eyeballs watching my every move starting the moment I slid that steak knife out of the block and ending when I started tossing banana slices at them. 

They have a similar sensitivity to my pattern of feeding them.  It starts every morning when I pick up Mako and Cabo's food bowls – plain stainless steel bowls that we store on top of Mako's crate.  The instant I pick those up, all four dogs know that there is kibble in their immediate future.  Judging from their reaction, that's the highlight of their entire day!  :)

And now for something completely different: socks...

And now for something completely different: socks.  Yes, socks.  Those things that you (probably) are wearing on your feet.

For about a bazillion years, I bought the de facto male standard: white cotton crew socks, generally some department store brand, or Hanes, or some such thing.  Price was a big part of the buying decision, as these things wore out fast (I think I averaged about 3 or 4 months for a pair); most of the socks I purchased were a buck or two a pair.  Then a few years ago I bought a package of Carhartt crew socks.  At $5 a pair, these were considerably more expensive than what I had been buying.  They were also more comfortable, and longer lasting.  After a year of wearing them it was clear that the Carhartt socks were actually costing me less than the ones I had been buying, as they lasted about a year.  So I switched my sock drawer to Carhartts.

Then a couple years ago I decided to try a pair of much more expensive socks.  I'd spotted them on Amazon, noted the great reviews, and decided just to try them. At nearly $13 a pair, they were roughly the same price as a dozen of the socks I used to buy – they'd have to be practically magical to be worth it to me.  But for $13 I thought I'd splurge and give them a spin.

Well, the short version of the result is that after a few months of occasionally wearing them, I bought 10 pairs.  That was about a year ago.  Why?  First and foremost: they're extremely comfortable for me.  They never bunch up inside my shoes like all my other socks did.  They're warm in the winter, and not particularly hot in the summer.  The elastic is powerful (which my dad would have hated!), and I like that because it keeps the upper part of the sock up on my leg, not rolling down into my ankle.  Plus after a few months with that one pair I couldn't detect any wear at all!

Now it's been just a year since I bought the ten pairs.  Some of those pairs have been worn much more often than others.  My sock drawer is basically a last-in, first-out (LIFO) queue – so some of those pairs (at the front of the sock drawer) have been worn probably 50 times, while others (at the back) just a few.  I cannot detect any wear on any of those socks.  The elastic is as strong as the day I bought them.  There are no tears, no holes, no visible wear of any kind.  So far as I can tell, I've got another year of use from these socks ahead of me, and likely even more.  I still find them as comfortable as I did before – and on the rare occasions when I run out of clean Wigwams and wear a pair of my Carhartt crew socks ... I'm aware of the relative discomfort all day.

I count these as a good investment, one that I certainly didn't expect!

A happy discovery upon awakening this morning...

A happy discovery upon awakening this morning ... my cold (or flu?) is nearly gone!  In particular, the fever has completely subsided and I now have more than four or five neurons firing.  What a great feeling!  The only bad part is that my lovely bride – who caught this evil thing before I did – is still suffering from it...

Tuesday, August 22, 2017

Paradise ponders: total solar eclipse, a new dog, a new (to us) eatery, and feeling punky edition...

Paradise ponders: total solar eclipse, a new dog, a new (to us) eatery, and feeling punky edition...  Debbie and I drove up to a point just south of Rexburg, Idaho yesterday to view the total solar eclipse.  We left at 5:30 am on Monday morning, allowing six hours for a drive that normally takes three hours – this, because of the news reports of apocalyptic traffic conditions.  Well, there was basically no traffic at all, and we arrived in Idaho Falls by 8 am.  Since we were so early, we decided to top off our battery at the supercharger there, and grab something to eat at the Kool Beanz shop nearby.  We were in for a surprise, though – all the charging positions were occupied when we got there (see photo at right)!  As we'd never seen more than one other Tesla at this supercharger before, we were more than a tad surprised.  There was one other guy waiting when we drove up, and another drove in after us – so for a while there were 11 Teslas at this fairly obscure supercharger at once.  It was kind of cool to see so many Teslas in one place.  :)  We ended up waiting for perhaps 10 minutes, and then we slid in and charged up.

While we were still waiting for our food at Kool Beanz, Clay M. (a friend and fellow engineer for over 25 years) texted me, wondering where we were.  He and his daughters had left Ogden at 6 am, headed for a rendezvous with us near Rexburg.  But he was in Idaho Falls, and decided to meet up with us in Kool Beanz.  As Debbie would say, “Cool beans!”  Within a few minutes he was there with us, and though we hadn't seen each other for about four years, our conversation picked right up as though it was just four minutes.  His daughters were a bit for me to absorb, though, as I hadn't seen them for about 16 years.  They were toddlers then, but most definitely not toddlers now.  It's great that they wanted to take this trip with their dad. :)

After refueling us and our car, we headed out to our spot near Rexburg.  I had picked a spot in the middle of some potato fields that was 20 miles or so off the freeway, hoping for less of a crowd.  I was actually expecting to be basically alone; Debbie was expecting a huge crowd.  We were both wrong. :)  As we turned off the U.S. highway onto back roads, we noted people selling parking places for $20 a day, and plenty of people with cameras and viewing glasses ready to watch.  The further we got away from the U.S. highway, the fewer people – but even when we reached our chosen spot, there were still 30 or 40 people nearby.  We parked right where we'd picked, but before we could even get out of the car a sheriff told us we couldn't park there, and guided us to a spot a mile or so away.  There, in the equipment yard of a local farmer, we parked for free with about 20 other cars.  It was a happy, well-behaved group, complete with a friendly chocolate lab, probably the next best thing to being completely alone.  The photo at right shows about half our “crowd”...

We had plenty of time to watch as the moon's disc started sliding over the sun.  Before totality we were using the Celestron 10x25 Solar Binoculars we picked up a few weeks ago.  These worked great, giving us a particularly clear view of the progressively larger “bite” the moon was taking from the sun.  We could also see several sunspots.  Though the sun's light was slowly being extinguished, it wasn't really noticeable until about 10 or 12 minutes prior to totality.  At that point so much of the sun was blocked that it was obviously darker, and the temperature started to go down.  The photo at left was taken during this period.  The silvery horizontal lines you see are aluminum high tension wires.  As you can see, there's really not much difference between that and full daylight – we only noticed it, I think, because it was so much less light than just a few minutes prior.  As we got very close (within three minutes or so) to totality, the atmosphere got a bit eerie.  Debbie and I were both reminded of the same thing: the lighting as a storm approaches, or as you emerge into the eye of a hurricane. 

And then there was totality.  The transition to totality was quite sudden, a switch flipping day into dark.  In totality the only light in the sky is from the sun's corona and any visible solar prominences.  I didn't even try to take photos of that, as I don't have the right equipment for it.  I just enjoyed being able to see it.  Debbie and I switched to conventional binoculars (stabilized, though) and had a couple minutes of just spectacularly good viewing of the event.  Details – streamers, especially – were readily visible.  The corona has an ethereal appearance, ghostly and insubstantial.  I could also see two solar prominences, bright orange, and much, much smaller than the corona.  Debbie was able to make out three of them – she has better eyeballs than I do.  So beautiful, it was!  I did take a moment to snap a photo of the scene to our west (at right, above).  The orange band stretched 360° around us, so it didn't really look like a sunrise or sunset.  And it really was quite dark!  The temperature dropped perhaps 10 degrees.

It was fun to hear our little crowd reacting to the eclipse.  As totality approached, the normal conversational ruckus died down.  At that point we mostly heard exclamations of surprise and happiness.  At the moment of totality there were quite a few of these, including some we hardly ever hear where we live (such as one very clear “Holy shit, dude!”) :) The video at left was taken during totality by one of Clay's daughters.  At right is Clay with his daughters (Sydney and Shayla), and Debbie in the background watching the moon eat the sun.

Then it was over, and all too quickly.  Personally, I'd have liked a few hours of totality – but there would have to be significant changes in the Earth-Moon-Sun relationship for that to happen, and the side effects would be bad. :)  We took off to go back home, planning to stop by the Idaho Falls supercharger one last time to top off.  We had only driven a couple of miles from our observation point before we noticed the first odd thing: Google Maps was routing us along back roads instead of the U.S. highway.  A quick look at the traffic data showed a solid red on the U.S. highway – and on I-15, which we had to take to get home.  Uh oh.  It took almost an hour for us to get into Idaho Falls, instead of the 30 minutes we expected.  We topped off our car and headed for the I-15 – but just getting onto I-15 took over an hour (instead of the usual 10 minutes).  And things pretty much went downhill from there.  Our speed on the freeway ranged from zero (for as much as 20 minutes) to about 60 mph (for short bursts only).  We were well south of Pocatello before we finally were at a steady speed, and we only hit the speed limit for the last few miles before we turned off for Logan on U.S. 91.  After that we were at full speed, and oh-so-happy to be out of the traffic that we're so unfamiliar with these day.  I have to note that the Model X made the traffic much easier to deal with, though.  I turned on the automatic speed control, and it handled all the accelerating and decelerating on its own.  All I had to do was hold onto the steering wheel, which was easy as I was so tired I needed the support!

Debbie and I stopped to eat at a place that opened a couple years ago, but which we'd never stopped in at: Jim's Grill, in Smithfield.  We were greeted in a very friendly way, seated immediately, and we ordered our drinks (beer for Debbie, strawberry lemonade for me).  With our drinks, our waiter brought rolls.  My lemonade wasn't great, an in particular was way too sweet for my tastes.  The rolls were good, but not a standout by any means.  Debbie reports that her beer was excellent.  My initial experience with the drink and roll lowered my expectations considerably – so I got a very pleasant surprise indeed when the entrees showed up (photos below).  At left is Debbie's order of three shrimp tacos.  Darned near as big as she is, and they looked scrumptious.  I got one small bite of her third one; all the rest she shoveled into her face at breakneck speed, all the while a huge smile on her face and yummy noises emanating from somewhere inside her.  My fish and chips (at right) was hands-down the best I've had in Cache Valley.  The nearest I've had that's better is at Sea Bear's in Ogden.  They served it with malt vinegar, lemon, and tartar sauce, covering all known bases.  The cole slaw was notable for me, as it's sauce was just the way I like it: very slightly sweet, and not overpowering the cabbage.  Even the “chips” were great, and (this being northern Utah), of course they came with fry sauce!

We finally staggered in the door at about 8 pm, and by that point I was just barely able to move.  It wasn't just the exciting day that had me tired: I have caught whatever evil virus got Debbie last week.  I'm about 5 days behind her, symptom-wise, so last night was the worst I'm expecting.  I feel a bit better today, and Debbie is most of the way up the recovery curve.  What a day that virus picked to attack me!

This morning Debbie got a message from a field spaniel breeder in Michigan, someone she knows through her dog agility network.  It seems this breeder had a year-old female field spaniel returned by the person who bought her – and the breeder is having trouble finding a good home for her.  She reached out to Debbie to see if we'd be willing to take her, and long-story-short, in mid-September there will be yet another dog living in our household.  This one is tentatively named Ipo (Hawai'ian for “sweetheart”), and she'll be arriving by air with the breeder's husband, checked on as a service dog (this avoids most of the risks of checking pets as cargo).  That will give us a total of five dogs (four of them field spaniels), with three of them being roughly the same age...

Saturday, August 19, 2017

Paradise ponders: dead deer, first measurements, wet earth, and sickness at home edition...

Paradise ponders: dead deer, first measurements, wet earth, and sickness at home edition...  Yesterday afternoon, Debbie and I ran up to Aggie's Creamery for an ice cream cone (and, as usual, they were delicious!).  Across the street from our driveway, we saw a dead deer lying, obviously killed by a car.  We stopped at our vet's office on the way up, to drop off some cat food we were donating, and I took the opportunity to ask if there was a government agency that picked up road kill.  Nope.  So when we got home I started up my tractor and picked it up (using my fork).  I took the body of the young buck (a four-pointer) up the road about a half-mile to an old disused quarry where people pile brush to be burned.  I put it on top of that burn pile, so the next time it gets fired off it will make a pyre for the deer.  What a sad job that was...

I've been plugging away on the software for my irrigation supervisor, and making great progress.  As of this morning I have temperature, humidity, barometric pressure, and the four water pressure sensors all working.  I'm almost ready to make a case for this thing, and install it in the shed!

The sprinkler guys were here yesterday and again today, also making steady progress.  We now have 10 zones in the back yard installed and tested.  One of the valves malfunctioned, so that will have to be replaced – but otherwise, it's all up and running!  The sprinklers in the middle of the back yard are currently capped off, because we're going to be soaking the back yard to get it to settle.  After that, they'll spread more topsoil to get the levels right, then install the remaining sprinklers.  It feels like we're dangerously close to getting sod put down.

Meanwhile, a couple days ago Debbie came down with some kind of awful cold.  It started with a sore throat and escalated into fever, sneezing, coughing, runny nose, and scratchy eyes.  She got a sinus infection, too; we made an amazingly fast visit to the local clinic and she got a prescription for Amoxicillin.  The good news from that is that the infection is already knocked down by this afternoon, just 24 hours later.  Good stuff!  In the past couple hours, I've developed a sore throat.  I'm not too happy about that...

Friday, August 18, 2017

Paradise ponders: funny signs, bountiful hay, migraines, and concrete-cutting edition...

Paradise ponders: funny signs, bountiful hay, migraines, and concrete-cutting edition...  When I first saw the sign at right, from some distance, I thought someone had framed one of those Hollywood ransom letters made from newspaper clippings.  It's actually an advertisement hanging in our local drug store.  When I took this photo, two of the women working there came over to see what I was doing.  Apparently the resemblance had never occurred to them, but when I mentioned it they got a good laugh out of it!  :)

The last couple of days haven't seen much progress on our great sprinkler project – but today we've got all sorts of action once again.  The problem before today was a migraine (on the part of my main contractor), and his main employee got sick on top of that!  But today they're back, and things are happening.  One of the things that happened is a fellow showed up to cut both ends of a 20' long stretch of ugly concrete sidewalk, freeing it to be removed.  We're going to put a flagstone walkway in its place.  Another thing that's still happening: large quantities of topsoil are being moved from piles into all the low places in our yard.  It already looks vastly better than it did, and they've only moved roughly half the dirt.  Progress!

Yesterday Scott N. (the guy who leases our south field, 12 acres, for alfalfa) baled up the third cutting for the year.  His yield was 362 bales, a record for that particular field (despite the fact that I took one acre out of production three years ago, to make a play area for our neighbor's kids).  Scott's been leasing this field for 12 years, so he's got a bit of history on it.  There's a couple views of that field below, when he was roughly 1/2 way through baling it.

I'm making nice progress on the software for my irrigation supervisor computer.  This morning I moved it all over to the computer you see in the photo at right (the pen is there to give you a sense for just how small that computer is).  The large board is the Raspberry Pi 3B computer, and the little board to the left is a temperature, barometric pressure, and relative humidity sensor.  I have two other similarly small boards to hook up after I get this one working.  I now have a complete debugging environment up on the Pi, and everything I built on my laptop is now running just fine on the Pi as well.  I figured that process would take me a couple of days, as there were many steps along the way that were new things to me.  Instead it took just five hours.  Not bad at all!

Many moons ago, back in the late '70s and early '80s, I designed and built quite a few prototypes of small, single-board computers that could be used for embedded systems (my irrigation supervisor is an example of an embedded system).  Only one of them actually made it into production.  Those were nearly all based on Z80 CPUs, though I did one with a 6502, and another with a 68000.  The smallest of those was a Z80 design the size of an ordinary shoe box, and I thought that was a miracle of miniaturization.  Though it was small, it required a fan – a rather powerful fan – to cool it off.  I don't remember the exact power consumption, but it must have been around 50 watts.  This little Pi, running my program, consumes just 2.5 watts – and even without a fan those little heat sinks are just barely above room temperature.  The processor on it is millions of times more powerful than that Z80, and it's got 15,000 times as much RAM.  That Z80 had a few kilobytes of ROM (the Pi has 16 megabytes), and no disk (while the Pi has 32GB of solid state disk).  The Z80 prototype probably had a couple hundred dollars worth of parts in it; the Pi was $39.  I never seem to lose my sense of wonder at the pace of advancement in digital systems...

Wednesday, August 16, 2017

Paradise ponders: anniversaries, culverts and muddy yard edition...

Paradise ponders: anniversaries, culverts and muddy yard edition...  Today is our 36th wedding anniversary.  I'm a lucky guy to have my beautiful bride put up with me for that long! 

The funny-looking guy at right is Mark T., my sprinkler contractor.  A big part of the job he's doing is to fix the problems in our yard that would prevent a nice, attractive lawn from being installed.  One of those problems was a giant steel culvert-to-nowhere that was about 3/4 buried near the southern end of our yard.  We have utterly no idea why this ugly steel culvert was there – there's no purpose for it that I could even imagine.  My best guess is that some former owner of our property decided to dispose of it there.  At a guess, it weighs between two and three tons, mainly because of all the wet soil that's nearly filling it.  It's so heavy that neither his skid-steer nor my tractor can lift it – all either of us can do is roll it around.  So he's going to have one of his employees cut it into sections (we'll try two, and if that's not small enough then four), tip them up on end, and get the dirt to fall out.  Mark had an ear-to-ear smile pasted on when he told me of his success – this because the evening before I had voice my skepticism that he could do it. :)

Our back yard has now been leveled and raked with a machine called a Harley rake (much like the one in the photo at right).  One of his employees is fixing a leak right now, but when he's done we're going to light off all the sprinklers in the back yard and soak it really well.  Then we wait for things to settle, and Mark will start hauling dirt to adjust the level to our liking.  Then we soak it again, fix any settling issues, and lay sod.  When that sod goes down, it will be the first time this year our back yard looked green!

This ain't your mama's JavaScript...

This ain't your mama's JavaScript...  Working on the irrigation supervisor software has me doing some JavaScript development again.  It's been a few years since the last time I tried doing anything non-trivial in the web browser environment, so I've been being careful in my assumptions.  It's a darned good thing I'm doing so, because JavaScript has changed so much I can hardly recognize it.  It's all good, too!

I could list lots of changes that I've noticed, but I can convey the flavor of it with a single example.  I wanted to do a SHA-256 digest (of a password) in the browser.  In the past, I'd do a web search for someone's library, download it, and incorporate it in my project.  This time when I did the web search, I discovered the Web Cryptography API, which I'd never even heard of before.  It's supported in every browser I can ever imagine being concerned with, it's open source, and it's been reviewed.  As just one of its bazillion capabilities, it has a digest function that supports SHA-256.  Awesome!

Taken as a whole, the new stuff that's widely supported looks a awful lot like the kind of rich library environment I'm used to in Java programming.  Furthermore, the browsers have moved far closer to a universal standard than they were even just a few years ago.  These changes make JavaScript a vastly more pleasant programming environment that I am quite enjoying...

Dictionary dad...

Dictionary dad...  My sister Holly emailed me this morning, and something she said triggered this memory.  My dad had a larger vocabulary than you'd expect from a farmer – much larger, actually.  His spelling was nearly perfect, too.  These served him well in our word games (Scrabble, Boggle, etc.), which our family played a lot of.

When I was learning to read, I often ran into words I didn't know.  If I asked my mom about those words, most of the time she would give me an explanation, and only occasionally would she send me to the dictionary.  My dad was just the opposite, often sending me to go look up the word and then come back and tell him what it meant as a way of testing my comprehension.

As I worked my way into more adult books, I'd start running into words that the dictionaries we owned at the time didn't list – or listed with definitions that didn't make any sense in the context I was reading them.  This was happening because I had started reading older books that we had on our shelves, and those books were written in an older style, sometimes using words that had fallen out of common use.  I remember particularly running into this with some of Mark Twain's books, and with translations of Jules Verne.  My dad explained that to me, but without any more complete dictionaries the only source of information was my dad's memory – and often these would be words that he didn't know, either.

Then one day dad came home with a new dictionary, a gift for me.  I call it “new” because it was new for our household, but it was actually a lovingly used volume.  Lots of pages were dog-eared, there was marginalia, and a little stick-figure drawing on the inside back cover.  Most likely my dad picked it up at a yard sale somewhere, or perhaps a used book store.  Unfortunately I don't remember who the publisher was, or which edition.  I do remember, though, what it looked like: it was a hardback, with a bright red cover and embossed gold letters on the cover.  And it was huge – so thick and so heavy that at my then-age I could scarcely lift the thing.  The best part, though, was that it was a descriptive dictionary, like the OED, showing how words were actually used rather than laying out a “correct” definition.  I can't recall ever stumping that dictionary.  It became my “word bible” as my reading took me into more and more challenging texts.  It was also the start of a life-long relationship with dictionaries for me!  :)

Tuesday, August 15, 2017

Paradise ponders: puppies, sunflowers, cedar, and ridiculous amounts of copper edition...

Paradise ponders: puppies, sunflowers, cedar, and ridiculous amounts of copper edition...  In this mornings soft light, the wild sunflowers growing around my barn are particularly cheerful.  The bees are on them already!

When our dogs are out in our back yard, a walk between our house and our barn guarantees that you will be accosted by canines – most especially our two youngest, Cabo and Mako.  This morning as I approached the fence, these faces greeted me:

The trenches you see in the background are part of the great sprinkler project. That's Cabo in the first two photos, Mako in the second two.

Yesterday morning I tackled the hardest part of the remaining wiring on the sprinkler project: pulling 14 wires (each 14 gauge solid copper) through a 2" conduit that already had 15 such wires in it.  After that, wove the same 14 wires through a dozen or so hangers inside the cedar shed until they all come out neatly at the irrigation controller.  That's all done now.  Whew!  Once the sprinkler guys have all the back yard valves hooked up, I'll ring out those wires and install them into the irrigation controller.  At that point, all the sprinkler system wiring will be complete. 

The amount of heavy wire in the sprinkler system is kind of amazing.  If I kept track of the spools of wire correctly, there are about 7,000' of 14 gauge solid copper wire in the system.  The trenches containing big bunches of wires look like some kind of industrial installation.  If you haven't purchased copper wire recently, you might also be surprised at how expensive that stuff is.  I'm told that some larger construction projects have been put on hold until either the price of copper comes down or parts compatible with aluminum wire (very cheap by comparison with copper) become available.  Electricians in general don't like working with aluminum wire, as it has to be substantially bigger (in diameter) than copper to handle the same current safely.  The rule-of-thumb for this is to go up two gauges for aluminum wire.  In other words, where you might have used 12 gauge copper wire, you'd need to use 10 gauge aluminum.

Shortly after I completed that wiring, I called the vendor who is supposed to get the tongue-and-groove cedar for our deck ceiling.  My plan was to pester him every couple of days until he got it done.  No need!  It was done!  Woo hoo!  I called my brother Scott looking for some help (as he's got the pickup with a nice roof rack), and before noon we were at the vendor loading up 1,800 linear feet of 5" wide western red cedar (tight knots) tongue-and-groove.  That works out to 750 square feet, and my deck is about 630 square feet, so I'll be able to pick and choose the best pieces – and still have a bunch of usable wood left over.  This is awfully pretty wood, and a darned big pile of it on our deck!  Smells great, too, though that won't last too long outdoors.

Calibrating sensors...

Calibrating sensors...  My irrigation supervisory system has four pressure sensors that measure water pressure at various points in the system.  Those sensors have a 0.5% absolute accuracy over the full range of the sensor (0 - 150 psi), and over the full temperature range (-40 to 105 °C).  At normal operating pressures of around 40 psi, the maximum absolute error is therefore about 0.2 psi.  However, because sensors could be off in different directions, the maximum absolute error between two sensors is about 0.4 psi.

That's still a small error, and not really significant for my system's purposes – but I got to wondering if I could do better.  There are two places in the system where I'm measuring the pressure difference between two gauges (to sense how dirty a filter is), and there I'm looking at pressure differences as small as a few psi.  The 0.4 psi error looms more significantly there then you might think at first blush.

The obvious way to correct the sensor error would be to calibrate each sensor against a “gold standard”.  One could imagine, then, simply making an equivalence table for each sensor, showing the actual pressure that corresponds to each reading.  You could make a few calibrated readings and then linearly interpolate for intermediate pressures.  Simple!  Except, that is, for one slight little problem: the lowest-cost pressure calibrator I could find is nearly $500!  That's way more than this problem is worth to me (and several times the cost of all four of my pressure sensors!).  I can't think of anyone who might have one of these little beasties laying around, either.

So we need another approach.  One thing occurred to me that might lead to a solution: the sensors' intrinsic absolute accuracy is more than sufficient – what I need to improve is the relative accuracy.  What if ... I took one of these sensors and called it my gold standard?  Then I could calibrate the other three sensors against that one, and then my differential pressure measurements should be more accurate.  I have an easy way to have all four sensors simultaneously measure the exact same pressure (whatever the Paradise Irrigation system happens to be providing at that moment, which varies from 0 psi to about 45 psi over time): I just close the outlet valve from my pump shed, which guarantees there's no flow through the system (and therefore all the pressures are identical).  I can also easily get absolute zero pressure to all four gauges by closing the inlet and the outlet valves, then draining the pump.

I know a bit about these sensors from past experience.  If P is the absolute pressure, then the sensor's measured pressure S can be approximated by
    AP + B,
where A is the scale coefficient (generally very close to one), and B is the offset (generally very close to zero).  If you take a series of measurements at different pressures for a sensor you're calibrating, while your gold standard is measuring the same pressure, you can get a series of pairs of measurements.  That series can then be used as the input to a linear regression, the output of which is A and B for the sensor you're calibrating.  Then you've got that sensor's equation relative to your gold standard sensor.

At that point it's just some simple math to “correct” the sensor you're calibrating.  It's equation is  
    S = AP + B
The gold standard's equation is  
    S = P
(by definition).  The difference between them (the error, or E) is
    E = (A-1)P + B
Therefore the corrected pressure  
    C = S - ((A-1)P + B)
That's not so bad!  I'm implementing a class that does this right now.  The most challenging bit of that is the user interface: a way to let the user (me!) click a button to capture a new set of data.  The irrigation supervisor can't do that on its own, because it doesn't know when all the sensors should be showing the same pressure – it needs a human assist for that...

Sunday, August 13, 2017

Envious, you should be!

Envious, you should be!  We just finished another fantastic meal.  First course was fresh corn on the cob, grown locally.  Next up was Debbie's signature sea scallops from Oregon, broiled in a lemon garlic sauce, topped with dill and lemon zest.  For dessert we had another Galia melon, grown just over the Wellsville Mountains, north of Ogden.  My tipple was Pelligrino sparkling water.  Oh, what a fine meal!

And we've got another one lined up for tomorrow: prime ribeye steak, local (Idaho) baked potatoes, and asparagus from Washington state...

Saturday, August 12, 2017

Grocery store jackpot!

Grocery store jackpot!  This morning we went shopping for food for the next few days at our usual store: Macey's.  When we got to the meat counter, we discovered that they had fresh sea scallops and big-eye tuna.  Woo hoo!  We got ourselves a pound and a half of scallops (for tomorrow) and two pounds of big-eye tuna (for today).  We also picked up four prime ribeyes, about five pounds in total.  As if that wasn't enough, they also had fresh Galia melons.  If you don't know these melons, you should take your first opportunity to rectify that deplorable situation – they are fantastic!  The Galia was developed in Israel, and if you've ever been there you know Israel is the world's center of melon agriculture (along with cottage cheese!).

We just finished a spectacular meal: poke made with big-eye tuna and avocado on brown rice, Galia melon for dessert, washed down with Pelligrino sparkling water.  I'm so full I can scarcely move, and I'm afraid my brain may shut down from the food coma I can feel coming over me – and I've got some programming to do, dang it!

First boosted sprinkles!

First boosted sprinkles!  Our sprinkler contractors are here this morning, and they finished running all the pipe in our back yard.  That means ... we could pressurize the entire sprinkler system – all 23 zones – and I can irrigate again in the south half of the system (the north half needs the sprinkler heads installed).  This means I had the first chance to test the booster pump system with water actually running through the system.  Of course I had to do that right away!

So I lit off the zone that contains our struggling lilacs, and then lit off the pump.  It took about six seconds for the pump to start up and then ramp up its speed until we had the targeted pressure (50 psi).  Once there, it bobbled about for about five seconds more, and then it was rock-solid at 50 psi.  This is while around 30 gallons per minute are flowing, and the inlet pressure to the pump was at 32 psi.  So we're getting a nice, steady 18 psi boost, exactly as designed.  Woo hoo!

At that 18 psi boost, the pump is consuming 5.6 amps on the single-phase 220 volt input line.  That works out to about 1,200 watts, which is about the same as Debbie's hair dryer.  Not bad!  Right now that power is being supplied entirely by my solar panel array, so it's costing me exactly nothing.  Even better! :) 

Paradise ponders: puppy, math texts, and a war zone in the yard edition...

Paradise ponders: puppy, math texts, and a war zone in the yard edition...  Yesterday afternoon Michelle and A.J. brought the new puppy over for a visit, ostensibly to get training information from Debbie.  The puppy is provisionally named “Samoa” (after the cookie, not the country), or “Sam” for short.  At one point Debbie wanted little Sam out of sight, so I took her into our living room to play with her – and all she wanted to do was to sleep in my lap.  She was all tuckered out. :)  A little later, everybody else came in and we talked for a while, while little Sam looked like this as she moved from person-to-person:

This morning we heard that she had a relatively peaceful night, considering that it was her first night away from the litter, and first night in a crate.  There was one bout of whining, which turned out to be related to a fecal explosion.  After some cleanup and drying, she was down for the rest of the night.  I expect her to be even more tired tonight, as Michelle and her kids will have the entire day with her. :)

Yesterday I had an actual physical book delivered – a fairly rare event for me these days, as nearly all my books are electronic.   This one is a text that I've been looking at for years, and when I got the notice that the second edition was out, I decided to go for it.  My exposure to the math underlying much of computer science has been very spotty, and almost entirely self-taught: the consequence of never going to college, and an education driven by need in my work.  If my enfeebled ancient brain can handle the strain, I'm going to try to work my way through this entire book, then tackle Knuth's classic The Art of Computer Science while armed with this math.  I've used The Art of Computer Science for decades, dipping into it whenever I've needed to learn something I'd never run into before (most recently red-black trees).  I've never tried to work through the entire thing, so consequently there are stretches of hundreds of pages that I've never even glanced at.  I read through the first 25 pages or so last night, and so far as I can tell, no brain injuries occurred – so I shall keep on going.  :)

I haven't mentioned our great sprinkler project for a while.  It's been oh-so-slowly advancing, working our way through one challenge after another.  The most recent challenge was the startling unavailability of good topsoil, the consequence of a building boom here in Cache County.  We finally managed to scrounge up the loads that we needed, with about 300 cubic yards delivered so far, and another 200 or so coming in the next week.  All this dirt is needed to smooth out the low spots in various places in our yard.  There were minor low spots over nearly the entire three acres, but the worst bit is in our back yard (just a half acre or so).  In that area there are big stretches that were almost 18" lower than they should have been, and it takes a lot of dirt to fix a problem like that!  We're also, finally, addressing the edges of our driveway.  When we put it in three years ago, to get the levels right the crew had to raise parts of it 6" to 8" above the yard.  We've now put in dirt to slope the yard nicely up to the edges of the driveway, so you don't have to step off a cliff when walking from the driveway into the yard.  The back yard right now looks a bit like a WWI trench warfare photograph – there are trenches everywhere, and in just about every direction.  Many of them, as I write, have pipes and wires in them.  This morning the contractor is scheduled to arrive and finish them up to the point where we can pressurize the entire sprinkler system – a major milestone indeed!  At that point we can enable the irrigation schedule for the south part of our yard, and perhaps keep our lilacs and white birches alive.  Within a few days we should be able to do the same for the north part of the yard – and the contractors will be ready to lay sod (in the north) and sow seed (in the south).  Assuming this all happens by September first, that means the project will have taken 13 months with this contractor, and 29 months from the first contact I made with the first contractor (who never actually started the job, though he came out, surveyed, and made an elaborate plan).  Somehow I never expected the #@(#)*)$@#^^@#!)#(*^% sprinkler project to be the most difficult one to accomplish of all the things we've done to our new house!

Friday, August 11, 2017


Puppies!  We just got back from visiting the breeder, and now A. J. has a new puppy.  Photos below; short video of A. J. with the puppies at right.  That was fun!  A. J. chose one of the little girls with black, brown, and white markings.  She doesn't have a name yet (though I'm sure that will be forthcoming soon). On the way home we stopped at Tractor Supply Company and picked up the puppy essentials: food, water, bowls, treats, and toys.  Lots of toys!  Right after the little pupper got to A. J.'s house, she ran right up and down their front steps – no stairs learning curve at all.  We suspect this bodes very well for the little girl's doggie IQ.  Meanwhile, we have a very happy camper with A. J.  He's been wanting a puppy very badly, one that he can train for agility (with a little help from Auntie Debbie!).  One thing I don't believe we have to worry about: this little girl will not be starved for attention!  :)

Paradise ponders: cat bath, stirrup people, Scott flock, and rodeo edition...

Paradise ponders: cat bath, stirrup people, Scott flock, rodeo, and puppies edition...  I worked most of yesterday on my irrigation supervisor program.  On one of my breaks, we decided to give little Laki (the cat we found out in Blacksmith Fork Canyon) a bath – she smelled like skunk, and her coat was still full of all the junk she picked up out in the boonies.  Well, that was quite the adventure.  She fought as if she weighed ten times the 5.5 pounds that she does.  I have lacerations and puncture wounds all over my hands and arms, Debbie has one scratch, and unfortunately I have one deep bite on my right forefinger.  It's healing nicely and there's no sign of infection yet, so I may luck out with this one.  Poor little Laki is only slightly cleaner, and the skunk smell is less by maybe 10%.  I'm not sure how we're going to get past her terror of baths (not at all uncommon with cats, of course).  Maybe we'll just try to live long enough for the skunk smell to dissipate. :)

Yesterday evening we headed to the Cache County Fair for a couple hours of walking around before the rodeo.  One of the first things we ran into was the display (photos below) that my brother Scott helped build for the town of Newton (where he lives).  This display included the wooden stirrups that I helped make last week.  Their display took first place out of the six total entries.  This will be the last year for the town displays at the Cache County Fair – apparently there wasn't enough interest for them to continue.  Only six entries for the 30 or so towns in the county...

We wandered around for a bit, which was very hard for this introvert.  All the things I don't like were right in my face: crowds, noise, chaos.  I got a headache within a few minutes of arriving, and headaches are a very rare thing for me.  I was thirsty, so I stopped and got some lemonade – really, really awful lemonade!  After a half hour or so checking out the booths, we headed for the animal section.  That was a bit less crowded, and I like animals, so a much better experience for me.  We walked through the cows, steers, goats, and sheep – while skipping the birds (hot and crowded) and pigs (because they're pigs!).  In the goat section we came across a stall being tended by a young boy (photo at right), just six or seven, wielding a rake that weighed about the same as he did. :)

A little later, in the sheep section, we found the stall at left for the “Scott flock”.  The Scotts happen to be our neighbors; their house and pasture is just northwest of our barn.  Abby, Nicholas, and Sarah we know quite well (I tutored all three on programming for a while).  Jasmine and Jonathan are younger kids, recently adopted; we know them but not as well.  Those two are very lucky kids indeed, though they may not realize it yet – the home they have now is a paragon of wholesomeness and love in an absolute sense, but even more so relative to the home they've left.  Every time I see them I think of the selflessness of their new parents (and their other kids, too)...

The big event for the night, though, was the rodeo.  I was too busy watching the action to take photos, and they wouldn't have come out very well anyway.  The photo at right, taken just before the rodeo started, at least gives you an idea about the venue.  Before the rodeo started, lots of people were in the arena riding horses.  Some of the riders were very young – I'd guess no more than six or seven years old, with legs so short that the stirrups were a couple feet below their feet.  Some were rodeo participants, but most were not.  I'm still not sure why all these people were riding, but it was actually quite entertaining for us – beautiful horses, interesting people (and pretty girls, too :).

The rodeo itself was by far the best one we've been to in Utah, from several perspectives.  First, the competitors were really, really good.  Most of the competitors in every event actually completed their event (i.e., the bull riders made it for 8 seconds, the steer wrestlers wrestled their steers, etc.).  Some of the competitors put on dazzling displays of talent.  Second, the event was very well-run: competitors followed each other out with very little delay, and transitions between events was smooth and fast.  Third, the audio and visual systems were very good: the audio was of excellent quality (though way too loud for my taste), and the big screen (visible at the left of the photo above) was, well, big and bright.  Our seats were outstanding.  The crowd around us was polite, engaged, and happy.  All of these things contributed to it being a most enjoyable event.  Still tough for an introvert, though!  :)

There was one event during the rodeo that I didn't expect at all, and it was quite emotional for me.  If you're not from the area, you may not have heard the story of Deserae Turner – but if you read the article at the link, you'll know why it's well known here.  Like many locals, we were shocked, followed her story avidly, and contributed toward her recovery.  Her story is the kind of thing you'd expect in a big city, not here.  Well, in a break between two rodeo events, Deserae Turner was driven around the arena while she rode in the back of a pickup.  The outpouring of emotion from the crowd – almost all locals very familiar with her story – was really something to see.  As she passed our seats, we could see that Deserae was overcome with emotion herself; her companion was holding her in a tight hug.  Just thinking about the moment has me in tears again...

This morning (soon, actually!) we have something really fun planned.  There's a lady a few miles away who has nine border collie puppies who need a new home.  Our friend Michelle H. has a young boy (A. J.) who wants a puppy more than anything else in the world – specifically, a border collie puppy that he can train for agility competition.  A. J. loves our border collie Race, and wants one just like him.  Well, we're heading up with Michelle and A. J. to see those puppies this morning.  A. J. thinks we're looking for a new puppy, and has no idea that if things work out well it's him that will be going home with one.  Hopefully he doesn't read my blog! :)  This should be lots of fun for all of us...

Thursday, August 10, 2017

By popular request...

By popular request...  Well, one request, anyway, from reader Chuck W. :)  Below a screenshot of the status page on the irrigation system supervisory program's web site as it stands right now.  The indicators and gauges update about once per second.  The green rectangles are indicators that turn red when off (in other words, if the pump turns off, the right hand indicator turns red).  The top row of gauges duplicates the physical gauges in the cedar shed that houses my irrigation system, showing the water pressure at various places in the system.  The middle row of two gauges shows the differential pressure across each of the two filters in my system – when that goes over 5 psi, it's time to clean them.  Over 8 psi and things are getting really bad.  The bottom row of gauges gives a simple weather readout.

Paradise ponders: happy-but-sick kitty, “first pressure” on our irrigation pump, sneaky Americanisms, and unlikely bird identification...

Paradise ponders: happy-but-sick kitty, “first pressure” on our irrigation pump, sneaky Americanisms, and unlikely bird identification...  Yesterday afternoon our vet's office snuck in an appointment for us with Laki, the kitty we found out in Blacksmith Fork Canyon.  They did an exam and took blood for testing, with some results in just a few minutes.  The results: she's sick (has a moderate fever), some upper respiratory congestion, and needs food.  The diarrhea we observed is most likely due to a combination of her illness and her suddenly getting as much good food as she wants.  She tested slightly positive (antigen test) for the feline leukemia virus (FeLV) – so now we have to wait for six weeks, test her again, and see if she managed to fight it off.  There's a good chance that she will, as roughly 70% of cats do – though with her immune system compromised by malnutrition and who-knows-what disease she picked up, her chances aren't quite so good.  For now she's getting a round of antibiotics, some meds for the diarrhea, good nutrition, clean water, a bath, isolation from our other kitties, and lots of attention.  I visited with her this morning, and I can tell you we've got one very happy kitty there...

This morning our irrigation pressure was restored, albeit to a low level (30 psi).  I pressurized the system with the pump off, and ... no leaks!  Hooray!  So then I decided to light off the pump for the first time, to see if the system would maintain the desired 50 psi at the output.  I could only do this with the outlet shut off at the cedar shed, as the sprinkler contractor is in the middle of installing the pipes in our back yard, and there are open ends everywhere.  The first time I turned on the pump's breaker, I went through a programming procedure for the variable frequency drive (VFD) system, and checked that its pressure sensor was working correctly.  Then I told the VFD to start the pump, and ... promptly got a fault.  “Shorted ground” was the diagnostic message that appeared.  I took the cover off the pump's wiring box, and inspected it carefully – and found one tiny little strand of the ground wire touching a terminal it shouldn't have been touching.  Nice diagnostics!  I fixed that, and again told the VFD to start the pump.  This time the pump started up, slowly at first and then building up speed as it ramped the pressure up to the desired 50 psi (and filling the pressure tank on the way), then slowed down again.  There was one more thing to check, though: the direction the motor was spinning.  Centrifugal pumps actually work with the impeller rotating in either direction, but they work much better with the impeller rotating in the intended direction.  The motor on my pump is a three-phase motor, and it's very common to have those rotate backwards.  Mine was, naturally. :)  Fixing that is a piece of cake: you just swap any two of the phases.  I did that, and started the VFD one last time – everything worked fine this time.  Once the pressure tank was charged, the VFD ramped down to 30 Hz and perfectly maintained 50 psi.  There was a bit of noise at the lower frequencies, so I called into Glenn's Electric (where I bought the pump) and got educated on the several possible sources of that noise.  All but one of them are benign and should disappear after a little use; the one bad possibility is a bad starter switch.  If the noise persists, I'll call them back and they'll swap out that switch.  It's very satisfying to me to have this fairly complex pump system all up and running properly.  It also seems kind of odd to me that I'm the first (at least, so far as Glenn's Electric knows) to put in a booster system like I have.  The usual solution is to have a full-time pump – and they're fairly expensive to run, so I'm surprised more people wouldn't opt for a run-only-when-needed system like I've installed...

Whenever I'm writing these days, it's on the computer – and there always seems to be a spelling checker operating.  When I type something that gets marked as a spelling error, but looks right to me, I always go look it up in my trusty OED.  Sometimes I discover that I actually did make a spelling error.  More often, it's a word that's in the OED, but the spelling checker didn't know it, so I add it.  That happened to me as I typed the word “ramped” in this post.  The OED's definition is at right (click to embiggen); it's really a perfectly good word, so I added it to the spelling checker.

Another word I typed this morning (“snuck”) had a surprising OED page.  My first surprise was that while the OED lists “snuck” as the past tense of “sneak” (which I expected), it says that's chiefly an American usage! Everywhere else it's “sneaked”.  I can't recall another occasion when I've run across an English word whose root is the same in both British and American usage, but whose derivations are different.  There are probably 10,000 of them, but I never noticed it before...

I've been using the CD-ROM version of the OED for years now, and I'd call it an essential tool.  It's more expensive than many people would care to spend on a dictionary, though – you have to be something of a word nut to care that much. :)  When away from my computer recently, I discovered that there's a reduced (but still official) version of the OED online, and free.  Can't beat that!

I mentioned the other day that we had sighted a bird we didn't know, out by Miller's Ranch.  Debbie found it today, and it sure surprised me!  The photo at right is from the Audubon Society, and it's a year-old (“first summer”) red-winged blackbird.  I would never, ever have guessed that this was a blackbird!  It's so not black!!!

Wednesday, August 9, 2017

Paradise ponders: embedded web servers and lucky cat edition...

Paradise ponders: embedded web servers and lucky cat edition...  For most of my day yesterday I was hard at work programming.  First I completed a round of testing and troubleshooting the core part of the irrigation supervisory program, the state machine that controls whether the 5 horsepower pump is enabled.  That's more challenging that you might think – all the following possibilities need to be handled:
  • The water supply (from the Paradise Irrigation cooperative that I belong to) pressure may be high enough that no boost from the pump is required.  In this case we don't want to turn on the pump at all.
  • The water supply may be turned off, or nearly so – in which case running the pump would destroy it, so we want to turn it off.
  • The pump cannot maintain sufficient output pressure.  This might happen if there was a break in the line, or if there was a problem with the variable frequency drive (VFD).  In this case, running the pump won't hurt it, but the irrigation system won't work properly – so we want to suspend the irrigation schedule and turn off the pump.
  • The pump produces too high an output pressure.  This condition runs the risk of destroying the sprinkler system, and indicates that there's something wrong with the constant pressure pump system.  In this case we want to turn off the pump and alert a human to come help.
  • Either or both of the filters could be excessively clogged, causing a pressure drop across the filter(s) and therefore a lower than desirable pressure to the sprinklers.  In this case, we want to to alert a human to come help.
  • A human may have disabled the system (for instance, to clean the filters).  In this case we want to turn off the pump and suspend the irrigation schedule.
  • If any of the above conditions caused the pump to shut down, when the conditions have cleared (or enough time has gone by that we want to try again), then we need to turn the pump back on and resume the irrigation schedule if it was suspended.
All of the above is now working in my irrigation supervisory program, with the single exception of irrigation schedule suspension and resumption.  I'll be working on that bit today.

Later in the day yesterday I took a break from the state machine and got an embedded web server (using Jetty) running.  This was not exactly a difficult task, and therefore well-suited as a half-brain-dead afternoon job. :)  I've used Jetty before, so a lot of what I did was to remember things I'd already done in the past.  The Jetty developers did a really nice job of making an easily embedded, yet very capable web server.  Anyway, in under an hour I had the canonical “Hello, world!” web server up and running.

In the evening Debbie and I made a wildlife-viewing run up Blacksmith Fork canyon, and out to Miller's Ranch.  We saw lots of things, but most especially does with fawns.  Just north of Miller's Ranch we saw the flock of Cedar Waxwings we've been observing all year.  Right at Miller's Ranch we saw a pair of birds we don't know: they resemble grosbeaks (though their beak wasn't quite as thick), or perhaps meadowlarks.  They had black feet and were feeding from the tops of blooming Dyer's Woad.  Their most distinctive feature, though, was a bright red flash on their wing close to their bodies (or perhaps on their shoulder).  Our plan was to identify them in our Sibley's book when we returned, but that plan got sidetracked by an unexpected encounter.

As we were returning, roughly two miles from Hyrum I spotted a dark house cat sitting in a pullout on the south side of Blacksmith Fork Canyon Road.  I drove past it before I could stop, but then reversed and pulled into the pullout.  The cat didn't move at first, but then started trotting toward our car.  That's very much not the behavior of a feral cat.  Then Debbie opened her door and got out, and the cat ran right up to her.  She could pick her up without any trouble, and while holding her we could do a quick assessment of her condition.  She was skinny but not emaciated, had been nursing kittens not too long ago (no milk, but also no hair around her teats), her coat was full of burrs, she'd been sprayed some time ago by a skunk, and some fur was missing (making us worry about mange).  Otherwise she seemed okay, with no obvious injuries.  The fact that she'd had kittens recently worried us – were her kittens in the area, and was she still taking care of them?  Her behavior suggested otherwise; she showed no inclination to either lead us to or keep us away from any kittens.  We let her down and then just followed her to see if she'd move toward kittens, but instead she kept returning to either us or our car.  This was obviously a cat used to being around people.  Then we tried putting her in the car with us, to see if she'd act concerned about leaving the area.  Quite the opposite; she seemed overjoyed to be out of there.  I drove, Debbie held her, and she was purring loudly and kneading biscuits with great enthusiasm.  After that, we decided that a rescue was in order, as there most likely were no kittens to be concerned about.

So off to home we went, where we set up our new cat in isolation until we can get her checked out by a vet, vaccinated, etc.  We put down some food for her, and she immediately went to work on it (photos below) – obviously very hungry.  She ate an entire can of wet food, and about a cup of dry food along with it.  We put up a waterer and a little box, and made sure she had some comfortable places to lay down, and called it a night.  This morning we came up with a name for her: Laki, which is the Hawai'ian word for “lucky” – and she's certainly one lucky kitty to have run into us out there.  Debbie will be lavishing attention on Laki this morning, and (assuming she's free of any awful disease) I have no doubt that within a week or two Laki will be integrated with the rest of our kitties...

Tuesday, August 8, 2017

Paradise ponders: life in the country, and seeing old friends edition...

Paradise ponders: life in the country, and seeing old friends edition...  Yesterday afternoon, Debbie and I drove down to Ogden to visit with Doug and Dee W.  I've known Doug since 1991, when I started working for Stac Electronics.  Doug and Dee are starting an LDS mission next month, and they'll be gone (to Rome!) for the two year extent of that mission.  We won't have a chance to see them for that period unless we hie ourselves to Rome, and I'm not at all sure we could pull that off.  So the purpose of our visit was a bit melancholic – but the visit wasn't at all.  Doug's sister Marilyn (whom we've met before) and his mom joined us.  We really enjoyed getting to know his mom a bit.  She's 92, but still sharp, participating in our conversation.  We learned a bit about what Doug and Dee's mission is all about, and poor Marilyn and mom had to suffer through some stories from us.  We had a great time!  We're gonna miss Doug and Dee, though...

Sunday and the rest of Monday were very “country” days for me.  I helped my friend and neighbor move hand line (irrigation pipe), spent some time getting to know another neighbor's mule (Gunner), worked on the irrigation plumbing for a while (more on that below), and worked with the contractor doing our sprinklers.  I also fed the dogs, played with them for a while, fed the birds, watered plants, and pulled weeds.  All of this stuff is pretty typical for a day in the country.  I love it!

Our south field (12 acres) got mowed yesterday afternoon.  The windrows of cut alfalfa are huge – Scott N., the fellow leasing that field from us, let the alfalfa grow much bigger than he's ever done before.  Much of it had actually gone to seed.  He's going to get a lot of hay from this cutting...

The irrigation plumbing efforts had mixed results.  You may recall that I had two leaks to fix.  The bad PVC joint leak I've now fixed, using the product pictured at right, called “Leak-B-Gone”.  Despite the corny name, this product worked exactly as advertised – and it saved me a couple hours of work and around $35 in parts I would have had to discard.  The manufacturer's description of the problems it can solve is careful and conservative, not the sort of shrill hawking one might expect to see.  I like it.  The other leak (the dripping galvanized pipe threaded connections) is not fixed.  Or rather, one of the two connections is not fixed.  I used Loctite 565 thread sealant on it (the stuff recommended in my web research), but it still drips.  Yesterday I got a pair of big pipe wrenches on it, and tightened it to the limits of my ability.  I figure I torqued it down to something like 250 ft/lbs.  Now I'm letting the thread sealant cure some more; tomorrow I'll test it again.  If it still leaks, I think I shall contact the pump vendor for help...

On the subject of leaks, though, yesterday brought some good news.  On Friday the contractor who did all the gasoline and diesel plumbing in our little filling station came back and redid the gasoline side.  This was after a successful test of a new thread sealant on the diesel side earlier in the week.  Yesterday I pressurized the gasoline side to check for leaks – and there wasn't a single drop to be seen anywhere.  Hooray!  We now have a functionally complete little filling station!  I have a few details left to complete: the door closer, the lock, and some wood rub bars to keep the hoses from fraying on concrete.  That's all minor stuff.  All the hard part is done!

I also got quite a bit of work done in my irrigation supervisory program on Sunday and Monday.  After I got my first pass done on the state machine, I thought of a much better implementation method, and yesterday I got that finished and running.  This new approach cut the lines of code by almost 50%, and most especially it cut out tons of Java “boilerplate” code.  What's left is a spare and understandable state machine, one of the nicest I've ever done in Java.

For the geeks out there, here's what I did.  I have an enum that represents the state (one of four: OFF, STARTING, ON, STOPPING).  In the enum declaration, I initialized a map that associates strings representing events with an action object.  When an event occurs, the state machine calls a method on the current state that looks up the event and calls the associated action.  Simple, clear, and performant.  Also way easier to maintain than my initial design.

While I was working on that state machine, something occurred to me that probably explains why I like state machines more than most engineers I've worked with.  It's a simple explanation, but it didn't register with me right away.  I've done a lot of digital hardware design, though most of that was over 30 years ago.  That design work often included hardware state machines, which in many ways are easier to design than software state machines.  For problems other than the very simplest, the hardware state machine was one of the first design choices.  Even in discrete logic, you could implement a state machine with just a few parts and solve fairly complex problems with simple, easy-to-understand designs.  I used them often, and most (but certainly not all) hardware engineers I worked with also understood them.  I'll bet you that's the source of my attraction to software state machines.  Now if I could just convince myself to look at them earlier in the design process... :)

Sunday, August 6, 2017

Paradise ponders: good neighbors and bad code edition...

Paradise ponders: good neighbors and bad code edition...  Yesterday was a bit of an odd day for me.

I started out by helping my friend Tim D. moving his hand line.  It was the fifth day of a six day watering cycle, so we'd been doing for several days already.  The work isn't really very hard as the pipes only weigh 35 or 40 pounds – but it does involve a lot of walking.  I'd guess we walk a mile to a mile-and-a-half each morning we're moving pipe.  After finishing with the pipe, I came back inside for a second cup of tea.

As I was drinking that, I noticed our newest neighbor, Heath C., out on his field with his truck and trailer.  He was picking up the 140 bales of hay that he'd had baled the day before.  That's a lot for one guy to pick up, especially when he has to keep moving his truck to somewhere near some bales on the field (after picking up the nearby ones).  So after I poured the tea down my gullet I wandered over to give him a hand.  Shortly after I arrived, a young lady (Sarah S., fifteen years old) also came out to help.  Between the three of us we had that field picked up, the bales stacked, and tarps thrown over to cover them in under an hour.

By the time I'd finished with all that, I was physically wiped out.  My ancient body isn't used to doing hard physical labor like that! :)  With what little energy I had left, in between helping Debbie with some cleaning, I fixed a piece of bad code in the irrigation supervisor program I'm working on.  That bad code was small, but way too complicated and “clever”.  When I realized that I was having trouble making it work correctly because I had trouble understanding what was going on in it, I knew it was time to start over.  I changed the design to an event-driven finite state machine.  That ended up being perhaps four times as much code, but ... it all worked on the first try.  Even better, as I tested it and discovered additions that were needed, those were all easy to make.  Repeatedly in my software development career I've bumped into situations where state machines were great solutions – but nearly always it's the second or third approach I take.  For some reason I seem to have trouble recognizing early the problems that would make good use of state machines...

In my last employment, on the few occasions when I made a state machine to solve some problem, I got quite a bit of criticism from other engineers if they noticed what I'd done.  Their issue was, basically, that they didn't understand state machines and therefore my code was hard for them to understand.  Though I debated them heatedly on this point, in all cases but one my boss eventually told me to remove the state machine.  That one exception was a particularly complex case where nobody could come up with a viable alternative. :)